Недавно купил новый USB-осциллограф и попытался измерить частоту avr timer0. К ATMEGA подключен кварцевый генератор 12 МГц, а таймер 0 настроен на режим быстрого ШИМ без прескалера. Вот код:
#include <avr/io.h>
int main(void)
{
DDRB = 0x08;
TCCR0 |= (1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
OCR0 = 128;
while(1){
}
}
Но на осциллографе частота равна 46,90 кГц.
Биты плавкого предохранителя на следующем изображении:
Но если я буду мигать светодиодом с задержкой в 1 мс, я получу частоту около 2 МГц.
Итак, пожалуйста, объясните мне, что происходит, и почему таймер работает неправильно (или где я ошибаюсь).