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

AVR – blikámeAVR – blikáme

 

AVR – blikáme

Google       Google       13. 7. 2006       37 036×

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?

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

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Reklama autora

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý