Professional Documents
Culture Documents
Z dìjin vìdyzpráv
ana dálku
techniky
ROÈNÍK XI/2006. ÈÍSLO 5
Vìda a mìøení teploty
René Antoine Ferchault dneních historikù má jeho mnoha-
svazkové dílo Popis umìní a øemesel.
de Réaumur Réaumur u svého teplomìru pro
ROÈNÍK LV/2006. ÈÍSLO 5 nulu zvolil teplotu tajícího ledu a druhým
Byl to Francouz jen o tøi roky starí
pevným bodem byla teplota vaøící vody.
ne Fahrenheit, který se narodil v La
Stupnici mezi tìmito dvìma body roz-
Rochelle 28 února 1683. Studoval na
dìlil na 80 dílkù. Tento teplomìr se
V TOMTO SEITÌ jezuitské koleji v Poitiers a v roce 1699
v Evropì - hlavnì v Nìmecku a ve
pøeel do Bourges, kde studoval nepøí-
Francii (ale i u nás) znaènì rozíøil pro
li související obory: civilní právo a ma-
bìné pouívání v domácnostech. Je-
Z dìjin vìdy a techniky ...................... 1 tematiku. Následnì se pak v Paøíi vì- tì pøed 2. svìtovou válkou se u nás
noval studiu matematiky a fyziky a ji bìnì prodávaly teplomìry se dvìma
PROGRAMOVÁNÍ A APLIKACE jako 24letý se stal èlenem francouzské stupnicemi - celsiovou po jedné stranì
Akademie vìd. a reomírovou, jak se jí øíkalo, po druhé
MIKROØADIÈE ATtiny2313
Nepìstoval vìdu pro vìdu, spíe stranì rtuového èi lihového sloupce.
Úvod ................................................. 3 se vìnoval vyuití vìdeckých poznatkù Souèasné bìnì uívané teplomìry
1. Základní HW a SW vybavení ......... 3 v praxi. Doporuèil napø. zmìny výrobní- u nás uívají stupnici, kterou navrhl
ho postupu pøi výrobì zrcadel a zdoko- védský astronom Anders Celsius, kte-
2. První pokusy s LED ....................... 7 nalil postup výroby oceli, za co získal rý vzal jako výchozí body teplotu vaøící
3. Tlaèítka a jejich obsluha .............. 14 velmi solidní rentu, kterou vak celou vody, tu oznaèil nulou, druhým pevným
4. Pøeruení a reimy sníené vìnoval Akademii na dalí práce pro bodem byla teplota tajícího ledu, a inter-
spotøeby ...................................... 17 aplikace vìdy pro prùmysl. Kolem roku val mezi nimi rozdìlil na 100 stejných
1730 se vìnoval hlavnì meteorologii a dílù. Navrhl to v dopise védské akade-
5. 8bitový èítaè/èasovaè 0 ............... 21
roku 1731 navrhl svùj teplomìr. V roce mii vìd v roce 1742. e se ji jednalo
6. 16bitový èítaè/èasovaè 1 ............. 24 1735 se dal do slueb armády jako o velmi precizní rozvahu, lze konstato-
7. Pouití piezomìnièe .................... 30 velitel a proviantní zásobovaè posádky vat také z toho, e ji definoval tyto
8. LCD displej a jeho pouití ............ 34 v Saint Louis. Bydlel v okolí a pøi jedné pevné body pøi normálním atmosféric-
ze svých projídìk na koni utrpìl pøi kém tlaku (s mìnícím se tlakem se
Literatura ........................................ 40 pádu úraz, na jeho následky nakonec také mìní bod varu).
Závìr .............................................. 40 zemøel 17. øíjna 1757.
V posledních letech intenzivnì pub-
likoval a Akademii odkázal bohatou Anders Celsius
KONSTRUKÈNÍ ELEKTRONIKA A RADIO sbírku svých poznámek. Závané dílo Narodil se 27. 11. 1701 v Uppsale.
je lhistoire des Insectes vìnované Ji jeho prarodièe pøednáeli na univer-
Vydavatel: AMARO spol. s r. o.
Redakce: Zborovská 27, 150 00 Praha 5, hmyzu, zkoumal také korály a zdù- zitì v Uppsale a jeho otec Nils Celsius
tel.: 2 57 31 73 11, tel./fax: 2 57 31 73 10. vodnil, e se jedná o ivoèichy a nikoliv byl rovnì profesorem astronomie.
éfredaktor ing. Josef Kellner, sekretáøka re- o rostliny, jak se tehdy veobecnì sou- Sám v letech 1730 a 1744 pøednáel
dakce Eva Marková, tel. 2 57 31 73 14. dilo. Velký význam také z hlediska
Roènì vychází 6 èísel. Cena výtisku 36 Kè.
astronomii, i kdy byl velmi talentova-
Roziøuje PNS a. s., Transpress spol. s r. o., ným matematikem. Od roku 1725 byl
Mediaprint & Kapa a soukromí distributoøi. sekretáøem nejstarí védské vìdecké
Pøedplatné v ÈR zajiuje Amaro spol. s r. o. spoleènosti s názvem Královská spo-
- Michaela Hrdlièková, Hana Merglová (Zborovská leènost vìd a v této funkci setrval a do
27, 150 00 Praha 5, tel./fax: 2 57 31 73 13, 2 57
31 73 12. Distribuci pro pøedplatitele také pro- své smrti. Nìjaký èas vìdecky pracoval
vádí v zastoupení vydavatele spoleènost Media- i na observatoøích v Nìmecku, v Itálii a
servis s. r. o., Abocentrum, Moravské námìstí ve Francii. V roce 1736 se zúèastnil ex-
12D, P. O. BOX 351, 659 51 Brno; tel: 5 4123
3232; fax: 5 4161 6160; abocentrum@mediaser- pedice na severní výbìek védska,
vis.cz; reklamace - tel.: 800 800 890. která mìøením potvrdila, e má zemì
Objednávky a predplatné v Slovenskej repub- tvar elipsoidu, a úèastnil se té mìøení
like vybavuje MAGNET-PRESS Slovakia s. r. o.,
ustekova 8, 851 04 Bratislava, pro zmapování védského území. Se
tel.: 00421 2 / 6720 1931 - 33 svým asistentem odvodili, e aurorální
email: predplatne@press.sk ; www.press.sk efekty souvisejí se zmìnami magnetic-
Podávání novinových zásilek povoleno Èeskou kého pole. Vìnoval se i publikacím pro
potou - øeditelstvím OZ Praha (è.j. nov 6005/96
ze dne 9. 1. 1996). mláde a vehementnì propagoval za-
Inzerci v ÈR pøijímá redakce, Zborovská 27, vedení Gregoriánského kalendáøe ve
150 00 Praha 5, tel.: 2 57 31 73 11, tel./fax: védsku, co se podaøilo a po jeho
2 57 31 73 10.
Inzerci v SR vyøizuje MAGNET-PRESS Slovakia smrti v roce 1753.
s. r. o., ustekova 8, 851 04 Bratislava, Zemøel 25. 4. 1744 v Uppsale na tu-
tel.: 00421 2 / 6720 1931 - 33 ; www.press.sk berkulózu. Dnes mimo celsiovy stupni-
Za pùvodnost a správnost pøíspìvkù odpovídá autor ce na teplomìrech je po nìm pojmeno-
(platí i pro inzerci). Nevyádané rukopisy nevracíme. ván jeden kráter na mìsíci.
http://www.aradio.cz; E-mail: pe@aradio.cz Celsiova obrácená stupnice (viz
ISSN 1211-3557, MK ÈR E 7443
Titulní list Réaumurovy knihy pøedchozí kapitola o Réaumurovi) vak
© AMARO spol. s r. o. Popis umìní a øemesel z roku 1761 nebyla pøíli praktická, a proto ji do
Tento èlánek je urèen vem, kteøí chtìjí rychle proniknout do tajù programování mikroøadièù
ATMEL AVR. Pro praktické testy je pouit typ ATtiny2313.
Text je sestaven bez sloitých teoretických úvodù. Proto v nìm najdete pøedevím podrobnì komen-
tované pøíklady. Postup jejich realizace je vyloen do co nejmeních detailù tak, aby je velmi dobøe po-
chopil i zaèáteèník a nemusel pøitom hledat vysvìtlení v dalí literatuøe.
Vzhledem k rozsahu je v tomto èísle èasopisu uvedena pouze první èást. Druhá èást bude uveøej-
nìna v KE 1/2007.
Konektory PB a PD
Osazení konektorù PB a PD je èás-
teènì zøejmé ji ze schématu zapojení
(viz obr. 1.2). Pro lepí pøehled je dopl-
nìn obr. 1.6.
Vývod 1 konektoru je oznaèen zøe-
telným trojúhelníèkem a je na nìj vyve-
deno napìtí 5 V. Na vývodu 10 je GND.
Jednotlivé vývody portù PB a PD
jsou rozloeny tak, e nejvyí bit (D7)
je na vývodu 2. Dalí bity jsou na vývo-
dech s následujícími èísly. Nejménì vý-
znamný bit (D0) je pak na vývodu 9.
Vimnìte si, e port PD nemá
k dispozici vývod PD7. Posledním vý-
vodem portu je D6. Ze schématu podle
obr. 1.2 je zøejmé, e vývody 2 a 3
Obr. 1.2. Vývojový kit SDK2313
jsou na pøípravku spojeny (to aby nezù-
stal nezapojený vývod úplnì ve vzdu-
nálu /RESET a CTS (odpovídá signálu Seznam souèástek pro SDK2313 chu). Èili vývody D6 a D7 portu D jsou
MISO). (cena bez mikroøadièe asi 80 Kè) zkratovány.
Signály SCK a MOSI jsou ovládány
pomocí tranzistorových invertorù, pøí- R1 2,2 kΩ/1 %/0,6 W
R3, R5 10 kΩ/1 %/0,6 W
Propojovací kabely PSLKAB
mé spojení (podobnì jako u signálu
/RESET) se jevilo jako problematické R2, R4 1,5 kΩ/1 %/0,6 W Pro pøipojení dále popsaných pøí-
(mohly by se pokodit dále pøipojené R6 680 Ω/1 %/0,6 W pravkù jsou zapotøebí propojovací ka-
pøípravky). Tranzistory T1 a T2 záro- C1, C2 33 pF/500 V, keramický bely oznaèené jako PSLKAB.
veò zajiují pøevod z úrovní RS-232 C
(jsou na sériovém portu) na úrovnì
TTL (s nimi pracují èíslicové obvody).
Pro signál /RESET je pouita prostá
Zenerova dioda, která napìtí omezu-
je na 4,7 V.
Signál MISO musí být z pùvod-
ních úrovní TTL pøeveden na úrovnì
RS-232 C. Pro tento úèel je pouit OZ
IO1 s malým pøíkonem (TL061), který
je napájen pøímo ze sériového portu. Je
to levnìjí øeení, ne pouít klasický
konvertor typu MAX232.
Hodinový kmitoèet je odvozen od
krystalu X pøipojeného na vývody XTAL1
a XTAL2.
Oba porty jsou vyvedeny na konek-
tory PB a PD. Obr. 1.3.
Souèástky pøípravku SDK2313 jsou Obrazec
pøipájeny na desce s jednostrannými ploných
plonými spoji. Obrazec spojù je na spojù
obr. 1.3. Rozmístìní souèástek na des- pøípravku
ce je na obr. 1.4, drátová propojka na SDK2313
stranì spojù je na obr. 1.5. (mìø.: 1 : 1)
Obr. 2.3.
Vstupnì/výstupní
registry
pro øízení
portu D
Pøíklady
a) Chceme konfigurovat vývod PB2
jako výstup. Dále chceme na tento vý-
vod vystavit úrovnì log. 0 a log. 1.
b) Chceme konfigurovat spodní 4 bity
portu D jako výstupy a ostatní bity to-
hoto portu jako vstupy.
Obr. 2.7.
Dialog
Obr. 2.5. Obrazec ploných spojù pro
pøípravku AT8LED (mìø.: 1 : 1) zaloení
nového
projektu
Obr. 2.8.
Volba
ladicího
prostøedku
a typu
Obr. 2.6. Rozmístìní souèástek mikro-
na desce pøípravku AT8LED øadièe
Obr. 2.15.
Nastavení
propojek
pro výbìr
vnìjího
krystalu
jako zdroje
hodin
Tab. 2.5. Program PROG_03.ASM na 0b), desítkové soustavì (pøedpona • Registr SPL - pøedstavuje ukazatel
PROG_03.ASM není vyadována) nebo estnáctkové na vrchol zásobníku. Nastavení tohoto
.INCLUDE tn2313def.inc ;definice registrú soustavì (pøedpona $). registru je nezbytné pøed prvním poui-
• Instrukce OUT P,Rr - tato instrukce tím podprogramù. Obvyklé nastavení je
.DEF REG=R16 ;pracovní registr na konec pamìti RAM (symbol RAMEND).
.DEF CITAC1=R17 ;registry zapíe obsah registru na vstupnì/vý-
.DEF CITAC2=R18 ;pro casovací stupní registr. Takto lze napø. ovládat • Registr SREG - pøedstavuje stavový
.DEF CITAC3=R19 ;rutinu CEKEJ registry DDRB, PORTB, SPL. registr. Tedy registr indikující stav mik-
.EQU DDR=DDRB ;rízení smeru roøadièe po vykonání poslední instruk-
.EQU PORT=PORTB ;port • Instrukce CBI P,b a SBI P,b - tyto in-
ce. Význam jednotlivých bitù registru
strukce umoòují snadné vynulování
SREG (obr. 2.20).
LDI REG,RAMEND ;nastav SP nebo nastavení urèeného bitu vstup-
OUT SPL,REG ;na konec SRAM nì/výstupního registru. Tyto instrukce C - pøíznak pøeteèení. Indikuje pøete-
LDI REG,0b11111111 pak lze napø. pouít pro ovládání vývo- èení pøi aritmetické nebo logické operaci.
OUT DDR,REG ;aktivuj výstupy dù portu B.
CLC ;0 do C
Z - pøíznak nulového výsledku. Indi-
SMYCKA: OUT PORT,REG ;poli • Instrukce RJMP addr - instrukce sko- kuje nulový výsledek po aritmetické nebo
RCALL CEKEJ ;pockej 0,5 s ku. Program pøejde na místo, které je logické operaci.
ROR REG ;posun uvedeno návìtím zapsaným jako ope- N - pøíznak negativního výsledku. In-
RJMP SMYCKA ;a znovu
rand této instrukce. dikuje záporný výsledek po aritmetické
;cekací rutina (ceká asi 0,5 s) • Instrukce RCALL addr - vyvolá pod- nebo logické operaci.
CEKEJ: LDI CITAC1,25 ;CITAC1=25 program na urèeném návìtí. V - pøíznak pøeplnìní èísla v druhém
CLR CITAC2 ;CITAC2=0 doplòku. Podporuje aritmetiku druhého
CLR CITAC3 ;CITAC3=0 • Instrukce RET - ukonèí podprogram a
CEKEJA: DEC CITAC3
doplòku.
vrátí se na místo, ze kterého byl pod-
BRNE CEKEJA ;smycka 3 program vyvolán. S - znaménkový bit. Indikuje znaménko
DEC CITAC2 èísla v druhém doplòku (S = N xor V).
BRNE CEKEJA ;smycka 2 • Instrukce EOR Rd,Rr - provede vý-
DEC CITAC1 luèný logický souèet dvou registrù. Tuto H - pomocný pøíznak pøeteèení. Indi-
BRNE CEKEJA ;smycka 1 instrukci lze napøíklad pouít pro negaci kuje pøenos mezi dolní a horní polovi-
RET ;návrat stanoveného bitu (èi skupiny bitù). nou výsledku (dùleité zejména pøi prá-
ci s BCD èísly).
• Instrukce DEC Rd - sníí obsah re-
svítí LED na vývodu PB7. Nula se po- gistru. Po vynulování je nastaven pøí- T - kopírovací bit. Instrukce BLD a
stupnì posouvá smìrem k niím bi- znakový bit Z (Zero, indikace nulového BST pouívají bit T jako zdrojový nebo
tùm, take se mìní LED, která svítí. výsledku). cílový bit. Bit z registru mùe být kopí-
V programu jsou kromì zástupných rován do bitu T instrukcí BST a zase
symbolù pro registry zavedeny i symbo- • Instrukce BRNE addr - provede skok, uloen do bitu (tøeba i jiného) registru
ly DDR a PORT, která zastupují vstup- pokud je Z = 0 (BRanch Not Equal). instrukcí BST.
nì/výstupní registry DDRB a PORTB. Tj. tehdy, kdy pøedchozí operace ne-
mìla nulový výsledek (napø. kdy se I - globální povolení pøeruení. Pro
Zavedení takových symbolù je ikovné, po-
nevynuloval registr Rd pøi pøedchozím pøíjem pøeruení musí být tento bit na-
kud chceme program snadno upravit pro
pouití instrukce DEC Rd). staven (I = 1). Individuální pøeruení lze
jiný port (pøedefinováním symbolu DDR
øídit dalími registry. Je-li I = 0, je pøíjem
na DDRD a PORT na PORTD zajistíme • Instrukce ROR Rd - spojí pøíznakový
pouití pøípravku AT8LED na portu D). pøeruení zakázán. Po vstupu do ob-
bit C s urèeným registrem a ve odro- sluhy pøeruení pøejde I = 0, tím je pøíjem
Celý tento program, který je nazván tuje o jeden bit vpravo.
PROG_03.ASM, je vypsán v tab. 2.5. dalích pøeruení zablokován. Vyvolá-
Pøíklad najdete v [4] v adresáøi PRO- • Instrukce NOP - nemá ádný vedlejí ním instrukce RETI z rutiny obsluhy
GRAMY\PROG_03. efekt (NO Operation), provedení trvá je- pøeruení se zajistí zpìtné nastavení
den hodinový cyklus (nejèastìji se pou- I = 1. Více informací o pøeruení najde-
Pozn.: Zkuste instrukci CLC pøesunout ívá pro realizaci krátkého zpodìní). te v kapitolách 4, 5 a 6.
na místo návìstí SMYCKA. Místo bì-
ícího svìtla vznikne program, který
postupnì rozsvítí vechny LED. Nyní
obsah registru REG nekoluje, ale po-
stupnì se vynulují vechny jeho bity.
3. Tlaèítka a jejich obsluha
V této kapitole se seznámíme ku, pouívají se pull-up rezistory vesta-
2.6. Shrnutí s problematikou pouití tlaèítek pro vìné na vývodech portù. Pokud je tla-
Nakonec si shrneme nejdùleitìj- ovládání programu, který je zapsán èítko rozpojeno, je z daného vstupu
í poznatky z pøedchozho textu: v mikroøadièi. pøeètena úroveò log. 1. Po sepnutí tla-
èítka se pøeète úroveò log. 0. Pozor,
• Ovládání portu - pro ovládání portu
se pouívá trojice registrù. Jeden urèu- 3.1. ATSW - deska tlaèítek tlaèítka S0 a S3 nejsou nijak chránìna
proti zákmitùm, take filtraci zákmitù
je smìr vývodù, druhý ovládá výstupy a musí provádìt ovládací program.
Dále uvedené pøíklady jsou testová-
tøetí slouí pro ètení vstupù. Jména Poslední tlaèítko oznaèené jako S4
ny pomocí pøípravku ATSW, který ob-
tìchto registrù pro port B jsou: DDRB,
sahuje 5 tlaèítek. Schéma pøípravku je je oetøeno proti zákmitùm. Pokud je
PORTB a PINB.
na obr. 3.1. tlaèítko rozpojeno, je díky pull-up rezis-
• AT8LED - pøípravek AT8LED pøed- První ètyøi tlaèítka oznaèená jako S0 toru R1 na vstupu prvního invertoru (na
stavuje osmici LED. Aby daná LED sví- a S3 jsou pøipojena pøímo na datové vývod 3 IO1B) napìtí odpovídající úrov-
tila, musí být na jejím vývodu pøipojena linky D0 a D3. Pro správnou funkci ni log. 1. Po sepnutí tlaèítka se na
úroveò log. 0. musí být na vstupy D0 a D3 pøipojeny vstupu invertoru objeví úroveò log. 0.
• Instrukce LDI Rd,data8 - tato instruk- pull-up rezistory (jsou to rezistory, které První invertor vlastnì pracuje jako im-
ce slouí pro nahrání pøímé hodnoty jsou pøipojeny mezi datovou linku a pedanèní pøevodník, který napájí inte-
do registru (pouitelné pouze pro regis- kladný pól napájení, které zdvíhají linku graèní èlánek R2, C2. Tento èlánek
try R16 a R31). Hodnotu lze zadávat do úrovnì log. 1). Vzhledem k tomu, potlaèuje zákmity tlaèítka. Signál na
napø. ve dvojkové soustavì (pøedpo- e takové rezistory nejsou na pøíprav- výstupu druhého invertoru (na vývodu 2
3.3. Pøíklad 5
- tlaèítkem zapni/vypni
Tento pøíklad ukazuje filtraci zákmi-
tù pro jedno tlaèítko.
Zadání: Pøipojte k vývojovému kitu
SDK2313 na port B pøípravek AT8LED.
Na port D pøipojte pøípravek ATSW.
Pomocí spínaèe S0 (na vývodu PD0)
ovládejte LED pøipojenou na vývod
Obr. 3.4. Rozmístìní souèástek PB0. První stisk tlaèítka rozsvítí LED,
Obr. 3.2. Reálné prùbìhy signálu na desce pøípravku ATSW druhý stisk tlaèítka LED zhasne atd.
na tlaèítku S4 a na vývodu D4 sejmuté Oetøete programovì zákmity tlaèítka.
digitálním osciloskopem. Zákmity jsou ATSW dal pouít. Zatím nebude øeeno
odstranìny integraèním èlánkem odstranìní zákmitù. Pøednì je tøeba správnì konfiguro-
vat oba porty. Port B musí být konfigu-
IO1A) je pak prostý zákmitù. Invertory Zadání: Pøipojte k vývojovému kitu rován jako výstupní, LED jsou zhasnu-
jsou zapojeny dva, take pro rozpojené SDK2313 na port B pøípravek AT8LED. ty. Vývod PD0 bude konfigurován jako
tlaèítko je na vstupu D4 úroveò log. 1 Na port D pøipojte pøípravek ATSW. vstup s pull-upem.
a pro sepnuté úroveò log. 0. Pouité Pøenáejte stav tlaèítek na LED. Pokud A nyní ji k realizaci ètení tlaèítka S0
invertory jsou vybaveny Schmittovými je tlaèítko sepnuto, bude svítit odpoví- tak, aby se potlaèily zákmity.
klopnými obvody, co je nutné, proto- dající LED. Pokud je tlaèítko uvolnìno, Stisk tlaèítka nastane, kdy z vývo-
e integraèní èlánek zmenuje strmost LED nesvítí. du PD0 pøeèteme úroveò log. 0. Po-
hran èíslicového signálu. kud je PIND,0 roven 1, tlaèítko není
Na obr. 3.2 je digitálním oscilosko- Konstrukce programu není pøíli stlaèeno. Zákmity potlaèíme tak, e
pem zachycena situace pøi rozpojení sloitá. Pro pouití pøípravku je tøeba stav vývodu PD0 vzorkujeme dvakrát.
tlaèítka S4. Nejdøíve je tlaèítko sepnuto pomocí registru DDRD zvolit vstupní Mezi jednotlivými vzorky musí být do-
(na S4 je úroveò log. 0), pak se roze- reim pro vývody PD0 a PD4 (nebo stateèný odstup. Postaèí asi 10 ms.
pne (pøejde do úrovnì log. 1). pro celý port). Dále musíme nechat pøi- Jsou-li tedy oba vzorky nulové, znaèí
Horní prùbìh je napìtí na tlaèítku se pojit pull-up rezistory na vývody PD0 to, e tlaèítko bylo skuteènì stisknuto.
zøetelnými zákmity. a PD3 (pomocí registru PORTD). Vý- Prakticky jediný zpùsob, jak otesto-
Dolní prùbìh je na vývodu D4 za in- vod PD4 pull-up rezistor nepotøebuje, vat stav vstupnì/výstupního registru, je
tegraèním èlánkem a invertorem IO1A. protoe je napájen z invertoru. Port B pouít instrukce pøeskoku SBIC nebo
Zákmity jsou odstranìny. nakonfigurujeme jako výstupní (pomocí SBIS (viz kapitolu 2.1 nebo souhrn uve-
Pøípravek ATSW je zkonstruován na registru DDRB). dený v kapitole 3.5). Tyto instrukce pøe-
desce s jednostrannými plonými spo- Pøipomeòme, e stisknuté tlaèítko skoèí následující instrukci v pøípadì, e
ji. Obrazec spojù je na obr. 3.3, rozmís- odpovídá úrovni log. 0 pøeètené z da- je urèitý bit uvedeného vstupnì/výstupní-
tìní souèástek na desce je na obr. 3.4. ného vstupu. Podobnì LED svítí pøi ho registru vynulován nebo nastaven.
úrovni log. 0. Staèí tedy sejmou stav Nejdøíve èekáme, a se bit PIND,0
Seznam souèástek pro ATSW vývodù portu D (ètením registru PIND) stane nulovým (instrukcí SBIC PIND,0).
a pøenést jej na port B (zápisem do re- Pokud je PIND,0 roven 1, nepøeskoèí
(cena asi 30 Kè)
gistru PORTB). Horní 3 bity musí být se instrukce RJMP SMYC0 a cyklus
R1, R2 10 kΩ/1 %/0,6 W tedy stále vyèkává na vynulování bitu
C1, C2 100 nF/63 V, keramický pøed zápisem na port B nastaveny do
stavu log. 1 (v horních tøech bitech re- PIND,0. V opaèném pøípadì, kdy je
D1 a D8 LED, 5 mm, 200 mcd PIND,0 roven 0, se pokraèuje dále.
IO1 74HCT14 gistru PIND nejsou ádné uiteèné sig-
Nyní je tøeba provést ustálení.
S0 a S4 tlaèítko P-B1720B nály, proto musí horní 3 LED zùstat
Po ubìhnutí dostateènì dlouhého inter-
P1 PSL10 (MLW10G) zhasnuté). K tomuto úèelu se pouije
valu toti zákmity pominou a je moné
deska s plonými spoji ATSW instrukce ORI, maska je 0b11100000.
provést druhé vzorkování. Ustálení rea-
Program je nazván PROG_04.ASM a lizujeme podprogramem USTAL, který
je vypsán v tab. 3.2. Pøíklad najdete v [4]
3.2. Pøíklad 4 v adresáøi PROGRAMY\PROG_04.
vyvoláme instrukcí RCALL USTAL.
Nakonec testujeme druhý vzorek té-
- sledování stavu tlaèítek Test programu
mìø stejným zpùsobem, jako ten první.
Nyní je tøeba aktualizovat stav LED
V prvním pøíkladu si pøedvedeme, Pøipojte pøípravky na urèené porty (bylo by toti neikovné, aby se stav
jak je tøeba konfigurovat vstupnì/vý- a sledujte stav LED podle stisknu- LED mìnil a po uvolnìní tlaèítka).
stupní registry portu, aby se pøípravek tých tlaèítek. Ètením obsahu registru PORTB lze
Obr. 4.1.
Registr GIMSK
Obr. 4.2.
Registr EIFR
Obr. 4.3.
Registr MCUCR
poò na jednom z vývodù, postupuje Je-li aktivován reset, procesor se Tab. 4.4. Volba reimu sníené spotøe-
signál na výstup tohoto hradla. probudí a pøedá programové øízení by pomocí bitù SM0, SM1
Dále jsou zaøazeny tøi registry, které na adresu $0000. Reset zpùsobí na-
vlastnì plní úèel zpoïovací linky. Tak- stavení vstupnì/výstupních registrù
e poadavek pøeruení je dren 4 ho- na výchozí hodnoty.
dinové takty procesoru. Výstup posled-
ního registru pøedstavuje pøíznak PCIF, Idle mode (reim neèinnosti)
který indikuje pøeruení od jednoho Jsou-li bity SM0, SM1 vynulovány,
ze vstupù PCINT0 a PCINT7. pøejde mikroøadiè po vykonání instrukce Vstupy vnìjího pøeruení INT0,
Jak bylo ji uvedeno, s pøeruením SLEEP do reimu neèinnosti: INT1 musí být v reimu Power-down
od vstupù PCINT0 a PCINT7 souvisí konfigurovány jako úrovòovì citlivé, po-
• Jádro procesoru je zastaveno (nejsou
bity PCIE, PCIF a registr PCMSK. Vy- kud se mají pouít k procitnutí mikroøa-
vykonávány instrukce),
svìtleme si jejich funkci: dièe. Dùvod je prostý. Hranová citlivost
• èítaèe/èasovaèe, USART, analogový
• PCIE - pokud je bit PCIE = 1 (z regis- je zajiována vzorkováním vstupù
komparátor, Watchdog, jednotka USI a
tru GIMSK, viz obr. 4.1) a I = 1, je po- INT0, INT1 synchronnì s kmitoètem
pøeruovací systém zùstávají aktivní.
voleno pøeruení pøi zmìnì stavu libo- krystalového oscilátoru. V reimu Po-
volného z vývodù PCINT0 a PCINT7. Bìící periferie dovolují procesoru wer-down vak krystalový oscilátor ne-
Jednotlivé vstupy lze blokovat pomocí procitnout z reimu neèinnosti aktivací bìí. Take vzorkování není moné!
bitù z registru PCMSK. jejich pøeruení nebo pomocí resetu.
• PCMSK - tento registr obsahuje bity Pokud není poadováno procitnutí Standby mode
PCINT0 a PCINT7 (obr. 4.5). Tyto bity po aktivaci pøeruení od analogového (pohotovostní reim)
vybírají, které ze vstupù pøeruení budou komparátoru, mìl by být komparátor
odstaven nastavením bitu ACD z regis- Je-li SM0 = 0 a SM1 = 1, pøejde pro-
sledovány. Pokud má být sledování bitu cesor po vykonání instrukce SLEEP do
povoleno, musí být odpovídající bit na- tru ACSR. Toto opatøení sníí odbìr
v reimu neèinnosti. pohotovostního reimu. Tento reim je
staven. Pokud má být sledování zakázá- podobný reimu Power-down, navíc
no, musí být odpovídající bit vynulován. Po procitnutí z reimu neèinnosti se
mikroøadiè pøepne do normálního reimu. zùstává bìet oscilátor. Procesor
• PCIF - pøíznak (z registru EIFR, viz se z reimu Stadby probudí automatic-
obr. 4.2) aktivace libovolného ze vstupù Power-down mode (reim ky po uplynutí esti hodinových cyklù.
PCINT0 a PCINT7. Pøíznak se vynu- sníeného napájecího napìtí)
luje vstupem do odpovídající obsluné
rutiny nebo zápisem 1 do bitu PCIF. Je-li bit SM0 nastaven (stav bitu SM1 4.3. Pøíklad 7
není rozhodující, viz tab. 4.4), pøejde pro-
cesor po vykonání instrukce SLEEP do - pouití pøeruení a
4.2. Reimy sníené reimu sníeného napájecího napìtí: reimu Power-down
spotøeby • Vnìjí krystalový oscilátor je odsta-
ven, Pøíklad ukazuje pouití vnìjího pøe-
Reimy sníené spotøeby umoòují vý- • jádro procesoru je zastaveno (nejsou ruení INT0 k pøechodu mikroøadièe
raznì sníit spotøebu mikroøadièe v do- vykonávány instrukce), do reimu Power-down a procitnutí z nìj.
bì, kdy není poadován jeho plný výkon. • èítaèe/èasovaèe, USART a analogový Zadání: Pøipojte k vývojovému kitu
Pro pøechod do reimu sníené spo- komparátor jsou odstaveny, SDK2313 na port B pøípravek AT8LED.
tøeby musí být nastaven bit SE z registru Na port D pøipojte pøípravek ATSW.
MCUCR a následnì provedena instruk- • jednotka USI, Watchdog a pøeruova-
cí systém zùstávají aktivní. Na pøípravku AT8LED bude prová-
ce SLEEP. Reim sníené spotøeby se dìn program bìící svìtlo (kap. 2.5).
volí bity SM0, SM1 registru MCUCR K procitnutí mùe dojít buï vnìjím Pomocí spínaèe S2 a odpovídající-
(viz obr. 4.3 a tab. 4.4). resetem, Watchdog resetem (je-li WDT ho vstupu vnìjího pøeruení INT0 za-
Je-li povoleno pøeruení, po jeho ak- aktivován) a úrovòovì citlivými vstupy jistìte pøechod do reimu Power-down.
tivaci procitne procesor z reimu sní- INT0, INT1 nebo vstupy PCINT0 a První stisk tlaèítka uvede mikroøadiè
ené spotøeby, obslouí pøeruení a PCINT7. do reimu sníené spotøeby, druhý
pokraèuje v programu instrukcí násle- Po procitnutí z reimu Power-down se stisk zajistí procitnutí a pøechod do pù-
dující za instrukcí SLEEP (která jej døí- mikroøadiè pøepne do normálního reimu. vodního reimu.
ve do reimu sníené spotøeby uved- Hlavní výhodou reimu Power-down
la). Obsah registrového pole, RAM a je skuteènost, e po jeho aktivaci lze Pøi realizaci programu jsme vyli
vstupnì/výstupních registrù zùstane výraznì sníit napájecí napìtí (napø. z 5 z pøíkladu 3 (viz kapitolu 2.5). Zmìny
nezmìnìn. na 2 V). Tím výraznì poklesne odbìr. se týkají pouití pøeruení.
Obr. 4.4.
Detekèní logika
pøeruení PCINTx
Obr. 4.5.
Registr PCMSK
Komparaèní registry - OCR0A, OCR0B Pøíznak pøeteèení TOV0 se nastaví taè èítá ode dna do maxima a po pøete-
ve stejném hodinovém cyklu èítaèe, ve èení se vrací opìt ke dnu.
Registry OCR0A, OCR0B (obr. 5.3) kterém obsah TCNT0 dosáhl nuly. Hodnota vrcholu je pro WGM = 3
jsou komparaèními registry èítaèe/èa- pevná (0xFF) a pro WGM = 7 nastavi-
sovaèe 0. Jejich obsah se nestále po- CTC reim (WGM = 2; tab. 5.3) telná obsahem registru OCR0A.
rovnává s aktuálním obsahem èítaèe Pro neinvertující reim (COM0X1 =
(TCNT0). Pøi shodì mùe být vyvolána V CTC reimu se èítaè vynuluje,
kdy TCNT0 dosáhne hodnoty OCR0A. = 1,COM0X0 = 0) je vývod OC0X na-
operace na vývodech OC0A, OC0B. staven do úrovnì log. 1 vdy po pøe-
Hodnota OCR0A vlastnì definuje hod-
notu vrcholu, tedy rozliení èítaèe. Ten- teèení obsahu èítaèe. Po dosaení
Podpora èítaèe/èasovaèe 0 shody TCNT0 = OCR0X pøejde tento
to reim poskytuje vìtí monost øízení
v pøeruovacím systému kmitoètu. vývod do úrovnì log. 0. Take hod-
Èítaè/èasovaè 0 mùe generovat Pøeruení se mùe generovat, kdy nota obsaená v registru OCR0X
celkem tøi pøeruení. TCNT0 dosáhne vrcholu, který je dán vlastnì pøímoúmìrnì urèuje dobu tr-
Registr TIMSK (obr. 5.4) obsahuje obsahem OCR0A. V tomto pøípadì se vání úrovnì log. 1 na vývodu OC0X.
masky tìchto pøeruení: TOIE0 (povo- nastaví pøíznak OCF0. Je-li pøeruení V invertujícím reimu (COM0X1 = 1,
lení pøeruení pøi pøeteèení obsahu èí- povoleno, vyvolá se. COM0X0 = 1) je ve naopak.
taè/èasovaèe 0), OCIE0A (povolení Pro generování výstupního prùbìhu Pro výstupní kmitoèet PWM signálu
pøeruení pøi shodì TCNT0 = OCR0A) na vývodu OC0X (X je A nebo B) lze na vývodu OC0X platí:
a OCIE0B (povolení pøeruení pøi sho- zvolit reim toggle (COM0X1 = 0,
COM0X0 = 1). Pak kadá shoda TCNT0 fOC0X PWM = fclk_IO/N·256,
dì TCNT0 = OCR0B).
s OCR0X vede k negaci vývodu OC0X,
Registr TIFR (obr. 5.5) obsahuje kde N pøedstavuje dìlicí pomìr (1, 8,
take se generuje signál støídy 1 : 1.
pøíznaky tìchto pøeruení: TOV0 (indiku- 64, 256 nebo 1024).
Nejvyí generovaný kmitoèet dostane-
je pøeteèení èítaèe/èasovaèe 0), OCF0A me pro pøípad, e je OCR0X = $00. Mezní hodnoty OCR0X registru pøed-
(indikuje shodu TCNT0 = OCR0A) a OCF0B Pro maximální kmitoèet platí fOC0MAX = stavují zvlátní pøípady generování PWM
(indikuje shodu TCNT0 = OCR0B). = fclk_IO/2. Pro ostatní pøípady je: prùbìhu. Pokud je OCR0X = $00, vy-
tváøí se krátký zákmit v okamiku pøete-
5.4. Popis fOC0X = f clk_IO/2·N·(1 + OCR0X), èení èítaèe. Pokud je OCR0X = $FF,
bude výstup stabilnì v úrovni log. 1
jednotlivých reimù kde N pøedstavuje dìlicí pomìr (1, 8,
64, 256 nebo 1024).
(neinvertující reim) nebo log. 0 (in-
vertující reim).
Nyní si vysvìtlíme jednotlivé pracov- Podobnì jako v normálním reimu
ní reimy èítaèe/èasovaèe 0. je pøíznak TOV0 nastaven ve stejném Fázovì korigovaný PWM reim
hodinovém cyklu èítaèe, ve kterém na- (WGM = 1 nebo 5; tab. 5.5)
Normální reim (WGM = 0) stane pøeteèení z $FF na $00.
Fázovì korigovaný PWM reim po-
Nejjednoduím reimem je tzv. skytuje PWM prùbìh s velkým rozlie-
Rychlý PWM reim
normální reim. V tomto reimu se vdy ním, pouívá dvojfázovou realizaci. Èí-
èítá nahoru (inkrementace obsahu) a (WGM = 3 nebo 7; tab. 5.4) taè èítá opakovanì z $00 do vrcholu a
nedochází k ádnému nulování. Èítaè Rychlý PWM reim generuje PWM potom z vrcholu do $00.
jednodue pøeteèe, kdy dosáhne své- prùbìh s velkou rychlostí. Rychlý PWM Hodnota vrcholu je pro WGM = 1
ho 8bitového maxima (vrchol = $FF) a reim se odliuje od ostatních PWM re- pevná (0xFF) a pro WGM = 5 nastavi-
restartuje se ze dna ($00). imù svou jednofázovou realizací. Èí- telná obsahem registru OCR0A.
Obr. 5.2.
Registry
TCCR0A a
TCCR0B
Obr. 5.3.
Registry
TCNT0,
OCR0A,
OCR0B
Obr. 5.5.
Registr TIFR
V neinvertujícím reimu je vývod Zadání: Pøipojte k vývojovému kitu Tab. 5.6. Program PROG_08.ASM
OC0X vynulován pøi shodì TCNT0 = SDK2313 na port B pøípravek AT8LED. PROG_08.ASM:
= OCR0X pøi èítání nahoru. K nasta- Na port D pøipojte pøípravek ATSW. .INCLUDE tn2313def.INC
vení dojde pøi shodì TCNT0 = OCR0X Poèítejte pomocí èítaèe/èasovaèe 0 ;definice registrú
pøi èítání dolù. Pro invertující reim je impulsy z tlaèítka S4. Poèet stiskù tla-
èinnost opaèná. èítka je indikován jako dvojkové èíslo .DEF REG=R16 ;prac. registr
Dvojfázové provedení má sice nií zobrazované na pøípravku AT8LED.
RESET: SER REG ;REG=0b11111111
pracovní kmitoèet ne provedení jedno- OUT DDRB,REG ;port B je výstupní
fázové (rychlý PWM reim), ale pro nì- Pøipomeòme, e programové èítání LDI REG,0b00000110 ;konfiguruj c/c 0
které aplikace se mu dává pøednost. impulsù bylo ji øeeno v pøíkladu 6 OUT TCCR0B,REG ;jako cítac
Rozliení je toti pevnì stanoveno jako v kapitole 3.4. Nyní si ukáeme hard- ;(sestupná hrana)
8 bitù. Dvoufázová èinnost spoèívá warové øeení zaloené na pouití èí- SMYCKA: IN REG,TCNT0 ;cti obsah cítace
v tom, e èítaè se nejprve inkrementuje taè/èasovaèe 0. COM REG ;zneguj
Pro tento pøípad je tøeba pøivést sle- OUT PORTB,REG ;zobraz na LED
a do okamiku dosaení maxima. Pak RJMP SMYCKA ;zpet do smycky
se pøepne a èítá dolù. dované impulsy na vývod T0 (vstup èí-
Pøíznak TOV0 je nastaven pokadé, taèe/èasovaèe 0) tedy na PD4. Na pøí-
kdy èítaè dosáhne dna ($00). Nasta- pravku ATSW odpovídá tomuto vývodu ci (pøipomeòme, e LED svítí pøi úrovni
vení COM0X1 = 1, COM0X0 = 0 posky- tlaèítko S4, které má navíc oetøené log. 0):
tuje na vývodu OC0X neinvertující PWM zákmity. Vlastní realizace programu je Program je nazván PROG_08.ASM a
signál, pro COM0X1 = 1, COM0X0 = 1 jednoduchá a velmi krátká.
je vypsán v tab. 5.6. Pøíklad najdete v [4]
dostáváme invertující PWM signál. Program musí nakonfigurovat port
v adresáøi PROGRAMY\PROG_08:
Pro výstupní kmitoèet PWM signálu B jako výstupní (port D je po resetu auto-
na vývodu OC0X platí: maticky konfigurován jako vstup, pull-up
rezistor pro vývod PD4 není tøeba, na Test programu
fOC0X PWM = fclk_IO/N·510, tento vývod je pøipojen výstup klasické- Pøipojte pøípravky na urèené porty.
kde N pøedstavuje dìlicí pomìr (1, 8, ho hradla). Kadý stisk tlaèítka S4 zvýí hodno-
64, 256 nebo 1024). Dále je nutné správnì konfigurovat tu zobrazenou na pøípravku AT8LED
Mezní hodnoty OCR0X pøedstavují èítaè/èasovaè 0 (budeme nastavovat o 1. Po údaji 255 (dvojkovì 11111111)
zvlátní pøípady generace PWM signá- pouze registr TCCR0B, protoe je po- obsah pøeteèe (00000000) a ve zaène
lu. Pro neinvertující reim platí: Je-li uit normální reim, který je po resetu od zaèátku.
OCR0X = $00, je výstup OC0X stabil- vdy nastaven). V úvahu pøipadají tyto
hodnoty TCCR0B: 0b00000110 nebo
nì v úrovni log. 0. Pøi OCR0X = $FF
je výstup OC0X stabilnì v log. 1. Pro 0b00000111. V obou pøípadech se jed- 5.7. Pøípravek ATDIPSW2
invertující reim platí ve opaènì. ná o èítání impulsù na vstupu T0 (tedy
ne o reim èasovaèe, kdy se èítá kmi- Pøípravek ATDIPSW2 (obr. 5.6) pøed-
toèet odvozený z hodin mikroøadièe). stavuje jednoduchou osmici spínaèù DSW
5.5. Závìreèné poznámky Byl vybrán reim èítání aktivovaný se- umístìných v pouzdøe DIP (DIP8X).
stupnou hranou (impuls se pak vezme Spínaèe jsou doplnìny zdvíhacími (pull-
Pro správnou funkci vývodu OC0A up) rezistory, které pøi vypnutých spína-
je nutné nastavit bit DDRB2 (konfiguro- do úvahy okamitì po stisku tlaèítka
S4; v opaèném pøípadì, pøi èítání na èích drí jednotlivé vývody v úrovních
vat vývod OC0A jako výstupní), podob- log. 1. Zdvíhací rezistory jsou sdrue-
nábìnou hranu, by se stav èítaèe mì-
nì pro vývod OC0B je nutné nastavit ny v rezistorové síti R1. Kdy nìkterý
nil a po uvolnìní tlaèítka). Take vstup-
bit DDRD5. nì/výstupní registr TCCR0B je nasta- ze spínaèù sepneme, je na pøísluném
ven na hodnotu 0b00000110. vývodu úroveò log. 0.
5.6. Pøíklad 8 Vlastní zjitìní poètu naèítaných im- Pokud pouijeme tento pøípravek
- hardwarové èítání impulsù pulzù spoèívá ve ètení obsahu èítaèe/èa-
sovaèe 0, tedy registru TCNT0. Pøed
k jinému mikroøadièi, mùeme popø. re-
zistorovou sí vynechat - napø. mikroøa-
Pøíklad ukazuje pouití èítaèe/èaso- zobrazením pøeètené hodnoty na pøí- dièe typu 8051 mají vývody ji opatøe-
vaèe 0 v reimu èítaèe vnìjích událostí. pravku AT8LED je nutno provést nega- ny zdvihacími rezistory.
Pøípravek ATDIPSW2 je zkonstruo-
Tab. 5.3. ván na desce s jednostrannými plo-
Význam bitù nými spoji (obr. 5.7 a obr. 5.8).
COM0X1 a COM0X0
v reimech bez PWM
Tab. 5.4.
Význam bitù
COM0X1 a COM0X0
v rychlém
PWM reimu
Tab. 5.5.
Význam bitù
COM0X1 a COM0X0
ve fázovì korigova-
ném PWM reimu
Obsah èítaèe/èasovaèe 1 Ètením této hodnoty lze zjistit èas (re- Normální reim (WGM = 0)
- registry TCNT1H, TCNT1L lativnì od okamiku vynulování èítaèe/
/èasovaèe 1), kdy na vývodu ICP na- V tomto reimu se vdy èítá naho-
stala vstupní událost. Pøipomeòme, e ru (inkrementace obsahu) a nenastá-
Dva 8bitové registry TCNT1H a
první se musí èíst ICR1L. vá ádné nulování. Èítaè jednodue
TCNT1L (obr. 6.4) umoòují pøístup
pøeteèe, kdy dosáhne svého 16bitové-
k obsahu 16bitového èítaèe/èasovaèe 1
Podpora èítaèe/èasovaèe 1 ho maxima (vrchol = $FFFF) a restar-
(pøipomeòme, e pøi zápisu se musí
zapsat nejdøíve do TCNT1H, pøi ètení tuje se ze dna ($0000).
v pøeruovacím systému Pøíznak pøeteèení TOV1 se nastaví
se jako první musí èíst TCNT1L).
Je tøeba poznamenat, e èítaè/èa- Èítaè/èasovaè 1 mùe generovat ve stejném hodinovém cyklu èítaèe, ve
sovaè 1 èítá nahoru (ve vìtinì rei- celkem ètyøi pøeruení: kterém obsah TCNT1 dosáhl nuly.
mù). To znamená, e po kadém hodi- Jednotka Input Capture se v nor-
• pøeruení pøi pøeteèení èítaèe/èasova- málním reimu pouívá snadno. Ovem
novém impulsu pøivedeném na jeho èe 1,
vstup se obsah zvýí o 1 (napø. z $0000 èasové rozmezí dvou po sobì jdoucích
• pøeruení pøi shodì obsahu komparaè- událostí nesmí pøekroèit rozliení èíta-
na $0001). ního registru OCR1A s obsahem èítaèe,
Pokud registr TCNT1H, TCNT1L èe. Rozliení mùeme zvýit buï ob-
obsahuje hodnotu $FFFF a pøijde dalí • pøeruení pøi shodì obsahu komparaè- sluhou pøeruení TOV1 (poèítáme,
hodinový impuls, obsah èítaèe pøeteèe ního registru OCR1B s obsahem èítaèe, kolikrát èítaè pøetekl) nebo pouitím
($0000) a poèítá se od zaèátku. Pøi • pøeruení pøi zachycení obsahu èíta- pøeddìlièky.
pøeteèení se nastaví pøíznak pøeteèení èe v záchytném registru. Jednotka Output Compare mùe
a mùe se generovat pøeruení. být pouita pro generování pøeruení,
Registr TIMSK (obr. 6.7) obsahuje ale pouití OC1A/OC1B výstupu se
Komparaèní registry masky: TOIE1 (povolení pøeruení pøi v tomto reimu nedoporuèuje (pohltí pøí-
pøeteèení), OCIE1A (povolení pøerue- li mnoho strojového èasu procesoru).
èítaèe/èasovaèe 1 ní pøi dosaení shody obsahu TCNT1 Význam bitù COM1X1, COM1X0
- OCR1AH, OCR1AL a s OCR1A), OCIE1B (povolení pøerue- z registru TCCR1A v tomto a dalích re-
OCR1BH, OCR1BL ní pøi dosaení shody obsahu TCNT1 imech bez PWM je uveden v tab. 6.3.
s OCR1B) a TICIE1 (povolení pøerue-
Komparaèní registry obsahují hod- ní po zachycení obsahu èítaèe v regist- CTC reim (WGM = 4 nebo 12)
notu, která se ustaviènì porovnává ru ICR1).
s obsahem èítaèe/èasovaèe 1. V pøípa- Registr TIFR (obr. 6.8) obsahuje Tento reim zvolíme nastavením
dì shody se na vývodu OC1X provede pøíznaky: TOV1 (indikuje pøeteèení), WGM = 4 nebo 12. V tomto reimu je
výstupní událost definovaná nastave- OCF1A (indikuje dosaení shody v jed- registr OCR1A/ICR1 pouit pro mani-
ním bitù COM1X1, COM1X0. notce Output Compare A), OCF1B (indi- pulaci s rozliením èítaèe.
Pøipomeòme, e pøi zápisu se musí kuje dosaení shody v jednotce Output V CTC reimu se toti èítaè vynu-
zapsat nejdøíve do OCR1XH. Pøi ètení Compare B) a ICF1 (indikuje zachycení luje, kdy TCNT1 dosáhne hodnoty
se jako první musí èíst OCR1XL. stavu jednotkou Input Capture). OCR1A. (pro WGM = 4) nebo ICR1
(pro WGM = 12). Take OCR1A/ICR1
vlastnì definuje hodnotu vrcholu, tedy
Záchytný registr èítaèe/èasovaèe 1 6.3. Popis rozliení èítaèe. Tento reim poskytuje
- ICR1H, ICR1L (obr. 6.6)
V okamiku aktivace vývodu ICP (viz
jednotlivých reimù vìtí monost øízení kmitoètu.
Pøeruení se mùe generovat, kdy
obr. 6.1) je aktivní stav èítaèe/èasovaèe 1 Nyní si vysvìtlíme jednotlivé pracov- TCNT1 dosáhne vrcholu, který je dán
pøenesen do registru ICR1H, ICR1L. ní reimy èítaèe/èasovaèe 1. obsahem OCR1A/ICR1. V tomto pøípa-
Obr. 6.5.
Registry
OCR1AH,
OCR1AL
a OCR1BH,
OCR1BL
Obr. 6.6.
Registr
ICR1H,
ICR1L
Obr. 6.8.
Registr
TIFR
7. Pouití piezomìnièe
COM REG ;neguj stavy
ANDI REG,0b00001111;zamaskuj dalí bity
BREQ SM0 ;pro REG=0 se vrat
;test tlacítek: V této kapitole se ukáeme, jak ván ani v pøípadì, e na piezomìniè
CPI REG,0b00000001 ;test S0
BREQ S0 pouívat piezomìniè. Dále bude u- pøiloíme ss napìtí.
CPI REG,0b00000010 ;test S1 veden pøípravek ATOUT, který kro-
mì piezomìnièe obsahuje obvody
BREQ S1
CPI REG,0b00000100 ;test S2 rozhraní pro ovládání výkonových 7.2. Zpùsoby buzení
BREQ S2
CPI REG,0b00001000 ;test S3
spotøebièù pomocí mikroøadièe (tri- piezomìnièe
BREQ S3 ak, relé a zpìtnovazební optoèlen).
RJMP CYKL ;jiná varianta Piezomìniè lze pøipojit ke zdroji sig-
nálu nìkolika zpùsoby. Obvyklé varian-
;reakce pro S0: 7.1. Princip funkce ty jsou na obr. 7.2:
S0: LDI PWM,64 ;25%
RJMP NASTAV piezomìnièe • Nesymetrické buzení je nejznámìjí
;reakce pro S1: variantou zapojení. Piezomìniè je pøi-
S1: LDI PWM,128 ;50% Piezomìniè vyuívá tzv. piezoe- pojen mezi vývod mikroøadièe (napø.
RJMP NASTAV lektrického jevu. Pøi pøiloení elektric- PB3) a GND. Výhodou tohoto øeení je
;reakce pro S2: kého napìtí se piezomateriál deformuje.
S2: LDI PWM,192 ;75% jednoduchost zapojení. Nevýhodou je
RJMP NASTAV
Druhé ze známých pouití piezoelek- pomìrnì nízký rozkmit signálu. Z obr.
;reakce pro S3: trického jevu spoèívá v generování na- 7.3 je zøejmé, e rozkmit napìtí je 5 V.
S3: LDI PWM,255 ;99,61% pìtí pøi mechanické deformaci piezo-
RJMP NASTAV • Buzení vyím napìtím je klasickým
materiálu (tohoto efektu vyuívají
;zapíe hodnotu: pøípadem, jak zvýit rozkmit budicího
krystalové pøenosky gramofonù).
NASTAV: CLR REG signálu. I nyní platí èasový diagram
OUT OCR1AH,REG ;OCR1AH=$00 Aby byl piezomìnièem generován
podle obr. 7.3, maximální napìtí je vak
OUT OCR1AL,PWM ;OCR1AL=PWM tón, musí být pøednì zajitìna èasová
24 V. Take i rozkmit je 24 V.
zmìna pøiloeného napìtí. Zvuk je toti
;cekej na uvolnení: vytváøen chvìním membrány piezomì- • Symetrické buzení je cestou, jak
SM1: IN REG,PIND ;cti stav PD zvýit rozkmit budicího signálu v pøípa-
COM REG ;neguj stavy nièe.
ANDI REG,0b00001111;zamaskuj dalí bity Piezomìniè je zátìí s kapacitním
BRNE SM1 ;pro REG<>0 se vrat charakterem. Podobnì jako u bìné-
RCALL USTAL ;ustal ho kondenzátoru teèe nejvyí proud
IN REG,PIND ;cti stav PD pøi zmìnì pøiloeného napìtí. Pro ss
COM REG ;neguj stavy b) buzení
ANDI REG,0b00001111;zamaskuj dalí bity napìtí je proud piezomìnièem nulový. vyím
BRNE SM1 ;pro REG<>0 se vrat Tohoto chování lze vyuít pøi ovlá- napìtím
RCALL USTAL ;ustal dání tónu. Tón se negeneruje nejen
RJMP CYKL ;návrat do smycky v pøípadì, e napìtí pøiloené na piezo-
;rutina pro ustálení: mìniè je rovno nule, ale není genero-
USTAL: CLR CNT1 ;CNT1=0 a) nesyme- c) symetrické
CLR CNT2 ;CNT2=0 trické buzení
USTALS: DEC CNT2 ;sni CNT2 Obr. 7.1. buzení
BRNE USTALS ;test konec
DEC CNT1 ;sni CNT1
Piezo-
BRNE USTALS ;test konec elektrický Obr. 7.2. Moné varianty buzení
RET ;návrat jev piezomìnièe
Obr. 7.7.
Obrazec
ploných
spojù
pøípravku
ATOUT
(mìø.: 1 : 1)
Obr. 7.8.
Rozmístìní
souèástek
na desce
pøípravku
ATOUT
Obr. 8.1.
Èasové
prùbìhy
zápisu
pøíkazu/dat
na displej
(èasy jsou
v ns)
Inicializaèní sekvence
pro 4bitovou komunikaci
Velmi dùleitá je tzv. inicializaèní
sekvence. Ta musí být provedena, aby
se s displejem dalo komunikovat.
4bitová komunikace vyaduje odesí-
lání dat nadvakrát. Dále je sloitìjí
úvodní sekvence volby reimu komuni-
kace. Nejdøíve se zaèíná s reimem
8bitovým (co je moné, protoe pøi
nastavení komunikace není hodnota
spodních 4 bitù uvaována) a pak se
pøechází na 4bitový reim.
Na obr. 8.2 je horní bajt (posílá se
nejdøíve) oznaèen edou barvou. Je
tedy zøejmé, e pro první 4 pøíkazy se
neposílá dolní bajt.
Obr. 8.2.
Inicializaèní
sekvence
pro 4bitovou
komunikaci
Realizace
Pøednì byly zavedeny symboly pro
pouívané registry A a B (pøedávají se
v nich prakticky vechny parametry).
Dále je zaveden symbol PORT zastu-
pující port D (pokud chcete pøipojit pøí-
pravek na jiný port, staèí tento symbol
pouze pøedefinovat). Jetì jsou zave-
deny symboly RS, E a BCKLED pro
ovládání signálù RS a E displeje a
podsvícení displeje. Poslední symbol
ENDS pøedstavuje konec øetìzce (pou-
ívají jej rutiny WRSTR a WRSTRD).
Obr. 8.3. Schéma pøípravku Nejdùleitìjí, ale také nejkompliko-
ATLCDTX2 vanìjí, jsou rutiny INIT, WRDATA a
Obr. 8.5. Rozmístìní souèástek WRCMD.
na desce pøípravku ATLCDTX2
LCD displeje byl jednak pouil levnìjí • Rutina INIT zajiuje inicializaci dis-
typ displeje (má navíc podsvícení) a pleje dle inicializaèní sekvence zapsa-
Pøipojení je provedeno tak, aby se
dále opraveny nìkteré nedostatky. né formou obr. 8.2.
pøípravek dal pouít i pro port D. Tedy
Abychom zachovali zpìtnou kom- není pouit vývod D7, který na tomto • Rutiny WRDATA a WRCMD jsou si
patibilitu k pøípravku ATLCD1602, byly portu není k dispozici. natolik podobné, e bylo úèelné zapsat
jednotlivé vývody zapojeny takto: Schéma pøípravku ATLCDTX2 je je za sebou. Jedná se o rutiny, které se
• datová sbìrnice DB7 a DB4 je pøi- na obr. 8.3. pouívají pro zápis dat nebo pøíkazù
pojena na vývody D6 a D3, Rezistor R1 omezuje proud báze (instrukcí) na displej. Rutina WRDATA
• signál E je øízen vývodem D2, tranzistoru T1, který ovládá podsvícení musí pøed vlastním odesláním dat vy-
displeje. Rezistor R2 omezuje proud stavit vodiè RS do úrovnì log. 1, ruti-
• signál RS je øízen vývodem D1, podsvìcovací LED (zmìnou velikosti na WRCMD naopak vodiè RS nuluje
• Vývod D0 ovládá podsvícení displeje odporu lze mìnit intenzitu podsvícení). (viz tab. 8.4). Aktivitu vodièe RS je nut-
(na pøípravku ATLCD1602 byl tento vý- Nejvyí intenzity dosáhneme pøi ná- no zapamatovat (pro dalí testy) a pro-
vod pouit k odpojování napájení a hradì rezistoru R2 drátovou propojkou. to se uloí do pøíznakového bitu T.
hardwarovému resetu LCD øadièe, nyní Rezistor R3 umoòuje nastavit kon- Formát 4bitové komunikace vya-
to ji není nutné). Vzhledem k poadav- trast displeje. Pro dosaení optimálního duje odeslání dat obsaených v regist-
ku co nejniího úbytku na spínacím kontrastu doporuèujeme na místo R3 ru A po 4bitových polovinách. Nejdøí-
tranzistoru byl pouit typ PNP. Take doèasnì pøipájet trimr o odporu 10 kΩ ve se odele horní polovina. Pro tento
podsvícení je pøipojeno pro D0 = 0 a a nastavit vhodný odpor. Tento odpor úèel se data uchovají v registru B a
odpojeno pro pøípad D0 = 1. pak zmìøíme ohmmetrem a trimr na- zamaskují se spodní bity instrukcí
hradíme pevným rezistorem s nejblií ANDI A,0b11110000.
hodnotou. Dále se musí takto pøipravené bity
posunout o jedno místo vpravo, protoe
Souèástky pøípravku ATLCDTX2 vývody LCD modulu byly pøi pøipojení
jsou pøipájeny na desce s jednostran- na konektor PSL10 posunuty o jednu
nými plonými spoji. Obrazec spojù pozici (vimnìte si napø., e nejvyí
je na obr. 8.4, rozmístìní souèástek na bit LCD modulu je napojen na vývod
desce je na obr. 8.5. Modul LCD disple- D6). Dùvod je prostý, port D toti neob-
je upevnìn na desce na stranì sou- sahuje nejvyí bit. A byla tu snaha mít
èástek a je propojen s deskou krátkými monost pouívat pøípravek ATLCDTX2
drátky. i na portu D. Posun o jeden bit vpravo
se tedy provede instrukcí LSR A.
Seznam souèástek pro ATLCDTX2 K takto sestavenému údaji musíme
(cena asi 260 Kè) pøipojit stav vodièe RS (hodnoty bitù
R1 10 kΩ/1 %/0,6 W D7 a D4 a signálù RS a E se toti za-
R2 10 Ω/1 %/0,6 W píí najednou) a E = 1. Pøipomeòme,
R3 1 kΩ/1 %/0,6 W, viz text e stav vodièe RS byl uloen do pøí-
T1 BC558B znakového bitu T (instrukce BLD A,RS
M1 LCD displej 16 x 2 typu pøenese hodnotu uloenou v pøíznako-
EL1602A-FL-YBW vém bitu na bit s pozicí RS v registru A).
P vidlice PSL10 Nastavení signálu E se provede bito-
deska s plonými spoji ATLCDTX2 vým souètem s maskou 0b00000100
(jednièka je pouze v místì bitu 2, který
odpovídá signálu E). Nakonec se ve
8.3. LCD.INC odele na port.
- rutiny pro øízení displeje Vzhledem k tomu, e vykonávání in-
strukcí je pomìrnì rychlé, musí se po
Rutiny pro ovládání pøípravku AT- vystavení chvilku poèkat (celkovì asi
Obr. 8.4. Obrazec ploných spojù LCDTX2 byly zapsány do zvlátního 1000 ns) a poté se data potvrdí stae-
pøípravku ATLCDTX2 (mìø.: 1 : 1) souboru, který byl nazván LCD.INC. ním signálu E do úrovnì log. 0.