=? ? =<parametr>
11
ˇ ´IKAZY KAPITOLA 6. AT PR
12
Povel do telefonu: AT
6.2
Pouˇ zit´ e AT pˇ r´ıkazy
V t´eto pr´aci je pouˇzito pouze tˇr´ı AT pˇr´ıkaz˚ u. Na zaˇca´tku programu je vyuˇzit pˇr´ıkaz ATE, tento pˇr´ıkaz slouˇz´ı k vypnut´ı tvz. echa. Kdyˇz m´a mobiln´ı telefon echo zapnut´e, znamen´a to, ˇze vˇsechny znaky poslan´e do mobilu se n´am vr´at´ı. M´ıt zapnut´e echo je dobr´e napˇr´ıklad pˇri propojen´ı telefonu s poˇc´ıtaˇcem, na kter´em je spuˇstˇen nˇejak´ y termin´al. Pˇri psan´ı na termin´alu se n´am znaky poslan´e kl´avesnic´ı do mobilu vrac´ı zpˇet a vypisuj´ı se n´am v oknˇe termin´alu. Vid´ıme, co jsme vlastnˇe poslali a zda-li jsme neudˇelali napˇr´ıklad nˇejak´ y pˇreklep. Zapnut´e echo lze vyuˇz´ıt ke kontrole, zda nedoch´az´ı k nˇejak´emu ruˇsen´ı v komunikaci mezi mobiln´ım telefonem a poˇc´ıtaˇcem (nebo ˇc´ımkoliv jin´ ym). Pˇri vysl´an´ı znaku z poˇc´ıtaˇce se poˇck´a, jestli telefon vyˇsle znak zpˇet. Porovn´a se vyslan´ y a pˇrijat´ y znak a pokud nejsou stejn´e, je nˇekde v komunikaci chyba. Pˇr´ıkazem ATE je z´aroveˇ n kontrola, zda je mobil pˇripojen, respektive zda mobil spr´avnˇe komunikuje. Po odesl´an´ı tohoto pˇr´ıkazu se kontroluje zda pˇriˇsla odpovˇed’ OK“. Pokud tato odpovˇed’ nepˇrijde, zaˇr´ızen´ı se pokus´ı ” zapnout mobiln´ı telefon a poˇsle pˇr´ıkaz ATE znovu. Dalˇs´ı pˇr´ıkaz, kter´ y je pouˇzit, je pˇr´ıkaz AT+CMGL=0. Po odesl´an´ı tohoto pˇr´ıkazu telefon odpov´ı bud’ OK, pokud v telefonu nen´ı ˇza´dn´a pˇrijat´a nepˇreˇcten´a SMS, nebo poˇsle od vˇsech pˇrijat´ ych nepˇreˇcten´ ych SMS text, ˇc´ıslo odes´ılatele, kdy byla posl´ana, d´elku telefonn´ıho ˇc´ısla v hexa, d´elku SMS, atd. Tˇret´ı (posledn´ı) pˇr´ıkaz, kter´ y je pouˇzit je pˇr´ıkaz AT+CMGD=1. Tento pˇr´ıkaz slouˇz´ı ke smaz´an´ı SMS zpr´av. Parametr 1 ud´av´a pozici SMS, kter´a m´a b´ yt smaz´ana.
Kapitola 7 SMS zpr´ avy SMS zpr´avy jsou vlastnˇe kr´atk´e textov´e zpr´avy. SMS je zkratkou anglick´ ych slov Short Message Service. V dneˇsn´ı dobˇe, kdy jsou mobiln´ı telefony digit´aln´ı, tak prakticky vˇsechny poskytuj´ı tuto sluˇzbu. D´elka SMS zpr´av je pouze 160 znak˚ u. Pokud z nˇejak´eho d˚ uvodu je posl´ana zpr´ava delˇs´ı neˇz 160 znak˚ u a kratˇs´ı neˇz 320 znak˚ u, je SMS rozdˇelena na 2 zpr´avy. Pokud m´a SMS d´elku do 480 znak˚ u, je SMS rozdˇelena do 3 zpr´av, atd. SMS zpr´avy vyuˇz´ıvaj´ı jako znakovou sadu ASCII tabulku. Probl´em nast´av´a, kdyˇz je ve zpr´avˇe napˇr´ıklad znak s h´aˇckem nebo ˇc´arkou, to se pak pouˇz´ıv´a 16-bitov´e k´odov´an´ı UCS-2, proto se do jedn´e SMS zpr´avy vejde pouze 70 znak˚ u.
7.1
Pr´ ace s SMS
Starˇs´ı mobiln´ı telefony nemaj´ı pˇridˇelenou pamˇet’ pro SMS zpr´avy. Zpr´avy byly ukl´adany pouze do pamˇeti na SIM kartˇe. Pravdˇepodobnˇe proto byla pamˇet’ na kartˇe SIM zvolena jako defaultn´ı. Starˇs´ı SIM karty maj´ı pamˇet’ pouze pro 10 SMS zpr´av, novˇejˇs´ı uˇz maj´ı moˇznost uloˇzit SMS o nˇeco v´ıc. Novˇejˇs´ı mobiln´ı telefony maj´ı mnohon´asobnˇe vˇetˇs´ı pamˇet’, a tak se SMS ukl´adaj´ı do mobiln´ıho telefonu. Vˇsechy SMS, kter´e pˇriˇsly na telefon nebo byly vytvoˇreny, jsou opatˇreny ˇc´ıseln´ ym indexem. Index zaˇc´ın´a ˇc´ıslem 1. Kaˇzd´a nov´a SMS je indexov´ana nejniˇzˇs´ım moˇzn´ ym (neobsazen´ ym) indexem. To znamen´a, ˇze pokud budou obsazen´e indexy 1 a 3 a pˇrijde nebo se vytvoˇr´ı nov´a SMS zpr´ava, dostane pˇridˇelen index 2. Takov´ato d´ıra“ mezi indexy m˚ uˇze ” vzniknout vymaz´an´ım, nebo pˇresunut´ım nˇejak´e uloˇzen´e SMS zpr´avy. Vymaz´an´ı SMS se prov´ad´ı pomoc´ı pˇr´ıkazu AT+CMGD=“ + parametr. Jako para” metr se ud´av´a index SMS, kter´a m´a b´ yt smaz´ana. Pˇr´ıkazem (AT+CMGL=4) se n´am vyp´ıˇs´ı vˇsechny SMS, kter´e jsou uloˇzen´e a je jedno, zda jsou ve sloˇzce doruˇcen´e, rozepsan´e nebo k odesl´an´ı. Pokud po potvrzen´ı tohoto pˇr´ıkazu 13
´ KAPITOLA 7. SMS ZPRAVY
14
n´am telefon odpov´ı OK, znamen´a to, ˇze v telefonu nen´ı uloˇzena ˇz´adn´a SMS. Pokud v telefonu jsou nˇejak´e SMS uloˇzen´e, telefon n´am odpov´ı +CMGL, ˇc´ıseln´ y index SMS, ˇc´ıslo 0 aˇz 3 podle toho o jakou SMS se jedn´a (pˇrijat´a nepˇreˇcten´a, pˇrijat´a pˇreˇcten´a, uloˇzen´a neodeslan´a, uloˇzen´a odeslan´a). Pˇredposledn´ı u ´daj, kter´ y n´am telefon poskytne, je d´elka PDU zpr´avy. A nakonec po odesl´an´ı znak˚ u
Tabulka 7.1: Pˇr´ıklad pouˇzit´ı pˇr´ıkazu AT+CMGL AT pˇr´ıkaz
Popis
Pˇr´ıklad
po-
velu do MT
Pˇr´ıklad odpovˇedi Pozn´amka z MT
AT+CMGL Vyp´ıˇse AT+CMGL=0 +CMGL:1,0,,26 SMS
< CR >
zpr´avy.
079124602009999
ˇ ıslo C´
v
typ ˇcten´ ych
0040C9124606021 SIEMENS: 436500002050020
pˇr´ıkazu
ud´av´a
zpr´av: 0
-
Pro
pˇrijat´e,
neˇcten´e zpr´avy (default) 1 -
243610808576D0C pˇrijat´e, pˇreˇcten´e zpr´avy 2 37BB6963 OK
uloˇzen´e, neodeslan´e zpr´avy 3 - uloˇzen´e, odeslan´e zpr´avy 4 - vˇsechny zpr´avy
Pˇr´ıklad v´ ypisu komunikace: AT+CMGL=4
´ KAPITOLA 7. SMS ZPRAVY
15
´ KAPITOLA 7. SMS ZPRAVY
7.2
16
PDU r´ amec
SMS zpr´avy jsou v mobiln´ım telefonu uloˇzeny zkomprimovan´e. Jsou zkomprimovan´e v tzv. PDU form´atu (Protocol Description Unit)
Tabulka 7.2: PDU r´amec 07
Ud´av´a poˇcet oktet˚ u SMSC informace.
91 24 60 30 50 02 00
Urˇcuje typ adresy. 91 = ˇc´ıslo v mezin´arodn´ım tvaru. ˇ ıslo servisn´ıho centra 420 603 052 000 C´
24
Prvn´ı oktet r´amce - typ PDU
0C
D´elka ˇc´ısla odes´ılatele (0C hex = 12 dec = 12 ˇc´ıslic)
91 24 60 50 35 55 33
Typ ˇc´ısla odes´ılatele (nezn´am´e, ISDN, Data, ...) ˇ ıslo odes´ılatele (420 605 535 533) C´
00
PID - identifikace protokolu
00
DCS - struktura k´odov´an´ı dat
80 50 40 90 75 31 80
Datum
doruˇcen´ı
=
rok-mˇes´ıc-den-hodina-minuta-
sekunda-ˇcasov´a z´ona (04.05.08 09:57:31 GMT+2,00) 05
Poˇcet znak˚ u ve zpr´avˇe (d´elka textu HEXa) 07 hex = 5 dec = 5 znak˚ u NE oktet˚ u!
D0 A1 74 4A 05
Zb´ yvaj´ıc´ı ˇca´st je jiˇz vlastn´ı zpr´ava.
Pˇredchoz´ı tabulka byla vytvoˇrena d´ıky programu SERIAL a d´ıky informac´ım z internetov´ ych str´anek www.dhservis.cz Viz. obr. 7.1, obr. 7.2 a obr. 7.3
´ KAPITOLA 7. SMS ZPRAVY
Obr´azek 7.1: PDU r´amec - PCZAP
Obr´azek 7.2: PDU r´amec - PCVYP
17
´ KAPITOLA 7. SMS ZPRAVY
18
Obr´azek 7.3: PDU r´amec - PCRST
7.2.1
Dek´ odov´ an´ı SMS zpr´ avy
Zde je uveden postup dek´odov´an´ı zpr´avy z PDU form´atu: D0 A1 74 4A 05 hex = text PCRST
• Dek´odov´an´ı SMS zpr´avy se prov´ad´ı tak, ˇze se hexa znaky rozep´ıˇs´ı bin´arnˇe. To znamen´a D = 1101 a 0 = 0000, to dohromady d´av´a jeden byte = 11010000. Odtrhne se nejvyˇsˇs´ı bit (jedniˇcku) a nahrad´ı se nulou, dostane se 01010000. Dekadicky to je 80 a 80. znak v ASCII tabulce je znak P, takˇze prvn´ı p´ıseno v SMS zpr´avˇe je P.
• Obdobnˇe se postupuje u dalˇs´ıch znak˚ u.
Kapitola 8 Jednoˇ cipov´ y mikroprocesor 8.1
Volba jednoˇ cipov´ eho procesoru
Volby jednoˇcipov´eho procesoru se ˇr´ıdily n´asleduj´ıc´ımi poˇzadavky:
• pˇr´ıtomnost rozˇs´ıˇren´e jednotky UART (aby nebyla nutnost vytv´aˇret programov´ y UART) • moˇznost nastaven´ı jednotky UART na rychlost 19200 baud˚ u/s (touto rychlost´ı komunikuje zvolen´ y mobiln´ı telefon)
• schopnost pocesoru pracovat s nap´ajec´ım napˇet´ım 3 V (mobiln´ı telefon pracuje s 3 V logikou a tak je ˇz´adouc´ı, aby napˇet’ov´e u ´rovnˇe byly kompatibiln´ı)
• pˇr´ıtomnost dostateˇcn´eho mnoˇzstv´ı vstupn´ıch a v´ ystupn´ıch port˚ u
• dostateˇcn´a velikost Flash pamˇeti
Tyto vlastnosti m´a vˇetˇsina jednoˇcipov´ ych mikroprocesor˚ u. V´ ybˇer se ˇr´ıdil hlavnˇe t´ım, se kter´ ym mikropoˇc´ıtaˇcem bylo v minulosti pracov´ano a k jak´emu program´atoru je pˇr´ıstup. Byl zvolen jednoˇcipov´ y procesor AT89LP2052 od firmy Atmel, kter´ y vˇsechny v´ yˇse uveden´e poˇzadavky splˇ nuje. M´a v sobˇe jednotku UART. Nap´ajec´ı napˇet´ı m˚ uˇze b´ yt v rozmez´ı 2,4 V aˇz 5,5 V. M´a 15 vstupnˇe/v´ ystupn´ıch pin˚ u, kter´e jsou pro tuto aplikaci dostaˇcuj´ıc´ı a disponuje flash pamˇet´ı o velikosti 2 kB, kter´a je pro tento u ´ˇcel tak´e dostateˇcn´a. Program´ator 19
ˇ ´ MIKROPROCESOR KAPITOLA 8. JEDNOCIPOV Y pro AT89LP2052 byl postaven v r´amci pˇredmˇetu Konstrukce elektrick´ ych obvod˚ u.
8.2
AT89LP2052
Informace o AT89LP2052 jsou uvedeny v pˇr´ıloze A
20
Kapitola 9 Hardware 9.1
Nap´ ajen´ı
Nap´ajec´ı napˇet´ı 5 V se odeb´ır´a z ATX zdroje poˇc´ıtaˇce. Jedn´a se o tzv. 5 V SB (StandBy) napˇet´ı. Toto napˇet´ı nap´aj´ı z´akladn´ı desku vˇzdy, i kdyˇz nen´ı poˇc´ıtaˇc zapnut´ y (samozˇrejmˇe mus´ı b´ yt zapojen v el. s´ıti). Proud, kter´ y je schopen tento pˇetivoltov´ y zdroj d´at, mus´ı b´ yt dostateˇcnˇe velk´ y, aby dok´azal nap´ajet nejen rel´e, LED diody a mikropoˇc´ıtaˇc, ale i mobiln´ı telefon. Podle informac´ı z f tp : //download.intel.com/design/motherbd/atx 201.pdf je schopen ATX zdroj verze 2.01 dodat 750 mA. A podle dokument˚ u http : //www.f ormf actors.org/developer%5Cspecs%5Catx2 1.pdf a http : //www.f ormf actors.org/developer%5Cspecs%5Catx2 2.pdf je ATX zdroj verze 2.1 a 2.2 dodat aˇz 2 A. Tyto zdroje jsou pro nap´ajen´ı dostaˇcuj´ıc´ı. 5 V SB napˇet´ı se d´a pouˇz´ıt na sp´ın´an´ı rel´e a nap´ajen´ı mobiln´ıho telefonu, ale ne na nap´ajen´ı mikropoˇc´ıtaˇce. I kdyˇz je nap´ajec´ı napˇet´ı mikropoˇc´ıtaˇce od 2,4 V aˇz 5,5 V, tak je ho potˇreba nap´ajet 3 V, z d˚ uvodu napˇet’ov´e kompatibility pˇri s´eriov´e komunikaci mezi mobiln´ım telefonem a mikropoˇc´ıtaˇcem. Z tohoto d˚ uvodu bylo nutn´e pouˇz´ıt stabiliz´ator na 3 V. Pro atmel AT89LP2052 staˇc´ı ˇra´dovˇe p´ar des´ıtek mA, proto byl vybr´an stabiliz´ator LE30ABZ, kter´ y stabilizuje na 3 V. Maxim´aln´ı odeb´ıran´ y proud m˚ uˇze b´ yt 0,15 A.
21
KAPITOLA 9. HARDWARE
22
Obr´azek 9.1: Zapojen´ı stabiliz´atoru - pˇrevzato od v´ yrobce
V t´eto ˇca´sti obvodu se nach´az´ı, kromˇe stabiliz´atoru, tak´e kontroln´ı LED dioda, kter´a indikuje pˇr´ıtomnost nap´ajec´ıho napˇet´ı. Pak je zde kondenz´ator 470 mikroF/25 V (C5), kter´ y m´a za u ´kol pokr´ yvat proudov´e ˇspiˇcky, kter´e m˚ uˇze zaˇr´ızen´ı tvoˇrit.
9.2
Sp´ınac´ı ˇ c´ ast
Poˇzadavky na rel´e, kter´a jsou paralelnˇe k tlaˇc´ıtk˚ um RESET a POWER, jsou minim´aln´ı. Rel´e nemus´ı m´ıt pˇrep´ınac´ı kontakt, ale staˇc´ı pouze sp´ınac´ı. Z d˚ uvodu dostupnosti bylo zvoleno rel´e SIL05-1A72-71L. Toto rel´e se sp´ın´a 5 V a odeb´ır´a proud do 10 mA. Aby mikropoˇc´ıtaˇc nesp´ınal pˇr´ımo rel´e, byl pouˇzit sp´ınac´ı MOSFET. Jedn´a se o polem ˇr´ızen´ y tranzistor, takˇze mikroprocesor je zatˇeˇzov´an jen minim´alnˇe. Je moˇzn´e pouˇz´ıt prakticky jak´ ykoliv MOSFET. Byl vybr´an MOSFET BS170, kter´ y dok´aˇze sp´ınat aˇz 60 V a 0,5 A. Takˇze v´ yˇse popsan´e rel´e bez probl´emu sepne. Nav´ıc obsahuje ochranou diodu, kter´a ho chr´an´ı pˇred zniˇcen´ım. V bl´ızkosti rel´e se nach´az´ı kondenz´ator 470 mikroF/25 V (C2), kter´ y pokr´ yv´a pˇr´ıpadn´e proudov´e ˇspiˇcky. Ke kaˇzd´emu rel´e je paralelnˇe pˇripojena LED dioda, kter´a indikuje sepnut´e rel´e.
KAPITOLA 9. HARDWARE
23
Obr´azek 9.2: Zapojen´ı sp´ınac´ıch obvod˚ u
9.3
Zapojen´ı mikropoˇ c´ıtaˇ ce
Je pouˇzit krystal 16 MHz a je zapojen podle doporuˇcen´eho zapojen´ı od v´ yrobce (viz obr. A.2). D´ıky tˇr´ıvoltov´emu nap´ajen´ı nen´ı nutn´e pouˇz´ıt pˇrevodn´ık a je moˇzn´e propojit mobiln´ı telefon pˇr´ımo s mikropoˇc´ıtaˇcem obr. 4.3. Vstup RST je aktivn´ı v log 1, proto je trvale pˇripojen pˇres rezistor 10 kOhm (R2) na zem. Aktivace RST se prov´ad´ı stisknut´ım tlaˇc´ıtka SW1, kter´ y pˇrivede na RST log 1. Na pin P1.5 je pˇripojena LED dioda. Rozsv´ıcen´ı t´eto diody se prov´ad´ı uveden´ım pinu P1.5 do log 0. Pin P1.3 je trvale pˇripojen pˇres rezistor 10 kOhm (R6) na zem. Pokud se poˇc´ıtaˇc zapne, je na tento pin pˇrivedeno napˇet´ı 3,3 V a t´ım se zjiˇst’uje, zda je poˇc´ıtaˇc zapnut´ y. Pin P3.2 je pˇripojen pˇr´ımo ke konektoru mobiln´ıho telefonu. Pokud tento pin uvedeme do stavu log 1, mobiln´ı telefon se zapne. Jako posledn´ı vˇec´ı ve sch´ematu jsou dva blokovac´ı kondenz´atory 100 nF (C10) a 330 pF (C11), kter´e eliminuj´ı ruˇsen´ı.
KAPITOLA 9. HARDWARE
Obr´azek 9.3: Zapojen´ı mikropoˇc´ıtaˇce
24
Kapitola 10 Program Firmware pro AT89LP2052 byl ps´an ve v´ yvojov´em prostˇred´ı Keil uVision3. Tento program obsahuje kompletn´ı v´ yvojov´e prostˇred´ı pro v´ yvoj firmwaru, jak v jazyce C, tak v Asembleru. Souˇca´st´ı programu je editor zdrojov´eho k´odu s barevnou syntax´ı, prostˇred´ı pro pˇreklad zdrojov´eho k´odu s hl´aˇsen´ım chyb a simul´ator nebo debuger. Simul´ator je softwarov´ y a podporuje simulaci dan´eho typu procesoru. Keil Vision3 um´ı napsan´ y program velmi dobˇre odsimulovat, je moˇzn´e sledovat logick´e stavy na jednotliv´ ych portech i na jednotce UART. Program je moˇzn´e jak zastavit, tak odkrokovat. V neposledn´ı ˇradˇe um´ı jako v´ ystup vytvoˇrit soubor s programem v HEX form´atu. Jako programovac´ı jazyk byl zvolen jazyk assembler. K naprogramov´an´ı AT89LP2052 byl pouˇzit COMPL2052KIT - varianta pro s´eriov´ y port. Tento kit byl vytvoˇren v r´amci pˇredmˇetu Konstrukce a realizace elektronick´ ych obvod˚ u. Sch´ema bylo pˇrevzato z knihy Pr´ace s mikrokontrolery atmel AT89LP2052“ ” od vydavatelstv´ı BEN. Tiˇstˇen´ y spoj byl navrhnut a vytvoˇren v r´amci pˇredmˇetu.
25
KAPITOLA 10. PROGRAM
Obr´azek 10.1: V´ yvojov´ y diagram programu
26
KAPITOLA 10. PROGRAM
10.1
27
Popis firmwaru
Firmware je rozdˇelen do nˇekolika ˇca´st´ı.
10.1.1
Nastaven´ı rychlosti jednotky UART
V prvn´ı ˇca´sti firmwaru prob´ıh´a nastaven´ı s´eriov´eho rozhran´ı. Nejdˇr´ıve se nastav´ı registr TMOD. Registr TMOD umoˇzn ˇuje volit reˇzim obou ˇc´ıtaˇc˚ u/ˇcasovaˇc˚ u. Nen´ı bitovˇe adresovateln´ y. Nejdˇr´ıve se nastav´ı ˇc´ıtaˇc/ˇcasovaˇc 1 do reˇzimu 8bitov´ y ˇc´ıtaˇc s funkc´ı reload. D´al se nastavuje registr TH1, kter´ y urˇcuje pˇrenosovou rychlost. Hodnota TH1 se spoˇc´ıt´a pomoc´ı vzorce: 2SM OD ∗ F osc (10.1) Baudrate − 384 Mobiln´ı telefon komunikuje rychlost´ı 19200 baud˚ u. Fosc je 16 MHz, SMOD je nastaven na T H1 = 256 −
log 1. Po dosazen´ı do vzorce se dostane: 21 ∗ 16000000 = 230 19200 ∗ 384 Nastaven´ım TR1 na log 1 je spuˇstˇen ˇcasovaˇc. T H1 = 256 −
(10.2)
N´asleduje nastaven´ı reˇzimu s´eriov´eho portu pomoc´ı registru SCON. Zde je pouˇzit reˇzim 1. Tento reˇzim vyuˇz´ıv´a s´eriov´ y kan´al pro 8bitov´ y asynchronn´ı pˇrenos dat. Bity se vys´ılaj´ı na TxD (P3.1) a pˇrij´ımaj´ı na RxD (P3.0). Pˇrenos zaˇc´ın´a start-bitem (log. 0), n´asleduje 8 datov´ ych bit˚ u (v poˇrad´ı od nejm´enˇe v´ yznamn´eho k nejv´ıce v´ yznamn´emu)a posledn´ı je stop-bit (log. 1). Dalˇs´ım krokem je nastaven´ı reˇzim˚ u vstupn´ıch/v´ ystupn´ıch port˚ u. Kromˇe P1.3 je cel´ y port P1 nastaven jako v´ ystupn´ı. Port P1.3 je nastaven jako vstup. Kromˇe P3.2 je cel´ y port P3 nastaven do kvazi-obousmˇern´eho reˇzimu, kter´ y je funkˇcnˇe podobn´ y standardn´ı 8051. P3.2 je nastaven jako v´ ystup. Posledn´ım krokem t´eto ˇca´sti je pˇriˇrazen´ı jmen k jednotliv´ ym pouˇz´ıvan´ ym v´ yvod˚ um, aby byl zdrojov´ y k´od pˇrehlednˇejˇs´ı.
10.1.2
Vysl´ an´ı pˇ r´ıkazu ATE
Dalˇs´ı ˇc´ast zaˇc´ın´a n´avˇest´ım start. Nuluje se port 1, nuluje se bit RI v registru SCON. Do DPTR se uloˇz´ı poˇca´tek ˇretˇezce, kter´ y m´a b´ yt odesl´an po s´eriov´e lince, v tomto pˇr´ıpadˇe ˇ ısla 0,13 jsou pozice znak˚ to je ˇretˇezec ATE,13,0. C´ u v ASCII tabulce. Pomoc´ı instrukce call se vol´a funkce sendrss. Tato funkce m´a za u ´kol odes´ılat ˇretˇezec, kter´ y m´a poˇc´atek tam, kam ukazuje DPTR. Odes´ıl´a ho, dokud nenaraz´ı na pr´azdn´ y znak.
KAPITOLA 10. PROGRAM
10.1.3
28
Kontrola komunikace s mobiln´ım telefonem
´ V t´eto ˇca´sti je funkce testOK. Ukolem t´eto funkce je zjistit, zda telefon po odesl´an´ı pˇr´ıkazu ATE odpov´ı. Pokud odpov´ı, zjiˇst’uje se, zda je tato odpovˇed’ 13, 10, O, K, 13, 10. Nejdˇr´ıve se do registr˚ u R5 – R7 uloˇz´ı hodnoty, kter´e reprezentuj´ı dobu, po kterou se bude testovat, zda pˇriˇsel po s´eriov´e lince nˇejak´ y znak. Vol´a se funkce testznk, kter´a testuje po dobu urˇcenou registry R5 – R7, zda nˇejak´ y znak pˇriˇsel. Pokud znak pˇriˇsel, nastav´ı se bit pojmenovan´ y znakbit na hodnotu 0. Pokud znak nepˇriˇsel, z˚ ust´av´a znakbit na hodnotˇe 1. Nast´av´a n´avrat z funkce testznk a zjiˇst’uje se, jestli je znakbit 0 nebo 1. Pokud je znakbit 1, pravdˇepodobnˇe to znamen´a, ˇze telefon nen´ı zapnut´ y. Proto se vyˇsle na v´ ystup zapni kr´atk´ y impuls, kter´ y znamen´a zapnut´ı telefonu. Pokud je znakbit 0, znamen´a to, ˇze znak pˇriˇsel a tento znak se testuje, zda odpov´ıd´a znaku 13 z ASCII tabulky. Pokud se znak neshoduje, provede se skok na zaˇca´tek. Pokud se znak shoduje, firmware stejn´ ym zp˚ usobem testuje, zda pˇriˇsly znaky 10, O, K, 13, 10. Rozd´ıl je jen v tom, ˇze pokud ˇza´dn´ y znak ve stanovenou dobu nepˇrijde, sk´aˇce se na zaˇc´atek firmwaru (ne na funkci, kter´a zap´ın´a telefon), protoˇze telefon uˇz jedn´ım znakem odpovˇedˇel. A t´ım se pˇredpokl´ad´a, ˇze je telefon zapnut´ y.
10.1.4
Pˇ redzpracov´ an´ı nepˇ reˇ cten´ ych SMS
Tato ˇca´st firmwaru m´a za u ´kol zjistit, zda pˇriˇsla SMS. Pokud ano, upravit ji tak, aby mohly b´ yt porovn´any texty SMS zpr´av. Odes´ıl´a se pˇr´ıkaz AT+CMGL=0, kter´ y ˇza´d´a telefon o zasl´an´ı textu nepˇreˇcten´e SMS. Pokud ˇza´dn´a nepˇreˇcten´a SMS nen´ı, telefon odpov´ı 13, 10, O, K, 10, 13. Po odesl´an´ı pˇr´ıkazu AT+CMGL=0 se do registru R1 ukl´ad´a hodnota 2 a vol´a se funkce cut. Tato funkce zjiˇst’uje stejn´ ym algoritmem jako testznk, jestli znak pˇriˇsel. Podle toho, jak´a hodnota je uloˇzen´a v registru R1, tolik znak˚ u zahod´ı. Pokud by z nˇejak´eho d˚ uvodu ˇz´adn´ y znak nepˇriˇsel, sk´aˇce se na zaˇc´atek. Po zahozen´ı dvou znak˚ u se pˇredpokl´ad´a, ˇze pˇrijde bud’ +CMGL...text zpr´ avy nebo pˇrijde OK v pˇr´ıpadˇe, ˇze ˇza´dn´a nepˇreˇcten´e zpr´ava nen´ı. Takˇze v tomto pˇr´ıpadˇe staˇc´ı, kdyˇz se testuje tˇret´ı znak. Pokud je tˇret´ı znak O, firmware zase jede od zaˇca´tku. Pokud tˇret´ı znak nen´ı O, telefon poˇsle SMS. Neˇz vˇsak telefon poˇsle samotn´ y text, poˇsle jeˇstˇe dalˇs´ıch 68 znak˚ u, ve kter´ ych je napˇr´ıklad telefonn´ı ˇc´ıslo odes´ılatele, datum a ˇcas odesl´an´ı, typ ˇc´ısla odes´ılatele, atd. Proto se tˇechto 68 znak˚ u tak´e zahod´ı.
KAPITOLA 10. PROGRAM
10.1.5
29
Porovn´ av´ an´ı text˚ u s pˇ r´ıchoz´ı SMS
V pˇredposledn´ı ˇc´asti se firmwaru star´a o porovn´av´an´ı samotn´ ych text˚ u v SMS. Byly zvoleny texty: PCZAP“ - pro zapnut´ı poˇc´ıtaˇce, PCVYP“ - pro vypnut´ı poˇc´ıtaˇce, PCRST“ ” ” ” - pro reset poˇc´ıtaˇce. Tˇemto text˚ um po pˇreveden´ı do PDU form´atu odpov´ıdaj´ı ˇretˇezce, kter´e jsou v tabulce: tab. 10.1 Tabulka 10.1: Pouˇzit´e SMS v PDU form´atu PCZAP
05D0A1
3
6
0
8
0
5
13
10
13
10
O
K
13
10
PCVYP
(stejn´ y)
3
5
0
B
0
5
13
10
13
10
O
K
13
10
PCRST
(stejn´ y)
7
4
4
A
0
5
13
10
13
10
O
K
13
10
Firmware tedy znaky, kter´e se pˇrijmou po s´eriov´e lince, porovn´av´a se znaky z tabulky. Nejdˇr´ıve se porovn´av´a, jestli pˇriˇsly znaky 05D0A1, protoˇze jsou pro vˇsechny 3 SMS stejn´e. Pot´e se zjiˇst’uje, jestli se pˇrijal znak 3 nebo znak 7. V pˇr´ıpadˇe ˇze se pˇrijal znak 7, zkoum´a se, zda dalˇs´ı pˇrijat´e znaky jsou 44A05, 13, 10, 13, 10, OK, 13, 10. Po splnˇen´ı vˇsech tˇechto podm´ınek nast´av´a resetov´an´ı poˇc´ıtaˇce. Sk´aˇce se na n´avˇest´ı pcrst, kde se nastavuje pin reset na log. 1. Vol´a se funkce pauza. Nast´av´a n´avrat z funkce a pin reset se nastavuje zpˇet na log. 0. Zjednoduˇsenˇe ˇreˇceno, pcrst m´a stejnou funkci jako kdyˇz u PC se stiskne a pust´ı tlaˇc´ıtko RESET. Pokud se m´ısto znaku 7 pˇrijal znak 3, firmware kontroluje, zda dalˇs´ı pˇrijat´ y znak je 6 (odpov´ıd´a PCZAP) nebo znak 5 (odpov´ıd´a PCVYP). Jestli to je znak 6 a dalˇs´ı pˇrijat´e znaky jsou 0805, 13, 10, 13, 10, OK, 13, 10, sk´aˇce se na n´avˇest´ı pczap. To m´a za u ´kol stejn´ ym zp˚ usobem jako pcrst stisknout a pustit tlaˇc´ıtko POWER na PC. Jestli pˇriˇsel znak 5 a dalˇs´ı znaky byly 0B05, 13, 10, 13, 10, OK, 13, 10, sk´aˇce se na n´avˇest´ı pcvyp. To m´a za u ´kol stejn´ ym zp˚ usobem jako pczap stisknout a pustit tlaˇc´ıtko POWER na PC. Rozd´ıl mezi pczap a pcvyp je, ˇze pcvyp drˇz´ı“ tlaˇc´ıtko POWER d´ele ” stiskl´e. M˚ uˇze se st´at, ˇze se nˇejak´ y znak v urˇcit´e dobˇe nepˇrijme nebo pˇrijde jin´a kombinace znak˚ u neˇz je zde pops´ana. Znamen´a to, ˇze pˇriˇsla SMS s jin´ ym textem neˇz je PCZAP“, ” PCVYP“ nebo PCRST“. Tato SMS se maˇze a firmware jede od zaˇca´tku. ” ”
10.1.6
Vymaz´ an´ı SMS
Posledn´ı ˇc´ast je oznaˇcen´a n´avˇest´ım delsms. Tato ˇc´ast m´a za u ´kol jedinou vˇec a tou je poslat do telefonu pˇr´ıkaz AT+CMGD=1. Tento pˇr´ıkaz vymaˇze SMS, kter´a m´a index 1.
Kapitola 11 Z´ avˇ er Zkonstruovan´e zaˇr´ızen´ı splˇ nuje poˇzadavky, kter´e byly uvedeny v zad´an´ı bakal´aˇrsk´e pr´ace. To znamen´a, ˇze um´ı vypnout, zapnout a restartovat poˇc´ıtaˇc pomoc´ı GSM. Moˇzn´e probl´emy mohou vzniknout, pokud bude zaˇr´ızen´ı instalov´ano do poˇc´ıtaˇce, kte´ y m´a zdroj s nedotateˇcn´ ym v´ ykonem. Zdroj by se mohl zahˇr´ıvat a t´ım by mohlo doj´ıt k jeho zniˇcen´ı. Dalˇs´ı probl´em m˚ uˇze vzniknout, pokud po sobˇe ve velmi kr´atk´e dobˇe pˇrijdou 2 a v´ıce SMS. Dojde k tomu, ˇze vˇsechny SMS budou ignorov´any a oznaˇceny jako pˇreˇcten´e. N´aslednˇe bude smaz´ana pouze prvn´ı SMS a zbyl´e SMS z˚ ustanou uloˇzeny v pamˇeti. Pokud by se toto stalo nˇekolikr´at po sobˇe, dojde k zaplnˇen´ı a zaˇr´ızen´ı pˇrestane fungovat, dokud se SMS z mobiln´ıho telefonu nevymaˇzou ruˇcnˇe. Tato varianta je sice velmi nepravdˇepodobn´a, ale za jist´ ych okolnost´ı k n´ı m˚ uˇze doj´ıt.
30
Literatura [1] Reset´atory od firmy Pest. http://firma.pest.cz/elektronika/pages/gsm/. [2] Popis AT pˇr´ıkaz˚ u. http://www.dhservis.cz. ˇ anek o pˇrevodn´ıku MAX 232 . Autor: Jir ˇ´ı Chytil, Vyda ´ no dne 25. 01. 2007 [3] Cl´ http://elektronika.ezin.cz/view.php?cisloclanku=2007010003. [4] Informace o mobiln´ım telefonu Siemens M35 . http://siemens.katalogmobilu.cz/mobilni-telefon/siemens-m35i/. [5] Popis SMS . http://www.smshned.net/co-je-to-sms. [6] N´astroj pro tvorbu v´yvojov´ych diagram˚ u. http://www.gliffy.com/. [7] V´yvojov´e prostˇred´ı Keil uVision. http://keil.com/. [8] Informace o zdroji ATX v2.01 . ftp://download.intel.com/. [9] Informace o zdroji ATX v2.1 a v2.2 . http://www.formfactors.org/. ´ , J. a Za ´ hlava, V. Elektronika - souˇc´astky a obvody, principy a pˇr´ıklady. [10] Vobecky Tˇret´ı rozˇs´ıˇren´e vyd´an´ı Grada Publishing, Praha 2005. ´ hlava, V. OrCAD 10. Grada Publishing, Praha 2004 [11] Za ˇ ´ hlava, V. N´avrh a konstrukce desek ploˇsn´ych spoj˚ [12] Za u. CVUT, Praha 2005 31
LITERATURA
32
[13] Matouˇ sek, D. Pr´ace s mikrokontrol´ery ATMEL AT89LP2052, AT89LP4052. Ben - technick´a literatura, Praha 2006
Pˇ r´ıloha A Citace Citace z knihy13: Pr´ace s mikrokontrol´ery ATMEL AT89LP2052, AT89LP4052 Mikrokontroler AT89LP2052 je kompatibiln´ı s mikroprocesorem 8051, mezi z´akladn´ı vlastnosti patˇr´ı: • v´ ypoˇcetn´ı v´ ykon aˇz 20MIPS pˇri hodinov´em kmitoˇctu 20MHz nap´ajec´ım napˇet´ı 2,7V a teplotˇe okol´ı 85◦ C • naˇc´ıt´an´ı jednoho bajtu instrukce z pamˇeti programu na jeden hodinov´ y cyklus • 2 KB (u AT89LP2052) nebo 4 KB (u AT89LP4052) programov´e pamˇeti Flash (10 000 cykl˚ u pˇreprogramov´an´ı) – seriov´e rozhran´ı pro download programu – 32bajtov´ y rychl´ y str´ankov´ y programovac´ı reˇzim – 32bajtov´a uˇzivatelsk´a signatura • nap´ajec´ı napˇet´ı v rozsahu 2,4 aˇz 5,5 V • plnˇe statick´ y design, pracovn´ı kmitoˇcet 0 aˇz 20 Mhz • dvou´ urovˇ nov´ y z´amek chr´an´ıc´ı obsah programovan´e Flash proti neopr´avnˇen´emu kop´ırov´an´ı • 256 B datov´e pamˇetu (SRAM) • hardwarov´a n´asobiˇcka • 15 programovateln´ ych vstupnˇe/v´ ystupn´ıch linek, kter´e lze konfigurovat do ˇctyˇr reˇzim˚ u (kvaziobousmˇern´ y – kompatibiln´ı s 8051,vstupn´ı, v´ ystup typu push-pull, v´ ystup s otevˇren´ ym kolektorem) I
ˇ ´ILOHA A. CITACE PR
II
• rozˇs´ıˇren´a jednotka UART (automatick´e rozpozn´av´an´ı adresy, detekce chyby r´amce) • rozˇs´ıˇren´a jednotka r´amce SPI s dvojitˇe buferovan´ ym vys´ıl´an´ım/pˇr´ıjem • programovateln´ y hl´ıdaˇc bˇehu programu (WDT) s programov´ ym nulov´an´ım • ˇctyˇru ´rovˇ nov´a priorita pˇreruˇsen´ı • analogov´ y kompar´ator s konfigurovateln´ ym pˇreruˇsen´ım a odstranˇen´ım poryv˚ u • dva 16ti bitov´e rozˇs´ıˇren´e ˇc´ıtaˇce/ˇcasovaˇce kombinovan´e s 8mi bitovou jednotkou PWM • detektor podpˇet´ı a v´ ypadku nap´ajen´ı • vnitˇrn´ı obvod power-on reset • n´ızkoodbˇerov´e reˇzimy Idle a Power-down • moˇznost zotaven´ı z reˇzimu Power-down pˇres pˇreruˇsen´ı
A.1
Podrobnˇ ejˇ s´ı popis
Mikrokontrol´er AT89LP2052/4052 je n´ızkopˇr´ıkonov´ y vysoce v´ ykonn´ y 8bitov´ y mikrokontrol´er vyroben´ y CMOS technologi´ı, kter´ y disponuje 2/4 KB v syst´emu programovateln´e Flash pamˇeti. Je kompatibiln´ı s pr˚ umyslov´ ym standardem instrukˇcn´ı sady mikroprocesor˚ u 8051. Mikrokontrol´er AT89LP2052/4052 je vybudov´an na z´akladˇe rozˇs´ıˇren´eho procesorov´eho j´adra, kter´e na jeden hodinov´ y cyklus naˇc´ıt´a jeden bajt instrukce. Jestliˇze v klasick´e architektuˇre typu 8051 zabere v´ ybˇer jednoho bajtu instrukce z programov´e pamˇeti 6 hodinov´ ych cykl˚ u (takˇze proveden´ı instrukce pak trv´a 12, 24 nebo 48 cykl˚ u hodin), u mikrokontrol´eru AT89LP2052/4052 je instrukce prov´adˇena 1 aˇz 4 hodinov´e cykly. To d´av´a 6 aˇz 12 n´asobn´e nav´ yˇsen´ı v´ ypoˇcetn´ıho v´ ykonu proti standardu 8051. Nav´ıc 17 procent instrukc´ı vyˇzaduje pro sv´e proveden´ı pouze tolik hodinov´ ych cykl˚ u, kolik zabere bajt˚ u v programov´e pamˇeti. Vˇetˇsina zb´ yvaj´ıc´ıch instrukc´ı pak na sv´e vykon´an´ı vyˇzaduje pouze jeden pˇr´ıdavn´ y hodinov´ y cyklus. Rozˇs´ıˇren´e procesorov´e j´adro s v´ ypoˇcetn´ım v´ ykonem 20 MIPS m´a vˇsak oproti standardu 8051 s maxim´aln´ım v´ ypoˇcetn´ım v´ ykonem 4 MIPS stejnou spotˇrebu. Nebo opaˇcnˇe: stejn´eho v´ ypoˇcetn´ıho v´ ykonu jako u standardu 8051 lze s nov´ ym j´adrem dos´ahnout pˇri podstatnˇe niˇzˇs´ım taktovac´ım kmitoˇctu, tedy pˇri niˇzˇs´ı spotˇrebˇe (spotˇreba se totiˇz s taktovac´ım kmitoˇctem zvyˇsuje t´emˇeˇr kvadraticky).
ˇ ´ILOHA A. CITACE PR
III
V mikrokontrol´eru AT89LP2052/4052 jsou k dispozicii dva ˇc´ıtaˇce/ˇcasovaˇce s rozˇs´ıˇren´ ymi reˇzimy. V reˇzimu 0 je kaˇzd´ y konfigurov´an jako 9 aˇz 16bitov´ y ˇc´ıtaˇc/ˇcasovaˇc. V reˇzimu 1 je k dispozici 16bitov´ y ˇc´ıtaˇc/ˇcasovaˇc s autoreloadem. Nav´ıc lze oba ˇc´ıtaˇce/ˇcasovaˇce konfigurovat jako 8bitov´e PWM jednotky s 8bitovou pˇreddˇeliˇckou.
Obr´azek A.1: Popis pin˚ u pouzdra mikropoˇc´ıtaˇce AT89LP2052
Syst´ emov´ y takt Hodinov´ y kmitoˇcet procesorov´eho j´adra je roven kmitoˇctu v´ yvodu XTAL1, nedoch´az´ı k ˇza´dn´emu dˇelen´ı taktu. Vykon´ av´ an´ı instrukc´ı s jednocyklov´ ym v´ ybˇ erem Mikrokontrol´er naˇc´ıt´a v kaˇzd´em taktu hodin jeden bajt instrukce (v´ ybˇer instrukˇcn´ıho bajtu je tedy 6x rychlejˇs´ı neˇz u standardu 8051). ˇ ızen´ı pˇ R´ reruˇ sen´ı ˇ c pˇreruˇsen´ı testuje pˇr´ıznaky pˇreruˇsen´ı v r´amci posledn´ıho hodinov´eho cyklu proRadiˇ v´adˇen´e instrukce. V pˇr´ıpadˇe, ˇze pˇreruˇsen´ı nastalo na konci instrukce, je pˇr´ıznak pˇreruˇsen´ı zapamatov´an a pˇred´an do dalˇs´ı instrukce. ˇ ıtaˇ C´ ce/ˇ casovaˇ ce ˇ ıtaˇce/ˇcasovaˇce se inkremetuj´ı rychlost´ı odpov´ıdaj´ıc´ı hodinov´emu kmitoˇctu procesoC´ rov´eho j´adra (ne 1/12 pracovn´ıho kmitoˇctu, jak tomu je u standardu 8051).
ˇ ´ILOHA A. CITACE PR
IV
S´ eriov´ y port (UART) Pˇrenosov´a rychlost UART v reˇzimu 0 je 1/2 pracovn´ıho kmitoˇctu (a ne 1/12 pracovn´ıho kmitoˇctu, jak je tomu u standardu 8051). Poznamenejme tak´e, ˇze pokud je jako gener´ator pˇrenosov´e rychlosti pouˇz´ıv´an ˇc´ıtaˇc/ˇcasovaˇc 1 (v reˇzimech 1 nebo 3), ˇc´ıt´a se opˇet hodinov´ y kmitoˇcet j´adra. To tedy znamen´a, ˇze u mikrokontroleru AT89LP2052/4052 mus´ı b´ yt pˇri stejn´em kmitoˇctu krystalu nastavena 12x delˇs´ı perioda, aby se dos´ahlo stejn´e pˇrenosov´e rychlosti. Tato skuteˇcnost dovoluje jemnˇejˇs´ı nastaven´ı pˇrenosov´e rychlosti. WDT Jednotka dohl´ıˇzej´ıc´ı na spr´avn´ y bˇeh programu (WDT) pracuje u mikrokontroleru AT89LP2052/4052 pˇr´ımo s kmitoˇctem procesorov´eho j´adra. Vstupnˇ e/v´ ystupn´ı porty Vstupnˇe/v´ ystupn´ı porty u mikrokontroleru AT89LP2052/4052 mohou b´ yt konfigurov´any do ˇctyˇr reˇzim˚ u. Po pˇripojen´ı nap´ajen´ı nebo po resetu se vˇsechny vstupnˇe/v´ ystupn´ı v´ yvody uvedou do tˇr´ıstavov´eho reˇzimu (vstup). U standardu 8051 jsou po pˇripojen´ı nap´ajen´ı nebo po resetu vˇsechny vstupnˇe/v´ ystupn´ı v´ yvody slabˇe taˇzeny k log. 1. Pokud chceme, aby se vstupnˇe/v´ ystupn´ı v´ yvody takto chovaly i u mikrokontroleru AT89LP2052, mus´ı b´ yt pˇrepnuty do kvaziobousmˇern´eho reˇzimu (coˇz provedeme vynulov´an´ım registr˚ u P1M0 a P3M0). Syst´ emov´ e hodiny Syst´emov´e hodiny jsou generov´any pˇr´ımo a to ze dvou zdroj˚ u. Prvn´ım zdrojem je krystalov´ y oscil´ator zabudovan´ y na ˇcipu (ovˇsem mus´ıme tak´e pˇripojit vnˇejˇs´ı krystal) a druh´ ym je vnˇejˇs´ı zdroj hodin. Nedoch´az´ı k ˇz´adn´emu dˇelen´ı hodin, syst´emov´e hodiny odpov´ıdaj´ı pˇr´ımo kmitoˇctu hodinov´eho zdroje. Krystalov´ y oscil´ ator Krystalov´ y oscil´ator vybereme, pokud nen´ı propojka Oscillator Bypass naprogramov´ana. Mezi v´ yvody XTAL1 a XTAL2 je tˇreba pˇripojit krystal nebo rezon´ator. XTAL2 nelze pouˇz´ıt zdroj synchronizace pro dalˇs´ı obvody! Viz obr. obr. A.2 . Vnˇ ejˇ s´ı zdroj hodin Vnˇejˇs´ı zdroj hodin vybereme naprogramov´an´ım propojky Oscillator Bypass, to zp˚ usob´ı vypnut´ı zesilovaˇce oscil´atoru. XTAL1 pak pˇripoj´ıme pˇr´ımo na hodinov´ y zdroj a XTAL2 se nech´a nezapojen. Viz obr. obr. A.3. V´ ystup syst´ emov´ ych hodin Je-li propojka System Clock Out povolena, na v´ yvodu P3.7 (SYSCLK) bude v´ ystup syst´emov´ ych hodin (bez ˇz´adn´eho dˇelen´ı). V´ yvod mus´ı b´ yt konfigurov´an do reˇzimu pushpull. Po resetu je tento v´ ystup vˇzdy v log. 1.
ˇ ´ILOHA A. CITACE PR
V
Obr´azek A.2: Zapojen´ı krystalov´eho oscil´atoru
Obr´azek A.3: Zapojen´ı vnˇejˇs´ıho zdroje hodin
Reset V´ yvod RST je vzorkov´an kaˇzd´ y hodinov´ y cyklus a pro resetov´an´ı mikrokontrol´eru postaˇc´ı, pokud setrv´a v log. 1 pouze po dobu dvou hodinov´ ych takt˚ u (tedy ne 24 takt˚ u jako u standardu 8051).
A.2
V´ yznam jednotliv´ ych pin˚ u
Ucc a GND slouˇz´ı pro pˇripojen´ı nap´ajec´ıho napˇet´ı (v rozsahu 2,4 aˇz 5,5 V). XTAL1 je vstupem do invertuj´ıc´ıho zesilovaˇce pro zabudovan´ y oscil´ator. Na tento v´ yvod lze tak´e pˇripojit vnˇejˇs´ı hodinov´ y sign´al. XTAL2 je v´ ystupem z invertuj´ıc´ıho zesilovaˇce v zabudovan´em gener´atoru. Jako zdroj hodinov´eho kmitoˇctu pro mikrokontrol´er lze pouˇz´ıt krystal doplnˇen´ y kondenz´atory (viz obr. A.2). Tak´e je moˇzno pˇripojit vnˇejˇs´ı zdroj kmitoˇctu na v´ yvod XTAL1 (XTAL2 se
ˇ ´ILOHA A. CITACE PR
VI
v tomto pˇr´ıpadˇe nezapojuje), viz obr. A.3 RST (UPP) je nulovac´ı vstup. Pˇrivedeme-li na tento vstup log. 1 alespoˇ n po dobu dvou hodinov´ ych cykl˚ u, vyvol´ame reset mikrokontrol´eru. V´ ysledkem pak bude nastaven´ı nˇekter´ ych registr˚ u na v´ ychoz´ı hodnoty a rozbˇeh programu od adresy 000h (na t´eto adrese tedy mus´ı b´ yt um´ıstˇena smyslupln´a instrukce). Pˇrejde-li RST do log. 0, rozbˇehne se program od adresy 0. Tento v´ yvod se tak´e pouˇz´ıv´a pro pˇriveden´ı programovac´ıho napˇet´ı (12 V) pˇri paraleln´ım programov´an´ı. Velmi d˚ uleˇzit´ y je tak´e pro programov´an´ı pomoc´ı ISP. Port 1 (P1.0 aˇ z P1.7) obsahuje 8 vstupnˇe/v´ ystupn´ıch linek. Port P1 je rovnˇeˇz pouˇz´ıv´an pˇri programov´an´ı pamˇeti Flash. Alternativn´ı v´ yznam v´ yvod˚ u je uveden formou tab. A.1
Tabulka A.1: Alternativn´ı v´ yznam v´ yvod˚ u portu P1 V´ yvod
Druh´a funkce
P1.0
AIN0 (neinvertuj´ıc´ı vstup analogov´eho kompar´atoru)
P1.1
AIN1 (invertuj´ıc´ı vstup analogov´eho kompar´atoru)
P1.2
Bez alternativn´ı funkce
P1.3
Bez alternativn´ı funkce
P1.4
SS(signal slave select SPI jednotky)
P1.5
MOSI (signal Master-OUT/Slave-In SPI jednotky)
P1.6
MISO (signal Master-In/Slave-Out SPI jednotky)
P1.7
SCK (hodinov´ y sign´al SPI jednotky)
Port 3 (P3.0 aˇ z P3.5 a P3.7) obsahuje 7 vstupnˇe/v´ ystupn´ıch linek. Linka P3.6 nen´ı dostupn´a z vnˇejˇsku a je pˇripojena na v´ ystup analogov´eho kompar´atoru. Alternativn´ı v´ yznam v´ yvod˚ u je uveden formou tab. A.2.
ˇ ´ILOHA A. CITACE PR
VII
Tabulka A.2: Alternativn´ı v´ yznam v´ yvod˚ u portu P3 V´ yvod
Druh´a funkce
P3.0
RxD (seriov´ y vstup jednotky UART)
P3.1
TxD (seriov´ y v´ ystup jednotky UART)
P3.2
(vstup vnˇejˇs´ıho pˇreruˇsen´ı ˇc´ıslo 0)
P3.3
(vstup vnˇejˇs´ıho pˇreruˇsen´ı ˇc´ıslo 1)
P3.4
T0 (vnˇejˇs´ı vstup ˇcitaˇce/ˇcasovaˇce ˇc´ıslo 0) vstup PWM jednotky 0
P3.5
T1 (vnˇejˇs´ı vstup ˇcitaˇce/ˇcasovaˇce ˇc´ıslo 1) vstup PWM jednotky 1
P3.6
Dostupn´ y pouze vnitˇrnˇe
P3.7
SYSCLK (v´ ystup systemov´ ych hodin, pouze pokud je naprogramov´ana propojka syst´em Clock Fuse)
A.3
Z´ akladn´ı odliˇ snosti oproti standardu 8051
AT89LP2052/4052 je ˇca´st´ı rodiny souˇca´stek s rozˇs´ıˇren´ ymi schopnostmi a plnou bin´arn´ı kompatibilitou v˚ uˇci instrukˇcn´ı sadˇe MCS-51. D´ale je mnoho SFR adres, pˇriˇrazen´ı bit˚ ua alternativn´ıch v´ yvod˚ u identick´e s existuj´ıc´ımi 8051 ATMEL souˇca´stkami. Odliˇsnosti jsou uvedeny d´ale. Rozˇ s´ıˇ ren´ e j´ adro AT89LP2052 pouˇz´ıv´a rozˇs´ıˇren´e 8051 procesorov´e j´adro pracuj´ı 6 aˇz 12x rychleji neˇz standartn´ı 8051. To zvyˇsuje v´ ykon hned ze dvou d˚ uvod˚ u. Jednak procesor vyb´ır´a kaˇzd´ y hodinov´ y cyklus jeden instrukˇcn´ı bajt z pamˇeti programu. Za druh´e pouˇz´ıv´a procesor jednoduch´ y dvouf´azov´ y pipelining pro naˇc´ıt´an´ı a vykon´av´an´ı dvou instrukc´ı souˇcasnˇe. Tento jednoduch´ y zp˚ usob poskytuje v´ ypoˇcetn´ı v´ ykon 1 MIPS na 1 MHz. Instrukˇcn´ı sada mikrokontrol´eru ˇrady 8051 obsahuje instrukce v promˇenliv´e d´elce 1 aˇz 3 bajty. Takˇze v syst´emu, kde plat´ı: co hodinov´ y cyklus - to instrukˇcn´ı bajt”, trv´a ” vykon´an´ı instrukce minim´alnˇe tolik bajt˚ u, kolik zab´ır´a instrukce v programov´e pamˇeti. Nˇekter´e instrukce (skoky a vol´an´ı podprogramu) vˇsak vyˇzaduj´ı jeden pˇr´ıdavn´ y hodinov´ y takt pro vypoˇc´ıt´an´ı c´ılov´e adresy. A tak´e nˇekter´e komplexnˇejˇs´ı instrukce ˇza´daj´ı v´ıce hodinov´ ych cykl˚ u. Omezen´ı funkce instrukc´ı AT89LP2052/4052 je ekonomick´ y a cenovˇe efektivn´ı ˇclen rozr˚ ustaj´ıc´ı se rodiny mikrokontrol´er˚ u ATMEL. Obsahuje 2/4 KB programovateln´e pamˇeti Flash. Je plnˇe kompatibiln´ı s architekturou 8051 a je tak´e programovateln´ y pouˇzit´ım 8051 instrukc´ı. Nicm´enˇe
ˇ ´ILOHA A. CITACE PR
VIII
existuj´ı urˇcit´a mal´a omezen´ı s ohledem na pouˇzit´ı instrukˇcn´ıho souboru. Vˇsechny instrukce skok˚ u jsou omezeny tak, ˇze c´ılov´a adresa mus´ı padnout do fyzick´eho pamˇet’ov´eho prostoru mikrokontrol´eru. Tedy do 2 KB u AT89LP2052 a 4 KB u AT89LP4052. Napˇr´ıklad instrukce 7E0H je pro mikrokontrol´er AT89LP2052 pouˇziteln´a, ale ljmp 900H uˇz ne! Instrukce skok˚ u/vol´ an´ı podprogram˚ u lcall, ljmp, acall, ajmp, sjmp, jmp @a+dptr mus´ı m´ıˇrit na adresu 000H aˇz 7FFH u AT89LP2052 a 000H aˇz FFFH u AT89LP4052. Vystoupen´ı z fyzick´eho prostoru m˚ uˇze zp˚ usobit nedefinovan´e chov´an´ı programu. Pro instrukce cjne, djnz, jb, jc, jnc, jbc, jz a jnz plat´ı stejn´a pravidla. Pro aplikace vyˇzaduj´ıc´ı pˇreruˇsen´ı plat´ı, ˇze adresy obsluˇzn´ ych rutin jsou stejn´e, jako u standardu 8051. MOVX instrukce Tento mikrokontrol´er nepodporuje vnˇejˇs´ı datovou pamˇet’. Takˇze instrukce movx by nemˇela b´ yt vloˇzena do programu. Nejsou k dispozici porty PO a P2 Na rozd´ıl od procesoru 8051 nejsou k dispozici porty PO a P2, ale pouze P1 a P3. To zcela znemoˇzn ˇuje vytvoˇren´ı vnˇejˇs´ıho pamˇet’ov´eho prostoru (jak pro data, tak i pro program). D˚ usledkem t´eto skuteˇcnosti je, ˇze nelze pouˇz´ıvat instrukci movx (nahr´an´ı bajtu z vnˇejˇs´ı datov´e pamˇeti).