Пример. Генерация на 16 битном таймере. Если частота МК ровна 16MГц (1 такт = 0,0625 μS).

Если частота сигнала 40кГц, то 16000000/40000 = 400. Т.е. 400 шагов регулировки скважности. Чем ниже будет частота, тем больше шагов.

Т.е. можно работать до частот в 62 кГц: 16000000/62000 = 258 шагов.

со скважностью 1/ICR1 - (ICR1-1)/ICR1.

Пример для atmega16:

DDRB|=(1<<1);//порт B пин 0 на выход
PORTB&=~(1<<1);//лог 0 на выход

TCCR1B|=(1<<WGM12)|(1<<WGM13);//Быстрый ШИМ
TCCR1A|=
(1<<WGM11);
TCCR1A|=(1<<COM1A1);// при прямом счёте при совпадении на выходе OC1А установится лог. 0, при обратном счёте при совпадении установка лог.1
TCCR1A|=(1<<CS10); //пределитель 1 к 1.
ICR1=399;// 16MHz/40kHz = 400 тактов на полный период для 40кГц
OCR1A=199; // скважность 50% для 40кГц