Предыдущий << EEARH $1F,  EEARL $1E,  EEDR $1D, EECR $1C   >>Следующий

Энергонезависимая память (точнее, управление ею) представлена четырьмя региcтрами. EEARH и EEARL - это регистр адреса, EEDR - данных, EECR - регистр управления.  Энергонезависимая память (далее - EEPROM)  может записываться как программатором, так и программой микроконтроллера. Ресурс перезаписей ( по даташиту) не менее 100.000 раз, стирать перед записью (как память программ) не нужно. Время записи байта - не более 4 мс.

У рассматриваемого нами МК 8535 объем EEPROM 512 байт, У МК с меньшим объемом (256 байт и менее) регистр EEARH отсутствует. EEPROM очень удобна для хранения настроечных данных и любых запоминаемых параметров работы.

Чтение из энергонезависимой памяти предельно просто - нужный адрес занести в EEARH (старший байт) и EEARL (младший байт), установить в "1" бит EERE в регистре EECR и ждать, пока этот бит не обнулится аппаратно. После чего - в регистре EEDR находятся прочитанные данные.

Запись немного посложнее. Сначала адрес, куда мы хотим писать, заносится в EEARH и EEARL, так же, как и при чтении. Затем записываемое значение заносится в EEDR. После этого нужно записать "1" в бит EEMWE и после этого записать "1" в бит EEWE. Сделано так для защиты от каких-либо сбоев, чтобы запись в EEPROM происходила только при "осмысленном" обращении. Бит EEMWE сбрасывается аппаратно через несколько тактов МК, делая запись в EEPROM невозможной.

После всего вышеизложенного программе остается ждать, когда бит EEWE сбросится в "0". Правда, ждать придется достаточно долго, и если вас это не устраивает - можно разрешить прерывание, установив в "1"бит EERIE. В этом случае программа, выполнив все вышеописанные действия, идет дальше по своим делам (все, кроме работы с EEPROM!), а по окончанию записи произойдет соответствующее прерывание и сообщит программе - готово!

Бит EECR Название  Описание
3 EERIE  Бит разрешения прерывания по окончанию цикла записи
2 EEMWE  Бит - "предохранитель" записи
1 EEWE  Старт записи. Сработает только в случае, когда EEMWE=1
0 EERE  Старт чтения

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

Выход из этой ситуации есть лишь один - использовать так называемый супервизор питания. Это такая микросхемка в трехногом корпусе, выпускаемая многими производителями. Две ноги - подключаются к напряжению питания, третья - на пин Reset  микроконтроллера. Работает она очень просто - при малом напряжении питания держит МК в режиме сброса. Для того, чтобы не мешала программатору - лучше ее выход подключить в выводу Reset   через резистор ~1 кОм

В более новых МК фирмы Atmel такое устройство уже встроено в сам МК и режимы работы его задаются fuse-битами. Это МК серий Tiny и Mega.


Отопление подмосковной дачи. Геотермальное отопление загородного дома. Системы отопления загородного дома. ·· мдф купить

nml 11-Jul-2009