Работа с таймером
Документ применим к микросхемам 1892ВМ3Т, 1892ВМ2Я, 1892ВМ5Я, 1892ВМ8Я, 1892ВМ10Я, 1892ВМ12Т, 1892ВМ12АТ, 1892ВМ12Т, 1892ВМ15Ф, 1892ВМ15АФ. В документе поясняются принципы работы с таймерами в процессорах на базе MIPS серии «Мультикор».
Интервальный таймер
Интервальный таймер (IT) предназначен для выработки периодических прерываний на основе деления тактовой частоты CPU, либо внешней тактовой частоты (XTI или RTCXTI). Основные характеристики таймера:
- число разрядов делителя – 32;
- число разр ядов предделителя – 8;
- программное управление стартом и остановкой таймера;
- доступ ко всем регистрам обеспечивается в любой момент времени.
Для того чтобы выбрать режим тактирования (CLK - тактовая частота CPU или внешние частоты), нужно записать соответствующее значение в поле CLK_SEL регистра ITCSR, см. руководство пользователя на микросхему.
Сторожевой таймер. Режимы работы и как их применять
Сторожевой таймер (WDT) предназначен для:
- вывода системы из зависания, если программное обеспечение зациклилось и не формирует соответствующих управляющих воздействий̆;
- выработки прерываний на основе деления тактовой частоты CPU.
Основные характеристики таймера:
- число разрядов основного делителя – 32;
- число разрядов предделителя – 8;
- программное управление стартом и остановкой таймера;
- два режима работы: режим сторожевого таи ̆мера (WDM) и режим интервального таймера (ITM);
- два режима отработки временных интервалов: однократный и периодический;
- доступ ко всем регистрам обеспечивается в любой момент времени.
Сторожевой таймер может работать в двух режимах – в режиме сторожевого либо интервального таймера. Режим работы таймера задается полем MODE регистра WTCSR (только при значении поля EN=0):MODE=0 – режим сторожевого таймера (WDM); MODE=1 – режим интервального таймера (ITM). В исходном состоянии WDT находится в режиме сторожевого таймера.
WDT в режиме сторожевого таймера
WDT в режиме сторожевого таймера генерирует NMI. В этом случае происходит останов по HW-точке останова на адресе 0xBFC0_0000. Сторожевой таймер в режиме WDM необходимо периодически обслуживать. То есть, если он был активизирован в режиме WDM, то для того, чтобы не возникло состояния Timeout, необходимо периодически выполнять следующую последовательность действий:
- пе реключить таймер из режима WDM в режим ITM посредством последовательной записи в поле KEY регистра WTCSR кодов А0 и F5;
- остановить таймер посредством записи 0 в бит EN регистра WTCSR;
- установить MODE=0.Если вслед за значением А0 в поле KEY будет записано значение ≠ F5, то таймер перейдет в состояние Timeout.
Если после активизации таймера в режиме WDM, он не будет переведен в режим ITM, то, когда оба
счетчика SCOUNT и WTCOUNT достигнут нулевого значения (через {(WTPERIOD + 1)*(WTSCALE + 1)}
тактов
работы CPU), таймер перейдет в состояние Timeout и генерирует NMI. В состоянии Timeout таймер
формирует признак INT и останавливается, а запись в какой- либо из его регистров блокируется.
Для вывода WDT из состояния Timeout необходимо его переключить в режим ITM посредством последовательной записи в поле KEY регистра WTCSR кодов А0 и F5. При переключении таймера из неактивного состояния в режиме ITM в режим WDM путем записи 0 в поле MODE регистра WTCSR происходит обнуление полей KEY и INT.