AVR для начинающих. Урок 15. Регистры EEPROM.

Автор: | 29.01.2017

Здравствуйте уважаемые читатели!

В данной статье мы продолжим знакомство с EEPROM нашего контроллера. Начало работы с EEPROM в предыдущем уроке. Сегодня мы рассмотрим регистры отвечающие за работу с данным видом памяти, а так же напишем программу на Assembler, осуществляющую подсчет количества перезапусков контроллера.

Итак, приступим к изучению регистров EEPROM:

  • EEARL:EEARH

Пара 8 разрядных регистров EEARL и EEARH указывают на адрес в памяти EEPROM. То есть дальнейшие операции чтения/записи будут производиться с данными, расположенными по данному адресу.

  • EEDR

При операции записи регистр EEDR содержит в себе байт данных, который будет записан при выполнении операции записи. При операции чтения, байт данных считанный из EEPROM будет записан в данный регистр.

  • EECR

Контрольный регистр EEPROM содержит в себе регистры управляющие работой EEPROM. Рассмотрим каждый бит подробнее:

  1. EEREБит разрешения чтения данных EEPROM по адресу EEAR (EEARH: EEARL). Для начала операции чтения, бит должен быть установлен в состояние логической единицы. По окончанию операции чтения, считанные данные будут расположены в регистре EEDR.

  2. EEWEБит разрешения записи данных в EEPROM по адресу EEAR (EEAH:EEARL). Для начала операции записи данных, бит должен быть установлен в состояние логической единицы. При этом бит EEMWE так же должен быть установлен в “1”. Записываемые данные находиться в регистре EEDR.

  3. EEMWEБит управления разрешением записи данных в EEPROM. Перед началом операции записи, должен быть установлен в “1”. Является своеобразным предохранителем от случайной записи данных в память EEPROM.

  4. EERIEБит разрешающий прерывание по готовности EEPROM. Следует помнить, что для разрешения данного прерывания так же необходимо установить соответствующий бит байта SREG. Подробнее о работе с EEPROM при помощи прерываний поговорим в следующей статье.

Читайте также  AVR для начинающих. Урок 11.UART.Подключение к компьютеру.

С регистрами закончили. Далее, предлагаю рассмотреть алгоритмы записи/ чтения данных в EEPROM.

Порядок записи:

  1. Дождаться обнуления бита EEWE регистра EECR

  2. Записать необходимый адрес в пару регистров EEARH:EEARL

  3. Записать данные в регистр EEDR

  4. Записать логическую единицу в бит EEMWE регистра EECR

  5. В течении четырех тактов после установки EEMWE необходимо установить в “1” бит EEWE

Порядок чтения:

  1. Дождаться обнуления бита EEWE регистра EECR

  2. Записать необходимый адрес в пару регистров EEARH:EEARL

  3. Установить в состояние логической единицы бит EERE регистра EECR

Давайте в качестве примера напишем программу идентичную программе из предыдущего урока. Однако теперь функции для работы с памятью напишем самостоятельно и на языке Assembler.

 

Читайте также  GSM / GPRS модуль SIM800L

Постараюсь немного объяснить происходящее.

Сначала подключаем файл m8def.inc к нашей программе. Данный файл содержит в себе описания всех регистров микроконтроллера AtMega8. Следовательно, при прошивке другого контроллера название файла будет другим. Далее, директивой .ESEG мы сообщаем компилятору о необходимости размещения следующих дальше переменных в области памяти EEPROM. Разместив в памяти EEPROM байт num, переходим к сегменту кода, директивой .CSEG. После инициализации контроллера переходим к основной части программы. Для чтения/записи данных из EEPROM были написаны 2 функции EEPROM_read и EEPROM_write, согласно приведенным выше алгоритмам. В основной части программы функциями EEPROM_read и EEPROM_write считываем текущее значение счетчика, выводим его в двоичном виде на линии порта D, увеличиваем на единицу и сохраняем обратно в памяти.

После компиляции будет создан файл .eep. Как работать с ним смотрите здесь.

Если у Вас остались вопросы, оставляйте их в комментариях.

Другие уроки цикла.


Любое копирование, воспроизведение, цитирование материала, или его частей разрешено только с письменного согласия администрации MKPROG.RU. Незаконное копирование, цитирование, воспроизведение преследуется по закону!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *