Программный шим - это просто. Для этого нужен 1 аппаратный счётчик. На нём можно построить хоть сотню шимов.
PHP код:
|
char cnt_1; char wm_1;
interrupt [TIM1_COMPA] void timer1_compa_isr(void) { cnt_1++; if(cnt_1 › 99) cnt_1 = 0; if(cnt_1 ‹ pwm_1) PORTD.1 = 1; else PORTD.1 = 0; }
|
В переменную pwm_1 заносим нужную скважность (в процентах).
Частота шим будет в 100 раз ниже частоты ссрабатывания таймера.
Для точных интервалов надо использовать режим CTC таймеров (сброс при совпадении).