- •Лабораторная работа ¹5. Блок таймера.
- •5.1. Теоретическая часть.
- •5.1.1. Таймер и связанные с ним устройства.
- •5.1.2. Счетчики и регистры таймера. Cчетчик и альтернативный счетчик.
- •Регистр входной фиксации (icr).
- •Регистр выходного сравнения (ocr).
- •Управляющий регистр таймера (tcr).
- •Регистр статуса таймера (tsr).
- •5.2. Практическая часть.
- •5.2.1. Прерывание по переполнению таймера (toi).
- •5.2.2. Реализация функции входной фиксации (ici).
- •5.2.3. Реализация функции выходного сравнения (oci).
- •5.2.4. Контроль за правильностью работы программы с помощью cop-таймера.
- •5.3. Контрольные вопросы.
- •5.4. Задания.
5.2.4. Контроль за правильностью работы программы с помощью cop-таймера.
Назначение СОР-таймера - генерировать сигнал сброса микроконтроллера через определенный промежуток времени (он задается в регисре $1E). В случае правильной работы, программа должна периодически сбрасывать СОР-таймер, тогда отсчет времени начинается сначала. Если же в работе программы возник сбой, то через некоторое время COP-таймер сработает, и после сброса управление снова будет передано программе пользователя. Для сброса СОР-таймера необходимо записать в регистр COPRR сначала $55, затем $AA.
В качестве примера рассмотрим программу, которая мигает светодиодами и каждые 0,5с посылает в регистр COPRR два числа: то, что записано в порте А (то есть выставлено на переключателях), и дополнительное к нему. Таким образом, если на переключателях выставить число $55, то программа будет автоматически сбрасывать СОР-таймер. В любом другом случае произойдет сброс микроконтроллера.
Основная программа :
300 LDA #$FF Программируем
STA $5 порт B на вывод.
CLR $4 Программируем
ïîðò A íà ââîä.
CLR $1 Гасим светодиоды.
LDA #$7 Устанавливаем время
STA $1E сброса 1с.
30C CLRA Организуем
30D CLRX задержку
30E DECX примерно
30F BNE $30E íà
311 DECA 0,5ñ.
312 BNE $30D
314 LDA $1 Инвертируем
316 EOR #$C0 состояние
318 STA $1 светодиодов.
31À JSR $400 Вызываем подпрограмму сброса СОР-таймера.
31D BRA $30C Возврат на задержку.
Подпрограмма сброса СОР-таймера :
400 LDA $0 Читаем портÀ.
402 STA $1D Посылаем данные в регистр COPRR.
404 COMA Вычисляем дополнение.
405 STA $1D Снова посылаем данные
в регистр COPRR.
407 RTS Возврат из подпрограммы.
Подпрограмма обработки прерывания RESET :
800 LDA $1E
802 LDX $1E
804 NOP
По адресам $30C..$31D находится программа мигания светодиодами. С адреса $400 расположена подпрограмма сброса СОР-таймера.
Поставьте точку останова по адресу $804, запишите число $800 по адресу $1FFE (адрес вектора прерывания RESET) и запустите программу. Если на переключателях установлено не $55, то примерно через секунду программа закончит свою работу. При этом пятый бит регистра $1E установится в 1, что говорит о инициировании сброса аппаратурой СОР-таймера. Установите на переключателях $55 и снова запустите программу. Должны замигать светодиоды. Если изменить положение переключателей на короткое время (менее 1с), то программа продолжит свою работу. Но стоит задержать переключатель в другом положении на более длительный промежуток времени (более 1с), как произойдет вызов подпрограммы по адресу $800. Значит, СОР-таймером было инициировано прерываниеRESET. Содержимое регистраÀ, скопированное из $1E командой $800 LDA $1E, подтверждает это.
5.3. Контрольные вопросы.
1. Для каких целей используется блок таймера в составе микроконтроллера МС68НС705С8 ?
2. Каковы основные характеристики блока таймера ?
3. Каким образом осуществляется доступ к таймеру ?
4. Для чего используется счетчик таймера ?
5. Каким образом осуществляется тактирование счетчика ?
6. В каком случае устанавливается флаг TOF ?
7. Для чего необходим альтернативный счетчик таймера ?
8. В каком случае младший байт регистра счетчика запоминается в буфере ?
9. Опишите назначение и принцип работы блока входной фиксации.
10. Каким образом задается способ обработки сигнала на входе TCAP ?
11. В каком случае блокируется работа блока входной фиксации ?
12. Каким образом можно использовать функцию входной фиксации для определения периода и ширины импульса входного сигнала ?
13. Опишите назначение и принцип работы блока выходного сравнения.
14. Каким образом задается лог. уровень сигнала, появляющегося на выходе TCMP при совпадении значения счетчика с содержимым регистра OCR ?
15. В каком случае блокируется работа блока выходного сравнения ?
16. Каким образом можно использовать функцию выходного сравнения для генерирования импульса определенной длительности?
17. Какие флаги входят в состав управляющего регистра таймера ? На что они влияют ?
18. Какие флаги входят в состав регистра статуса таймера ? Что показывает каждый из них ? Каким образом можно изменять их состояние ?
19. Каково основное назначение таймера COP ?
20. Для чего используется диспетчер синхронизации ?
21. Каким образом осуществляется управление таймером COP и диспетчером синхронизации?
22. Опишите последовательность действий для сброса таймера COP ?
23. Какие флаги входят в состав управляющего регистра таймера COP ? На что они влияют и как их можно изменять ?
24. Чем определяется период переполнения таймера COP ?