Sei sulla pagina 1di 7

Ing.

Gabriele MONTI 1999 - 2005

Programmazione I/O

www.ingmonti.it

1 Tecniche di programmazione per l'I/O


I problemi del mondo reale
Q an!o "i !e#ono ri"ol#ere $roblemi reali% non e"er&izi% le "ol zioni !e#ono e""ere &om$lete. 'anno ten ti in &on"i!erazione t tti i &a"i $o""ibili e bi"ogna &on"i!erare &(e l)(ar!ware e l) tente non "ono in*allibili. Il "o*tware !e#e tenere in &onto an&(e !ei $o""ibili errori !ell) tente e !ei mal* nzionamenti !ell)(ar!ware.

Anticipazione dei malfunzionamenti dell'hardware


Il $rogramma !o#rebbe +anti&i$are+ le &on!izioni anomale e! o$erare in mo!o &(e% "e trattate in tem$o% non *a&&iano !anno. ,e% $er e"em$io% "i g a"ta n "en"ore "ato in n loo$ !i $olling% e""o non $otr- &ontin are a girare $er "em$re% nell)atte"a atte"a *i! &io"a e "t $i!a &(e il "en"ore% ormai rotto% ri"$on!a. ,ar- ne&e""ario &(e ogni loo$ !i $olling $re#e!a n +timeo t+% o""ia n tem$o limite oltre il . ale il $rogramma e"&e !al &i&lo e entra in na $arte in & i ge"ti"&e l)emergenza !el "en"ore rotto. In n $rogramma +reale+ ben "&ritto . e"to !e#e e""ere *atto $er t tti i loo$ !i atte"a% e $er t tte le &on!izioni anomale &(e $o""ono &a$itare. 'e!iamo n $i&&olo e"em$io in & i "i atten!e l)arri#o !i n $ezzo me&&ani&o al " o *ine&or"a. /)atte"a in n loo$ !i $olling &ontrolla an&(e l)orologio% $er lan&iare na $ro&e! ra !)errore nel &a"o &(e il $ezzo non arri#i entro n &erto tem$o limite0
AttesaDelFineCorsa: MOV AL , [Finecorsa] TEST AL, 1 ; se il bit 0 di AL a 1 si!ni"ica ; c#e il $e%%o arri&ato al "inecorsa 'E (rose!)i*or+al+ente ; se non arri&ato in "ondo, &eri"ica c#e non sia+o in ,)esto loo$ da tro$$o te+$o: CALL C#ec-Ti+eo)t ; C#ec-Ti+eo)t +ette 1 nel "la! di carr. se il te+$o ; destinato a ,)esto loo$ esa)rito '/ AttesaDelFineCorsa ; se arri&a ,)i scattato il Ti+eO)t ; s$en!o la +acc#ina $erc#0 non "accia )lteriori danni: CALL S$e!niT)tto ; noti"ico l1errore all1)tente: CALL A&&ertiDellErrore MOV A2, 3C# 8*T 91# ; "er+o il $ro!ra++a 4")n%iona solo se il S5O5 MS6DOS7

(rose!)i*or+al+ente: 55 55 ; ,)i il $ro!ra++a contin)a nelle s)e o$era%ioni nor+ali 55

