Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kharakhnin / ПОСОБИЕ_Харахнин.doc
Скачиваний:
274
Добавлен:
08.03.2016
Размер:
17.89 Mб
Скачать

5.8. Контроль напряжения питания в микропроцессорных системах

В микропроцессорных системах необходимо осуществлять контроль напряжения питания. Связано это с тем, что при управлении технологическим оборудованием (в нештатных ситуациях при пропадании напряжения питания) МК должна запомнить в энергонезависимой памяти некоторые технологические параметры. При восстановлении напряжения питания МК должна проанализировать содержимое памяти и начать управление процессом с учетом сохраненных параметров. В недалеком прошлом в качестве энергонезависимой памяти использовалось статическое ОЗУ ( например, двухкилобайтное К537РУ10 ) с автономным питанием в виде аккумуляторной батареи. В режиме хранения информации указанное ОЗУ потребляет небольшой ток 400 мкА. Недостатком таких энергонезависимых ОЗУ является необходимость в подзарядке батареи и ее замене при выходе из строя.

С появлением новых технологий – FLASH ОЗУ не требуется применения аккумуляторной батареи. По существу, при падении напряжения питания происходит программирование такого ОЗУ. Число циклов записи во FLASH ОЗУ составляет 100000 раз. Таким ОЗУ обладает микросхема однокристального МК AT89S8252 /10,11 /. Рассмотрим более подробно ее особенности.

Микросхема однокристального МК AT89S8252 содержит на кристалле память программ объемом в 8 кБайт, 256 байт внутреннего ОЗУ, двухкилобайтное FLASH ОЗУ. FLASH память доступна командой MOVX. Размещенная на кристалле энергонезависимая память данных позволяет хранить сколь угодно долго константы, таблицы и другие данные, которые не должны быть потеряны в процессе работы, а также и при выключении питания. Рассмотрим биты регистра WMCON для управления сторожевым таймером WDT и FLASH памятью.

Регистр WMCON ( адрес регистра 096Н )

PS2

PS1

PS0

EEMWE

EEMEN

DPS

WDTRST

WDTEN

PS2, PS1, PS0 – устанавливают время переброса МК сигналом от сторожевого таймера (табл.31).

Таблица 31

PS2

PS1

PS0

Время переброса, мС

0

0

0

16

0

0

1

32

0

1

0

64

0

1

1

128

1

0

0

256

1

0

1

512

1

1

0

1024

1

1

1

2048

WDT (WATCH DOG TIMER) - дословный перевод этой фразы “сторожевой пес”. Сторожевой таймер предназначен для контроля работы программы однокристального МК. МК должен периодически обращаться к WDT (сбрасывать его), говоря тем самым, что устройство “живое”. Если обращения к WDT нет (это означает, что МК “завис”) в течение некоторого времени (тайм-аута), то сторожевой таймер генерирует сигнал сброса определенной длительности, пытаясь таким образом восстановить работоспособность контроллера.

EEMWE – бит разрешения программе пользователя заносить информацию во FLASH память данных. При EEMWE = 1 запись во FLASH память разрешена, бит должен быть сброшен в 0 после завершения записи.

EEMEN – бит разрешения доступа к находящейся на кристалле по адресам 0000Н – 07FFH FLASH памяти. Когда EEMEN = 1 и адрес лежит в вышеуказанных пределах, команда MOVX обеспечивает обращение к FLASH памяти данных. При EEMEN = 0 обращение происходит к внешней памяти данных (если имеется внешняя микросхема ОЗУ).

DPS - бит выбора указателя адреса; если DPS = 0, то активен основной DPTR, если DPS = 1, то активен дополнительный DPTR1.

WDTRST – бит сброса содержимого сторожевого таймера.

WDTEN - бит включения/выключения сторожевого таймера, при WDTEN=1 сторожевой таймер включен и выключен при WDTEN = 0.

