| Ваш IP: 3.239.7.207 | Online(23) - гости: 8, боты: 15 | Загрузка сервера: 1.08 ::::::::::::

ATtiny2313 EEPROM

ATtiny2313 содержит 128 Байт EEPROM (ППЗУ)-памяти. Эта память организована как отдельное пространство данных, каждый один байт может быть прочитан и записан. EEPROM (ППЗУ) может быть записана и стерта в сумме как минимум 100 000 раз.

Запись и чтение EEPROM осуществляется при помощи следующих регистров:

 

EEAR — регистр адреса EEPROM

EEPROM ATtiny2313 содержит 128 байт.

7 6 5 4 3 2 1 0
EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0

EEAR0…6 —  адреса EEPROM (0…127)

Пример использования:

EEAR = 0; // адрес ячейки памяти EEPROM = 0

 

EEDR — регистр данных EEPROM

7 6 5 4 3 2 1 0
EEDR[7:0]

Регистр данных EEDR должен содержать данные, которые будут записываться в EEPROM, по адресу определенному в регистре адреса EEAR.

Пример использования:

EEDR = 123;

 

EEСR — регистр управления EEPROM

7 6 5 4 3 2 1 0
EEPM1 EEPM0 EERIE EEMPE EEPE EERE

Биты  EEPM1 и EEPM0 определяют какое действие выполнит программа, когда в бит EEPE будет загружена 1. Это позволяет программировать данные в автоматическом режиме (стирание старых данных и записывание новых данных) или выполнять от отдельно операции стирания и записи.

EEPM[1:0] Время исполнения Операция
00 3,4 мс стирание и запись за одну операция (автоматический выбор)
01 1,8 мс только стирание
10 1,8 мс только запись
11

Бит EERIE — прерывание EEPROM по состоянию «готово к записи» .  В бит EERIE нужно записать 1, чтобы разрешить прерывание и переход  к вектору EE READY (EE_READY_vect — прерывание по готовности памяти EEPROM).

Бит  EEMPE — разрешение записи данных в EEPROM по заданному адресу.

Бит EEPE  исполнения записи в EEPROM. Бит EEMPE  должен уже содержать единицу еще до того, как единица будет записана в бит EEPE, иначе запись EEPROM не будет осуществлена.

Бит EERE разрешение чтения данных из EEPROM по указанному адресу.

 

Функции записи и чтения EEPROM

unsigned char EEPROM_read(unsigned int uiAddress){
  while(EECR & (1<<EEPE));  // проверка готовности EEPROM 
    EEAR = uiAddress; // регистр адреса
    EECR |= (1<<EERE);// чтение EEPROM
    return EEDR; // вывод значения
}
 
void EEPROM_write(unsigned int uiAddress, unsigned char ucData){
  while(EECR & (1<<EEPE)); // проверка готовности EEPROM 
      EEAR = uiAddress; // регистр адреса
      EEDR = ucData; // регистр данных 
      EECR |= (1<<EEMPE);// Разрешение записи в EEPROM
      EECR |= (1<<EEPE); // Запись в EEPROM
} 

 

Пример:

void setup() {
  DDRB |= (1 << 0); // PB0 выход
  EEPROM_write(0,14);// запись число 123 по адресу 0 в EEPROM
}

void loop() {
 if( EEPROM_read(0) == 14 ) {PORTB |= (1 << 0);} // если результат чтения адреса EEPROM равен 123, зажечь светодиод, 
  delay(1000);
  PORTB &= ~(1 << 0);// погасить светодиод
  delay(1000);
}

unsigned char EEPROM_read(unsigned int uiAddress){
  while(EECR & (1<<EEPE));  // проверка готовности EEPROM 
    EEAR = uiAddress; // регистр адреса
    EECR |= (1<<EERE);// чтение EEPROM
    return EEDR; // вывод значения
}
 
void EEPROM_write(unsigned int uiAddress, unsigned char ucData){
  while(EECR & (1<<EEPE)); // проверка готовности EEPROM 
      EEAR = uiAddress; // регистр адреса
      EEDR = ucData; // регистр данных 
      EECR |= (1<<EEMPE);// Разрешение записи в EEPROM
      EECR |= (1<<EEPE); // Запись в EEPROM
} 

Светодиод подключен к выходу PB0, в секции setup() осуществляется запись числа 14 в 0 ячейку памяти EEPROM, в цикле loop() осуществляется чтение адреса 0 EEPROM, если данные записи и чтения идентичные, то светодиод начинает мигать с интервалом 1 секунда.

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Бестрансформаторный источник питания 12 В / 15 мА

    Бестрансформаторный источник питания 12 В / 15 мА

    Некоторые схемы которые имеют небольшой ток потребления, поэтому для их работы можно использовать простые бестрансформаторные источники питания. В подобных источниках питания целесообразно использовать диодный мост, для увеличения величины выходного тока и меньшей пульсации выходного напряжения, что позволяет использовать конденсаторный фильтр меньшей емкости. Поэтому в предложенной схеме VD3 VD4 используются как …Подробнее...
  • Секундомер на ATtiny2313 (Arduino IDE)

    Секундомер на ATtiny2313 (Arduino IDE)

    На базе ATtiny2313 можно собрать простой секундомер. Информация выводится на дисплей LCD1602. Для управления секундомером используются три кнопки — СТАРТ, СТОП, СБРОС. Минимальный шаг секундомера 0,1 секунда, максимальное время измерения 24 часа. Кнопки СТОП и СТАРТ работают через прерывания IN0 и INT1 (пример — https://rcl-radio.ru/?p=94273), время тактируется при помощи таймера …Подробнее...
  • Часы-будильник на PIC16F877A

    Часы-будильник на PIC16F877A

    На рисунке показана схема часов с будильником. Часы отображают часы, минуты и секунды, будильник только часы и минуты. Дополнительной опцией часов является термометр, датчик температуры LM35 подключен к выводу 9 (AN6) микроконтроллера. После подачи питания на микроконтроллер необходимо установить правильное время, сделать это можно при помощи кнопки «Установка времени», при …Подробнее...
  • Автоматическая регулировка усиления

    Автоматическая регулировка усиления

    Автоматическая регулировка усиления  (АРУ) регулирует выходной сигнал в определенных пределах, при разном уровне входного сигнала.В результате устраняются различия громкости, которые могут раздражать, при смене каналов радиоприемника, телевизора… Полевой транзистор VT1 используется как переменное сопротивление. Это значение может  от бесконечности до 150Ω, тем самым регулируя усиление ОУ на TL072.Подробнее...
  • Регулируемый блок питания с цифровым управлением

    Схема регулируемого блока питания м цифровым управлением состоит из регулятора положительного напряжен7ия на KM317, КПОМ декадного счетчика CD4017, таймера NE555 и регулятора отрицательного напряжения на LM7912. Напряжение сети понижается трансформатором до напряжения +/-12В при токе 1А во вторичной обмотке, далее оно выпрямляется. С1-С5 емкостной фильтр постоянного напряжения. Светодиод LED1 сигнализирует …Подробнее...