AVR - obecně
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

AVR - obecněAVR - obecně

 

AVR - obecně

Google       Google       17. 6. 2006       31 710×

V dnešním díle se podíváme na zoubek samotné architektuře procesoru. Je to věc často opomíjená, zvláště těmi, kteří programují procesory v jazyce C. Musím však upozornit, že pro zvládnutí jakéhokoliv typu procesoru, jsou tyto znalosti nesmírně důležité.

Reklama
Reklama

Procesory AVR mají tzv. Hardwardskou architekturu. To znamená, že mají oddělené paměťové prostory (a sběrnice) pro data i program. My se často setkáváme s druhým typem – tzv. von Neumannova architektura – například v běžném PC (data i program máme v jedné RAM, na jednom disku…

Jak je vidět na obrázku, AVR obsahují celkem tři druhy pamětí:

  • paměť programu FLASH
  • paměť dat (přechodných) RAM (SRAM)
  • paměť dat EEPROM

Pamě't RAM slouží k uchovávání přechodných dat. Je rozdělena na několik desítek registrů (bajtů). Tato data mohou být pouze pracovní a nebo také řídící – většina registrů ovládá periferie a nebo samotný chod procesoru. Jiné zase informují o stavu, v jakém se procesor nachází.

Paměť programu, jak už název napovídá, slouží k uložení programu a nebo konstant, které v programu využíváme. (Například při převodu z BIN->7 segment.) Tato data se ukládají pouze za použití programátoru.

Paměť EEPROM slouží pro uchování dat, o která nechceme po vypnutí napájení přijít &ndash jako tomu je například u RAM. Příkladem mohou být konfigurační data anebo například kód v případě kódového zámku.

To, co vidíte na obrázku, je CPU, tato část řídí celý procesor. Zpracovává veškeré instrukce, které do ní vcházejí jako 16 bitové číslo, označující instrukci a případné operandy. Jak vidíte, je propojena sběrnicí se všeni částmi integrovaného obvodu. I tato část má ale určeno paměťové místo, kam ukládá výsledky svých aktivit, a tím je SREG &ndash STATUS REGISTER (umístění v paměti RAM)

Vysvětlíme si, co jednotlivé bity znamenají:

  • I &ndash Global Interrupt Enable – globální povolení přerušení
  • T – Bit Copy Storage – místo pro ukládání bitu
  • H – Half Carry Flag – nastaví se při přenosu ze 3 na 4 bit
  • S – SIGN BIT = S XOR N
  • V – Two’s Complement Overflow Flag – příznak přeplnění čísla v druhém doplňku
  • N – Negative Flag – příznak negativního výsledku
  • Z – Zero Flag – příznak nulového výsledku
  • C – Carry Flag – příznak přetečení

Existuje i mnoho dalších jiných důležitých registrů, ale o těch si řekneme později. Dnes si ještě povíme něco o rozdělení paměti dat RAM a tím i o programátorském modelu.

Na obrázku nahoře můžete vidět rozložení registrů pro obecné použití. S těmito registry budete realizovat většinu operací. Některé operace ale pracují pouze s druhými šestnácti, které to jsou, si povíme později. Posledních 6 registrů 26 – 32 je možné využít také pro nepřímé adresování, což je většinou jediná možnost, jak „dosáhnout“ na data v celé 1k (S)RAM.

Na tomto obrázku již vidíte zařazení registrů R0 – R31 v rámci celé (S)RAM a pod nimi (vyšší adresy) umístěny vstupně-výstupní registry, jež ovládají periferie i samotný procesor. Od adresy 60H již máte celou zbylou (S)RAM pro sebe…

První krůčky

V minulém díle jsem uvedl odkaz na soubor s instrukční sadou pro procesory AVR. Doufám, že většina z vás si ji pozorně prostudovala, protože už dnes si napíšeme první program. Předpokládám, že již máte nainstalováno AVR studio.

Po spuštění AVR studia se vám zobrazí následující dialog, kde zvolte New Project:

Nastavte projekt podle obou obrazků:


Přepište následující kód:


		.NOLIST
		.INCLUDE "m16def.inc"
		.LIST
		
		// --> nastaveni zasobniku 
		LDI		R16,LOW(RAMEND)		
		OUT		SPL,R16
		LDI		R16,HIGH(RAMEND)
		OUT		SPH,R16
		// <-- konec nastaveni

		CLR		R2   ; vynuluje R2
		CLR		R3   ; vynuluje R3
		CLR		R19 ; vynuluje R19

zacatek:

		RCALL	zpozdi	; zavola "zpozdi"
		
		RJMP	zacatek ; skoci na "zacatek"


// ************** funkce *************
zpozdi:												
		INC		R2           ; inkrementuje R2
		LDI		R19,125      ; naplni R19 cislem 125
		CP		R2,R19       ; je-li R2 mensi nez 125 >>
		BRLO	        pryc          ; >> jde pryc

                CLR		R2
		INC		R3
		LDI		R19,25		
		CP		R3,R19
		BRLO	        pryc	     ; pozdrzi 25x, celkem tedy 3125x
	        CLR		R3
		; tady budem dal neco delat...
pryc:	        NOP
RET

Program zkompilujte stisknutím F7 a spusťte debugger (Shift + Alt + Ctrl + F5). Pomocí klávesy F11 si můžete program krokovat a zjistit, co dělá. Podívejte se hlavě na to, co se děje s registry R2 a R3. To je váš úkol pro příště, kdy si také program detailně popíšeme.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Ondřej KarasAutor se věnuje vývoji řídících a komunikačních systémů a tvorbě podpůrných aplikací.
Web    

Nové články

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

Reklama autora

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý