Каждая ячейка таблицы таймеров предназначена для управления одним таймером и имеет размер 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-контроллером при обработке таблицы таймеров.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.