16.3 Функциональное описание
Интервальный таймер позволяет формировать сигналы прерывания через строго определенные интервалы времени с целью обеспечения полноценной работы встраиваемых операционных систем реального времени (RTOS).
В составе интервального таймера имеет счетчик с очисткой при достижении заданного значения и автоматическим обнулением счетчика при его чтении. Таймер построен на основе одного основного 20-битного счетчика CPIV и одного дополнительного 12-битного счетчика PICNT. Оба счетчика тактируются от сигнала MCK/16.
Основной 20-битный счетчик CPIV производит счет от нуля и до определенного программируемого значения (переполнение), указываемого в поле PIV регистра режима PIT_MR. Как только содержимое этого счетчика достигает значения в поле PIV, то счетчик сбрасывается в ноль и производится инкрементирование основного счетчика интервального таймера PICNT. Флаг состояния PITS в регистре PIT_SR вызывает формирование сигнала прерывания, если разрешено прерывание от интервального таймера (флаг PITIEN в регистре PIT_MR).
Запись нового значения в поле PIV регистра PIT_MR не вызывает сброс/перезапуск ни одного из счетчиков интервального таймера.
Как только при чтении регистра значения интервального таймера (Periodic Interval Value Register - PIT_PIVR) получены текущие значения полей CPIV и PICNT, то происходит сброс счетчика переполнения PICNT и очистка флага PITS, таким образом, подтверждая прерывание. Поле PICNT дополнительного 12-битного счетчика содержит число интервалов времени, прошедших с момента последнего прочтения регистра PIT_PIVR.
При чтении (для получения текущих значений полей CPIV и PICNT) регистра отображения интервального таймера (Periodic Interval Image Register - PIT_PIIR) не происходит ни сброс дополнительного счетчика (PICNT) и ни очистка флага PITS. Например, это удобно при отладке приложения: чтение регистра PIT_PIIR позволит избежать вызова прерывания от интервального таймера, так как это прерывание возникает только при чтении регистра PIT_PIVR.
С помощью флага PITEN в регистре PIT_MR может быть остановлена (разрешена) работа интервального таймера (сразу после сброса работа интервального таймера запрещена). Флаг PITEN становится активным только при CPIV = 0. На рис. 16-2 изображен механизм разрешения/запрета работы интервального таймера с помощью флага PITEN. Как только флаг PITEN сброшен, то работа интервального таймера по-прежнему продолжается до тех пор, пока содержимое счетчика CPIV не достигнет значения PIV. После чего произойдет очистка таймера и его остановка до то момента, пока не будет установлен флаг PITEN.
При переходе ядра в режим отладки интервальный таймер останавливается.
Рисунок 16-2. Механизм разрешения/запрета работы интервального таймера с помощью флага PITEN
|