Organizace a použití zásobníkové paměti mikrořadičů

Organizace a použití zásobníkové paměti mikrořadičů

Zásobník osmibitových mikrořadičů AVR

Nyní si stručně popišme implementaci zásobníku na osmibitových mikrořadičích AVR. Velikost zásobníku není prakticky nijak omezena, protože zásobník může růst až do takové velikosti, která zabere celou operační paměť, resp. maximálně 64 kB (zda je to ovšem korektní chování, již musí zajistit programátor). Ukazatel na vrchol zásobníku je uložen v dvojici osmibitových speciálních funkčních registrů umístěných v I/O prostoru (SPH, SPL), jejichž obsah je možné číst a dokonce i zapisovat – opět závisí jen na programátorovi, jestli přímou změnou ukazatele na vrchol zásobníku způsobí větší škodu než užitek.

Při volání procedury pomocí instrukce CALL (a některých dalších instrukcí využívajících relativní či nepřímé adresování) se na zásobník uloží buď dva bajty návratové adresy nebo bajty tři – některé mikrořadiče AVR totiž mohou mít až 8MB paměti programu, tj. adresní rozsah 0 až 222 (v případě paměti programu se adresují vždy šestnáctibitová slova, nikoli jednotlivé bajty).

U mikrořadičů AVR je nutné zásobník inicializovat. Inicializace spočívá v uložení nejvýše dostupné adresy paměti RAM  pro uložení dat do registrů I/O  SPL a SPH.

Příklad pro inicializaci zásobníku mikrořadiče AVR:

LDI    R16, LOW (RAMEND)

OUT  SPL , R16

LDI R16, HIGH  (RAMEND)

OUT SPH , R16

 

Zdroje
  • HRBÁČEK, Jiří. Komunikace mikrokontroléru s okolím. 1. vyd. Praha: BEN - technická literatura, 1999, 159 s. ISBN 80-86056-42-21.
  • 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.

 

Zapamatuj si
  • Zásobník je povinné inicializovat, pokud budeme vytvářet v programu podprogramy, procedury a obsluhy přerušení. Bez inicializace se neobejdeme ani při používání insrukcí pro zálohování pracovních registrů jako jsou PUSH
    a POP.