1at&(!og 2n mo!o $i3 "o*i"ti&ato !i "&ire !ai loo$ "enza *ine% &(e ri&(ie!e (ar!ware aggi nti#o ma &(e * nziona "ia nel &a"o !i g a"ti (ar!ware "ia in &a"o !i errori nel "o*tware% 4 la te&ni&a !el +watchdog+ 5&ane !a g ar!ia6. Il wat&(!og 4 n &ontatore &(e #iene in&rementato a tomati&amente $er #ia (ar!ware e &(e !e#e e""ere regolarmente +re"ettato+ !al "o*tware. 7i8 "igni*i&a &(e il no"tro $rogramma nel &or"o !el " o "#olgimento% !e#e an!are a "&ri#ere $erio!i&amente in n regi"tro !el wat&(!og. Q e"ta "&ritt ra lo *a tornare a zero e! im$e!i"&e &(e il " o &onteggio #a!a in o#er*low. /a linea !i o#er*low !el timer 4 &ollegata a! n interr $t !ella 7P2% ti$i&amente all)interr $t non ma"&(erabile. ,e il $rogramma "i blo&&a in n loo$ "enza *ine il &ontatore !el wat&(!og "i +riem$ie+ e #iene lan&iato l)interr $t. Nella I,9 !i . e"to interr $t "i metter- in "i"tema in &on!izioni !i "i& rezza% "i !ar- na &om ni&azione !i allarme% "i $ren!eranno le $o""ibili &ontromi" re al mal* nzionamento e! e#ent almente "i ri&omin&er- t tto !a&&a$o. Molti mi&ro&ontrollori o!ierni in&l !ono al loro interno no o $i3 wat&(!og.

Comprendere le possibilit fisiche del sistema


/a #elo&it- !i n &om$ ter 4 "$e""o "otto"timata !al te&ni&o. :tt azione &(e *a rimanere *ermo il "i"tema% a&&en!en!olo e "$egnen!olo. Dare il tempo ai relay di commutare 21 Progetto I;O."<w 'er. 0.2.0 2005-10-1= $. 1 !i >

Ing. Gabriele MONTI 1999 - 200=

www.ingmonti.it

1.1 Alcuni esempi di programmi di I/O


1.1.1 ?i"$la@ !el #alore !i &ontatori
Q e"to 4 n *a&ile e i"tr tti#o $roblema% an&(e "e non !el t tto reali"ti&o. 2n "i"tema !i &ontrollo !i na ma&&(ina in! "triale !e#e inter*a&&iare n n mero N !i !i"$o"iti#i +&onta&ol$i+% &io4 !i &ontatori &(e mi" rano il n mero !i &erti e#enti% non lteriormente "$e&i*i&ati. Il $roblema% !a ri"ol#ere &on n $rogramma :""embl@ $er A0AB% rig ar!a la $arte !el "i"tema !i &ontrollo &(e legge il #alore &orrente !ei &ontatori e lo #i" alizza " = !i"$la@ /C? a > "egmenti. I &ontatori "ono !a A bit% N (a il #alore ma""imo !i 25B% ma $ 8 e""ere minore. a6 /a 7P2 legge il #alore &orrente !ei &ontatori a! N in!irizzi &on"e& ti#i in I/O i"olato% &(e $artono !all)in!irizzo 0. Per ogni &ontatore il !i"$la@ !e#e #i" alizzare &ontem$oraneamente% in e"a!e&imale% il n mero !el &ontatore 5!a 0 a! N6 e! il #alore !el &onteggio. /a #i" alizzazione "i !e#e $rotrarre $er D "e&on!i% $oi "i !e#e $a""are al &ontatore " &&e""i#o. ?o$o il &ontatore N "i !e#e ri&omin&iare !al $rimo e! il $rogramma non !e#e mai &on&l !er"i. Il $rogramma non "i !e#e intere""are "e il &onteggio e&&e!e il #alore ma""imo &(e n &ontatore $ 8 &ontenere% ma #i" alizzare "olo il &onten to &orrente. /a #i" alizzazione a##iene "&ri#en!o n n mero !i 1B bit all)in!irizzo 0EEE00( !ella memoria or!inaria. Il #alore !el &onteggio !e#e e""ere "&ritto nelle ! e &i*re meno "igni*i&ati#e !el !i"$la@% &(e "ono *i"i&amente &ollegate al b@te !i in!irizzo 0EEE00(% mentre il n mero !el &ontatore !e#e *inire all)in!irizzo 0EEE01(. ,&ri#ere il $rogramma in mo!o &(e "ia *a&ilmente a!attabile a! n n mero !i#er"o !i &ontatori. ,$iegare &o"a "i !o#r- *are $er &ambiare il n mero !i &ontatori ge"tito !al $rogramma. FEI/CG HHHH /C?>"egmenti.EI5 F/EI/CG b6 !o$o a#er ri"olto il $roblema $re&e!ente !e"&ri#ere &ome !e#e &ambiare il "i"tema e &ome il $rogramma gi- "&ritto "e i &ontatori "ono a 12 bit e N ma""imo 4 1B 5la !oman!a NON 4 o$zionale6. &6 ri"ol#ere il $roblema $re&e!ente #i" alizzan!o n meri !e&imali in#e&e &(e e"a!e&imali. ?a . anti bit !e#ono e""ere i &ontatori $er $oter tilizzare lo "te""o !i"$la@ "enza +o#er*low+ !elle " e &i*reJ Problema a6 Il *atto &(e gli in!irizzi !ei &ontatori inizino !a zero $ 8 e""ere tile $er realizzare n $rogramma n $o) $i3 "em$li&e. ?ato &(e i &ontatori (anno in!irizzi !a 0 a! N - 1% l)in!irizzo !i I/O e. i#ale al n mero !el &ontatore. Per "em$li*i&are il $rogramma *a&&iamo n &i&lo &on la loo$ e "&ri#iamo " l !i"$la@ i #alori !ei &onteggi +a ro#e"&io+% tilizzan!o 7K% la #ariabile !el &i&lo% an&(e &ome +nome+ !el &ontatore. C) im$ortante rimar&are &ome in . e"to mo!o il $rogramma 4 $i3 "em$li&e ma lega il "o*tware all)ar&(itett ra !ell)(ar!ware. ,e &ambia l)in!irizzo (ar!ware !el $rimo &ontatore il $rogramma !e#e e""ere &ambiato in mo!o "o"tanziale. 9ealizzare $rogrammi tro$$o !i$en!enti !all)ar&(itett ra !ell)(ar!ware !i "olito non 4 na b ona i!ea e !e#e e""ere *atto "olo . an!o il #antaggio &(e "e ne ri&a#a 4 &on"i!ere#ole.
:n $ro!ra++a c#e risol&e il $)nto a7 del $roble+a il se!)ente:

; ese+$io dei contatori a 19 bit, da &is)ali%%are s) )n dis$la. a ; se!+enti * E<: 109 ; *)+ero dei contatori == de&e essere >9?@ ==

O""setDis$la. E<: 0

; O""set del $ri+o indiri%%o del dis$la., ; +a$$ato in +e+oria ordinaria Se!Dis$la. E<: 0FFF0#; Se!+ento dell1indiri%%o del dis$la. Calib E<: 1A9B ; *)+ero c#e "a "are )n1attesa di 1 +s nel ; loo$ interno della $roced)ra Attesa COD8CE SECME*T ASS:ME CS:COD8CE 8ni%io: ; siste+a%ione del re!istro di se!+ento $er $)ntare a!li indiri%%i del dis$la.: MOV AD, Se!Dis$la. MOV ES, AD Di*)o&o: MOV CD, * ; $er "are )n loo$ da * !iri MOV DD, 0 ; indiri%%o del $ri+o contatore (erT)tti8Contatori: 8* AL, DD ; lett)ra del conte!!io del DD contatore MOV ES:[O""setDis$la.], AL ; scritt)ra del conte!!io nella $arte ; destra del dis$la. MOV ES:[O""setDis$la.E1], DL ; scritt)ra del n)+ero del contatore a sinistra ; == <)esta F ")n%iona solo $erc#0 l1indiri%%o del contatore )!)ale al s)o Gn)+eroG (:S2 CD ; +e+ori%%a%ione di CD 4dobbia+o +odi"icarlo $er $assare

$. 2 !i >

2005-10-1=

21 Progetto I;O."<w

Ing. Gabriele MONTI 1999 - 2005

Programmazione I/O

www.ingmonti.it

