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

Енергонезалежна пам'ять даних (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, виглядає так:
