13.2. В схеме ультразвукового дальномера, приведенной на Рис. 7.9 (стр. 236), используется внешний генератор частотой 17.2 кГц, который прерывает работу микроконтроллера каждые 58 мкс, т. е. с периодом, соответствующим времени прохождения звуковой волной расстояния в один сантиметр в воздухе. Полагая, что микроконтроллер работает на частоте 20 МГц, покажите, как можно использовать Таймер 2 для генерации прерывания с такой периодичностью и точностью, составляющей более 0.1 %.
13.3. Микроконтроллеры PIC среднего уровня имеют только один вход внешнего прерывания, INT. Предложите вариант использования Таймера 0 для симуляции дополнительного внешнего прерывания на выводе T0CKI.
13.4. При программной реализации асинхронного канала последовательной передачи данных со скоростью 300 бод, необходимо формировать задержки длительностью 3.33 мс. Предполагая, что микроконтроллер работает на частоте 8 МГц, покажите, как можно использовать таймер для генерации прерывания с периодичностью, равной длительности битового интервала. Усовершенствуйте процедуру таким образом, чтобы она поддерживала скорости передачи до 19 200 бод (каждое последующее значение скорости получается удвоением предыдущего).
13.5. Покажите, как можно использовать Таймер 1, работающий от собственного генератора с резонатором 32.768 кГц, для реализации часов реального времени (регистры HOURS: MINUTES: SECONDS) системы центрального отопления из Примера 7.3 (стр. 231).
13.6. В Си-компиляторе CCS имеются встроенные функции для работы с таймерами и модулями ССР. Например, запись в счетный регистр Таймера 1 можно осуществить вызовом функции set_timer1 (<значение>). Для считывания состояния таймера предназначена функция get_timer1 () >). Функция setup_timer1 (<режим>) используется для инициализации таймера. Аналогично, функция setup_ccp1 (<режим>) предназначена для инициализации регистра CCP1CON. При задании конфигураций Таймера 1 и модуля ССР1 используются следующие константы:
Значение, передаваемое в подпрограмму, получается объединением указанных констант с помощью оператора ИЛИ «|».
Покажите, как можно переписать ответ на Вопрос для самопроверки 13.5 с использованием языка Си. В компиляторе CCS функцию можно объявить в качестве обработчика прерывания от модуля ССР1, поставив перед ней директиву #int_ccp1 (см. Программу 9.6 на стр. 293 для дополнительной информации). При этом в вашем распоряжении имеется зарезервированная переменная ССР_1, представляющая содержимое 16-битного регистра CCPR1H: L.
13.7. Широтно-импульсная модуляция может использоваться для управления скоростью вращения электродвигателя постоянного тока за счет изменения среднего тока, протекающего по его обмотке. Однако запуск такого электродвигателя представляет известную проблему, поскольку ток обмотки при пуске в несколько раз превышает ток, протекающий в установившемся режиме. Для предотвращения выхода из строя силового управляющего транзистора предлагается постепенно увеличивать скважность ШИМ-сигнала с О до максимального значения в течение нескольких секунд. Покажите, как это можно осуществить с помощью микроконтроллера PIC, работающего на частоте 4 МГц, и его модуля ССР.
13.8. Дорожные светофоры на регулируемых пешеходных переходах в Англии при нажатии на любую из кнопок разрешения перехода работают по следующему алгоритму:
1. Зеленый свет (нормальный режим).
2. Оранжевый свет в течение 3 с.
3. Красный свет, сопровождающийся звуковым сигналом в течение 15 с.
4. Мигающий оранжевый свет — пять вспышек длительностью по 3 с с трехсекундными паузами между вспышками.
5. Возврат в нормальный режим.
Используя подходящий микроконтроллер PIC с модулем Таймера 1, напишите программу, управляющую сигналами светофора и звуковым излучателем. Хотя световые сигналы расположены по обе стороны дороги, можете считать, что они соединены параллельно и включаются ВЫСОКИМ уровнем на соответствующем выводе порта. Управляющие кнопки CROSS_REQUEST0 и CROSS_REQUEST1 при нажатии формируют лог. О на входе микроконтроллера. Звуковой излучатель включается НИЗКИМ уровнем на соответствующем выводе порта микроконтроллера.
Глава 14
Этот безумный аналоговый мир