; il $ara+etro ad Attesa7 MOV CD,A000 ; A secondi 4te+$o di attesa in +s7 CALL Attesa (O( CD ; ri$ristino del &alore del conte!!io della loo$ LOO( (erT)tti8Contatori 'M( Di*)o&o Attesa (HOC F)ori: ; loo$ esterno $er CD +s (:S2 CD MOV CD, Calib Dentro: ; loo$ interno calibrato $er d)rare )n +s *O( LOO( dentro (O( CD ; ri$ristina il CD )sato co+e $ara+etro LOO( F)ori Attesa E*D( COD8CE E*DS E*D 8ni%io

/a "ol zione 4 molto "em$li&e $er&(L &i8 &(e !e#e e""ere "&ritto nel !i"$la@ "i !i#i!e e"attamente in ! e b@te% &(e "i $o""ono "&ri#ere in memoria *a&ilmente. ,i noti la te&ni&a "ata $er a&&e!ere all)in!irizzo a""ol to !i memoria 0EEE0(% al . ale 4 ma$$ato il !i"$la@. Problema b6 Il $roblema b6 4 in#e&e n $o) $i3 &om$li&ato. Innanzi t tto bi"ogna !e&i!ere &o"a &ambiare nel "i"tema. /)a&. i"izione !i &ontatori a 12 bit "igni*i&a &(e i #alori !ei &onteggi !ebbono e""ere letti !a ! e $ort !i I/O e non $i3 !a no "olo. , $$oniamo &(e i 12 bit !ei &ontatori "i $o""ano leggere a! in!irizzi " &&e""i#i !i I/O% la $arte ba""a agli in!irizzi ba""i. ?ato &(e ora i &ontatori "ono $o&(i 5ma< 1B6 ba"tano = bit $er ra$$re"entare il n mero !el &ontatore. Earemo #i" alizzare il n mero !el &ontatore nella &i*ra $i3 "igni*i&ati#a !el !i"$la@ e! il #alore !el &onteggio nelle altre &i*re% &(e ri&(ie!ono 12 bit. Ora 4 ne&e""ario +*on!ere+ nel M@te alto i . attro bit !ella $arte alta !el &onteggio e . elli !el n mero !el &ontatore. ?ato &(e ora l)in!irizzo !el &ontatore non &oin&i!e $i3 &on il " o +n mero+% "iamo &o"tretti a mo!i*i&are il $rogramma. 'i" alizziamo i &ontatori in or!ine &re"&ente e! tilizziamo na te&ni&a &(e $ermetta !i &ambiare *a&ilmente l)in!irizzo !el $rimo &ontatore. Nel $rogramma &(e "eg e "i e"eg e la +* "ione+ !ei nibble !ella $arte alta !i :K% $rima !i "&ri#ere :K " l $ort !el !i"$la@. Per &ontare +in a#anti+ 4 ne&e""ario n &ontatore% $er il . ale #iene "ato il regi"tro M/. Il #alore !i . el &onteggio !e#e e""ere $o"izionato nel nibble $i3 "igni*i&ati#o !i :K% $er&(L in . el $ nto +a&&en!er-+ il /C? $i3 a "ini"tra. Q e"to "i $ 8 ottenere &on !elle "(i*t% o$$ re &on il bel tr &&o ill "trato nel &o!i&e &(e "eg e. 'e!iamo ! n. e le !i**erenze *ra il &o!i&e $re&e!ente e . ello &(e ri"ol#e il $roblema b6
* E<: 10 ; *)+ero dei contatori == de&e essere >1@ ==

; introd)cia+o )n indiri%%o ini%iale dei contatori, $ara+etri%%ato: 8nd8ni%Cont E<: 0 ; 8ndiri%%o ini%iale dei $ort c#e conten!ono i &alori dei conte!!i ; 55 le altre de"ini%ioni )!)ali alle $recedenti Di*)o&o: ; scandia+o i contatori Gall1a&antiG, le!!endo a $artire da 8nd8ni%Cont: MOV DD, 8nd8ni%Cont ; $artia+o da ,)i $er le!!ere i &alori dei contatori ; a%%era+ento di IL: DOH IL, IL ; == IL il n)+ero del contatore ; == C8A1 GS28FTATOG D8 <:ATTHO I8T A DESTHA == MOV CD, * (erT)tti8Contatori: ; lett)ra con )na sola 8* dei 19 bit del conte!!io in )n n)+ero da 1@ bit 8* AD, DD ; $osi%iona+ento $er la $rossi+a lett)ra: 8*C DD 8*C DD A*D AD, 0FFF# ; $)li%ia del nibble $iJ alto del n)+ero a$$ena letto ; 4$er essere sic)ri c#e ci siano de!li %eri7 OH A2, IL ; G")sioneG del d)e nibble del n)+ero contatore con ; la $arte alta del conte!!io MOV ES:[O""setDis$la.], AD ; scritt)ra s) dis$la. del n)+ero del contatore ; e del conte!!io

21 Progetto I;O."<w

'er. 0.2.0 2005-10-1=

$. D !i >

Ing. Gabriele MONTI 1999 - 200=


; 55 c#ia+ata ad Attesa, co+e $ri+a ADD IL, 10000b

www.ingmonti.it

; == i!nobile tr)cco $er "ar contare solo nel nibble ; == $iJ si!ni"icati&o di IL: si $arte da %ero e si ; == a!!i)n!e se+$re )n Gbit di $eso 3G in ,)esto +odo nel ; == nibble $iJ alto c1 il n)+ero di contatore ed ; == in ,)ello basso se+$re 0 LOO( (erT)tti8Contatori 'M( Di*)o&o ; 55 il resto co+e $ri+a

Problema &6 HHHH E:9C H

1.1.2

7ontrollo ON/OEE

Per ragioni e&onomi&(e molti &ontrollori !i "i"temi &ontin i "ono realizzati &on att azioni !i"&rete !i ti$o ON/OEE. In . e"ti &a"i l)att atore1 o 4 "$ento o$$ re a&&e"o 5ON o$$ re OEE 0-6. ? n. e "i ri&(ie!e !i regolare &on n &ontrollo ON/OEE il #alore !i na gran!ezza !i "&ita &ontin a% $er e"em$io "i $otrebbe regolare la tem$erat ra !i n ambiente &on n re"i"tore "&al!ante. ,tabilita la tem$erat ra &(e "i # ole raggi ngere 5"et $oint6 a&&en!eremo il ri"&al!atore . an!o la tem$erat ra !el "i"tema 4 in*eriore e lo "$egneremo . an!o 4 " $eriore. ,i "tabili"&e n #alore +!i "oglia+ al !i "otto !el . ale l)att atore 4 "$ento% mentre 4 a&&e"o . an!o la #ariabile !el "i"tema 4 "o$ra la "oglia. /o "#antaggio !i . e"to "em$li&e a$$ro&&io 4 &(e% "e l)att azione *a +m o#ere+ il "i"tema ra$i!amente% . an!o l)att atore #iene a&&e"o l) "&ita !el "i"tema &ambia e " $era ra$i!amente la "oglia% $er & i 4 ne&e""ario "$egnerlo " bito. :$$ena l)att atore #iene "$ento l) "&ita &ala ra$i!amente e bi"ogna ria&&en!erlo. ? n. e $ 8 a&&a!ere &(e l)att atore #enga &oman!ato in ra$i!e "e. enze !i ON e OEE. Q e"to mo!o !i o$erare $otrebbe e""ere !anno"o $er l)att atore e! e#ent almente an&(e $er il "i"tema. ,i $en"i $er e"em$io a! na &al!aia a ga" $er il ri"&al!amento !ome"ti&o. C""a non $ 8 e""ere a&&e"a e "$enta ogni "e&on!o% $er&(L "i rom$erebbe !o$o $o&(i giorniN "e in#e&e l)att atore 4 n re"i"tore "&al!ante e""o $ 8 tran. illamente "o$$ortare !e&ine o migliaia !i &i&li ON/OEE in n "e&on!o. Q an!o la *re. enza !i . e"te "e. enze !i ON e OEE 4 tro$$o alta% $er l)att atore o $er il "i"tema !a &ontrollare% "i $arla !i +e**etto ringing+ 5"&am$anellOoJ6% &on n nome m t ato !al r more &(e *a% $rima !i rom$er"i% n att atore a relai" &(e #enga a&&e"o e "$ento !e&ine !i #olte al "e&on!o. Per non a#ere e**etto ringing bi"ogna &(e "ia #era almeno na !elle "eg enti &on!izioni0 1. il "i"tema 4 abba"tanza +lento+ a ri"$on!ere $er & i% $er i " oi ritar!i +nat rali+ $a""a la "oglia "olo !o$o n tem$o " **i&ientemente l ngo 2. il "i"tema &(e mi" ra la gran!ezza !i "&ita (a na ri"ol zione " **i&ientemente ba""aN in . e"to mo!o il regolatore non "i a&&orge !elle #ariazioni !ell) "&ita *ino a &(e e""e non "ono " $eriori alla ri"ol zione !el "en"ore% &i8 $ 8 a mentare il tem$o !ei &i&li ON/OEE. Nel &a"o &(e ne"" na !i . e"te &on!izioni "ia ri"$ettata 4 ne&e""ario intro! rre ! e "oglie e la#orare +&on i"tere"i+. FEI/CG HHHH Ono**.EI5 F/EI/CG Eig ra 10 7ontrollo ON/OEE &on na e ! e "oglie 7ontrollori ON/OEE &on i"tere"i /a "ol zione !e*initi#a al $roblema !el ringing !egli att atori 4 la realizzazione !i &ontrollori ON/OEE +&on i"tere"i+. ,i in!i#i! ano ! e "oglie e "i "a il "eg ente algoritmo0 1. "e l) "&ita " $era il #alore !ella "oglia " $eriore "i mette OEE l)att atore 2. "e l) "&ita 4 minore !ella "oglia in*eriore "i mette ON l)att atore D. "e l) "&ita (a #alore &om$re"o *ra le ! e "oglie "i la"&ia l)att atore &o"O &om)4 :""egnan!o o$$ort namente le ! e "oglie !i rie"&e a! e#itare il ringing.

1.1.D
HHHH

7ontrollo P1M

$er . e"te !e*inizioni "i #e!a il #ol me $re&e!ente

$. = !i >

2005-10-1=

21 Progetto I;O."<w

Ing. Gabriele MONTI 1999 - 2005

Programmazione I/O

www.ingmonti.it

1.1.=

2n $rogetto &om$leto

In . e"to &a$itolo "#il $$iamo n $rogetto &om$leto !i n)a$$li&azione !i I/O in :""embl@. ,i tratta !i n $rogetto% non !i n $rogrammaN i !ettagli " l &o!i&e "ono intenzionalmente ome""i. Il lettore li $otr- "#il $$are $er e"er&izio% $ro#an!one il ri" ltato &on il $rogramma !i "im lazione in&l "o nel 7? 9OM allegato a . e"to #ol me. Nel 7? 9OM 4 &om$re"o an&(e lo +"&(eletro+ !ell)a$$li&azione% realizzato "e&on!o l)anali"i &(e #err- "#il $$ata in . e"to &a$itolo. C""o $otr- e""ere tile &ome ba"e $er &o"tr ire l)a$$li&azione. Il no"tro $rogetto $ren!e le mo""e !all)anali"i !el * nzionamento !i na la#atri&e. :l *ine !i $rogettare n b on $rogramma !obbiamo tro#are $arti &om ni e !i**erenze. 7on&entreremo in $ro&e! re le * nzioni &om ni &(e in!i#i! eremo% mentre le !i**erenze &o"tit iranno i $arametri !i . elle $ro&e! re. Pa""iamo ! n. e a! ill "trare il $roblema !a ri"ol#ere0 2na la#atri&e !e#e e""ere &ontrollata !a n mi&ro&ontrollore &om$atibile &on l)A0AB% &ollegato ai tre $ort !i I/O in!i&ati !alla Eig ra 20 Port !i I/O $er il &ontrollo !ella la#atri&e% &on i "en"ori e! att atori ill "trati nelle *ig re. Port !i in!irizzo M:,C% O2TP2T Pe"o !el bit > E nzione / B / 5 / = 9i"&al!atore 1P "&al!a D ,&ari&o 1P a$erta 2 Prela#aggio 1P a$erta 2 / 1 /a#aggio 1P a$erta 1 / 0 9i"&ia&. o 1P a$erta 0 /

Port !i in!irizzo M:,C Q 1% INP2T Pe"o !el bit > B E nzione /i#ello Porta :lto :$erta 1 P "o$ra 1 P a$erta Port !i in!irizzo M:,C Q 2 Pe"o !el bit > E nzione / ?irezione

5 /i#ello Ma""o 1 P "o$ra

= D Mottoniera Mottoniera I /

B /

5 /

= /

D 2 Termo"ta- :&&en". to Motore 1 P "o$ra 1 P ON INP2T O2TP2T

1 ?irez. Motore 1Porario O2TP2T

0 'elo&. Motore 1P #elo&e O2TP2T

Figura 2: Port di I/O per il controllo della la atrice Il "igni*i&ato !ei bit !i I/O 4 il "eg ente - 9i"&ia&. o &oman!a n)elettro#al#ola &(e a$re n *l ""o !)a&. a &(e attra#er"a la #a"&(etta !i ri"&ia&. o e $oi *ini"&e nel &e"tello !i la#aggio - /a#aggio &oman!a n)elettro#al#ola% analoga alla $re&e!ente% &(e "a la #a"&(etta $er !i !eter"i#o !i la#aggio - Prela#aggio elettro#al#ola $er il !eter"i#o !i $rela#aggio - ,&ari&o elettro#al#ola !i "&ari&oN "e 4 a$erta l)a&. a e"&e !al &e"tello T tte le elettro#al#ole "ono a$erte 5l)a&. a $a""a6 . an!o il #alore logi&o !el bit !el $ort M:,C 4 1. - 9i"&al!atore n re"i"tore "&al!ante% $er&or"o !a &orrente% $ro##e!e al ri"&al!amento !ell)a&. a !i la#aggio. ,e il bit 4 1 e""o "&al!a% "e 0 no. JJJJ bottone +niente &entri* ga 5$anni !eli&ati6 JJJJ HHHH &ambiare il $rogramma HHHH Il termo"tato !- n #alore logi&o TT/% !i#er"o "e la tem$erat ra 4 maggiore o minore !i . ella im$o"tata !all) tente. In mo!o analogo * nzionano i ! e "en"ori !i li#ello0 "e l)a&. a li bagna a#r- n #alore logi&o% l)altro "e 4 a"&i tto. ,tabilire e !o& mentare la logi&a !i * nzionamento !ei "en"ori e !egli att atori e "&ri#ere il $rogramma in mo!o &oerente a . anto "tabilito. /a bottoniera !i &ontrollo !ella la#atri&e "ia *atta in mo!o &(e $ 8 e""ere in na "ola !i . attro $o"izioni% tramite le . ali l) tente in!i&a &(e ti$o !i la#aggio # ole ottenere0 1. la#aggio &om$leto 5&on $rela#aggio6 2. "enza $rela#aggio D. "olo ri"&ia&. o =. "olo &entri* ga 21 Progetto I;O."<w 'er. 0.2.0 2005-10-1= $. 5 !i >

Ing. Gabriele MONTI 1999 - 200=

www.ingmonti.it

/a bottoniera &o!i*i&a le . attro $o"izioni nei ! e bit Mott/ e MottI% all)in!irizzo M:,C Q 1% "e&on!o la "eg ente tabella0 Mottoniera Mottoniera Mit alto 5I6 Mit ba""o 5/6 0 la#aggio &om$leto 0 &i&lo "enza $rela#aggio 0 1 "olo ri"&ia&. o 1 0 "olo &entri* ga 1 1 Il "igni*i&ato !ei "egnali in!i&ati in Eig ra 20 Port !i I/O $er il &ontrollo !ella la#atri&e 4 lteriormente ill "trato !alla Eig ra D0 :r&(itett ra !ella la#atri&e.

HHHH"na$"(ot !el $rogramma la#atri&eHHHH Figura !: "rchitettura della la atrice Il $roblema !a ri"ol#ere 4 l)anali"i !el "i"tema e la $rogettazione !el "o*tware !ell)elettro!ome"ti&o. Pen"iamo ! n. e al * nzionamento !ella la#atri&e e! in!i#i! iamo i *attori &om ni e . elli !i#er"i. ?obbiamo tro#are !ei +mattoni+ elementari% &on i . ali &o"tr ire il $rogramma &(e &ontrolla la la#atri&e. ?e*iniamo an&(e na +nomen&lat ra+% n mo!o "$e&i*i&o !i in!i&are le &o"e% in#entato $er ri"ol#ere . e"to $roblema. O""er#an!o na la#atri&e al la#oro #e!iamo &(e e""a e**ett a na "erie !i rotazioni !el &e"tello e !i $a "e e &(e na rotazione in n "en"o 4 "em$re "eg ita !a na rotazione nell)altro "en"o. 7(iamiamo +rotazione+ &i8 &(e " &&e!e . an!o il &e"tello gira in no "te""o "en"o e +&i&lo+ la "e. enza !i na rotazione% "eg ita !a na $a "a e !a na rotazione nel "en"o o$$o"to. Il ri$aratore !i la#atri&i inter$ellato !all): tore a**erma &(e $er a#ere n miglior b &ato "i !e#e iniziare a *ar "&al!are l)a&. a &ontem$oraneamente all)inizio !ei &i&li !i la#aggio e "olo !o$o &(e il &e"tello 4 "tato riem$ito !i a&. a. /a no"tra la#atri&e !o#r- "eg ire . e"ta regola. Il $rogramma !o#r- $er&i8 a&&en!ere e "$egnere il ri"&al!atore% in ba"e a &i8 &(e legge !al termo"tato% mentre e"eg e le rotazioni o le $a "e. 7(iamiamo +*a"e+ n &erto n mero !i +&i&li+ e! in!i#i! iamo le "eg enti . attro *a"i !el $ro&e""o !i la#aggio0 $rela#aggio% la#aggio% ri"&ia&. o e &entri* ga. Ea&&iamo ora no "&(ema nel . ale &om$ren!iamo t tte le analogie ri"&ontrate nei #ari momenti !el * nzionamento !ella la#atri&e0 - +immi""ione+0 ogni +*a"e+ inizia &on il riem$imento !el &e"tello% attra#er"o la gi "ta #a"&(etta - +"&ari&o+0 ogni +*a"e+ termina &on lo "&ari&o !i t tta l)a&. a &onten ta nel &e"tello - +rotazione+0 $erio!o !i tem$o in & i il &e"tello #iene *atto r otare nello "te""o #er"o - +$a "a+0 $erio!o !i tem$o nel . ale il &e"tello rimane *ermo - +&i&lo+0 "e. enza rotazione - +*a"e+0 "e. enza +immi""ione+% +&i&li+% +"&ari&o+ : &ia"& no !i . e"ti elementi &om ni *aremo &orri"$on!ere na $ro&e! ra. In!i#i! iamo ora &i8 &(e !i"ting e gli elementi &om ni nei #ari momenti !el $ro&e""o0 - immi""ione0 l)a&. a $otr- e""ere &ari&ata !a no . al"ia"i !ei &a""etti - rotazione0 $o""ono e""ere !i#er"e0 ! rata !ella rotazione #elo&it- !ella rotazione $re"enza o meno !ella regolazione !i tem$erat ra - $a "a0 ! rante le $a "e $o""ono e""ere !i#er"e0 ! rata !elle $a "e 5! rante il ri"&ia&. o le $a "e "ono $i3 l ng(e6 $re"enza o meno !ella regolazione !i tem$erat ra - &i&lo ! rata !elle rotazioni #elo&it- !elle rotazioni $re"enza o meno !ella regolazione !i tem$erat ra - *a"i #a"&(etta !i alimentazione a&. a n mero !ei &i&li ! rata !elle rotazioni #elo&it- !elle rotazioni $re"enza o meno !ella regolazione !i tem$erat ra

$. B !i >

2005-10-1=

21 Progetto I;O."<w

Ing. Gabriele MONTI 1999 - 2005

Programmazione I/O

www.ingmonti.it

:"" miamo &(e la $orta !ell)obl8 !el &e"tello "ia "em$re &(i "a $rima !i iniziare il $rogramma0 n bottone elettrome&&ani&o im$e!ir- al $rogramma !i * nzionare "e la $orta 4 a$erta. C) tile !e*inire al& ne ma"&(ere $er i "ingoli bit !ei "en"ori% il $rogramma "ar- $i3 a to!o& mentato e $i3 *a&ile !a mo!i*i&are0 m:N?ri"&ia&. o CQ2 00000001b mO9ri"&ia&. o CQ2 11111110b m:N?ri"&al!atore CQ2 00010000b mO9ri"&al!atore CQ2 11101111b N ma"&(era $er :N? " l bit #a"&(etta ri"&ia&. o N ma"&(era $er O9 " l bit #a"&(etta ri"&ia&. o N ma"&(era $er :N? N ma"&(era $er O9

$ro&e! ra Inizializza C) tile metterne "em$re na. In . e"ta $ro&e! ra metteremo t tte le &o"e &(e "i !e#ono *are na "ola #olta e &(e #algono $er t tto il $rogramma% &ome $er e"em$io la $rogrammazione !el &(i$ !i I/O. Q alora "ia ne&e""ario aggi ngere al $rogramma altre inizializzazioni "i "a$r- " bito !o#e inter#enire. ,i $ 8 in!i#i! are n n &leo &om ne in t tte le mo!alit- !i * nzionamento !ella la#atri&e. In*atti ! rante il " o * nzionamento la la#atri&e &om$ie n &erto n mero !i +&i&li+ nei . ali tiene $er n &erto tem$o ?e*iniamo +&i&lo+ na "e. enza !i e#enti &ome la " &&e""i#a0 gira in "en"o orario *ermo gira in "en"o antiorario ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;G Tem$o9otazione Parametri !ella $ro&e! ra Ea"e Tem$o9otazione in milli"e&on!i n7i&li 'a"&(etta 7o!i*i&a0 1 P "a #a"&(etta $rela#aggio 2 P "a #a"&(etta la#aggio D P "a #a"&(etta ri"&ia&. o = P non "are ne"" na #a"&(etta 9i"&al!a0 *lag 0 P non ri"&al!are 1 P ri"&al!a alla tem$erat ra in!i&ata !al termo"tato 5termometro6 MO' :K% 7:// Ea"e P9O7 Tem$o,to$ Tem$o9otazione

,i la"&ia &ome e"er&izio al lettore il &om$letamento !el $rogramma% &(e $otr- e""ere $ro#ato &on la "im lazione +la#atri&e+% in&l "a nel 7? 9OM allegato a JJJJ . e"to JJJJ libro 5o al #ol me KKKK !i . e"to libro6.

#urio$it% Guai alla Stazione Termini

21 Progetto I;O."<w

'er. 0.2.0 2005-10-1=

$. > !i >

Potrebbero piacerti anche