Раздел: Документация
0 ... 123 124 125 126 127 128 129 ... 195 c,ki/o 0С1С (Режим FPWM) ОСОА (Режим СТС) РВ7 (PORTB7 = 0) РВ7 (PORTB7=1) Период Рис. 7.28. Временные диаграммы работы модулятора Обратите внимание, что в результате модуляции снижается разрешение ШИМ-сигнала (ОС1С). Коэффициент уменьшения равен количеству тактов системного тактового сигнала, укладывающихся в один период сигнала несущей частоты (ОСОА). В случае, показанном на Рис. 7.28, разрешающая способность уменьшается в 2 раза. Причину такого снижения разрешающей способности можно понять, посмотрев на выходной сигнал модулятора (2-й и 3-й периоды при PORTB7 = 0). Несмотря на то что длительность ВЫСОКОГО уровня модулирующего сигнала во 2-м периоде на один такт больше, чем в 3-м периоде, итоговый сигнал в обоих периодах одинаков. 7.8. Сторожевой таймер Все микроконтроллеры семейства Mega имеют в своем составе сторожевой таймер, предназначенный для защиты микроконтроллера от сбоев в процессе работы. В общей сложности в микроконтроллерах семейства можно встретить сторожевой таймер двух исполнений — стандартный и расширенный. Во всех старых моделях и в некоторых новых реализован стандартный сторожевой таймер, структурная схема которого приведена на Рис. 7.29, а. В большинстве же новых микроконтроллеров реализован так называемый расширенный сторожевой таймер, структурная схема которого приведена на Рис. 7.29, б. Основным отличием нового сторожевого таймера является возможность генерации прерывания по его тайм-ауту. Генератор 1 МГц Сброс сторожевого таймера WDR Регистр WDTCR WDP0-WDP1 -WDP2-WDE- Предделитель сторожевого таймера MUX Сброс микроконтроллера б) Прерывание Рис. 7.29. Структурная схема сторожевого таймера: а — стандартный сторожевой таймер; б — расширенный сторожевой таймер Сторожевой таймер обоих исполнений имеет независимый тактовый генератор, поэтому он работает даже во время нахождения микроконтроллера в любом из спящих режимов. Типовое значение частоты этого генератора равно 1 МГц (стандартный таймер) или 128 кГц (расширенный тай- мер) при Vcc = 5.0 В. Фактическая частота генератора зависит от напряжения питания устройства, температуры, технологического разброса. Если сторожевой таймер включен, то через промежутки времени, равные его периоду, он выполняет сброс микроконтроллера (как уже упоминалось, расширенный сторожевой таймер может также генерировать прерывание). Чтобы избежать сброса при нормальном выполнении программы, сторожевой таймер необходимо регулярно сбрасывать через промежутки времени, меньшие его периода. Сброс сторожевого таймера осуществляется командой WDR. Конфигурирование сторожевого таймера в различных моделях осуществляется по-разному. ATmega 16х/32х В этих моделях для управления сторожевым таймером предназначен регистр WDTCR, расположенный по адресу $21 ($41). Формат этого регистра приведен на Рис. 7.30, а описание его битов — в Табл. 7.36.
ATmega 16х/32х Чтение (Я)/Запись (W) R R R R/W R/W R/W R/W R/W Начальное значение 00000000 Рис. 7.30. Формат регистра WDTCR Таблица 7.36. Биты регистра WDTCR
Для включения/выключения сторожевого таймера используются два бита регистра WDTCR — WDE и WDTOE. Если бит WDE установлен в 1, сторожевой таймер включен, если сброшен в 0 — выключен. Причем для сброса бита WDE необходимо выполнить следующие действия: 1.Одной командой записать лог. 1 в биты WDE и WDTOE. 2.В течение следующих четырех тактов записать лог. 0 в бит WDE. Период тайм-аута сторожевого таймера задается с помощью битов WDP2...WDP0 регистра WDTCR согласно Табл. 7.37. 0 ... 123 124 125 126 127 128 129 ... 195
|