Решил вот написать короткую заметку по работе с EEPROM в AVR. EEPROM (Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ.
Итак, давайте каким нибудь простым способом научимся читать и записывать данные в память EEPROM микроконтроллера. Запись, чтение и обновление данных в EEPROM производится функциями определенными в файле eeprom.h (в папке с установленной WinAVR — \avr\include\avr\eeprom.h). С помощью этих функций могут быть прочитаны и записаны отдельные байты, двухбайтные данные (так называемое слово — word) и блоки данных. В этой заметке разберем как читать/писать отдельные байты и слова. Потому что, если писать о других типах и блоках данных, тогда заметка превратится в большую статью. При объявлении переменной в EEPROM должен быть определен атрибут для раздела «.eeprom». Обычно он определен в файле eeprom.h, но можно и перестраховаться и добавить в нашу программу
Теперь объявим переменные разных типов в EEPROM и поработаем с ними:
Чтение/запись байта
Чтение/запись слова
Немного подитожим. Аргументом функций eeprom_read_… является адрес переменной в EEPROM, а результатом — значение переменной в EEPROM. Аргументами функций eeprom_write_… являются адрес в EEPROM, куда записать данные и значение которое нужно записать.
Еще есть функции обновления eeprom_update_byte и eeprom_update_word, они используются также как и update_write_…
Да, еще, компилятор создаст файл с расширением .eep. Этот файл должен быть передан в микроконтроллер (запись EEPROM), если в EEPROM уже содержатся данные для начальной работы программы.
На этом пока все
Добавлено 3.03.2011 — Продолжение
«Хорошо, прочитал : «»Еще есть функции обновления eeprom_update_byte и eeprom_update_word, они используются также как и update_write_…»»
А чем они отличаются? (используются как write, значит ли ето, что они работают вполне одинаково?)
Зачем они нам?»
функции write записывают в любом случае, а функции update только если изменились байты. таким образом, можем дольше сохранять работоспособность eeprom памяти
Спасибо! Особенно за функцию update.