ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1034868
FDA (09.09.2020 08:07, просмотров: 31442)
Простой вопрос по таймеру TMR2 в PIC18. Никогда его не использовал для точного отсчёта времени, а тут потребовалось в одном девайсе реализовать NTP-клиента. Сам клиент сделал, время с сервера получаю раз в час, а вот в течение этого часа замечаю, что мои часы начинают идти с опережением. Проц работает на частоте 64 МГц со включённой PLL. TMR2 настраиваю так: предделитель 4, постделитель 16, PR2=249. Вроде как на 250 такте как раз должно возникнуть прерывание (в реальном 

времени это 1 мс). Но фактически получается, что оно происходит чуть чаще. На вскидку уход по секунде каждые 5 минут.

Задал PR2 значение 250. Теперь часы стали немного отставать - каждые 10-15 минут примерно по секунде (на вскидку опять же). Скачал прогу TimerCalculator от Mikroelektronika:

https://www.mikroe.com/timer-calculator


Он при расчёте выдаёт время прерывания 1,001 мс!!!




Пока сделал корректировку на 1 мс каждую сек, но хочется разобраться в вопросе. Даташит смотрю, но не понимаю, откуда реально может браться эта доп. ошибка.