Робота з eeprom в avr-gcc
Що таке пам'ять EEPROM?
Більшість МК AVR від Atmel містять EEPROM (Electronically Erasable Read-Only Memory) - незалежну пам'ять з досить великою кількістю циклів запису. Дані, записані в цю пам'ять, не будуть скидатися навіть при відключенні харчування, що дуже зручно, наприклад, для зберігання налаштувань або якихось ідентифікаційних даних.
EEPROM в AVR має обмежену кількість циклів запису - 100 000. Кількість циклів читання не обмежена.
Використання бібліотеки AVRLibC EEPROM
AVRLibC (зазвичай вона входить до складу компілятора AVR-GCC) містить готову бібліотеку для роботи з EEPROM. Щоб її використовувати, потрібно додати наступний заголовки:
У цій бібліотеці три основних типи даних: byte (1 байт), word (2 байта) і блок даних. У нових версіях додані ще два типи - dword (4 байта) і float (8 байт). Їх ми розглядати не будемо - робота з ними ідентична роботі з byte \ word типами. Для кожного типу є своя функція запису і читання. Ось вони:
Читання byte \ word
Word-тип записується і Новомосковскется так само, за винятком того, що функції потрібен покажчик на int.
Робота в блоками даних в EEPROM
Наведемо приклад читання трьох змінних (byte, int і block) з EEPROM в звичайні змінні (SRAM):
Запам'ятайте! Якщо Ви не завантажте файл .eep, Ваша програма буде працювати з EEPROM, який був завантажений в попередній раз, або з порожніми значеннями (0xFF). Ви повинні передбачити спосіб перевірки правильності EEPROM - наприклад, перевіряти відомі значення за замовчуванням.