Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 10. Использование EEPROM 275 Отметим, что даже в доработанных клонах Arduino никакого супервизора, конечно, нет. И тут мы имеем все преимущества, которые особенно выявляются в случае конструирования устройств с автономным батарейным питанием. Подключение монитора питания (супервизора), как мы уже говорили, не представ ляет проблем - в простейшем случае он ставится просто вместо RС-цепочки по входу RESET (как типы DS 1 8 1 3-1 8 1 8), в других случаях иногда требуется отдель ный подтягивающий резистор в несколько килоом. Отметим еще, что можно применить рекомендуемый в фирменных описаниях спо соб защиты EEPROM переводом МК в состояние пониженного энергопотребления . Это можно сделать, например, если подсоединить монитор питания к выводу внешнего прерывания и все время отслеживать соответствующий бит в регистре GIFR, при установке которого в единичное состояние немедленно уводить МК в «спящее» состояние (штатным способом - через обработчик прерывания - это сделать сложнее, т. к. в прерывании команда s leep будет просто проигнорирова на, - см. главу 14) . Но, кроме относительной сложности этого процесса, следует еще учитывать, что при резком снижении потребления напряжение источника не медленно опять повысится (особенно в случае батарейного питания) . И если у вас предусмотрена процедура обратного вывода из этого состояния (например, чтобы схема не «защелкивалась>> при случайных бросках напряжения), то при относи тельно малом значении гистерезиса монитора питания это обязательно вызовет е « м др ебезг» схемы, и неизвестно, что хуже. Увеличить гистерезис можно включени еще нескольких резисторов, но, на взгляд автора, лучше при наличии внешнего монитора обойтись вводом в режим сброса, как более простым и надежным спосо бом, не требующим программного вмешательства и к тому же автоматически пре дусматривающим защиту от «защелкивания». Запись и чтение EEPROM Запись и чтение данных в EEPROM осуществляется через специальные регистры ввода/вывода: регистр данных EEDR, регистр адреса EEAR (если объем EEPROM бо лее 256 байтов, то последний состоит из двух регистров: EEARH и EEARL ) и регистр управления EECR. Основная особенность этого процесса - большая продолжитель ность процедуры записи, которая для разных моделей АVR может длиться пример но от 2 до 9 мс, в тысячи раз дольше, чем выполнение обычных команд. Обратим внимание, что, в отличие от записи, чтение формально осуществляется всего за один машинный цикл, даже быстрее, чем из обычной SRAM, - это типичная осо бенность всех EEPROM, имеющих структуру NOR (в отличие от flаsh-памяти, ко торая сейчас сплошь делается на NАND-структурах) . Поскольку в АVR это лишь область флеш-памяти, эмулирующая функциональность EEPROM, то в реальности чтение длится несколько дольше (подробно об этом чуть позже), хотя, конечно, да леко не так долго, как запись. При инициализации записи байта в EEPROM в регистре управления EECR устанав ливается флаг разрешения записи EEWE, по окончании записи он автоматически сбрасывается. Для удобства почти во всех моделях АVR предусмотрено соответст-
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==