´ Ustav radioelektroniky Vysok´ e uˇ cen´ı technick´ e v Brnˇ e
Komunikace zaˇr´ızen´ı po sbˇ ernici Mikroprocesorov´ a technika a embedded syst´ emy Pˇredn´ aˇska 4
doc. Ing. Tom´ aˇs Fr´ yza, Ph.D. 11. ˇr´ıjna 2011
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Obvod watchdog
I
Obvod watchdog je ”bezpeˇ cnostn´ı ˇ casovaˇ c”. Jeho v´ yznam je vyvolat reset (a t´ım i znovu-nastartov´ an´ı) mikrokontrol´ eru v pˇr´ıpadˇ e, ˇze se procesor ”ztrat´ı”, pˇr´ıp. nevykon´ av´ a program, kter´ y by mˇ el.
I
Naz´ avisl´ yˇ casovaˇ c s oddˇ elen´ ym hodinov´ ym syst´ emem (frekvence je z´ avisl´ a na nap´ ajen´ı; VCC = 5 V ⇔ fWDT = 1 MHz).
I
Bˇ eˇzn´ y chod programu: program opakovanˇ e znovunaˇ c´ıt´ a, pˇr´ıp. resetuje stav ˇ casovaˇ ce (napˇr. v nekoneˇ cn´ e smyˇ cce programu) a t´ım nedojde k pˇreteˇ cen´ı jeho hodnoty.
I
V pˇr´ıpadˇ e ”ztr´ aty”programu, zacyklen´ı, apod. dojde k pˇreteˇ cen´ı a k vyvol´ an´ı resetu.
when a Chip Reset occurs. Eight different clock cycle periods can be etermine the resetperif´ period. If the reset period expires without another Watchdog erie set, the ATmega16 resets and executes from the Reset Vector. For timing Watchdog Reset, refer to page 41.
ntentional disabling of the Watchdog, a special turn-off sequence must be I Funkce watchdog ˇ asovaˇ e je bˇ eˇznˇ e of vypnuta, tj. nen´ıTimer potˇreba se ob´ avat the Watchdog is disabled. Refercto the cdescription the Watchdog en´ eho resetu syst´ emu. er for details. nechtˇ
I Povolen´ ı generace resetu MCU a nastaven´ı pˇreddˇ eliˇ cky je ˇr´ızeno ˇr´ıdic´ım registrem atchdog TimerWDTCR (Watchdog Timer Control Register).
WATCHDOG OSCILLATOR
Tabulka: Pˇr´ıklad zmˇ eny rychlosti ˇ c´ıt´ an´ı watchdogu (reg. WDTCR)
WDP2:WDP0
Pˇreteˇ cen´ı (VCC = 5 V)
0b000 0b001 0b010 0b011 0b100 0b101 0b110 0b111
16 ms 33 ms 65 ms 130 ms 260 ms 520 ms 1s 2,1 s
Obr´ azek: Struktura Watchdogu. 2466M–AVR–04/06
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Z´ akladn´ı pojmy mikroprocesorov´ e techniky I
Bit – zkratka z ”Binary Digit”, tj. jeden symbol v bin´ arn´ı soustavˇ e: I I I
oznaˇ cen´ı ”b”. Napˇr. 8 b, nastaven´ı bitu (set bit) hodnota bitu = 1 (vysok´ au ´roveˇ n), nulov´ an´ı bitu (clear bit) hodnota bitu = 0 (n´ızk´ au ´roveˇ n).
I
Pamˇ et’ov´ a buˇ nka zaˇr´ızen´ı nebo elektrick´ y obvod pro uchov´ an´ı hodnoty 1 bitu (klopn´ y obvod, stav tranzistoru, jeden ”spot”na CD, magnetick´ y n´ aboj, . . .). Pamˇ et’ov´ e slovo mnoˇzina pamˇ et’ov´ ych bunˇ ek urˇ cit´ e velikosti (registr z osmi klopn´ ych obvod˚ u, . . .); typick´ a velikost od 4 do 64 bit˚ u. Pamˇ et’ souˇ c´ astka, umoˇzn ˇuj´ıc´ı uloˇzen´ı programu nebo dat v bin´ arn´ı podobˇ e. Soubor urˇ cit´ eho poˇ ctu pamˇ et’ov´ ych slov. Registr – skupina pamˇ et’ov´ ych bunˇ ek k uloˇzen´ı bin´ arn´ı informace. Kratˇs´ı pˇr´ıstupov´ a doba neˇz u ostatn´ıch pamˇ et’ov´ ych slov. ˇıˇrka registru – poˇ S´ cet bit˚ u v registru.
I
Registrov´ y p´ ar – dvojice registr˚ u.
I
Pin – vodiˇ c vyveden´ y vnˇ e souˇ c´ astky.
I
Port – skupina pin˚ u (nejˇ castˇ eji 8), umoˇzn ˇuj´ıc´ı vstupnˇ e/v´ ystupn´ı komunikaci mikrokontrol´ eru s okol´ım.
I
Sbˇ ernice – skupina paraleln´ıch vodiˇ c˚ u umoˇzn ˇuj´ıc´ı propojen´ı vstup˚ u a v´ ystup˚ u nˇ ekolika zaˇr´ızen´ı, registr˚ u, apod.
I
I
I
I
Z´ akladn´ı pojmy a terminologie I
Byte [bajt] – slovo o ˇs´ıˇrce 8 bit˚ u; jedno z nejpouˇz´ıvanˇ ejˇs´ıch pamˇ et’ov´ ych slov v mikroprocesorov´ e technice:
I
Nibl [nibl] – slovo o ˇs´ıˇrce 4 bit˚ u; polovina bytu; dˇr´ıve hojnˇ e vyuˇz´ıv´ ano. MSB (Most Significant Bit/Byte) – nejv´ yznamnˇ ejˇs´ı bit/byte. LSB (Least Significant Bit/Byte) – nejm´ enˇ e v´ yznamn´ y bit/byte. Big-endian, Little-endian – poˇrad´ı ukl´ ad´ an´ı byt˚ u do pamˇ eti.
I
I I I
oznaˇ cen´ı ”B”. Napˇr. 16 B,
Obr´ azek: [Wiki]. I
Pamˇ et’ov´ a kapacita – celkov´ y poˇ cet bit˚ u v pamˇ eti, nebo v syst´ emu. Ud´ av´ a se ve tvaru poˇ cet slov × ˇs´ıˇrka slova:
I
Pozn.: Pracujeme ve dvojkov´ e soustavˇ e, proto:
I I I I
napˇr. 8k × 16, 1k × 8, 512 × 8. 1k [kilo] = 210 = 1 024 (pozor: 1k 6= 1 000), 1M [mega] = 220 = 1 048 576, 1G [giga] = 230 = 1 073 741 824.
Z´ akladn´ı pojmy a terminologie
Pˇr´ıklad Co pˇredstavuje z´ apis pamˇ et’ov´ e kapacity 4 096 × 20? ˇ sen´ı Reˇ I
Poˇ cet slov = 4 096 (4k),
I
ˇs´ıˇrka slova, tj. poˇ cet bit˚ u na slovo = 20 b.
Pˇr´ıklad Necht’ je pamˇ et’ov´ a kapacita vyj´ adˇrena hodnotou 2k × 8 (a) Kolik slov obsahuje tato souˇ c´ astka? (b) Jak´ a je ˇs´ıˇrka jednoho slova? (c) Jak´ y je celkov´ y poˇ cet bit˚ u v pamˇ et’ov´ e souˇ c´ astce?
Z´ akladn´ı pojmy a terminologie, pamˇ eti
I
I
I
Adresa – index, kter´ y identifikuje pozici slova v pamˇ eti; kaˇzd´ e slovo m´ a unik´ atn´ı adresu; nejˇ castˇ eji se ud´ av´ a v ˇsestn´ actkov´ e soustavˇ e (prefix 0x nebo $). ˇ ı z pamˇ Cten´ eti (anglicky Fetch) – operace, pˇri kter´ e je bin´ arn´ı slovo (napˇr. slovo 10 na obr´ azku) vyzvednuto z konkr´ etn´ı adresy v pamˇ eti (0x0A) a pˇreneseno na jin´ e m´ısto. Z´ apis do pamˇ eti (anglicky Store) – operace, pˇri kter´ e je nov´ e slovo (napˇr. slovo 1 na obr´ azku) pˇreneseno na konkr´ etn´ı pozici v pamˇ eti (0x01); p˚ uvodn´ı informace je ztracena.
Obr´ azek: Uspoˇr´ ad´ an´ı pamˇ eti.
Uk´ azka adresov´ an´ı pamˇ et’ov´ eho slova
I
I
Uk´ azka adresov´ an´ı 8bitov´ eho slova pomoc´ı 16bitov´ e adresy. MSB tvoˇr´ı vyˇsˇs´ı byte adresy, LSB tvoˇr´ı niˇzˇs´ı byte adresy I I
I
MSB: 0b0010 1010 @ $2A, LSB: 0b0111 0011 @ $73.
Vˇsechna pamˇ et’ov´ a slova jsou stejnˇ e ˇsirok´ a. Adresovan´ a data: I
0b0001 0111 @ $17.
Obr´ azek: Adresov´ an´ı pamˇ et’ov´ eho slova.
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Komunikace mezi zaˇr´ızen´ımi
I
Typick´ a komunikace uvnitˇr mikrokontrol´ eru, ale i mezi mikrokontrol´ erem a zaˇr´ızen´ımi prob´ıh´ a po paraleln´ım veden´ı, tj. po sbˇ ernici (u 8bitov´ ych syst´ em˚ u tvoˇrena zpravidla 8 vodiˇ ci).
I
Vˇsechna zaˇr´ızen´ı obsahuj´ı 8bitov´ y vstupnˇ e/v´ ystupn´ı port, pomoc´ı nˇ ehoˇz jsou pˇripojena na jedinou skupinu vodiˇ c˚ u sbˇ ernici. Nejedn´ a se tedy o spojen´ı point-point.
I
Aby byly eliminov´ any kolize na sbˇ ernici, kdy nˇ ekolik zaˇr´ızen´ı vys´ıl´ a souˇ casnˇ e– stav na sbˇ ernici je d´ an kombinac´ı v´ıce sign´ al˚ u; data jsou ”neˇ citeln´ a”– se pouˇz´ıvaj´ı syst´ emy s tˇr´ı-stavov´ ymi v´ ystupy (Three State), pˇr´ıp. oddˇ elovac´ı bufery s tˇr´ıstavov´ ym v´ ystupem.
I
Tˇr´ı-stavov´ y v´ ystup je ˇr´ızen povolovac´ım vstupem (Enable), kter´ y zajist´ı aktivaci vˇzdy jen jednoho zaˇr´ızen´ı, v´ ystupy ostatn´ıch jsou ve stavu vysok´ e impedance.
Tˇr´ı-stavov´ y v´ ystup
I
I
ˇ ızen´ı V´ ystupy obsahuj´ı kromˇ e stavu HIGH a LOW tak´ e stav vysok´ e impedance. R´ reˇzimu pomoc´ı ˇr´ıdic´ıho sign´ alu ENABLE (E ). Uk´ azka: Symbolick´ a znaˇ cka ˇ c´ asti tˇr´ı-stavov´ eho buferu 74HC125 (Philips): I I I I
pouzdro obsahuje celkem 4 takov´ e buˇ nky, troj´ uheln´ıˇ cek znamen´ a tˇr´ı-stavov´ y v´ ystup, ´roveˇ n je n´ızk´ a, mal´ e koleˇ cko u ˇr´ıdic´ıho vstupu E informuje, ˇze aktivn´ı u nˇ ekter´ e 3stavov´ e buffery maj´ı aktivn´ı u ´roveˇ n vysokou (74HC126), pˇr´ıp. invertuj´ı v´ ystupn´ı hodnotu.
Obr´ azek: Symbolick´ a znaˇ cka tˇr´ı-stavov´ eho bufferu 74HC125.
Tˇr´ı-stavov´ y v´ ystup, pokraˇ cov´ an´ı
I
Popis ˇ cinnosti: I I
I
E =1; v´ ystup ve stavu vysok´ e impedance – v´ ystup se chov´ a jakoby fyzicky odpojen´ y od sbˇ ernice, E =0; buffer pracuje v norm´ aln´ım reˇzimu, tj. v´ ystup X je napˇ et’ov´ y ekvivalent vstupu A.
Tˇr´ı-stavov´ e obvody jsou obsaˇzeny v klopn´ ych obvodech, registrech, pamˇ et’ov´ ych souˇ c´ astk´ ach, a t´ emˇ eˇr ve vˇsech mikrokontrol´ erech.
Tˇr´ı-stavov´ y v´ ystup, dokonˇ cen´ı I
Tˇr´ı-stavov´ e buffery se bˇ eˇznˇ e pouˇz´ıvaj´ı k pˇripojen´ı nˇ ekolika zaˇr´ızen´ı/sign´ al˚ u ke sbˇ ernici. A EA
74HC125
sbìrnice
B EB C EC
Obr´ azek: Tˇri odliˇsn´ e buffery pro sign´ aly A, B a C.
I
ˇ ıdic´ı V pˇr´ıpadˇ e vys´ıl´ an´ı v´ıce zaˇr´ızen´ı, dojde ke kolizi na sbˇ ernici (neˇz´ adouc´ı). R´ sign´ aly EN mus´ı zajistit, aby ke sbˇ ernici bylo pˇripojeno jen jedno zaˇr´ızen´ı.
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Paraleln´ı pˇrenos dat mezi registry
I
I
Registry hraj´ı v´ yznamnou u ´lohu v mikroprocesorov´ e technice. Ze softwarov´ eho pohledu je mikrokontrol´ er syst´ emem registr˚ u, mezi kter´ ymi je bin´ arn´ı informace pˇresunov´ ana a zpracov´ av´ ana. Existuj´ı dva zp˚ usoby pˇresunu dat mezi registry: I
paraleln´ı, s´ eriov´ y.
Obr´ azek: Paraleln´ı pˇrenos dat.
I
Uk´ azka: Dvojice 3bitov´ ych registr˚ u X a Y, kter´ e jsou tvoˇreny klopn´ ymi obvody typu D, ˇr´ızen´ ych hranou.
I
Pˇresun dat je ˇr´ızen hodinov´ ym sign´ alem CLK.
Paraleln´ı a s´ eriov´ y pˇrenos dat mezi registry
I
Symbolick´ y z´ apis pˇrenosu dat: [X]→[Y] (pˇresun obsahu registru X do registru Y).
I
Hodinov´ y pulz aplikov´ an na vstupy CLK zp˚ usob´ı pˇresun dat z v´ ystup˚ u X2 , X1 , X0 (vstupy DY ) na v´ ystupy Y2 , Y1 , Y0 .
I
Jedn´ a se o paraleln´ı pˇresun, protoˇze cel´ y obsah registru X se pˇrekop´ıruje do Y najednou (pomoc´ı jedn´ e hrany ˇr´ıdic´ıho sign´ alu).
I
Uk´ azka: S´ eriov´ y pˇrenos dat prostˇrednictv´ım 3bitov´ eho posuvn´ eho registru (klopn´ e obvody typu JK, ˇr´ızen´ e hranou).
Obr´ azek: Posuvn´ y (shift) registr.
S´ eriov´ y pˇrenos dat mezi registry
Obr´ azek: S´ eriov´ y pˇrenos dat.
I
Pˇri aktivn´ı hranˇ e sign´ alu CLK jsou hodnoty vstupn´ıch sign´ al˚ u klopn´ ych obvod˚ u pˇrekop´ırov´ any na v´ ystupy (tj. na vstupy obvod˚ u vpravo).
I
Data z v´ ystupu posledn´ıho KO jsou ztracena. S´ eriov´ y pˇrenos vyˇzaduje v´ıce ˇ casu (jeden bit vyˇzaduje jeden pulz), ale m´ enˇ e vodiˇ c˚ u.
S´ eriov´ y pˇrenos dat mezi registry, pˇr´ıklad
Pˇr´ıklad Pˇrenos dat [X]→[Y]; necht’ [X]=101, [Y]=011 a S = 0 ˇ sen´ı Reˇ 1. pulz: [X]=010, [Y]=101 2. pulz: [X]=001, [Y]=010 3. pulz: [X]=000, [Y]=101 Tabulka: Postupn´ e posouv´ an´ı dat.
S
X2
X1
X0
Y2
Y1
Y0
0 0 0 0
1 0 0 0
0 1 0 0
1 0 1 0
0 1 0 1
1 0 1 0
1 1 0 1
pˇred po po po
1. 1. 2. 3.
pulzem pulzu pulzu pulzu
Komunikace mezi zaˇr´ızen´ımi
Pˇr´ıklad Jak´ ym zp˚ usobem zajistit bezpeˇ cn´ y pˇrenos dat ze zaˇr´ızen´ı ˇ c. 2 do ˇr´ıdic´ı jednotky? (Necht’ ˇr´ıdic´ı jednotka v tomto pˇr´ıpadˇ e shromaˇzd’uje informace od jednotliv´ ych zaˇr´ızen´ı). Pˇr´ıklad Jak´ e napˇ et’ov´ eu ´rovnˇ e budou na datov´ e sbˇ ernici v pˇr´ıpadˇ e, ˇze vˇsechna zaˇr´ızen´ı budou ve stavu vysok´ e impedance? Obr´ azek: Komunikace po sbˇ ernici.
Pˇr´ıklad pˇrenosu dat po sbˇ ernici
I
I
Pˇr´ıklad zapojen´ı tˇr´ı 4bitov´ ych registr˚ u 74173 (4bitov´ y 3stavov´ y klopn´ y obvod typu D) na 4bitovou sbˇ ernici, tvoˇrenou vodiˇ ci DB3 –DB0 . Registry obsahuj´ı tˇri ˇr´ıdic´ı sign´ aly: I I I
IE (Input Enable) – n´ızk´ au ´roveˇ n aktivuje vstupn´ı obvody, OE (Output Enable) – n´ızk´ au ´roveˇ n aktivuje v´ ystupn´ı obvody, CLK – hodinov´ y sign´ al.
Pˇr´ıklad Zajistˇ ete pˇrenos dat z registru B do registru A, [B]→[A]. Necht’ [B] = 1100.
Obr´ azek: 4bitov´ e registry 74173.
Pˇr´ıklad pˇrenosu dat po sbˇ ernici, ˇreˇsen´ı
ˇ sen´ı Reˇ I
V´ ystupy: I I
pouze registr B mus´ı m´ıt aktivn´ı v´ ystupn´ı obvody, tj. OE A =1, OE C =1, OE B =0, obsah registru B je t´ım zaps´ an na datovou sbˇ ernici.
I
Vstupy:
I
N´ asleduj´ıc´ı aktivn´ı hrana hodinov´ eho sign´ alu zajist´ı pˇrenos (pˇreˇ cten´ı) dat ze sbˇ ernice do klopn´ ych obvod˚ u registru A.
I
Pˇrenos dat je tedy zajiˇstˇ en generov´ an´ım korektn´ı posloupnost´ı ˇr´ıdic´ıch sign´ al˚ u– zajiˇst’uje ˇr´ıdic´ı jednotka.
I
pouze registr A mus´ı m´ıt aktivn´ı vstupn´ı obvody, tj. IE A =0, IE B =1, IE C =1.
Pˇr´ıklad pˇrenosu dat po sbˇ ernici, ˇreˇsen´ı
OE B IE A
ˇ sen´ı Reˇ I
Platn´ a data jsou v registru A pˇreneseny vˇ casov´ em intervalu t1 − t2 .
CLK 1
DB3 1
DB2
Pˇr´ıklad Proˇ c je aktivn´ı u ´roveˇ n ˇr´ıdic´ıch sign´ al˚ u v n´ızk´ e u ´rovni?
0
DB1 0
DB0 t0
t1
t2
t3
ˇ Obr´ azek: Casov´ e pr˚ ubˇ ehy na ˇr´ıdic´ı a datov´ e sbˇ ernici.
Rozˇs´ıˇren´ı sbˇ ernice
I
Bˇ eˇznˇ e se pouˇz´ıv´ a vˇ etˇs´ı poˇ cet registr˚ u neˇz 3. Obecnˇ e lze na sbˇ ernici pˇripojit libovoln´ y poˇ cet registr˚ u. Zvyˇsuje se t´ım ale poˇ cet ˇr´ıdic´ıch sign´ al˚ u OE , IE a vstupnˇ e/v´ ystupn´ıch vodiˇ c˚ u.
I
Obdobnˇ e jako u 4bitov´ e sbˇ ernice funguj´ı sbˇ ernice 8bitov´ e, 16bitov´ e, nebo 32bitov´ e. Zobecnˇ en´ y princip:
I
I I I I
I
I
jeden registr (pamˇ et’ov´ a buˇ nka, zaˇr´ızen´ı) m´ a aktivovan´ e v´ ystupn´ı obvody a zapisuje data na sbˇ ernici, jin´ e zaˇr´ızen´ı m´ a aktivovan´ e vstupn´ı obvody, ˇ c´ımˇz m˚ uˇze data ze sbˇ ernice ˇ c´ıst, pˇri aktivn´ı hranˇ e hodinov´ eho sign´ alu dojde k z´ apisu dat do registru – synchronn´ı ˇr´ızen´ı.
ˇıˇrka sbˇ S´ ernice (poˇ cet vodiˇ c˚ u) je d´ ana ˇs´ıˇrkou datov´ eho slova, pˇren´ aˇsen´ eho v syst´ emu. 8bitov´ e slovo ⇒ 8 vodiˇ c˚ u, 16bitov´ e slovo ⇒ 16 vodiˇ c˚ u, . . . Nˇ ekter´ e syst´ emy obsahuj´ı kombinac´ı nˇ ekolika r˚ uznˇ e-ˇsirok´ ych sbˇ ernic. Poˇ cet zaˇr´ızen´ı, pˇripojen´ ych na sbˇ ernici je rozd´ıln´ y pˇr´ıpad od pˇr´ıpadu. Z´ avis´ı na velikosti pamˇ eti syst´ emu a na poˇ ctu vstupn´ıch a v´ ystupn´ıch zaˇr´ızen´ıch, kter´ e mus´ı s CPU komunikovat po sbˇ ernici. Vˇsechna zaˇr´ızen´ı mus´ı b´ yt pˇripojena pˇres 3stavov´ e buffery: I I
nˇ ekter´ a zaˇr´ızen´ı tyto buffery jiˇz obsahuj´ı pˇr´ımo na ˇ cipu, napˇr. registry 74173 (viz v´ yˇse), ostatn´ı zaˇr´ızen´ı mus´ı b´ yt ke sbˇ ernici pˇripojeny pˇres tzv. ˇradiˇ c sbˇ ernice (Bus Driver).
ˇ c sbˇ Radiˇ ernice/Bus Driver
I
ˇ c sbˇ Radiˇ ernice obsahuje 3stavov´ y v´ ystup s velmi n´ızkou v´ ystupn´ı impedanc´ı, coˇz zp˚ usobuje rychl´ e nab´ıjen´ı a vyb´ıjen´ı celkov´ e kapacitn´ı reaktance (odpor) sbˇ ernice ˇ c sbˇ ⇒ kr´ atk´ e doby pˇrechodu. (Radiˇ ernice tedy nezhorˇsuje doby pˇrechodu.)
I
Kapacitn´ı odpor je tvoˇren kumulac´ı parazitn´ıch kapacitanc´ı vˇsech vstup˚ u a v´ ystup˚ u, pˇripojen´ ych ke sbˇ ernici a m˚ uˇze zhorˇsit doby pˇrechodu.
I
Pˇr´ıklad ˇradiˇ ce sbˇ ernice – 8bitov´ y 74HC541.
Vyuˇ zit´ı ˇradiˇ ce sbˇ ernice
I
Pˇripojen´ı v´ ystupu 8bitov´ eho A/D pˇrevodn´ıku k datov´ e sbˇ ernici pomoc´ı 74HC541.
Tabulka: Funkˇ cn´ı tabulka.
OE 1
OE 0
An
Yn
0 0 1 X
0 0 X 1
0 1 X X
0 1 Z Z
ˇ c sbˇ Obr´ azek: Radiˇ ernice
Zjednoduˇsen´ a reprezentace ˇ casov´ ych pr˚ ubˇ eh˚ u
I
ˇ Casov´ e pr˚ ubˇ ehy jednotliv´ ych sign´ al˚ u na sbˇ ernici lze z d˚ uvodu pˇrehlednosti z´ apisu sdruˇzit do jedin´ eho pr˚ ubˇ ehu – v´ yhodn´ e u syst´ em˚ u s 8, 16, nebo s 32 vodiˇ ci.
OE B I
Uk´ azka: Pˇrenos dat ze zaˇr´ızen´ı B do A, viz pˇredeˇsl´ y pˇr´ıpad [B]=1100: I
IE A
OE B = 0; IE A = 0, ostatn´ı ˇr´ıdic´ı vstupy/v´ ystupy nejsou zakresleny.
CLK
I
Platn´ a data na sbˇ ernici v dobˇ e trv´ an´ı aktivn´ı u ´rovnˇ e hodinov´ eho impulsu (interval t2 − t1 ).
DB3:0
I
Neplatn´ a data v intervalech t1 − t0 a t3 − t2 .
I
0b1100
t0
t1
t2 t3
Obr´ azek: Zjednoduˇsen´ eˇ casov´ e pr˚ ubˇ ehy na datov´ e sbˇ ernici.
Zjednoduˇsen´ a reprezentace sbˇ ernic
I
Z d˚ uvodu pˇripojen´ı velk´ eho mnoˇzstv´ı zaˇr´ızen´ı ke sbˇ ernici se pouˇz´ıv´ a zjednoduˇsen´ e zn´ azornˇ en´ı vodiˇ c˚ u ve sch´ ematech: I I
pomoc´ı ˇsirok´ ych ˇsipek; ˇ c´ıslo v [·] zn´ azorˇ nuje ˇs´ıˇrku registr˚ u/poˇ cet pˇripojen´ ych vodiˇ c˚ u, pomoc´ı jedin´ eho vodiˇ ce (fyzicky nespojeno) s indikovanou ˇs´ıˇrkou (poˇ ctem bit˚ u) \4.
Obr´ azek: 4bitov´ y registr 74173 a MCU ATtiny11.
Obr´ azek: Zjednoduˇsen´ e zn´ azornˇ en´ı sbˇ ernice.
Obousmˇ ern´ a sbˇ ernice
I
Uvaˇzovan´ y obvod (registr 74173) m´ a vstupy i v´ ystupy napojen´ e na shodn´ y vodiˇ c datov´ e sbˇ ernice, napˇr. vstupn´ı sign´ al DC 0 je propojen s v´ ystupem OC 0 pˇres vodiˇ c DB0 (neplat´ı pˇri pouˇzit´ı ˇradiˇ ce sbˇ ernice): I I
DC 0 – vstup ˇ c. nula registru C, OC 0 – v´ ystup ˇ c. nula registru C.
I
Z d˚ uvodu sn´ıˇzen´ı poˇ ctu pin˚ u, bylo vyvinuto uspoˇr´ ad´ an´ı s propojen´ım vstup˚ u a v´ ystup˚ u uvnitˇr integrovan´ ych obvod˚ u.
I
Kaˇzd´ y pin (I0 /O0 aˇz In /On ) m˚ uˇze pracovat jako vstupn´ı nebo v´ ystupn´ı v z´ avislosti na ˇr´ıdic´ıch sign´ alech. Proto jsou piny I/O naz´ yv´ any jako obousmˇ ern´ e datov´ e linky. Mnoho pamˇ et’ov´ ych obvod˚ u a mikroprocesor˚ u samozˇrejmˇ e umoˇzn ˇuje obousmˇ ern´ y pˇrenos.
I
Obousmˇ ern´ a sbˇ ernice
Obr´ azek: Propojen´ı I/O pin˚ u uvnitˇr obvodu.
Adresn´ı, datov´ a, ˇr´ıdic´ı sbˇ ernice
I
I
Datov´ a sbˇ ernice: obousmˇ ern´ a 8bitov´ a sbˇ ernice (u 8bitov´ ych syst´ em˚ u) pro pˇrenos dat do/z pamˇ eti. I
I
mikrokontrol´ ery AVR obsahuj´ı 16bitovou adresn´ı sbˇ ernici, tj. mohou adresovat 216 = 65 536 pozic v pamˇ eti nebo ve vstupnˇ e/v´ ystupn´ım zaˇr´ızen´ı, ˇ cten´ı/z´ apis z/do pamˇ eti mus´ı b´ yt doprov´ azen pˇr´ısluˇsn´ ym ˇr´ıdic´ım sign´ alem.
Datov´ a sbˇ ernice nemus´ı obsahovat jen ”data”, ale tak´ e instrukce, kter´ e maj´ı b´ yt vykon´ any.
ˇ ıdic´ı sbˇ R´ ernice je skupina vˇsech ˇ casovac´ıch a ˇr´ıdic´ıch sign´ al˚ u, nutn´ ych pro korektn´ı synchronizaci operac´ı mikroprocesoru s ostatn´ımi souˇ c´ astmi syst´ emu. I
I
I
Nˇ ekter´ e ˇr´ıdic´ı sign´ aly jsou v´ ystupem mikroprocesoru a nˇ ekter´ e jsou vstupy od I/O zaˇr´ızen´ı. Poˇ cet a typ sign´ al˚ u se liˇs´ı, Mezi z´ akladn´ı sign´ aly patˇr´ı READ/WRITE, generovan´ y mikroprocesorem a obsahuj´ı ho vˇsechny mikroprocesory (pˇr´ıp. jeho ekvivalent), Sign´ al Enable.
datov´ a pamˇet’
program. ˇc´ıtaˇc
kontroln´ı registry
ukazatel na z´ asobn´ık
R0
instrukˇcn´ı registr instrukˇcn´ı dekod´er
R1
adresn´ı sbˇernice, 16 bit˚ u
I
program. pamˇet’
ˇr´ıdic´ı sign´ aly
I
V mikroprocesorov´ ych syst´ emech se obecnˇ e vyskytuj´ı tˇri typy sbˇ ernic. Adresn´ı sbˇ ernice: pˇren´ aˇs´ı n-bitovou adresu z mikroprocesoru do pamˇ eti:
datov´ a sbˇernice, 8 bit˚ u
I
R31
ALU
stavov´y registr
Obr´ azek: Zjednoduˇsen´ e blokov´ e sch´ ema MCU typu AVR.
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Pomocn´ e obvody ˇr´ıdic´ı aplikace
I
I
Nen´ı vˇzdy nutn´ e vyuˇz´ıvat v´ ykonn´ e mikrokontrol´ ery. U jednoduch´ ych aplikac´ı postaˇ c´ı napˇr. ATtiny12 (pouzdro PDIP8). Jednoduch´ e ˇr´ıdic´ı aplikace s mikrokontrol´ ery vyˇzaduj´ı (po hardwarov´ e str´ ance): I I I
zdroj nap´ ajen´ı, zdroj hodinov´ eho sign´ alu, resetovac´ı obvod.
Obr´ azek: Blokov´ e zapojen´ı ˇr´ıdic´ı aplikace.
Pomocn´ e obvody ˇr´ıdic´ı aplikace, pokraˇ cov´ an´ı
I
Typ nap´ ajen´ı z´ avis´ı na mobiln´ı/desktopov´ e aplikaci: I
I
I
nap´ ajen´ı z bateri´ı, z rozvodn´ e s´ıtˇ e s transformac´ı, z datov´ ych port˚ u PC (RS-232, USB), pomoc´ı sol´ arn´ıch panel˚ u, . . .,
hodinov´ y sign´ al procesoru ˇr´ıd´ı ˇ casov´ an´ı AVR j´ adra. Od nˇ eho jsou odvozeny ˇ casovac´ı sign´ aly pro vˇsechny perif´ erie (Flash, A/D pˇrevodn´ık, I/O modul, ˇ c´ıtaˇ c, . . .), obecn´ e moˇznosti generov´ an´ı hodinov´ eho sign´ alu: I I I
extern´ı zdroj hodinov´ eho sign´ alu na vstupn´ım pinu XTAL1, vnˇ ejˇs´ı RC oscil´ ator: RC oscil´ ator zp˚ usobuje n´ızkou ˇ casovou pˇresnost, intern´ı RC oscil´ ator: n´ızk´ aˇ casov´ a pˇresnost; bˇ eˇzn´ e hodnoty jsou 1, 2, 4 a 8 MHz, z´ avislost pˇresnosti oscilac´ı na napˇ et´ı, nejsou potˇreba ˇz´ adn´ e extern´ı souˇ c´ astky.
Pomocn´ e obvody ˇr´ıdic´ı aplikace, dokonˇ cen´ı
I
Moˇznosti generov´ an´ı hodinov´ eho sign´ alu, pokraˇ cov´ an´ı: I
intern´ı hodinov´ y gener´ ator s extern´ım krystalem: nejrozˇs´ıˇrenˇ ejˇs´ı varianta; vstupy XTAL1 a XTAL2 pˇredstavuj´ı vstup a v´ ystup invertuj´ıc´ıho zesilovaˇ ce oscil´ atoru; vyˇzaduje jen dva kondenz´ atory (typick´ e hodnoty od 12 pF do 22 pF).
Obr´ azek: Extern´ı krystal.
Pozn.: Zdroj hodinov´ eho sign´ alu je vybr´ an na z´ akladˇ e tzv. programovateln´ e propojky (viz d´ ale). Propojky je moˇzn´ e pˇreprogramovat. ATmega16 je dod´ av´ an s pˇrednastaven´ ym intern´ım RC oscil´ atorem o frekvenci 1 MHz.
Sniˇ zov´ an´ı spotˇreby
I
Vhodnou zmˇ enou softwaru lze sn´ıˇzit proudov´ y odbˇ er; vyˇsˇs´ı ˇzivotnost bateri´ı.
Obr´ azek: Testovac´ı aplikace s ATmega88PA [AVR4013].
I
Viz napˇr. Application Note AVR4013: picoPower Basics: I I I I I
jeden A/D pˇrevod, simulace 1000 f´ az´ı “zpracov´ an´ı sign´ alu”, pˇrevod hodnoty na ASCII ˇretˇ ezec, vysl´ an´ı dat pˇres UART, a znovu . . .
Sniˇ zov´ an´ı spotˇreby
Tabulka: Doba trv´ an´ı testovac´ı aplikace.
Metody redukce spotˇreby ˇ adn´ Z´ a Oˇsetˇren´ı nepouˇzit´ ych pin˚ u a intern´ıch perif´ eri´ı Pˇreddˇ eliˇ cka hodinov´ eho sign´ alu Reˇzimy sn´ıˇzen´ e spotˇreby Redukce doby v aktivn´ım m´ odu
ˇ Zivotnost baterie 6s 9s 40 s 198 s 217 s
(1) fCPU = 8 MHz, UART 19 200 Bd, polling (opakovan´ e dotazov´ an´ı) ˇ casovaˇ ce 2, zda uplynula 1 s. (2) Pouˇzit´ı pull-up rez. u nevyuˇzit´ ych pin˚ u – nepˇrekl´ ap´ı se; odpojen´ı nap´ ajen´ı od nevyuˇz´ıvan´ ych perif´ eri´ı (SPI, TWI, Timer0, Timer1). (3) Sn´ıˇzen´ı frekvence fCPU = 2 MHz, UART 19 200 Bd. (4) Bˇ ehem ˇ cek´ an´ı na dalˇs´ı zpracov´ an´ı → sleep m´ od (idle, sleep, power save). (5) Softwarov´ e kalibrov´ an´ı oscil´ atoru pro zv´ yˇsen´ı pˇrenosov´ e rychlosti 115,5 kbps; pˇreddˇ eliˇ cka CPU z˚ ust´ av´ a.
Sniˇ zov´ an´ı spotˇreby – uk´ azka nˇ ekter´ ych funkc´ı avr-libc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#i n c l u d e
#i n c l u d e #i n c l u d e ... power_timer0_disable ( ) ; power_timer1_disable ( ) ; p o w e r _ adc _di sab le ( ) ; p o w e r _usi_enable ( ) ;
// h e a d e r f i l e f o r ATtiny44A m i c r o c o n t r o l l e r // s l e e p e n a b l e ( ) , s l e e p d i s a b l e ( ) , s l e e p c p u ( ) // s e e g o o g l e : `` a v r l i b c power ' ' // // // //
turn turn turn turn
off off off on
timer / counter0 timer / counter1 ADC usi ( Universal Serial
Interface )
// p r e s c a l e s y s t e m c l o c k from 8 MHz t o 500 kHz c l o c k _ pr e sc a le _s e t ( clock_div_16 ) ; // s e t s l e e p mode t o Power−s a v e set_ sleep_mode ( S L E E P_ M O D E _ P W R _S A V E ) ; // e n a b l e s l e e p ( p o s s i b l e t o p u t t h e d e v i c e i n t o s l e e p mode when e x e c u t i n g ←the s l e e p i n s t r u c t i o n ) sleep_enable ( ) ; s l e e p _bo d_d isab le ( ) ; sleep_cpu ( ) ;
// d i s a b l e BOD w h i l e i n s l e e p mode // e x e c u t e s l e e p i n s t r u c t i o n
Reset syst´ emu
I
I
Pˇreruˇsen´ı reset m´ a nejvyˇsˇs´ı prioritu m˚ uˇze pˇreruˇsit jiˇz bˇ eˇz´ıc´ı obsluhy vˇsech pˇreruˇsen´ı, nebo vykon´ avaj´ıc´ı program. Ud´ alosti vyvol´ avaj´ıc´ı reset syst´ emu: I I I I I
I
u ´roveˇ n na resetovac´ım pinu mikrokontrol´ eru je niˇzˇs´ı neˇz pr´ ah VPOT (Power-on reset threshold), extern´ı reset: pˇr´ıtomnost n´ızk´ eu ´rovnˇ e na vstupu Reset pˇreteˇ cen´ı ochrann´ eho ˇ casovaˇ ce watchdog (mus´ı b´ yt povoleno), nap´ ajec´ı napˇ et´ı m´ a niˇzˇs´ı u ´roveˇ n neˇz pr´ ah VBOT (Brown-out reset threshold) (mus´ı b´ yt povoleno), reset pomoc´ı JTAG rozhran´ı.
Reset zp˚ usob´ı opˇ etovn´ y v´ ykon programu od adresy 0x0000 (reset vektor) a slouˇz´ı k nastaven´ı mikrokontrol´ eru do definovan´ eho (zn´ am´ eho) stavu, tj.: I I I
vˇsechny perif´ erie (vˇ cetnˇ e watchdogu) jsou odpojeny, vˇsechny paraleln´ı I/O porty jsou nastaveny jako vstupn´ı, vˇsechna pˇreruˇsen´ı jsou vypnuta.
Generov´ an´ı extern´ıho resetu
I
Procesory maj´ı kromˇ e vnitˇrn´ıho resetovac´ıho obvodu, kter´ y je z´ avisl´ y na nap´ ajec´ım napˇ et´ı, tak´ e extern´ı resetovac´ı obvod: I I
I
Obr´ azek: Tlaˇ c´ıtko.
pomoc´ı tlaˇ c´ıtka, pomoc´ı gener´ ator˚ u resetovac´ıho sign´ alu, kdy je nap´ ajec´ı napˇ et´ı monitorov´ ano a pˇri jeho poklesu je generov´ an reset impulz. Napˇr.: FM1233A (Fairchild Semiconductor), ADM709 (Analog Devices), . . ., oˇsetˇren´ı stisku je hardwarovˇ e realizov´ ano uvnitˇr mikrokontrol´ eru, nebo unvitˇr extern´ıho gener´ atoru.
Obr´ azek: Extern´ı gener´ ator reset.
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
Programovateln´ e propojky I
Programovateln´ e propojky (anglicky: Fuse bits) upˇresˇ nuj´ı pouˇzit´ı nˇ ekter´ ych periferi´ı. ATmega16 obsahuje dva byty tˇ echto propojek: I
I
povolen´ı/zak´ az´ an´ı ladˇ en´ı na ˇ cipu, pouˇzit´ı rozhran´ı JTAG (programov´ an´ı + ladˇ en´ı aplikac´ı), pouˇzit´ı s´ eriov´ eho programov´ an´ı, urˇ cen´ı velikosti bootovac´ı sekce ve Flash, volba start-up prodlevy, volba hodinov´ eho zdroje, . . .
Fuse
Popis funkce
OCDEN JTAGEN SPIEN CKOPT EESAVE BOOTSZ1:0 BOOTRST
Povolen´ı ladˇ en´ı pˇr´ımo na ˇ cipu. Povolen´ı JTAG rozhran´ı. Povolen´ı s´ eriov´ eho programov´ an´ı ISP. Clock options. Moˇznost uchov´ an´ı EEPROM dat i po smaz´ an´ı ˇ cipu. Velikost bootovac´ı sekce ve Flash (128 aˇz 1 024 slov). Vektory pˇreruˇsen´ı do bootovac´ı sekce.
BODLEVEL BODEN SUT1:0 CKSEL3:0
V´ ybˇ er u ´rovnˇ e detekce v´ ypadku nap´ ajen´ı (brown-out). Povolen´ı detekce v´ ypadku nap´ ajen´ı. V´ ybˇ er start-up prodlevy (0; 4,1 ms, 65 ms). V´ ybˇ er zdroje hodinov´ eho sign´ alu.
Pozn.: AVR Fuse Calculator (http://www.engbedded.com/fusecalc/).
Um´ıstˇ en´ı JTAG (Joint Test Action Group)
Obr´ azek: Pouzdro mikrokontrol´ eru ATmega16 – um´ıstˇ en´ı perif´ erie JTAG.
Bootovac´ı ˇ c´ ast pamˇ eti Flash
I
Programov´ a pamˇ et’ Flash je rozdˇ elena na dvˇ eˇ c´ asti: I I
aplikaˇ cn´ı ˇ c´ ast (anglicky: Application section): k uloˇzen´ı aplikace, kter´ a se m´ a vykon´ avat, bootovac´ı ˇ c´ ast (anglicky: Boot loader section): zde m˚ uˇze b´ yt uloˇzen program, kter´ y umoˇzn ˇuje pˇreprogramov´ an´ı aplikaˇ cn´ı (i bootovac´ı) ˇ c´ asti Flash.
I
Bootloader umoˇzn ˇuje komunikovat s ”okoln´ım svˇ etem”pomoc´ı dostupn´ ych protokol˚ u (UART, SPI, I2C, . . .) a tak´ e umoˇzn ˇuje mˇ enit obsah aplikaˇ cn´ı ˇ c´ asti programov´ e pamˇ eti.
I
Vyuˇzit´ı: program´ ator (propojen´ı PC softwaru a prog. pamˇ eti MCU) – aktualizace firmwaru elektronick´ ych zaˇr´ızen´ı.
I
Velikost bootovac´ı ˇ c´ asti je nastaviteln´ a pomoc´ı propojky BOOTSZ1:0 na hodnoty 128, 256, 512 nebo 1 024 pamˇ et’ov´ ych slov.
I
Je moˇznost pˇresunout vektory pˇreruˇsen´ı do bootovac´ı ˇ c´ asti.
Obsah pˇredn´ aˇsky
Watchdog ˇ casovaˇ c Z´ akladn´ı pojmy a terminologie z mikroprocesorov´ e techniky Obvody s tˇr´ı-stavov´ ym v´ ystupem Komunikace po sbˇ ernici Funkce, struktura a proveden´ı pomocn´ ych obvod˚ u Nap´ ajen´ı, hodinov´ y sign´ al, obvod reset Programovateln´ e propojky (Fuse) Uk´ azka programu v JSA a v jazyce C pro ATmega16 ˇ Casovaˇ c watchdog
ˇ Casovaˇ c watchdog v JSA
I
Intern´ı (”hl´ıdac´ı”) ˇ casovaˇ c watchdog je nutn´ e opakovanˇ e nulovat – typicky v nekoneˇ cn´ e smyˇ cce. Pˇri pˇreteˇ cen´ı zp˚ usob´ı reset syst´ emu.
I
Pˇreteˇ cen´ı m˚ uˇze b´ yt zp˚ usobeno pomalou obsluhou pˇreruˇsen´ı/podprogram˚ u, nebo zacyklen´ım vnˇ e nekoneˇ cn´ e smyˇ cky. Ovl´ ad´ an´ı prostˇrednictv´ım WDTCR (Watchdog Timer Control Register):
I
I
I I
Nulov´ an´ı pomoc´ı instrukce WDR – Watchdog Reset.
WDE – Watchdog Enable, WDP – Watchdog Timer Prescaler. 7
6
5
4
−
−
−
WDTOE
3
2
1
0
WDE WDP2 WDP1 WDP0
WDTCR
Obr´ azek: Struktura kontroln´ıho registru WDTCR (Watchdog Timer Control Register).
ˇ Casovaˇ c watchdog v JSA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
. include <m16def . inc> . cseg . org 0 x0000 RJMP reset . org 0 x0002 RJMP tlacitko
; ; ; ; ; ;
popisn´ y s o u b o r ATmega16 pamˇ e t’ ov´ y se gme nt F l a s h u l o ˇz od a d r e s y 0 x0000 s k oˇ c na n ´ avˇ e ˇs t´ı r e s e t v e k t o r pˇr e r u ˇs e n´ı INT0 s k oˇ c na n ´ avˇ e ˇs t´ı t l a c i t k o
. org 0 x002A ; u l o ˇz od a d r e s y 0 x002A reset : ... ; d e f i n i c e z´ a s o b n´ık u ... ; naplnˇ e n´ı p o u ˇz i t ´ y c h I /O r e g i s t r ˚ u LDI R16 , (1<<WDE ) | (1<<WDP2 ) | (1<<WDP1 ) | (1<<WDP0 ) OUT WDTCR , R16 ; p o v o l e n´ı watchdogu s pˇr e d d ˇ eliˇ c k o u @ 2 ,1 s SEI ; glob´ a l n´ı p o v o l e n´ı pˇr e r u ˇs e n´ı loop : WDR RJMP loop
; n e k o n eˇ cn´ a smyˇ c ka ; nulov´ a n´ı watchdogu ; s k o k na n ´ avˇ e ˇs t´ı l o o p
tlacitko : ... RJMP tlacitko RETI
; o b s l u h a pˇr e r u ˇs e n´ı INT0 ´ z a c y k l e n´ı ; CHYBNE ; ukonˇ c e n´ı o b s l u h y pˇr e r u ˇs e n´ı
ˇ Casovaˇ c watchdog v jazyce C
I
Vloˇzen´ı instrukce AVR do zdrojov´ eho k´ odu v jazyce C bez nutnosti pˇred´ av´ an´ı parametr˚ u: I I I
funkce asm() ; parametrem je ˇretˇ ezec obsahuj´ıc´ı posloupnost instrukc´ı, kter´ e se maj´ı pˇr´ımo vloˇzit do pˇrekompilovan´ e aplikace, jednotliv´ e instrukce lze oddˇ elovat \n: Napˇr.: asm( "WDR\nDEC R16") ;
ˇ Casovaˇ c watchdog v jazyce C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#i n c l u d e #i n c l u d e
// h l a v i ˇ ckov´ y s o u b o r p r o MCU // h l a v i ˇ ckov´ y s o u b o r p r o pˇr e r u ˇs e n´ı
ISR ( INT0_vect ) { ... while ( 1 ) ; }
// o b s l u h a e x t e r n´ıh o pˇr e r u ˇs e n i INT0 // k´ o d o b s l u h y pˇr e r u ˇs e n´ı ´ z a c y k l e n´ı // CHYBNE
i n t main ( v o i d ) { ...
// k´ o d h l a v n´ı f u n k c e
// p o v o l e n´ı watchdogu s pˇr e d d ˇ eliˇ c k o u @ 2 ,1 s WDTCR |= (1<<WDE ) | (1<<WDP2 ) | (1<<WDP1 ) | (1<<WDP0 ) ; sei ( ) ; while ( 1 ){ asm ( ”WDR” ) ; } return ( 1 ) ; }
// p o v o l e n´ı g l o b ´ a l n´ı h o pˇr e r u ˇs e n´ı // n e k o n eˇ cn´ a smyˇ c ka // n u l o v ´ a n´ı watchdogu // v ´ y s t u p n´ı h o d n o t a f u n k c e = 1