| Ваш IP: 100.26.179.251 | Online(41) - гости: 8, боты: 33 | Загрузка сервера: 1.44 ::::::::::::

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 секунда.

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

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

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

  • Узел настройки УКВ-ЧМ приемника

    Узел настройки УКВ_ЧМ приемника представляет собой синтезатор напряжения для электронной настройки УКВ_ЧМ приемника и как дополнительное уст-во — электронную линейную шкалу напряжения для контроля напряжения подаваемого на варикапы приемника. Напряжение настройки приемника устанавливается при помощи полевого транзистора VT1, в его затворной цепи включен С1, при нажатии S1 или S2 С1 …Подробнее...
  • Стерео усилитель класса D 2*25Вт на базе TDA7490

    Стерео усилитель класса D 2*25Вт на базе TDA7490

    Микросхема TDA7490 имеет защиту от перенапряжения, тепловую и защиту от КЗ, так же микросхема имеет встроенные функции MUTE и STAND-BY. Усилитель на TDA7490 имеет следующие технические характеристики: Напряжение питания от +/-10В до +/-25В (номинальное напряжение +/-21В) Ток покоя от 70 до 120мА в зависимости от  напряжения питания Выходная мощность 25Вт …Подробнее...
  • Усилитель мощности звуковой частоты класса D на ИМС MAX9709

    Усилитель мощности звуковой частоты класса D на ИМС MAX9709

    Усилитель мощности звуковой частоты класса D на ИМС MAX9709 обеспечивает выходную мощность до 25Вт на канал (стерео) при нагрузке 8 Ом и 50Вт в режиме моно при нагрузке 4 Ом. ИМС MAX9709 обеспечивает высокую производительность (КПД 87%), при этом используется небольшой радиатор охлаждения. Напряжение питания усилителя от 10 до 22В. MAX9709  имеет …Подробнее...
  • Простой испытатель тиристоров

    Простой испытатель тиристоров

    Из подручных радиоэлементов можно собрать простой испытатель тиристоров, который состоит из трансформатора со вторичной обмоткой на 6,3В (0,5А), диода, конденсатора, лампы и трех переключателей. Выбор постоянного или переменного тока осуществляется переключателем SA2. Электроды тиристора подключаются при помощи зажимов, индикатор служит лампа накаливания 6,3Вх0,28А. Для проверки тиристора постоянным током переведите переключатель …Подробнее...
  • УМЗЧ на 50Вт на полевых MOSFET транзисторах

    УМЗЧ на 50Вт на полевых MOSFET транзисторах

    На рисунке показана схема 50 Вт усилителя с выходными полевыми MOSFET транзисторами. Первый каскад усилителя представляет собой дифференциальный усилитель на транзисторах VT1 VT2. Второй каскад усилителя состоит из транзисторов VT3 VT4. Оконечный каскад усилителя состоит из МОП-транзисторов IRF530 и IRF9530. Выход усилителя через катушку L1 соединен с нагрузкой 8 Ом. Цепь состоящий …Подробнее...