eeprom

EEPROM в микроконтроллерах AVR

Просмотров: 19093Комментарии: 0
AVR.НачинающимЭлектроника. Схемотехника
Почти во всех микроконтроллерах AVR есть память EEPROM (Electrically Erasable Programmable Read-Only Memory) - электрически стираемая программируемая постоянно запоминающая память. Память EEPROM сохраняет свое содержимое при отсутствии питания. Это бывает нужно, если мы хотим восстановить какие-то данные после перезагрузки микроконтроллера. Эта память находится в отдельном логическом и физическом пространстве. Как и для работы с другой периферией МК, для работы с EEPROM используются несколько регистров. Рассмотрим их.

EEAR - регистр адреса EEPROM. Если память превышает 256 байт, тогда для адресации используются два регистра - EEARH и EEARL (старший и младший байт регистра адреса). Чтобы записать  или считать данные нужно записать в эти регистры адрес ячейки памяти в которую мы хотим записать или с которой хотим считать байт данных.

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

EECR - регистр управления EEPROM

Чтение и запись EEPROM в WinAVR. Продолжение

Просмотров: 19336Комментарии: 1
AVR.НачинающимЭлектроника. Схемотехника

В предыдущей статье мы пробовали записывать и читать память EEPROM микроконтроллеров AVR используя функции WinAVR. Тогда мы работали с байтами и словами (тоже самое - char и int). А что если мы хотим записать long int, массив переменных (опять же  char, int, long int) или float? Давайте разберем все по порядку.

Чтение/запись dword (long int)
Итак, переменная типа long int (размер переменной в WinAVR - 4 байта). Для чтения и записи переменной этого типа в файле eeprom.h есть функции - eeprom_read_dword, eeprom_write_dword.

Выделение пунктов меню в микроконтроллерах AVR

Просмотров: 11898Комментарии: 0
Микроконтроллеры AVRЭлектроника. Схемотехника
Для полного понимания всего написанного ниже желательно хотя бы вкратце просмотреть статьи:


Просто листать меню это конечно хорошо, но в конечном итоге оно служит для настроек чего либо и нам нужно видеть какой пункт в подменю в данный момент включен. Для реализации нам понадобится какая-то переменная в EEPROM. Я ее называю MDCR (Main Display Control Register) - регистр управления отображением, хотя название не важно. Итак, давайте по пунктам, что нужно сделать чтобы отметить пункт меню:

  1. Объявляем по одной переменной одного типа в EEPROM и в RAM (ОЗУ) - ee_MDCR и MDCR.
  2. В секторе инициализации (где-нибудь в начале функции main) читаем значение переменной из EEPROM в переменную в RAM - MDCR=eeprom_read_byte(&ee_MDCR).
  3. Теперь при выборе какого нибудь пункта меню мы изменяем значение MDCR и записываем его в EEPROM по адресу eeMDCR - eeprom_write_byte(&ee_MDCR, MDCR);
  4. Анализируем MDCR и ставим соответствующую метку (выбран или нет);

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

Просмотров: 22590Комментарии: 3
AVR.НачинающимЭлектроника. Схемотехника
Решил вот написать короткую заметку по работе с 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