Скачиваний:
180
Добавлен:
13.06.2014
Размер:
6.55 Mб
Скачать

16. Интервальный таймер (pit)

16.1 Обзор

Интервальный таймер (Periodic Interval Timer - PIT) предназначен для формирования прерываний со строгой периодичностью для нормального функционирования планировщика операционной системы. Интервальный таймер разработан с целью достижения максимальной точности при формировании интервалов времени даже для систем с большим временем отклика.

16.2 Структурная схема

Рисунок 16-1. Структурная схема интервального таймера

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

Соседние файлы в папке ПЦиПУ. материалы для Курсового проекта Тютякин А.В.