"Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом."

суббота, 11 января 2020 г.

Постоянная память данных EEPROM

Микроконтроллер ATmega328P имеет постоянное запоминающее устройство - память EEPROM, имеющая емкость 1024 Байта. При отключении питания и сбросе микроконтроллера все данные, хранящиеся в EEPROM остаются без изменений.

Регистры EEPROM:
  • EEAR (16 бит) - регистр адреса 
  • EEDR - регистр данных
  • EECR - регистр управления
Регистр EEARH:
7
6
5
4
3
2
1
0
-
-
-
-
-
-
EEAR9
EEAR8

Регистр EEARL:
7
6
5
4
3
2
1
0
EEAR7
EEAR6
EEAR5
EEAR4
EEAR3
EEAR2
EEAR1
EEAR0

Для управления прерываниями, а также чтением и записью в EEPROM используется регистр EECR:
7
6
5
4
3
2
1
0
-
-
EEPM1
EEPM0
EERIE
EEMPE
EEPE
EERE
Биты EEPM1 (5) и EEPM0 (4) регистра EECR управляют режимами обновления EEPROM:
  • 00 - стирание старого значения и запись нового (3.4 мс)
  • 01 - только стирание старого значения (1.8 мс)
  • 10 - только запись нового значения (1.8 мс)
  • 11 - резерв
Бит EERIE (3) регистра EECR разрешает прерывания по завершению записи в EEPROM при записи в него 1.
Бит EEMPE (2) регистра EECR разрешает запись в EEPROM если в него записать 1 (сбрасывается в 0 через 4 машинных цикла).
Бит EEPE (1) регистра EECR управляет записью в EEPROM (если записать в него 1, то будет произведена запись данных из регистра EEDR в EEPROM по адресу EEAR).
Бит EERE (0) регистра EECR управляет чтением в EEPROM (если записать в него 1, то будет произведено чтение данных из EEPROM по адресу EEAR в регистр EEDR ).