pyzhman писал(а):А частоту тактирования в протеусе выставили? И как вы увидели, что частота прерываний не та? Опять же, не забываем, что вход/выход в прерывание тоже съедает время (в плане, что 65530 очень уж мизерное время оставляет на всё остальное).
Для проверки использовал код:
Код: Выделить всё
void interrupt pwm_int(void) // общая процедура прерывания
{
if (TMR1IF)
{
RB0 = ~RB0;
TMR1H = 0b00111100;
TMR1L = 0b10101111;
TMR1IF=0; // сбрасываем флаг о его переполнение
}
}где TMR1H:TMR1L - значение счетчика.
Результаты работы в протеусе:
1мкс, TMR1H = 0b11111111; TMR1L = 0b11111010;
10мкс, TMR1H = 0b11111111; TMR1L = 0b11001101;
100мкс, TMR1H = 0b11111111; TMR1L = 0b00001011;
ну и соответственно дальше 1мс, 10мс:
В общем понимаю, где я туплю...
спасибо что носом ткнули))))

