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ší.

  Jak je vidět na obrázku, datová paměť je rozdělena na základní 3 bloky. Prvním velmi důležitým blokem jsou registry pro obecné použití. Jedná se o 32 osmibitových buněk, které slouží jako operátory instrukcí, které k nim mají přímý přístup. Jedinými instrukcemi pracujícími s operandy, které registrové pole nevyužívají v celém rozsahu jsou SBCI, SUBI, CPI, ANDI, ORI, LDI. Tyto instrukce používají pouze registry R16 - R31.
  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)
Přímé adresování spočívá v přímém zadání adresy do instrukce ať už číselně, nebo zástupným řetězcem reprezentujícím adresu daného registru (například R0, R1, PORTD).

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)
  Nepřímé adresování spočívá ve využití tzv. ukazatelů. Ukazatel je 16ti bitové číslo obsahující adresu zdrojového/cílového bajtu. Ukazatele známe u procesoru 3. X, Y, Z.
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
MOV Rd, Rr
  •  přesune obsah registru Rr do Rd
STS adresa, Rr
  • přesune obsah registru Rr na přímo adresované paměťové místo
ST Z, Rr
  • přesune obsah registru Rr na adresu určenou ukazatelem Z
STD Z+a, Rr
  • přesune obsah registru Rr na adresu určenou ukazatelem Z + a
ST -Z, Rr
  • přesune obsah registru Rr na adresu určenou ukazatelem Z. Před touto činností je však ukazatel zmenšen o 1
ST Z+, Rr
  • 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

Jméno:  
Zpráva:

Komentáře k článku

článek zatím nikdo nekomentoval