Co je paměť EEPROM
Paměť EEPROM je technologicky velmi podobná paměti EPROM. Rozdíl mezi nimi je v tom, že EEPROM se maže elektricky s možností smazat pouze určitý byte (není nutné mazat celý obsah paměti tak jako u EPROM). Možnost smazat pouze určitý byte je výhoda EEPROM také oproti FLASH EPROM (ty se mažou také elektricky, ale vždy se maže celý obsah paměti). Může se zdát, že EEPROM už částěčně nahradí paměti RAM. Oproti nim mají výhodu v tom, že obsah paměti zůstane zachován i při odpojení od napájení. Jejich nevýhodou je nižší rychlost (čtení/mazání+zápis/přístupová doba) a malá velikost (kapacita) paměti oproti pamětem RAM.
Paměti EEPROM mají v porovnání s pamětmi FLASH EPROM a především EPROM vyšší cenu a také vyšší výkonovou ztrátu.
Z těchto důvodu jsou paměti EEPROM široce používány v moderních elektronických zařízeních - především pro uchování různých nastavení (parametrů), krátkých údajů, uložení programu. Např. v televizoru pro uchování aktuální úrovně hlasitosti, seznamu naladěných kanálů atd. I po vypnutí televizoru zůstavají nastavení zachována - při dalším zapnutí je nemusíme znovu provádět. Tím, že měníme nastavení televizoru, přeprogramováváme tak vlastně obsah EEPROM. Podobně se EEPROM používá v PC monitorech, motherboardech PC (BIOS), hi-fi věžích, mobilních zařízeních atd.
Dále se popisem pamětí EEPROM zabývat nebudeme, pokud máte zájem o podrobnější informace o EEPROM nebo i dalších typech pamětí, zkuste se podívat sem.
Co je sériová EEPROM
Paměti EEPROM lze rozdělit dle způsobu připojení k mikroprocesoru na paralelní a sériové. Paralelní EEPROM mají větší kapacitu paměti (běžně od 2kB do 32kB), jsou tedy vhodné pro uložení programu, z hlediska počtu vývodů jsou zaměnitelné za paměti EPROM (28-pinové). Pro komunikaci s mikroprocesorem vyžadují vnější paralelní sběrnici (min. dva porty P0 a P2). Sériové EEPROM mají kapacitu menší (obvykle do 2kB, vyjímečně až 32kB), jsou tedy vhodné spíše pro uchování parametrů. Protože ke komunikaci s mikroprocesorem potřebují jen dva až tři signálové vodiče, bývají vyráběny v pouzdrech s malým počtem vývodů (obvykle pouze 8). Sériové EEPROM lze velmi výhodně použít u "zredukovaných" verzí 8051, jako je AT89C2051, které mají malý počet v/v pinů.
U sériových EEPROM se tedy adresa a data posílají z/do obvodu bit po bitu (tj. sériově), pokud chceme mikroprocesorem z paměti číst nebo do ní zapisovat, musíme vyslat daný příkaz, adresu a samotná data obvykle nějakým standardním sér. komunikačním protokolem (sběrnice MicroWire, I2C, SPI,...). V závislosti na použité sběrnici může být propojení mikroprocesoru s pamětí dvouvodičové (I2C) nebo třívodičové (MicroWire).
Takováto komunikaci je časově i co do programové obsluhy náročnější než při použití paralelní EEPROM. Sériové EEPROM jsou ale oproti paralelním o hodně levnější a zabírají minimální místo na DPS.
Řešení komunikace 8051 se sériovými EEPROMkami nám nabízí samotná firma Atmel - hardwarové zapojení už snad jednodušší být nemůže a komentovaný program pro obsluhu je také k dispozici (samorozbalovací archiv).
Následující schémata zapojení pocházejí z odkazovaných aplikačních poznámek firmy ATMEL.
Dále funkci pamětí a jejich obsluhy rozebírat nebudeme, vše je velmi srozumitelně popsáno v datasheetech k jednotlivým pamětem nebo v rámci komentářů přímo v asm programu (chci se vyhnout známému několikanásobnému přemílání jednoho dobře udělaného originálu...).
Připojení paměti 93Cxx k AT89C2051
Může být 3-vodičové nebo 4-vodičové. To, že je na obr.1 připojen pin paměti č.6 (ORG) na zem a na obr.2 na +Vcc může být na první pohled trochu matoucí - nejde o rozlišení způsobů připojení (3/4 vodičové), ale o volbu organizace paměti. Pokud je tedy pin ORG připojen na zem, pak je pamět organizována po 8 bitech, pokud je ORG připojen na +Vcc, je paměť organizována po 16 bitech.
Protože piny portu P1 jsou programově měnitelné buď jako vstupní nebo výstupní, můžeme klidně použít 3-vodičové zapojení. Ušetřený pin mikroprocesoru se může vždy hodit. Způsob úpravy programu v případě použití 3-vodičového připojeni je popsán v komentářích programu.
Obr.1 Třívodičové připojení
Obr.2 Čtyřvodičové připojení
Program pro obsluhu paměti 93Cxx - při 12MHz krystalu; způsob úpravy programu pro 3/4 vodičové připojení paměti je popsán v komentáři programu (autor firma ATMEL)
Připojení paměti 24Cxxx k AT89C2051
Jak je vidět z obr.3, pamětí řady 24Cxxx lze na jednu sběrnici (tj. 2 v/v piny mikroprocesoru) připojit několik. Ne všechny typy lze ale takto kaskádovat, lepší přehled o jednotlivých typech a jejich možnostech kaskádování poskytne tab.1. Pokud tedy chceme připojit na sběrnici několik pamětí, musíme je nějakým způsobem vzájemně odlišit a k tomu slouží adresovací vstupy A0,A1,A2. Počet adresovacích vstupů nám dává logicky počet max. 8 připojitelných pamětí. Některé typy lze ale připojit jen do počtu 4 nebo 2 pamětí na jednu sběrnici (viz tab.1). Adresovací vstupy musí být na pevno nadrátovány jak ukazuje obr.3 - způsob adresování odpovídá BCD kódu, paměť 0 má všechny adresovací vstupy připojeny na zem, paměť 7 je má připojeny na +Vcc.
Připojení paměti 25xxx k AT89C2051
Může být 3-vodičové nebo 4-vodičové. Stejně jako u pamětí 93Cxx není důvod používat 4-vodičové připojení - piny SI (Serial In) a SO (Serial Out) můžeme připojit na jeden pin mikroprocesoru, protože všechny piny portu P1 jsou vstupně/výstupní a můžeme programově měnit jejich funkci (v/v).
Obr.4 Třívodičové připojení
Obr.5 Čtyřvodičové připojení
Program pro obsluhu paměti 25xxx - při 24MHz krystalu; způsob úpravy programu pro 3/4 vodičové připojení paměti je popsán v komentáři programu (autor firma ATMEL)