Trocha teorie pro začátek
Rozdělení paměťového prostoru
Procesory řady AVR se vyznačují Harvardskou architekturou, což znamená oddělení paměťového prostoru pro data a program. Protože mikrokontroléry AVR nemohou adresovat vnější paměť, jsou jedinými paměťovými prostory tohoto jednočipu paměti FLASH, RAM, E2PROM.
Vnitřní programová paměť (FLASH)
Vnitřní programovatelná paměť je tvořena pamětí FLASH. Tato paměť je používána vždy po dvou bajtech (1 instrukce). Mimo samotné instrukce může paměť programu obsahovat také pevně nastavená data v tzv. tabulkách. O tom jak procesor k programové paměti přistupuje si řekneme někdy v dalších dílech.
Vnitřní datová paměť (RAM)
Datová paměť je tvořena tzv. pamětí SRAM, což znamená STATIC RANDOM ACCESS MEMMORY, tedy statická paměť s náhodným přístupem. Narozdíl od dynamické RAM není nutné tuto paměť obnovovat a proto je práce s ní rychlejší.
Vstupně-výstupní registry jsou velmi důležitou součásti mikrokontroléru AVR, stejně jako u všech ostatních. Slouží k řízení samotného procesoru a jeho periférií. Narozdíl od registrů pro obecné použití není u těchto paměťových buněk povolen přístup přes intrukce MOV a jim podobné, ale pouze přes instrukce IN a OUT, nebo nepřímým adresováním, které si probereme příště. Popis vstupně-výstupních registrů si uvedeme v příštím díle, kdy je využijeme pro obsluhu portu.
Zbylou část paměti můžeme využívat libovolně pro ukládání přechodných dat. Je jasné, že tato data, stejně jako data uložena v řídících či odkládacích registrech, jsou po vypnutí napájení vymazána. Paměť můžeme adresovat přímo (adresou při zápisu intrukce), nebo nepřímo přes ukazatele.
Přímé adresování dat
Přímo můžeme adresovat:- 1 registr z registrového pole (instrukce CLR, SER, ...)
- 2 registry z registrového pole (instrukce MOV, ...)
- vstupně-výstupní registr (instrukce IN, OUT)
- data ze SRAM (instrukce STS)
Nepřímé adresování dat
Nepřímo můžeme adresovat několika způsoby:- Nepřímo adresovat bez žádné další činnosti (instrukce ST)
- Nepřímo adresovat s posunutím (instrukce STD)
- Nepřímo adresovat s pre-dekrementem (instrukce ST)
- Nepřímo adresovat s post inkrementem (instrukce ST)
Ukazatel X ukazuje na bajt s adresou určenou registry (R26, R27), Y (R28, R29), Z (R30, R31). Každý z ukazatelů má své specifické použití.
Pro nepřímé adresování využíváme ukazatel X, Y nebo Z. Pro nepřímé adresování s posunutím můžeme využít ukazatelů Y a Z. Pro nepřímé adresování s pre-inkrementem a post inkrementem můžeme opět využít všech tří registrů.
Nepřímo můžeme adresovat i paměť programu. Z ní si můžeme například načítat tabulky s daty reprezentující obrázek a podobně. Jejich využití si ale popíšeme někdy v budoucnu.
Příklady použití
CLR Rd- vymaže registr
- přesune obsah registru Rr do Rd
- přesune obsah registru Rr na přímo adresované paměťové místo
- přesune obsah registru Rr na adresu určenou ukazatelem Z
- přesune obsah registru Rr na adresu určenou ukazatelem Z + a
- přesune obsah registru Rr na adresu určenou ukazatelem Z. Před touto činností je však ukazatel zmenšen o 1
- přesune obsah registru Rr na adresu určenou ukazatelem Z. Před touto činností je však ukazatel zvětšen o 1
Komentovat článek
Komentáře k článku
článek zatím nikdo nekomentoval

