Объявлено следующее:
#define FCLK 14745600 // ×àñòîòà êîíòðîëëåðà #define TCLK 68 // ×àñòîòà êîíòðîëëåðà â íñ .... #define FREGENER 75 // ×àñòîòà ðåãåíåðàöèè ïàííî #define FSHOWACT 40 // ×àñòîòà èñïîëíåíèÿ êîìàíä .... OCR1A = FCLK/(1024*FSHOWACT); // FCLK/1024/16.7 Ãö = 862 ....
Компилятор генерит следующее
168 // Инициализация таймера 1 (Исполнение активных комманд) 169 // TCCR1A = 0; // Запустить таймер 1 в режиме сравнения 170 OCR1A = FCLK/(1024*FSHOWACT); // FCLK/1024/16.7 Гц = 862 \ 00000100 EA08 LDI R16, 168 \ 00000102 EF1D LDI R17, 253 \ 00000104 93100089 STS 137, R17 \ 00000108 93000088 STS 136, R16
Если вместо 40 для константы FSHOWACT поставить 31 и меньше, то всё класс. Точно также всё правильно если поставить 40.0! Что я не учёл?
|