[an error occurred while processing this directive] [an error occurred while processing this directive]
Грабли!
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено AK 01 апреля 2002 г. 15:22
В ответ на: Из-за чего могут отставать часы (RTC) на PIC16F877 ? отправлено Baser 01 апреля 2002 г. 14:40

Таймер 16-разрядный, так что от часового кварца без перезагрузки он может давать прерывание раз в 2 сек. Если прерывание приходит раз в 1 сек - значит, софт перегружает таймер. Вот тут-то и грабли.

При засыпании основной генератор выключается. По прерыванию от таймера он включается, и ему надо какое-то время для разгона. При 5В время разгона одно, при 3В - другое.
Вы, небось, эмпирически подобрали число для перезагрузки часового таймера при 5В. Это число "явно" учитывает время, необходимое для выполнения подпрограммы прерывания до момента перезагрузки таймера, и "неявно" (!!!) - время разгона основного кварца. 3В - это семечки. Вы при 5В погоняйте его в термокамере, тоже часики будут убегать :)

Самый разумный выход - не перегружать таймер, пущай себе считает. А прерывание - раз в 2 сек по переполнению. Иначе начнется геморрой с синхронным-асинхронным режимами таймера, и т.п.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru