Obvody vntřní paměti typu EEPROM

Obvody vnitřní paměti typu EEPROM

Vnitřní obvody paměťi EEPROM mikrořadiče jsou předurčeny především pro zálohování dat, která se zcela určitě ztratí z paměti SRAM mikrořadiče po odpojení  napájecího napětí mikrořadiče. Výrobce zaručuje, že zálohovaná data mohou být spolehlivě uložena i několik desítek let. Zaručený počet přepisů dat v této paměti je až 100000 krát.

Základní charakteristické vlastnosti paměti EEPROM mikrořadiče AVR:

  • mikrořadič ATMEGA obsahuje EEPROM, do které lze data ukládat  o šířce  jednoho Byte;
  • adresování pro zápis a čtení dat uložených v paměti EEPROM se provádí pomocí páru funkčních registrů EEARH a EEARL;
  • vnitřní obvodová struktura obvodů paměti EEPROM umožnuje data do této paměti zapisovat bez předchozího mazání jejího obsahu.

Data do paměti EEPROM můžeme ukládat dvěma zůsoby:

  • pomocí programátoru, tedy vnějšího přístupu do paměti EEPROM;
  • programově, teady částí programu, který je součástí hlavního progamu mikrořadiče.

U mikrořadiče Atmega 16 je velikost paměti EEPROM 512 bytů. ( u Atmegy 32 to je 1024 bytů). Z toho plyne, že pro adresování této paměti musíme mít k dispozici 9 bitovou adresu. Tato adresa je rozdělena do dvou osmibitových regisrů (tzv. registrového páru). Jsou to registry EEARH a EEARL.

Registr EEARL obsahuje dolních osm bitů adresy paměti EEPROM, devátý bit adresy je zapisován na nultou pozici registru EEARH.

 

Tab. 1: Registrový pár EEARH:EEARL mikrořadiče Atmega 32 pro adresování paměti EEPROM v adresním rozsahu 1024 adres

 

Tab. 2: Řídíci registr EECR paměti EEPROM mikrořadiče AVR Atmega 32

 

 

Tab. 3: Datový registr paměti EEPROM

Popis významu bitů registru EECR:

  • EERIE - je-li bit I v SREG a současně bit EERIE v  registru EECR nastavený na jedničku, je EEPROM připravena;
  • EEMWE - při nastavení bitu na jedničku je možné do paměti EEPROM zapisovat;
  • EEWE - strobovací signál pro zápis do EEPROM.

 

 

Popis významu bitů registru EEDR:

Všechny bity dle binární váhy představují data zapisovaná do paměti nebo čtená z paměti EEPROM.

 

Zápis do paměti se provádí podle následující procedury:

  1. čeká se, až bude EEWE nula;
  2. zapíše se nová adresa EEPROM do registrového páru EEARL a EEARH;
  3. zapíší se nová data připravená k uložení do EEDR;
  4. zapíše se jednička do bitu EEMWE v registru EECR   (aby to bylo možné, musí být v témže cykluzapsána nula do bitu EEWE);
  5. v čase do čtvrtého hodinového cyklu po nastavení EEMWE zapsat logickou jedničku do EEWE.

 

Na závěr si ukážeme vzorový příklad programu možného zápisu a čtení dat z paměti EEPROM

.INCLUDE "M32DEF.INC"; definiční soubor mikrořadiče Atmega32
.DEF POMOC_REG = R16 ; pojmenování pomocného registru
.DEF ADR_REG = R17; pojmenování pomocného  registru pro uchování adresy
.DEF DATA_REG = R18 ; pojmenování pomocného registru pro data

; HLAVNÍ PROGRAM
LDI DATA_REG,0x56 ; zápis dat 0x56 do registru R18
RCALL EEPROM_WRITE ; volání podprogramu pro zápis do paměti EEPROM
RCALL EEPROM_READ ; volání podprogramu pro čtení z paměti EEPROM

EEPROM_WRITE: ; návěstí podprogramu  pro zápis do EEPROM
SBIC EECR,EEWE ; čekací smyčka pro dokončení předchozího zápisu, testuje se bit EEWE
RJMP EEPROM_WRITE ; součást čekací smyčky, nové testování bitu EEWE, odskok na návěstí EEPROM_WRITE:


LDI POMOC_REG, (0<<EEPM1)|(0<<EEPM0) ; nastavení programovacího režimu pro zápis do EEPROM
OUT EECR, POMOC_REG ; nastavení pro zápis do EEPROM do funkčního registru EECR    

OUT EEARL,ADR_REG ; uložení adresy pro zápis do adresového registru
OUT EEDR,DATA_REG ; uložení dat pro zápis do datového registru
SBI EECR,EEMWE ; uvolnění zápisu nastavením bitu EEMWE
SBI EECR,EEWE ; provedení zápisu do EEPROM
RET ; návrat z podprogramu pro zápis do EEPROM


EEPROM_READ: ; navěstí podprogramu pro čtení EEPROM
SBIC EECR, EERE ; čekací smyčka pro dokončení předchozí operace čtení
RJMP EEPROM_READ ; součást čekací smyčky pro nové testování bitu EERE registru EECR    

OUT EEARL, ADR_REG ; uložení adresy uložených dat do registru EEARL
SBI EECR,EERE ; povolení a start čtení dat z paměti
IN DATA_REG, EEDR ; překopírování dat do registru R18
RET ; návrat z podprogramu
 

Zdroje
  • MATOUŠEK, David. Práce s mikrokontroléry ATMEL AVR ATmega16. 1. vyd. Praha: BEN - technická literatura, 2006, 319 s. μC. ISBN 80-730-0174-8.
  • VÁŇA, Vladimír. Mikrokontroléry ATMEL AVR: programování v jazyce C : popis a práce ve vývojovém prostředí CodeVisionAVR C. 1. vyd. Praha: BEN - technická literatura, 2003, 215 s. ISBN 80-730-0102-0.
  • [online]. [cit. 2015-01-30]. Dostupné z: http://www.atmel.com/images/doc2503.pdf

Tabulky

  • Tab. 1, 2, 3: [online]. [cit. 2015-01-30]. Dostupné z: http://www.atmel.com/images/doc2503.pdf
Příklad

Část programu ukazující postup zápisu do paměti EEPROM

 

Příklad

Část programu ukazující postup čtení obsahu paměti EEPROM