Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

312 Микроконтроллеры AVR от азов программирования... строке происходит глобальный запрет всех прерываний. А в строке 157 подпрограмма wait завершается. Две оставшиеся, еще не описанные вспомогательные процедуры пред ­ назначены для работы с EEPROM. При записи в этот вид памяти и чтения из нее нужно соблюдать определенную последовательность действий. Эта последовательность подробно описана в документации на микрокон ­ троллеры AVR [5]. Там же приведены примеры процедур, рекомендованные производи ­ телем для этих целей. Описываемые ниже процедуры являются практи ­ чески полной копией рекомендованных процедур, дополненные лишь командой автоматического увеличения адреса. Для управления памятью EEPROM используются специальные регистры ввода-вывода: ♦ EEAR — регистр адреса; ♦ EEDR — регистр данных; ♦ EECR — регистр управления. Отдельные разряды регистра управления также имеют имена: ♦ EEWE — бит записи; ♦ EEMWE — бит разрешения записи; ♦ EERE — бит чтения. Все названия введены фирмой-производителем и правильно пони ­ маются транслятором, если вы не забыли присоединить в начале про ­ граммы файл описаний. Порядок записи байта в EEPROM следующий. Байт данных, пред ­ назначенный для записи, должен быть помещен в регистр EEDR, а байт адреса — в регистр в EEAR. Для того, чтобы разрешить запись, необ ­ ходимо установить бит EEMWE. Затем в течение четырех машинных циклов (то есть следующей же командой) нужно установить бит EEWE. Сразу же после установки бита EEWE начинается процесс записи. Этот процесс занимает довольно продолжительное время. Все это время бит EEWE остается установленным. По окончании процесса записи он сам сбрасывается в ноль. Такой многоступенчатый алгоритм придуман для предотвращения случайной записи. Подпрограмма, реализующая описанный выше алгоритм записи байта, называется eewr и занимает строки 158 — 166. Байт данных, предназна ­ ченный для записи, передается в процедуру при помощи регистра data, а адрес ячейки, куда нужно записать данные, — через регистр addre. Работа подпрограммы начинается с глобального запрета всех прерыва ­ ний (строка 158). Это обязательное условие работы с EEPROM. Невовремя вызванное прерывание может помешать процессу записи. В данном случае запрет пре ­ рываний является избыточной мерой, так как программа построена таким образом, что при записи в EEPROM прерывания всегда запрещены.

RkJQdWJsaXNoZXIy MTExODQxMg==