Структура коммуникационного процессорного модуля, страница 11

Каждая ячейка таблицы таймеров предназначена для управления одним таймером и имеет размер 4 байта. Первые два байта хранят значение, которое было записано при инициализации таблицы таймеров во время выполнения RISC-контроллером команды SET TIMER.

При работе таймеров начальные значения будут уменьшаться до 0. В следующих двух байтах хранится текущее значение таймера.

Все операции с таблицей таймеров выполняются по тактам внутреннего таймера. Частота работы внутреннего таймера настраивается при программировании битов TIME и TIMER в регистре конфигурации RISC-процессора. Обработка таблицы таймеров имеет самый низкий приоритет среди всех операций RISC-контроллера, поэтому если RISC-контроллер занят выполнением других задач, то обработка таймеров в текущем такте внутреннего таймера может не производиться, поскольку процессор просто не успевает выполнить эти действия.

Для обнаружения данной ситуации в памяти параметров введена переменная TM_cnt. RISC-процессор увеличивает эту переменную при каждом обращении к таблице таймеров для обработки, если, конечно, разрешена работа внутреннего таймера. Таким образом, пользователь в своем программном обеспечении всегда может сравнивать, сколько тактов от внутреннего таймера получил RISC-контроллер и сколько из них он обработал, обращаясь к таблице таймеров.

При своей работе пользователь может, прочитав содержимое ячейки TM_ptr, всегда узнать адрес ячейки таймера из таблицы, которая будет обрабатываться следующей.

2.1.5.1. Управление работой таймеров.

Для управления работой таймера центральный процессор может передать RISC-контроллеру команду SET TIMER. По этой команде производится включение и настройка параметров одного из 16 таймеров в таблице. Код этой команды 0x0851 записывается в регистр команд RISC-процессора. Но перед тем как переслать эту команду, пользователь должен записать определенные значения в ячейку TM_cmd .

Переменная TM_cmd- это регистр команд таймеров, в котором определяются параметры настройки таймеров, выполняемые при обработке команды SET TIMER.

Поле TIMER NUMBER определяет номер таймера от 0 до 15, для каждого производится настройка параметров. Поле TIMER PERIOD определяет 16-битное значение тайм-аута для выбранного таймера. Максимальное значение 65 536 соответствует коду 0x0000 в этом поле.

Если пользователь желает работать с определенным таймером, он должен перед подачей команды SET TIMER установить бит V=1 в ячейке TD_CMD. Если же таймер не будет использован, то бит V:=0. Значение бита V(Valid) при выполнении команды SET TIMER будут переписаны в соответствующий бит ячейки R_TMV, анализируемый RISC-контроллером при обслуживании таблицы таймеров.

Таймеры могут работать в трех режимах:

1.  Выработки одиночного импульса ( One-Shot).

2.  перезагрузка ( Restart).

3.  Генерации импульса PWM(Pulse Width Modulation).

Если необходимо, чтобы таймер работал в режиме One-Shot, надо установить в регистре TM_cmd бит R:=0 ( Restart). Если бит R:=1, то таймер будет работать в режиме  автоматического рестарта. При выполнении команды SET TIMER значение бит R будет перезаписано для таймера номер N в соответствующий бит ячейки R_TMR. Ячейка R_TMR-это регистр режима таймеров, она недоступна для записи пользователю и анализируется RISC-контроллером при обработке таблицы таймеров.