پاسخ : بهترین روش برای کنترل تعداد زیادی سرو موتور
یه مقداری پیش زمینه برنامه نویسی و میکروکنترلر نیازه. فرض کنید فرکانس موج PWM خروجی 50 هرتزه و روزلوشن 256 سطح (یعنی 8 بیت PWM). ما به یک تایمر احتیاج داریم که با سرعت 256*50=12.8KHz وقفه ایجاد کنه. با یه کریستال داخلی یا خارجی 8MHz میشه درستش کرد.
یه شمارنده i داریم که از 0 تا 255 می شماره. N تا خروجی PWM داریم و N تا هم عدد مقایسه (compare) متناظر با اون. اگر i به compare رسید، خروجی مربوطه High می شه. اگر i شد 256، همه خروجی ها Low می شن.
توی وقفه 12.8kHz می نویسیم:
نوشته اصلی توسط S_Ahmad
یه شمارنده i داریم که از 0 تا 255 می شماره. N تا خروجی PWM داریم و N تا هم عدد مقایسه (compare) متناظر با اون. اگر i به compare رسید، خروجی مربوطه High می شه. اگر i شد 256، همه خروجی ها Low می شن.
توی وقفه 12.8kHz می نویسیم:
کد:
if(compare1>=i) { pwm_pin1=1; } if(compare2>=i) { pwm_pin2=1; } . . . if(compareN>=i) { pwm_pinN=1; } i++; if(i==256) { i=0; pwm_pin1=0; pwm_pin2=0; . . . pwm_pinN=0; }
دیدگاه