Итак, в адресном пространстве внешней памяти FLASH память данных занимает адреса с 0000Н по 07FFН. Для обращения к ней (для записи и считывания) необходимо установить EEMEN=1. Перед записью байта во FLASH память нужно установить EEMWE = 1, после окончания записи его рекомендуется сбросить. Запись одного байта в память занимает 2.5 мС.

Микросхема AT89S8252 потребляет ток 20 мА при частоте 16МГЦ, в режиме холостого хода (IDLE) – 6 мА, в режиме микропотребления (PD) – 100 мкА.

Контроль падения напряжения питания фиксируется посредством специальной микросхемы КР1171СР (рис.68). Ее выход подключается к одному из входов запросов на прерывание однокристального МК.

При напряжении питания +5В на выходе КР1171СР42 имеет место единичный уровень и прерывания не наступает. При падении напряжения питания до 4,2 В происходит срабатывание КР1171СР42 и на ее выходе устанавливается нулевой уровень, вызывающий прерывание в работе МК. В это время необходимо записать все необходимые параметры во FLASH ОЗУ.

Рис. 68. Схема контроля падения напряжения питания

Рассмотрим примеры работы с внешней FLASH памятью данных.

Пример 1. Сохранить 10 байт данных внутреннего ОЗУ однокристального МК, начиная с адреса 30Н, во FLASH ОЗУ с адреса 0000Н.

<1>WMCON EQU 096H ; Обозначение регистра управления

<2> ORG 0000H ;

<3> JMP INIT ; Переход на инициализацию системы

<4> ORG 0013H ; Адрес-вектор прерывания по входу INT1

<5> JMP INT_POWER ;На подпрограмму обслуживания прерывания

<6>INIT: MOV R0,#30H ;Загрузка регистра указателя начала массива

<7> MOV DPTR,#0000H ; Указание начала области FLASH ОЗУ

<8> MOV IE,#00000100B; Разрешение прерывания от INT1

<9> SETB EA ; Разрешение всех разрешенных прерываний

<10>MAIN: ; Блок основной программы

<11> JMP MAIN ;

<12>INT_POWER:ORL WMCON,#18H ;Разрешение записи во FLASH ОЗУ

<13>AGAIN: MOV A,@R0 ;Взять данное из внутреннего ОЗУ

<14> MOVX @DPTR,A ;Разместить его во FLASH ОЗУ

<15> INC DPTR ; Продвижение по массиву

<16> INC R0 ;

<17> CJNE R0,#3AH,AGAIN;Если все данные, то запретить запись во FLASH

<18> ANL WMCON,#11101111B; Сброс бита EEMWE

<19> RETI ; Возврат в основную программу

После инициализации системы (шаги с 6 по 9) процессор выполняет процедуры основной программы. При падении напряжения питания ниже 4,2 В возникает запрос на прерывание по входу INT1 и процессор переходит на метку INT_POWER, где происходит разрешение записи во FLASH (шаг 12) и непосредственно пересылаются данные из внутреннего ОЗУ во FLASH (шаги с 13 по 17). После этого запрещается запись во FLASH память (шаг 18).

Пример 2. Переслать содержимое 10 ячеек FLASH памяти данных (с адреса 0000Н) во внутреннее ОЗУ, начиная с ячейки 30Н.

<1> WMCON EQU 096H ;

<2> SAVE_IRAM:ORL WMCON,#08H;Разрешение обращения к FLASH RAM

<3> MOV R0,#30H ; Указание на начальный адрес массива

<4> MOV DPTR,#0000H; Начальный адрес во FLASH RAM

<5>IRAM: MOVX A,@DPTR ; Пересылка из FLASH в IRAM

<6> MOV @R0,A ;

<7> INC DPTR ; Продвижение по массиву

<8> INC R0 ;

<9> CJNE R0,#3AH,IRAM;Если не все данные, то продолжить

<10> RET ;

З а д а н и е д л я с а м о с т о я т е л ь н о й р а б о т ы

Разработайте фрагмент, обеспечивающий сохранение второго банка регистров внутреннего ОЗУ во FLASH памяти данных МК при выключении напряжения питания.