Счетчик таймера является 16-разрядным

Счетчик таймера является 16-разрядным, поэтому для того, чтобы он вызывал прерывание один раз в секунду, он должен предварительно загружаться значением 0x8000.

счетчик

Запрограммированный таким образом таймер потребует 32768 периодов входной частоты для того, чтобы вызвать прерывание по переполнению один раз в секунду. В примере приведена программа на языке С, которая поддерживает 24-часовый отсчет таймера в доступных ячейках памяти, сохраняя секунды, минуты и часы.

Каждый раз по истечении секунды, таймер 1 инициализирует прерывание, вызывая функцию DoTime в процедуре функции обслуживания высокоприоритетного прерывания. В DoTime, таймер 1 перезагружается 0x8000, флаг прерывания таймера 1 сбрасывается и RTC инкрементируется. При каждом прерывании счетчик секунд инкрементируется, один раз в минуту инкрементируется счетчик минут и один раз в час инкрементируется счетчик часов. Приведенная программа довольно проста и хранит время так, как если бы оно сохранялось дискретными счетчиками.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

6 + 2 =