Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическиое пособие_10.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

2.7. Таймеры

Таймеры являются неотъемлемой составной частью любого процессора. Основная задача этого периферийного узла в формирование временных задержек и инициализации процессов, которые должны происходить через фиксированные промежутки времени. Каждый из трёх 32-х битных таймеров (Timer0, Timer1, Timer2) может использоваться как таймеры общего назначения (GP general-purpose).

В каждом 32-ти битном таймере имеются два 16-ти битных регистра TIMCNT1 и TIMCNT2, в которых и происходит декрементация содержимого каждый такт таймера. Величина, с которой начинается счёт, записывается программой в регистры TIMPRD1 и TIMPRD2. В момент начала счёта, когда устанавливается, бит START в регистре TCR, содержимое TIMPRD1,2 переписывается в TIMCNT1,2 и начинается декремент каждый такт. Когда содержимое этих регистров достигает значения 0, таймер передаёт запрос на прерывание процессора.

Таймер может быть сконфигурирован в режим авто-перезагрузки (бит AUTORELOAD в регистре TCR), когда после окончания счёта регистры TIMCNT1,2 перезагружаются содержимым TIMPRD1,2.

Тактирование таймера осуществляется от системного тактового генератора, частота которого пропускается через 13-ти уровневый делитель. Коэффициент деления определяются полем PSCDIV (5-2 биты) в регистре TCR. При 0000b деление 2-а, при 1100b деление на 8192. Такая конфигурация позволяет очень точно и в большом диапазоне регулировать временные интервалы, получаемые от таймера. Расчёт заданного временного интервала начинается с вычисления периода следования тактовых импульсов: T=1/Fclock. Где Fclock частота тактирования процессора.

Тактовые импульсы подаются отдельно на каждый таймер, и определяется это битами в регистре PCGCR1.

Только Timer2 может быть использован как Watchdog таймер. Этот таймер позволяет преодолевать так называемые программные тупики (deadlock) или зацикливание программ (non-exiting code loop). Он так же эффективен при “зависании” процессора. Содержимое таймера декрементируется. Окончание счёта вызывает аппаратный сброс процессора. Для нормальной работы этот таймер должен периодически перезагружаться определённым значением, для предотвращения окончания счёта.

Watchdog таймер состоит из 16-ти битного счётчика и 16-ти битного делителя частоты тактирования. Для настройки этого таймера выделены специальные регистры:

WDKCKLK (1880h) предназначен для разблокирования записи в регистр счёта WDKICK. Это разблокирование производится путём последовательной записи ключей Key1=5555h и Key2=AAAAh. Если при чтении этого регистра в битах 1 и 0 читается 11b значит регистр разблокирован.

WDKICK (1882h) при разблокировании этого регистра в него записывается величина, хранящаяся в регистре WDSVR, и запускается процесс декрементации.

WDSVLR (1884h) предназначен для разблокировки записи в регистр WDSVR. При этом в него записываются последовательно два ключа Key1 = 6666h и Key2 = BBBBh. Если при чтении из этого регистра читается 11b, значит WDSVR разблокирован для записи.

WDENLOK (1888h) предназначен для разблокирования записи в регистр WDEN разрешения Watchdog таймера. Key1 = 7777h, Key2 = CCCCh, Key3 = DDDDh.

WDEN (188Ah) регистр содержит только один значащий 0-й бит. Если он установлен в 1, то Watchdog таймер разрешён.

WDPSLR (188Ch) для разблокировки записи в регистр WDPS. Key 1 = 5A5Ah, Key2 = A5A5h.

WDPS (188Eh) регистр делителя частоты декрементации. Каждый раз когда регистр WDPS достигает 0-го значения основной регистр счёта WDKICK декрементируется на один шаг.