ПЗ (1230212), страница 4
Текст из файла (страница 4)
- LP – низкочастотный кварцевый резонатор (пониженное энергопотребление);
- XT – стандартный кварцевый/керамический резонатор;
- HS – высокочастотный кварцевый резонатор;
- RC – внешний резистор/конденсатор (идентичен EXTRC с CLKOUT);
- EXTRC – внешний резистор/конденсатор;
- EXTRC – внешний резистор/конденсатор с CLKOUT;
- INTRC – внутренний резистор/конденсатор (4 МГц).
Различные режимы тактового генератора позволяют использовать один тип микроконтроллеров в приложениях с разными требованиями к генератору. RC режим генератора снижает стоимость устройства, a LP режим генератора имеет меньшее энергопотребление. В схеме милисекундомера используется режим XT тактового генератора. С помощью битов конфигурации устанавливается требуемый режим тактового генератора.
Кварцевый или керамический резонатор подключается к выводам OSC1, OSC2 показан на рисунок 3.7. Использование резонаторов с последовательным резонансом может привести к получению тактовой частоты, не соответствующей параметрам резонатора.
Рисунок 3.7 – Подключение кварцевого/керамического резонатора в XT режиме тактового генератора
Как только напряжение питания микроконтроллера станет выше Vсс, тактовый генератор начнет генерацию сигнала. Время, необходимое для запуска генератора, зависит от большого числа факторов:
- частота кварцевого керамического резонатора;
- емкость конденсаторов С1 и С2;
- скорость нарастания напряжения питания Vсс;
- рабочая температура;
- сопротивление резистора RS, если подключен;
- режим тактового генератора (коэффициент усиления внутреннего инвертора);
- качество резонатора;
- размещение компонентов тактового генератора на печатной плате;
- помехи.
На рисунке 3.8 показана временная диаграмма запуска тактового генератор с кварцевым/керамическим резонатором. Напряжение питания, при котором форма сигнала тактового генератора удовлетворяет требования, может составлять 50 % от номинального напряжения питания.
Рисунок 3.8 – Временная диаграмма запуска тактового генератора с кварцевым/керамическим резонатором
3.4 Реализация системы сброса миллисекундомера
Разработка схемы сброса у устройства на основе ATmega8 необходима для перевода микроконтроллера в исходное состояние с заведомо известными параметрами работы. Особенности системы сброса позволяют снизить стоимость устройства и увеличить его надежность.
Микроконтроллеры семейства AVR имеют следующие виды сброса:
- сброс при подаче питания. Микроконтроллер переходит в состояние сброса, если напряжение питания ниже порога сброса при подаче питания (VPOT);
- внешний сброс. Микроконтроллер переходит в состояние сброса, если на вывод RESET подать низкий логический уровень на время дольше, чем минимальная длительность импульса сброса;
- сброс по сторожевому таймеру. Если разрешена работа сторожевого таймера истек период его срабатывания, то микроконтроллер сбрасывается.
- сброс при снижении питания. Микроконтроллер сбрасывается, если напряжение питания Vсс становится ниже порогового значения (VBOT) и разрешена работа схемы контроля питания BOD.
При наступлении любого из перечисленных событий во все регистры ввода/вывода заносятся их начальные значения, а в счетчик команд загружается значение адреса вектора сброса. По этому адресу должна находиться команда безусловного перехода на начало программы. Если же прерывания в программе не используются, то она может начинаться непосредственно с адреса вектора сброса. Сказанное справедливо и для случая, когда вектор сброса располагается в области основной программы, а таблица векторов прерываний – в области загрузчика. Значение адреса вектора сброса определяется конфигурационной ячейкой BOOTRST.
Обобщенная структурная схема сброса показана на рисунке 3.9. Обратите внимание на то, что элементы, нарисованные пунктиром, в ряде моделей отсутствуют. На этом рисунке представлены все возможные виды сброса.
Рисунок 3.9 – Общая структурная схема сброса микроконтроллера
Логика схемы сброса всех микроконтроллеров семейства Mega следующая. При наступлении события, приводящего к сбросу микроконтроллера, формируется внутренний сигнал сброса. Одновременно запускается таймер формирования задержки сброса. По истечении определенного промежутка времени внутренний сигнал сброса снимается и начинается выполнение программы.
Все микроконтроллеры семейства позволяют определить событие, в результате которого произошел сброс устройства. Для этой цели используется регистр управления и состояния микроконтроллера MCUCSR. Помимо всего прочего, этот регистр содержит набор флагов, состояние которых зависит от события, вызвавшего сброс устройства. Регистр MCUCSR приведен на рисунке 3.10.
Рисунок 3.10 – Формат регистра MCUCSR
Описание флагов, используемых для определения источника сброса, приведено в таблице 3.2.
Таблица 3.2 – Флаги источников сброса регистра MCUCSR
Название флага | Описание |
WDRF | Флаг сброса от сторожевого таймера. Устанавливается в «1», если источником сброса был сторожевой таймер. Разряд сбрасывается в результате сброса по питанию или непосредственной записью в него лог. 0 |
BORF | Флаг сброса по снижению питания. Устанавливается в «1», если источником сброса была подсистема BOD. Разряд сбрасывается в результате сброса по питанию или непосредственной записью в него лог. 0 |
EXTRF | Флаг аппаратного сброса. Устанавливается в «1», если сброс произошел в результате подачи на вывод сброса сигнала низкого уровня. Разряд сбрасывается в результате сброса по питанию или непосредственной записью в него лог. 0 |
PORF | Флаг сброса по включению питания. Устанавливается в «1» после подачи напряжения питания на микроконтроллер. Разряд сбрасывается только непосредственной записью в него лог. 0 |
Интегрированная схема POR удерживает микроконтроллер в состоянии сброса, пока напряжение Vсс не достигнет требуемого уровня. Для включения схемы POR необходимо соединить вывод RESET с Vсс через резистор 10 кОм представлен на рисунке 3.11, не требуя внешней RC цепочки, обычно используемой для сброса.
Рисунок 3.11 – Включение встроенной схемы сброса POR
При достижении напряжением питания значения схема POR запускает таймер задержки сброса. По окончании счета (после формирования задержки tTOUT) внутренний сигнал сброса снимается и происходит запуск микроконтроллера.
Управлением выводом RESET микроконтроллера при включении питания может осуществляться двумя способами. Если время нарастания напряжения источника питания известно и не превышает величины tTOUT, можно использовать первый способ, при котором напряжение на выводе RESET «повторяет» напряжение питания. Соответствующие данному способу временные диаграммы показаны на рисунке 3.12. При втором способе управление выводом RESET осуществляется внешней схемой, и сигнал высокого уровня подается на него только после установления напряжения питания.
Рисунок 3.12 – Временная диаграмма удержания в состоянии сброса микроконтроллера при включении питания
Также в проектируемом миллисекундомере имеется кнопка сброса индикатора, подключенная к выводу PC6 микроконтроллера показанная на рисунок 3.13.
Рисунок 3.13 – Сброс подсчета импульсов в приборе
Управляющая программа распознаёт это изменение и обнуляет внутренний счетчик миллисекунд Сounter, пока не будет отпущена кнопка сброса. Данная система сброса необходима для обнуления подсчета импульсов при некорректном измерении, а также для перехода к следующему замеру без выключения прибора.
3.5 Реализация прерывания
Центральный процессор компьютера выполняет одну за другой команды программы и делает то, что ему командуют точно и предсказуемо. Прерывания же нарушают этот порядок. Поступая тогда, когда они, возможно, меньше всего ожидались, каждое прерывание недвусмысленно информирует центральный процессор о том, что произошло некоторое важное внешнее событие, требующее, чтобы процессор остановил свою текущую работу и (с максимально возможной скоростью) отреагировал на то, что произошло.
Первое время прерывания применялись чаще для того, чтобы внешние аварийные события привлекали внимание центрального процессора – то есть события типа сбоя питания, перегрева системы или отказа подсистемы. Но концепция прерываний оказалась настолько мощной, что с течением времени все большее и большее число подсистем получило право генерировать прерывания. Это, в свою очередь, привело к повышению сложности структуры прерываний, а также к необходимости признания того, что не все прерывания одинаковы по важности.
Разные микроконтроллеры имеют довольно различные структуры прерываний. Неизбежно они имеют более чем один источник прерываний, при этом одни прерывания генерируются внутренне, а другие – внешне. Обобщенная структура, иллюстрирующая основные аппаратные принципы прерываний, показана на рисунке 3.13. Слева видно один из нескольких источников прерываний – “Прерывание X”. Если происходит прерывание, то оно устанавливает R-Sтриггер.
Таким образом регистрируется возникшее прерывание, даже если оно носит мгновенный характер. Выход триггера, то есть сохраненная версия прерывания, называется флагом прерывания. Выход триггера стробируется сигналом разрешения прерывания – “Разрешение прерывания X”. Если сигнал стробирования имеет состояние, соответствующее логической 1, то сигнал прерывания идет на логический элемент “ИЛИ”. Если же сигнал стробирования имеет состояние, соответствующее логическому 0, то сигнал прерывания дальше никуда не поступает. Если сигнал прерывания разрешен, то он подается на схемы логического “ИЛИ” вместе с другими разрешенными сигналами прерываний микроконтроллера.
Выход логического “ИЛИ” будет соответствовать логической 1, когда любое прерывание на входе логического “ИЛИ” будет находиться в состоянии, соответствующем логической 1. Выход первичного каскада логического “ИЛИ” стробируется сигналом “Глобальное разрешение прерываний”. Только в случае, если значение этого сигнала соответствует логической 1, любой сигнал прерывания может достигнуть центрального процессора. Когда процессор отреагировал на прерывание, то необходимо сбросить флаг прерывания. В некоторых процессорах это выполняется автоматически, в других же эта операция должна выполняться программой.
Рисунок 3.13 – Структура прерывания общего назначения
Действие запрета прерывания иногда называется маскированием прерывания. Это может показаться странным, что должна быть возможность отключить функцию, которая является настолько важной и которая, как предполагается, должна быть всегда включена, чтобы можно было сообщить об аварии. Действительно, некоторые микроконтроллеры имеют прерывания, которые не могут маскироваться. Они всегда внешние (то есть идут не от внутренних периферийных устройств) и используются для того, чтобы подключаться к внешним сигналам прерываний самой большой важности. Немаскируемое прерывание показано на рисунке 3.13.
Поскольку центральный процессор всегда реагирует, если происходит такое прерывание, то имеется меньше смысла сохранять его в виде флага, в силу этого такое сохранение иногда вообще не выполняется.