پاسخ : بهترین روش برای کنترل تعداد زیادی سرو موتور
یه مقداری پیش زمینه برنامه نویسی و میکروکنترلر نیازه. فرض کنید فرکانس موج 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;
}




دیدگاه