Основы микропроцессорной техники

Раздел 4. Организация микроконтроллеров


«Структура курса | Раздел 1 | Раздел 2 | Раздел 3 | Раздел 4 | Раздел 5 | Раздел 6 | Раздел 7 | Глава 8 | Дополнения

Раздел 4 - Страницы: «| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

4.9. Аппаратные средства обеспечения надежной работы МК

Прикладная программа, записанная в память программ МК, должна обеспечивать его надежную работу при любых комбинациях входных сигналов. Однако в результате электромагнитных помех, скачков напряжения питания и других внешних факторов предусмотрен производителем ходе выполнения программы может быть нарушен. С целью обеспечения надежного запуска, контроля работы МК и восстановление работоспособности системы в отсутствие оператора все современные МК обеспечиваются аппаратными средствами обеспечения надежной работе. К ним относятся:

  • схема формирования сигнала запуска МК;
  • модуль мониторинга напряжения питания;
  • сторожевой таймер.

4.9.1. Схема формирования сигнала запуска МК

При включении напряжения питания МК должен начать выполнять записанную в памяти программу работы. На этапе нарастания напряжения питания МК принудительно переводится в исходное состояние, которое называют состоянием инициализации. При этом устанавливаются в исходное состояние внутренние магистрали МК, сигналы управления и регистры специальных функций. Последние определяют исходное состояние периферийных модулей МК, которые чаще всего по умолчанию неактивны.

С целью обеспечения надежного запуска от любых источников питания с различной динамикой нарастания напряжения большинство современных МК содержат встроенный детектор напряжения питания (схема Power-On-Reset - POR), который формирует сигнал инициализации при нарастании напряжения питания. В частности таймер установления питания (PWRT), входящего в состав МК семейства PIC16, начинает отсчет времени после того как напряжение питания пересекло уровень около 1,2 ... 1,8 В. После окончания выдержки около 72 мс. считается, что напряжение достигло номинала.

Сразу после выхода из состояния инициализации МК выполняет следующие действия:

  • запускает генератор синхронизации МК. Для стабил изации частоты тактування внутренними средствами формируется задержка времени;
  • считывает энергонезависимые регистры конфигурации в соответствующие регистры ОЗУ (если это необходимо);
  • загружает в счетчик команд адрес начала рабочей программы;
  • производит выборку первой команды из памяти программ и приступает к выполнению программы.

Адрес ячейки памяти, в которой хранится код первой команды, которая выполняется, называют вектором начального запуска или вектором инициализации. В некоторых МК этот адрес однозначно определена и приведена в техническом описании. О таких МК говорят, что они имеют фиксированный вектор инициализации. В других МК вектор инициализации может быть произвольно определенный пользователем. На этапе программирования МК необходимый вектор начального запуска записывается в ячейки с фиксированными адресами, и при выходе МК из режима инициализации автоматически загружается в счетчик команд. О таких МК говорят, что они имеют вектор инициализации, который загружается. Вектор инициализации, который загружается, имеют все 8-разрядные МК фирмы Motorola, выполненные по структуре с единым адресным пространством команд и данных.

Для перевода МК в состояние инициализации при постоянной напряжении питания достаточно подать сигнал высокого или низкого уровня (в соответствии с спецификацией МК) на вход запуска (RESET). Обычно для формирования сигнала запуска при включении напряжения питания и нажатии кнопки запуска используют RC-звено. Типовые схемы формирования сигнала запуска представлены на Рис. 4.10.

Кнопка Кн предназначена для "ручной" инициализации МК при отладке. Диод VD препятствует попаданию на вход RESET негативной напряжения при выключении питания. Номиналы R и C определяют задержку времени, необходимый для завершения всех переходных процессов при инициализации (указываются в техническом описании на МК). Триггер Шмидта на входе допускает подачу сигнала инициализации с ненормированным длительностью фронта. При отсутствии триггера Шмидта на входе приходится применять специальную внешнюю схему формирователя.

В современных МК линия RESET обычно является двунаправленного и имеет низкий активный уровень. При нажатии кнопки запуска или включении питания буфер линии устанавливается в режим ввода и реализует так называемую внешнюю инициализацию. МК может перейти в состояние инициализации также по сигналам устройств контроля состояния, которые есть в составе контроллера. В этом случае говорят, что МК находится в состоянии внутренней инициализации. При этом буфер линии RESET устанавливается в состояние вывода с низким логическим уровнем на выходе. Данный сигнал может быть использован для установки в исходное состояние периферийных ИС.


Рис. 4.10. Типовые схемы формирования сигнала внешней инициализации для МК с высоким активным уровнем сигнала инициализации (а) и низким активным уровнем сигнала инициализации (б).

Порядок выхода МК из состояний внешней и внутренней инициализации в целом одинаков.

4.9.2. Блок детектирования пониженного напряжения питания

В реальных условиях эксплуатации может сложиться такая ситуация, при которой напряжение питания МК опустится ниже минимально допустимого, но не достигнет порога отпускания схемы POR. В этих условиях МК может "зависнуть". При восстановлении напряжения питания до номинального значения МК останется неработоспособным.

Для восстановления работоспособности системы после "просадки" напряжения питания МК необходимо снова проинициализировать. Для этой цели в современных МК реализован дополнительный блок детектирования пониженного напряжения питания. Такой модуль используется в МК семейства HC08 фирмы Motorola, аналогичный модуль есть и в составе семейства PIC17 фирмы Microchip. Рассмотренный модуль генерирует сигнал внутренней инициализации при снижении напряжения питания до уровня чуть более низкого минимально допустимого. Уровень срабатывания блока детектирования пониженного напряжения питания значительно превышает напряжение хранения данных в ОЗУ МК. Событие сброса по сигналу блока пониженного напряжения питания отмечается специальным битом в одном из регистров МК. Итак, программно анализируя этот бит после инициализации МК, можно установить, что данные цели, и продолжить выполнение программы.

4.9.3. Сторожевой таймер

Если, несмотря на все принятые меры, МК все же "завис", то на случай выхода из этого состояния все современные контроллеры имеют встроенный модуль сторожевого таймера. Принцип действия сторожевого таймера показан на Рис. 4.11.


Рис. 4.11. Принцип действия сторожевого таймера.

Основу сторожевого таймера составляет многоразрядных счетчик. При сбросе МК счетчик устанавливается в ноль. После перехода МК в активный режим работы значение счетчика начинает увеличиваться независимо от выполняемой программы. При достижении счетчиком максимального кода генерируется сигнал внутренней инициализации, и МК начинает выполнять рабочую программу сначала.

Для отключения запуска по переполнением сторожевого таймера рабочая программа МК должна периодически сбрасывать счетчик. Сброс счетчика сторожевого таймера осуществляется путем выполнения специальной команды (например, CLRWDT) или с помощью записи некоторого указанного кода в один из регистров специальных функций. Тогда при нормальном, предусмотренном производителем, порядка выполнения рабочей программы переполнения счетчика сторожевого таймера не происходит, и он не оказывает влияния на работу МК. Однако, если выполнение рабочей программы было нарушено, например, по причине "зависания", то велика вероятность того, что счетчик не будет свергнут вовремя. Тогда произойдет сброс за переполнением сторожевого таймера, и нормальный ход выполнения рабочей программы будет восстановлен.

Модули сторожевых таймеров конкретных МК могут иметь различные особенности:

  • в ряде МК векторы внешней инициализации и инициализации за переполнением сторожевого таймера совпадают. Это не позволяет выявить причину инициализации программным путем и затрудняет написание рабочей программы. Более высокоуровневые МК имеют или разные векторы инициализации, или отмечают событие инициализации за переполнением сторожевого таймера установкой специального бита в одном из регистров специальных функций;
  • в некоторых МК при переходе в один из режимов пониженного энергопотребления, когда рабочая программа не выполняется, автоматически прекращается работа сторожевого таймера. В других МК сторожевой таймер имеет независимый тактовый генератор, продолжает функционировать и в режиме ожидания. В этом случае необходимо периодически выводит МК из состояния ожидания для инициализации сторожевого таймера. В PIC-контроллерах фирмы Microchip выработки таких инициализаций может быть запрещено путем записи нуля в специальный бит конфигурации WDTE.

Использование сторожевого таймера существенно повышает способность к самовосстановлению системы на основе МК.


«Структура курса Раздел 4 - Страницы:« | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | »