AVR – blikáme
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

AVR – blikámeAVR – blikáme

 

AVR – blikáme

Google       Google       13. 7. 2006       30 499×

Po třech teoretických dílech se dnes podíváme na to, jak si s naším procesorem „zablikat“. Jistě, je to jako kanónem na vrabce, ale nějak se začít musí, nebo ne?

Reklama
Reklama

Především si musíme říct něco o tom, jak vůbec s porty našeho mikroprocesoru pracovat. K tomu slouží hned několik registrů, které nastavují vlastnosti vstupně/výstupních portů. Nejnázorněji si funkci vysvětlíme na obrázku (vyjmuto z datasheetu).

Porty mohou sloužit jako vstupní i jako výstupní. Jejich funkce se nastavuje registry. Každý registr obsluhující daný port nese jeho číselné označení. Jsou to:

DDRX -> DATA DIRECTION REGISTER
Určuje směr toku dat – vstup/výstup
PORTX
Datový registr – stav pinů portu odpovídá hodnotě zapsané do registru
PINX
Určen pouze pro čtení, odpovídá aktuální hodnotě na pinech

Porty jsou tedy obousměrné, pro každý směr využíváme jiného datového registru. Směr nastavujeme registrem DDRX, přičemž X značí číslo portu (1, 2, 3…). Log. 1 nastavuje port jako výstupní, log. 0 jako vstupní (tedy přesně obráceně, než je tomu u procesorů PIC).

Pokud jste si pečlivě přečetli katalogový list k obvodu, zvláště pak pasáž popisující vlastnosti vstupně/výstupních portů, jistě Vám neuniklo, že tyto porty mají tzv. pull-up odpory (odpory na napájení). Ty se samozřejmě dají vypnout. Hodí se to například, když chceme využít vstupů s velkou vstupní impedancí… Pull-up rezistory lze nastavovat zvlášť pro každý pin, nebo lze všechny zakázat nastavením bitu PUD v registru SFIOR


PORTX=1 DDRX=1 - VYSTUP LOG1
PORTX=0 DDRX=1 - VYSTUP LOG0
PORTX=1 DDRX=0 - VSTUP S VNITRNIM PULLUPEM K VCC
PORTX=0 DDRX=0 - VSTUP

Hurá do toho

Než začneme se samotným programem, řekneme si pár maličkostí, které nám usnadní práci:

Pro změnu stavu pinu na portu můžeme použít instrukcí CBI (vynuluje bit – pin) a SBI (nastaví bit – pin). Tímto způsobem změníme stav bitu (pinu), aniž bychom ovlivnili stav ostatních pinů.


CBI		DDRD,PORTD6        ;vynuluje bit (pin)
SBI		DDRD,PORTD6        ;nastavi bit (pin)

Jinak můžeme samozřejmě stav na portech ovlivňovat i aritmetickými operacemi. Například sčítáním, odčítáním, násobením i dělením. Ale také xorováním a negací… Doporučuji ale dělat složitější operace na nějakém pracovním registru a až výsledek kopírovat do registru daného portu. Vyhnete se tak kolizím, které by mohly nastat v průběhu výpočtu.

Původně jsem zamýšlel dát sem nejjednodušší příklad blikače, ale v knize Práce s mikrokontroléry AVR od Davida Matouška (BEN) jsem zahlédl následující program pro běžící světlo:


	.NOLIST	
	.INCLUDE "m16def.inc"	
	.LIST	
				 
	.CSEG	        ;kódový segment	
	.DEF REG=R16	;pracovní registr
	.EQU DDR=DDRC	;řízení směru
	.EQU PORT=PORTC	;port
	LDI REG,$FF	
	OUT DDR,REG	;aktivuj výstupy
	LDI REG,LOW(RAMEND)
	OUT SPL,REG	;nastav SP na konec SRAM
	LDI REG,HIGH(RAMEND)
	OUT SPH,REG
	CLC	        ;0 do C
	LDI REG,$FF	;FF do REG
SMYCKA:	OUT PORT,REG	;pošli
	RCALL CEKEJ	;počkej 0,5 s
	ROL REG  	;posuň
	RJMP SMYCKA	;a znovu

		        ;čekací rutina (čeká asi 0,5 s)
CEKEJ:	LDI R17,40	
	LDI R18,0	
	LDI R19,0	
CEKEJA:	DEC R19	
	BRNE CEKEJA	;smyčka 1
	DEC R18	
	BRNE CEKEJA	;smyčka 2
	DEC R17	
	BRNE CEKEJA	;smyčka 3
	RET	        ;návrat

Program si zkuste odsimulovat v AVR studiu, případně vyzkoušejte přímo s procesorem a zkuste sami sobě vysvětlit, jak program funguje. Pokud se Vám to nepovede, nezoufejte, v příštím díle si to řekneme.

×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.

3 názory  —  3 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

Reklama
Reklama
Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

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 © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý