Основы микропроцессорной техники | |
Раздел 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.9.2. Блок детектирования пониженного напряжения питанияВ реальных условиях эксплуатации может сложиться такая ситуация, при которой напряжение питания МК опустится ниже минимально допустимого, но не достигнет порога отпускания схемы POR. В этих условиях МК может "зависнуть". При восстановлении напряжения питания до номинального значения МК останется неработоспособным. Для восстановления работоспособности системы после "просадки" напряжения питания МК необходимо снова проинициализировать. Для этой цели в современных МК реализован дополнительный блок детектирования пониженного напряжения питания. Такой модуль используется в МК семейства HC08 фирмы Motorola, аналогичный модуль есть и в составе семейства PIC17 фирмы Microchip. Рассмотренный модуль генерирует сигнал внутренней инициализации при снижении напряжения питания до уровня чуть более низкого минимально допустимого. Уровень срабатывания блока детектирования пониженного напряжения питания значительно превышает напряжение хранения данных в ОЗУ МК. Событие сброса по сигналу блока пониженного напряжения питания отмечается специальным битом в одном из регистров МК. Итак, программно анализируя этот бит после инициализации МК, можно установить, что данные цели, и продолжить выполнение программы. 4.9.3. Сторожевой таймерЕсли, несмотря на все принятые меры, МК все же "завис", то на случай выхода из этого состояния все современные контроллеры имеют встроенный модуль сторожевого таймера. Принцип действия сторожевого таймера показан на Рис. 4.11.
Основу сторожевого таймера составляет многоразрядных счетчик. При сбросе МК счетчик устанавливается в ноль. После перехода МК в активный режим работы значение счетчика начинает увеличиваться независимо от выполняемой программы. При достижении счетчиком максимального кода генерируется сигнал внутренней инициализации, и МК начинает выполнять рабочую программу сначала. Для отключения запуска по переполнением сторожевого таймера рабочая программа МК должна периодически сбрасывать счетчик. Сброс счетчика сторожевого таймера осуществляется путем выполнения специальной команды (например, CLRWDT) или с помощью записи некоторого указанного кода в один из регистров специальных функций. Тогда при нормальном, предусмотренном производителем, порядка выполнения рабочей программы переполнения счетчика сторожевого таймера не происходит, и он не оказывает влияния на работу МК. Однако, если выполнение рабочей программы было нарушено, например, по причине "зависания", то велика вероятность того, что счетчик не будет свергнут вовремя. Тогда произойдет сброс за переполнением сторожевого таймера, и нормальный ход выполнения рабочей программы будет восстановлен. Модули сторожевых таймеров конкретных МК могут иметь различные особенности:
Использование сторожевого таймера существенно повышает способность к самовосстановлению системы на основе МК. | |
| «Структура курса Раздел 4 - Страницы:« | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | » | |