Samou4ka » 🐞 AVR.Начинающим » Чтение и запись EEPROM в WinAVR

Чтение и запись EEPROM в WinAVR

Решил вот написать короткую заметку по работе с EEPROM в AVR. EEPROM (Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ.

Итак, давайте каким нибудь простым способом научимся читать и записывать данные в память EEPROM микроконтроллера. Запись, чтение и обновление данных в EEPROM производится функциями определенными в файле eeprom.h (в папке с установленной WinAVR — \avr\include\avr\eeprom.h). С помощью этих функций могут быть прочитаны и записаны отдельные байты, двухбайтные данные (так называемое слово — word) и блоки данных. В этой заметке разберем как читать/писать отдельные байты и слова. Потому что, если писать о других типах и блоках данных, тогда заметка превратится в большую статью. При объявлении переменной в EEPROM должен быть определен атрибут для раздела «.eeprom». Обычно он определен в файле eeprom.h, но можно и перестраховаться и добавить в нашу программу

#ifndef EEMEM
#define EEMEM__attribute__ ((section («.eeprom»)))
#endif

Теперь объявим переменные разных типов в EEPROM и поработаем с ними:

unsigned char eeVar EEMEM = 200;//byte
unsigned short int eeWord EEMEM = 32768;//word

Чтение/запись байта

unsigned char myVar;
myVar = eeprom_read_byte(&eeVar);//читаем содержимое переменной
myVar = 100;//изменяем значение
eeprom_write_byte(&eeVar, myVar); // записываем новые данные в EEPROM

Чтение/запись слова

unsigned short int myWord;
myWord = eeprom_read_word(&eeWord); // чтение данных из EEPROM
myWord = 65000;//изменяем значение
eeprom_write_word(&eeWord, myWord); //записываем в EEPROM

Немного подитожим. Аргументом функций eeprom_read_… является адрес переменной в EEPROM, а результатом — значение переменной в EEPROM. Аргументами функций eeprom_write_… являются адрес в EEPROM, куда записать данные и значение которое нужно записать.

Еще есть функции обновления eeprom_update_byte и eeprom_update_word, они используются также как и update_write_…

Да, еще, компилятор создаст файл с расширением .eep. Этот файл должен быть передан в микроконтроллер (запись EEPROM), если в EEPROM уже содержатся данные для начальной работы программы.

На этом пока всеsmile

Добавлено 3.03.2011 — Продолжение

Как вам статья? Ваша реакция:
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
Расскажите друзьям:
Оцените статью:

3 комментария

  • «Хорошо, прочитал : «»Еще есть функции обновления eeprom_update_byte и eeprom_update_word, они используются также как и update_write_…»»

    А чем они отличаются? (используются как write, значит ли ето, что они работают вполне одинаково?)

    Зачем они нам?»

  • функции write записывают в любом случае, а функции update только если изменились байты. таким образом, можем дольше сохранять работоспособность eeprom памяти

Оставить комментарий