Пример:
#include <tiny2313a.h>
flash unsigned char byte [] = {3, 3, 2, 2};
Дальше порты выставлены, все остальное нули
OCR1A = OCR1B = 0x00FF;
while(1)
{
unsigned long a = 275; // необходимая частота {(Гц)
unsigned long c = OCR1A ;
unsigned long d = 1;
unsigned long F_PU = 8005000;
char i;
c = (F_PU / a / 2);
for (i = 0; i < 4; i++)
{
if (c > 65536) {
d <<= byte;
c = (F_PU / a / 2 / d);
}
TCCR1B = (i + 1) | (1 << WGM12);
break;
}
}
OCR1A = c - 1; TCCR1A |= (1 << COM1A0);
TCCR1A |= (1 << COM1B0);
}
}
Подскажите пожалуйста, что не так в атмеге 168, я сообразить не могу. Почему меняя значение "а" не меняется частота, пусть бы менялась но не соответствовала, так нет, висит одна и та же постоянно, какое бы значение не присвоил.


