Непряма адресація

непряма

Енергонезалежна пам'ять даних (EEPROM)

EEPROM (англ. Electrically Erasable Programmable Read-Only Memory) - електрично стирається ПЗП (ЕСППЗУ), що перепрограмується, один з видів енергонезалежної пам'яті. Пам'ять такого типу може стиратися та заповнюватися даними до мільйона разів.

Доступ до EEPROM

Регістр даних

Регістр управління

Мал. 6.1.Формат регістру EECR

РозрядНазваОпис
7…4-Чи не використовуються, читаються як «0»
EERIEДозвіл переривання від EEPROM. Цей розряд керує генерацією переривання, що виникає при завершенні циклу запису EEPROM. Якщо цей розряд встановлено в "1", переривання дозволені (якщо прапор I регістру SREG також встановлено в "1"). При скинутому розряді EEWE переривання генерується постійно
EEMWEКерування роздільною здатністю запису в EEPROM. Стан цього розряду визначає функціонування прапорця роздільної здатності EEWE. Якщо цей розряд встановлений в «1», при записі в розряд EEWE «1» відбувається запис даних у EEPROM. А якщо ні, то установка EEWE в «1» не справляє жодного ефекту. Після програмної установки цей розряд скидається апаратно через 4 машинні цикли
EEWEРоздільна здатність запису в EEPROM. При встановленні цього розряду в "1" відбувається запис даних в EEPROM (якщо EEMWE дорівнює "1")
EEREРоздільна здатність читання з EEPROM. Після встановлення цього розряду в "1" виконується читання даних з EEPROM. Після закінчення читання цей розряд скидається апаратно

Таблиця 6.1.Розряди регістру EECR

Таким чином, процедура записуодного байта в EEPROM-пам'ять складається з наступних етапів:

  • дочекатися готовності EEPROM до запису даних (чекати доки скинеться прапор EEWE (EEPROM Write Enable) регістру EECR);
  • встановити в "1" прапор EEMWE (EEPROM Memory Write Enable) регістра EECR;
  • протягом 4-х машинних циклів після встановлення прапора EEMWE записати "1" у розряд EEWE регістру EECR.

Тривалість циклу запису залежить від частоти внутрішнього RC- генератора (від значення калібрувальної константи) і становить 3.1…6.8 мс для моделей ATtiny12x і 4.6…8.2 мс для моделі ATtiny15L. Після закінчення циклу запису розряд EEWE апаратно скидається, після чого програма може розпочати запис наступного байта. Слід також пам'ятати, що після встановлення розряду EEWE в "1", процесор пропускає 2 машинні цикли перед виконанням наступної інструкції.

Для уникнення описаних проблем рекомендується забороняти всі переривання (скидати біт I регістру SREG) при виконанні пунктів 2…4 описаної вище послідовності.

З урахуванням сказаного фрагмент програми, що здійснює запис в EEPROM, виглядає так:

розряд

Операція читання з EEPROM завжди виконується за машинний цикл. Крім того, після встановлення розряду EERE в «1» процесор пропускає 4 машинні цикли перед початком виконання наступної інструкції. Тому стежити у програмі за станом розряду EERE немає потреби.

З урахуванням сказаного фрагмент програми, який здійснює читання з EEPROM, виглядає так:

розряд