Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Presenlcrzione Generole
Computers: [e macchine
che governano it mondo.
ttualmente è imoossrbile conceoire il mondo avrete bisogno di un PC. ll computer vi permetterà di
nel quale viviamo senza computer. Se questi eseguire interessanti lavori, ad esempio:
smettessero di funzionare la Terra girerebbe
comunque, pero gran parte delle cose che
esistono su dr essa si fermerebbero. Si inter- Poter vedere Microrobots commerciali con il CD.
dotti. Gli ospedali non potrebbero eseguire determinati Produrre voi stessi i programmi per pilotare il vostro nuovo "animale
interventi. Persino a casa nostra avremmo dei problemi domestico",
MEMORIA
In questo elemento del compu-
,..,i rprogramml
tar \/onfl^nn <rritti
che si vogliono utilizzare, assie-
me ai dati necessari ed ai risulta-
ti che vengono generati.
PROCESSORE
E' la parte più importante della
macchina, esso deve interpreta-
ra lo i<trr rzinn i dol nr,
r,39ramna,
ed eseorrire le onerazioni che
competono ad ognuna. All'in-
tprno dpl nrncpqqorp l'Unita di
ll aersonal computer o PC
Controllo è quella che rnterpreta
sarà uno strumento indispensabile per operare con i microrobot
o traduce le istruzioni, quindi il
P Ol
PERIFERICHE
Sono i dispositivi che utilizzano gli utenti, nei quali ven-
gono caricate le informazioni e vengono raccolti i risul-
tati ottenuti dall'analisi dei programmi e dei dati.
Le periferiche classiche sono la tastiera, il mouse,
la stampante, il monitot il modem, gli altoparlanti e
la telecamera digitale, ma possono anche essere un
PC motori, un display a sette segmenti, sensori di
prossimità, ecc.
PANNELLO DEGLI
CONTROLLO DELLA VELOCITA CONTROLLO
CONTROLLO DELLA CLI MATIZZMIONE DEL MOTORE
SISTEMA DI NAVIGMIONE
MULTIPLEXING DEL CABLAGGIO
AIRBAG
prodotto. La sintonia delle emittenti migliora, sì posso- Navigazione satellitare, Computer di bordo. Sistema antifurto.
ll microrobot della Husqvarna taglia conttnuamente l'erba del grardtno alimentandost con energia solare
),tt,'
"'
enorme varietà di microprocessori: dai più semplici ed progettr piu avanzati, come le applicazioni nell'intelli-
economici, destinati a prodotti comuni, sino a quelli più genza artificiale, oppure le applicazioni militari e dispo-
completi capaci di controllare sistemi avanzati. sitivi di immagazzinamento massivo di dati.
A seconda delle loro caratteristiche, i microprocessori si Sono ipiu usati e venduti, e dentro questa gamma si
possono classrficare in molti modi, il piu significativo e differenziano per le loro risorse e capacita. Un buon
ulilizzalo è quello riferito alla dimensione del bus dei progettista deve scegliere il microprocessore che soddr-
dati. ll bus dei dati è l'insieme delle linee mediante le sfi tutte le specifiche del suo progetto, incluse le preve-
quali vengono trasferite le informazioni all'interno del dibilr espansioni future I microprocessori a B bit sono
processore. Ne esistono di quattro tipi: caratterizzati dall'avere il bus dei dati da B linee, questo
comporta che tutti ì trasferimenti di informazioni all'in-
Microprocessori a 4 bit terno della struttura del chip saranno realizzaÍi a byte di
8 bit didimensione, e la memoria dei datiavra anch'es-
Microprocessori a 16 bit
F
-lì,
90
iì'i"1,,-r ;, 4 v; ;; I i.i
i1
':\ît':1:'r.al:,:....: ,.;.:)r:r,t:r.:....:.,nrr.1ììrrÌììììtìt:ì:ìììììì.ìrrìrrrl
sa un'architettura a B bit La dimensione delle istruzio- r
OTP: la memoria viene scritta dall'utente finale tra-
ni nr rn pssere differtrntp e si ad:tter: :l fnfmato del mite uno scrittore di memorie e un PC. 5i possono solo
m icroprocessore. programmare una volta e non si possono cancellare.
Adatte ner serie medio niccole delo il lorn h:sqo nrez-
zo.
La struttura generale del microprocessore e composta .
EPROM: mediante uno scrittore e un programma
uor ^,
rl , r++"^
^-"+i
9uoLLr u Poru. di comunicazione con il PC si memorizzano i program-
mi e si possono cancellare molte volte. Dispongono di
Memoria di programma una finestra di cristallo sulla parte suoeriore del conte-
nitore per facìlìtare la cancellazione, che viene realizza-
ta sottoponendo il chip a luce ultravroletta, per il perio-
do indicato dal costruttore.
. EEPROM: si scrivono e cancellano elettricamente
Processore qén7: no.p<<it: di r:nni rrltr:vinlofti
"' '"vY'
.
FLASH: simili alle EEPRON/. Le puo scrivere e can-
t,,1,,,'
Contiene le istruzioni del programma che governa l'ap-
plicazione a cui è destinato il microprocessore. Dato
rhp devc osonrrirp somnre lo slesso !v,
comnilo
,,v, Lv, rdeve esse-
I
^t
t)frr^ hlnrrhì tinìri Aì tt
-. -n mtcroprocessore ''|,"..'''inrarirata di intprnretare ed
È la narlp dpl romnrrtpr
eseguire le istruzioni del programma E formata da due
sezioni, l'Unità Centrale che traduce le istruzioni e la anno del secolo scorso, arriva a moìte centinaia di
ALU (Unita Logico Aritmetica) che le esegue. milioni. ll maggior consumo, circa la terza parte, si e
verificato nel settore dei compu'ter e relative periferi-
': l ;l': ! l::
, : ': che.
Questa parte del microprocessore contribuisce, insieme La quarta parte e stata assorbita da prodotti di largo
alla capacità della memoria, a determinare la potenza e consumo, come elettrodomestici, giochi, TV, eccetera. ll
la complessità del dispositivo. Alcune delle periferiche settore delle telecomunicazioni, l'area industriale e l'au-
niir imnnrt:nti <nnn' tomazione completano il resto.
o Porte di inoresso e di uscita.
r Temporizzatori.
. Comparatori e campionatori di segnale. I maggiori costruttori di circuiti integrati dispongono di
o Convertitorr AD e DA. una linea di microprocessori, date le enormi aspettatrve
o Interrupt. di mprc:lo che si nrevedono. INTEL è considerato come
. Whatch dog. il padre dei microprocessori, perche fu il pioniere nella
o (i<lom: di <t:nd-hv fabbricazione di questi componenti, con il modello
8048 negli anni 70 poco dopo aver commerctalizzalo,
nel1971, il primo microprocessore del mondo. In segui-
la fine deoli anni 90 ha consolidato un forte incre- to ottenne un grande successo con la produzione del
mento nella vendita dei microprocessori a B bit, men- microprocessore a B bit della famiglia 8051, alla quale
tre ha mantenuto ilvolume divendita di quelli a 4 bit, seguì la 80C196 a 16 bit. Tuttavia è stata MOTOROLA
inoltre sono incominciati a crescere anche quelli a 16 che ha occupato il primo posto della classifica mondia-
e 32 bit. Se si suppone una media di 4 dollari per le negli anni 90. ll modello a B bit 6BHC'11, costruito
unità, il valore dei microprocessori venduti nell'ultimo con tecnologia HCMOS, e capace di interpretare il
repertorio completo di istruzioni del microprocessore
m6800 piu 91 nuove. f azienda americana N/ICROCHIB
produttrice del microprocessore PlC, che utilizzeremo in
questa opera per costruire il nostro robot, ha scalato la
classifica in modo vertiginoso, passando dal 20" al 2"
nosto in rn àr.o di temno rhe va dal '1 990 al 2000.
Orresta ascesa e hasata sulle sue eccellent nresta-
zioni, che sono le stesse che ci hanno ìndotti a sceqlier-
lo per la nostra macchina.
La vendita in miltoni di dollari dei mrcroprocessori a B bit supera \npt tsrnlsrp s<ep<s doll'e-ienda
ampiamente la somma di uttigli alLri. MICROCHIe produttrice del mrcroprocessore PIC
Perché it PIC?
€'É
Presso i che dlstribuiscono MICROCHIP in tutto il mondo, tyoviamo una straordinarla offera di prodotti relatwi ai plC
lvenditori
ll'interno dell'ampio panorama di modelli e gio, e molte università e centri di formazione specializ-
"';.,i
.F:1" fabbricanti di microprocessori, qual è la
',t?i regrone che cr ha indotto a scegliere il ptC ' zaIt, hanno scelto questo fabbricante per dare suppor-
,;l' : to allo sviluppo dei loro programmi formativi. Nella
tabella che segue elenchiamo gli aspetti piu rilevanti del
tenere conto che per ogni applicazione con- , PIC:
:
creta esiste un microprocessore ottimale, pero a secon-
da def le circostanze o delle prospettive per il futuro, il
modello o il fabbricante possono cambiare. euesto
significa che non esiste un microprocessore migliore in
termini assoluti, dato che ogni caso risulta differente.
Semplicità di utilizo
MICROCHIP ha scalato la classifica mondiale di ven-
t
!l
Í ,rE , ,
2,5 i1
'1,5
o,5
o
Ptcl óc5x coP800 MCó8HC05 78óCXX 80c5r STó2
@20MHz @20MHz @4,2MHz @12MHz @l I MHz @8MHz
MICROCHIP NATIONAL MOTOROTA ZITOG INTEL THOMSON l' t
i!
1ì-.,",.,.-=,".-.'+"". +,*'*r+,*' "."-.,,:..",i
La dimensione del codtce per l'insieme dei programmi di prova
per il PlCl6C5X è molto pitt piccola di quella dei suoi prrncipali concorrentl
s#frge*++fr1..1$p.g'
* MICROCONTROTTER
lei famiglio "PIC'' di Microchip
L
Alcuni modelli di PIC sono molto semplici ed econo- 72 modelli differenti. Si trovano in commercio con con-
mìci, dispongono delle risorse minime per controllare le tenitori da'18 a 68 pin e sono dotati di un set di 35
periferiche principali, come nel caso del PlC12C50B. istruzioni da 14 bit ognuna. ll loro stack arriva ad 8 livel-
Altri sono così potenti, come il PIClBCB5B, che i suoi li orrpsto nprmpttp sino a B annidamenti di subroutine
parametri e le sue prestazioni assomigltano a ststemì di come massimo. ln questa fascia e compresa la famiglia
applicazrone molto avanzati. Nella tabella riportata dei P|C14C000, specializzati per i progetti dei carica-
sopra, sono messi in comparazione questr due tipi di batterie intelligenti, gruppi di continuità, acquisizione
PIC. ed elaborazione der segnali, che richredono ìa gestione
dell'energia di alimentazione.
' 'l I '';',' , : t' .'l'.' .'
' , , ,. l, ,.
Comprende tutti i modelli rnquadrati all'interno della
.
denominazione PlC16C5X, iquali sono dotati di un set In questa gamma sono compresi undici dispositivi della
di 33 istruzioni da 12 bit di lunghezza ognuna. Sono serie PICl2CXXX, tutti quelli con contenitore da B pin,
talmente semplici che non sono dotati di interrupt, ed che hanno avuto un successo commerciale senza pre-
hanno solamente due Iivelli di stack. Hanno una dimen- cedenti, data la loro dimensione e il loro prezzo. Alcuni
ur nrro<ti îllî {ac.;î hrca olLl
:l+riI o:
sione molto ridotta, infatti sono commercializzati in eli
vuE)Lr rmnIellr
rvucilr rnrric^^^.1^^^
!urrJPUllut-rl lu dlld ld)Lld ud)cr
contenitori da 18 a 28 pin, sono ideali per applicazioni quella media.
semplici, di grande consumo, e che funzionano a bat-
teria.'
Hanno un'architettura aperta, che permette l'amplia-
I it ' t, :l mento esterno delle periferiche del microprocessore,
Sotto questa denominazione si raggruppano i proces- tramite il bus dei dati, quello degli indirizzi e dei con-
sorì che si identificano con la nomenclatura PICl6CXXX trolli. ll set di istruzioni arriva stno a 58 e la loro dimen-
e formano la gamma piu ampia e diversificata, con ben sione e di 16 bit. Dispone di un sistema molto potente
di gestione vettorializzata degli inter-
rupt, e vengono utiìizzati in applica-
zioni di grande complessità.
-.1,".,,
il:,.,,1,::,:,: i:',,::;l
'
.-""-''-'..'.'.'.',.,".'..fr ,ò7;ll' MICROCONTROLLER
Sceltei del PIC ii
36 68
64 64
TMRO+WDT TMRO+WDT
4 4
t3 t3
RAilGE DI tl 2.0'6.0 2.0-6.0
18 pin l8 pin
DrB SO|C DrB SO|C
RA4/TOCKI * * R/AO
lavoro si deve fornire al pie-
dino 4 una tensione a cor-
MCLR * * oscl /cLKlN
rente continrra comnresa tra
12 e 14Y.
Vss '-* ** osc2lctKouT . Linee di l/O digitalì
RBO/INT € ** VOO I tredici piedini rimanenti, di
cui non abbiamo ancora
RBI * * -i ,,+il;---^^
RB7 ^-.1-+^LU, 5l
lJdllcì ULllll./dll(-) pef
introdurre e ottenere infor-
RB2 {-* 4-È RBó *--;^^: !i^i+-l !- ^ vr,:fSO
tt taLtwt I ut9tLoti, uo u tl
denominati RAO-RA4 La
nnrt: R o r1icnnct: JU rR
qr U
linao
llllrc
Contenitore del PlCl 6F84, cosi come di tutte le sue vanantt. di l/O rhp corrisnnndono ai
pìedini RBO-RB7. Ci sono un
. Frequenza di lavoro di PlEuil
n.ein ul
vqlu r.hp vrLrE
nipdiniil l|E/ nl+.^ a uo|LLQt E rE +
-.^-r,---"^r^ ^-ioni di l/O
turrl
La velocità di funzionamento del PlC16FB4, e determi- digitali, hanno un alrro compito multiplexato, corne si
n:+:
llOLq r{:ll:
UOI|O {ran"on-:.ho
llEVUE|l4O 1,,! ci nonor: intornan-^^+^
rru'rlclltc/ -1.^
LllE
.^i^^L^"À
)prcgr rcrd ^;,, -,,-^+i1Lr.
pru dvdr
deve essere stabilizzata dall'esterno mediante un cri-
-+-il^ ..Ji
)LCllU ul 9uol4w
-^ilîoato ai
LUlltrVuLvur nredini
p'Luil il oSC
vJL 1/cLKlN e
OSC2/CLKOUT. ll PlCl6FB4 è un circuito integrato con doppia fila di
piedini. Ha 9 piedini metallici su ogni lato del conteni-
. Reset e programmazione tore che sono abbastanza flessibili.
ll piedino 4 denominato N/CLR#/VPP, supporta due fun- Questo circuito integrato, a volte, deve essere scrit-
zioni rhe si mrrltinlpxano nel tpmnn ll PIC lavora nor- +a rnl nraarr*-.
ro cor p"ogramma cne
-h^ supporLd ilil 1.,,^"^
.,,^^^r+î
dvoro, per
^^. por essere
m:lni:ntp oqonrrondn il nrnnr:mm: rho h: roni<tr:tn inserito nella scheda di applicazione ed e abbastanza
nella memoria FLASH, quando si attiva a un livello basso frporrentp dnverlo inserire sullo zoccolo dello scrittore
sul piedino 4, si reinizializza o resetta il microprocesso- per poi toglierlo e reinserirlo nuovamente su quello
re n{testo sicrnifica che i cr rni rpni<,tri intprni aSSUmono dcll: crhcd,a di :nnlirazione Orrpsta onerazione
Y vrJ Lu vvL e
un valore determinato e che il contatore di programma molto delicata perche se si forzano e si piegano i piedi-
punta la direzione 0, da dove incominciare il program- ni rinetute volte notrebbero staccarsi rendendo irrecu-
I
:^i-r-ri-'-'r^
lld pul I rLtorLLót tu. ^ 4CLR:
tv lVaster Clear Reset. perabile il circuito integrato. Raccomandiamo di collo-
care il PIC'16F84 sopra uno zoccolo normale, perche
srano i piedini di quest'ultimo a subire la pressione, o
NOîA !À'IPOn!AHTE menlio sosîiîrrire lo zoccolo dello scrittore o della sche-
"'_v"'
ll simbolo # che si antepone a certi segnali indica che i
r- ur'Ji oPPilLo4rurc,
uo -^î uno zoccolo a f orza di inserzio-
^^^ri---i^^^ LUI
medesimi sono attivi a livello basso. Questo simbolo è Irc Inrrll:
ne uilo, n|esto
9uc)LU nnssip;^
,,^- l^,,- -^^
PU))rEuE ur rc rcvo lr ^^"^ ' fOf i dOVe
rE oPtE I
identico alla riga che si trova sopra al nome del segnale. si introducono i piedini, cio aiuta enormemente a pre-
servare l'insieme dei oiedini.
t.:"
Velocitù dl, e inizicrlizzeizione
I : r- " @i *3
,,:1::::1|11l::l::::tt;::l',$i.t'tll)::
DELU ISTHUZIONE
fabbriche In pratica, invece di iniziare un'automobi- ricerca di un'istruzione, il secondo si oedica a realizzare
le, e fermare la produzione fino a che non sia stata ra fase di esecuzione dell'istruzione che e stata prece-
terminata la prima, si divide il lavoro in stadi succes- dentemente trovata. Con la segmentazione si ottiene
siv, in modo che iveicoli passrno da uno stadio all'al- Il'acorr rzinno
c)ELu4tvttE di w9rrr
ur nnni i<trr rzinnp rrur
r)rru4,vrrL npl temnn
rur "^a +r.ò
Ii Ulld lo)C,
trn ( nn,y-*-.- -,-, ra Àol
n{toqt: tprnir- l-',^.n pdldllel(J,
oel lavoro n:r:llaln Sl rleSce <:rphhe e: v,,L
dirc nrr:ttrn
YvuLL,v cicli di clock.
a dividere il tempo impiegato in tante parti quanti Al sovrappors' dei due stadi d'istruzione, il tempo che
-^^^
sono ^li slaor ,,+ili---+
gll -+--li uuillrdLl. imnipne rrn rrrln di istrr rzionr e di orratiro cicli di clock.
ll nrorcssore del PIC e
costruito con stadi diffe-
renziati, o stadi che
generano una segmen-
tazione di secondo ordi- FASE DI RICERCA
f tslRUztoNE
ne Uno stadio realizza la FASE DI RICEBCA
2" ISTRUZIONE
fase di rìcerca e l'altro la FASE DI RICERCA
3" ISTRUZIONE
fase di esecuzione Gli FASE DI ESECUZIO}IE
,f ISIBUZIONE
stadi sono indipendenti FASE DI RICERCA
5AISTRUZIONE
fra di loro, quindi posso-
no lavorare in parallelo;
mentre prtmo sta il Dato che la fase di ricerca e quella di esecuzione
si realizza in parallelo, il ciclo di istruzione dura quattro cicli di clock
effettuando la fase d
x 8ffÌ=S :5l
,.;i :;, -:,; ;riy ,i;l;:ji,yt ,;.
!; ,;1 ;,:. :1,1,:-:':
:+:,:i'; :,i";
,itùr j!tlrr,r!N:]*!i,::]i#lHì.ìlrr:rìrr}rrrrrl úft ,.,jij@rr#tlsÍ{!{l1 jìrììlìxìì11ììtlrrrltlillrnr\irmr&14?mrlifr lfr stllffi f lÍ{f 11fi 11
í,t'
':,,,:l
ffi OSC2/CLKOUT ln
,L' nrro<tn r:<n <i rnllon:nn :l nior^linn 16
flw-> Fosc/4
VULJ(v
del PIC 6FB4 (OSC 1/CLKIN) una resistenza
1
';:
't:;:;;tj tt,
Questo tipo di oscillatore si usa per
lrrinrrro ran fraartar rze supefloI a
4Mhz.
Ulilizza un cristallo di quarzo e un
OSCl/CLKIN risonatore ceramico tra i piedini '15 e
1 6 collegato ai condensatori di disac-
disaccoppiamento ilcuivalore è fornito dalfabbricante. ' bits dei orincioali reqistri di controllo del PlC.
A,,^r+n +;^^ ^li V)LilrOLUrE
LIPU Ur ^.-ill-+^"^ --l -++^ pcl
^ CUCttu
E ^^"
vuE)Lw
lavorare con basse frequenze, comprese
tra 35 e 250 Khz. ll principale vantaggio
dato dalla bassa f requenza e il consumo
rli
u, onerni:
LrrLryru ridnttn
rruvLLv ràc
Lr ^^-^--t'^
rC IICLtj>)ILd
nr-
^l TIL
dl
#SflEil€-.éè€q}-qtr SsiT
Orroctn
VuLrLv o
L ìl
,r tinn
Lrl.,v di
ur n<rill:+nra
vrlllloLUlC .^^lC U)ClC-
Ll "c^r^
mo Y-,
,,," ner ron'trollarp rl PIC del nostro
robot, perche e predisposto per lavorare
tra 100 Khz e 4 Mhz, la frequenza di
lavoro selezionata per il nostro N/onty.
lVonteremo un cristallo di quarzo o un
risonatore ceramico tra i piedini 1 5 e 16,
rnllenato ,ai risnettivi condensatofi di
disaccoppiamento, i cui valori sono indi-
cati nella documentazione tecnica e Quando si attiva il pulsante di RESEI si resetta il microprocessore,
dipendono dalla frequenza selezionata. cosi come quando si applica la tensrone di alimentazione per la prima volta
-,:,,
-r,
- t, 't'
fintuizione
di un sognatore
el 1945 Von Neumann stabilì le MEMORIA
PRINCIPALE PROCESSORE
basi per la costruzione dei com-
puter che oggi hanno invaso il BUS DEGLI
mondo. Disegno una macchina in tNDtRtzzl
cui vi era un blocco - unità di con-
rrnlln
Lrvllv - LovoLE Ài llininp5laf;ra
ul rLEi Pr sLors rrn| ilinciomo
uÌ .li
rJrEr I rE ul
ictrr rzinni
"'
nonor:\/:
v!' '!'
i qonn:li nore<q:ri nor l:
realizzazìone delle operazioni che coinvolge-
vano le varie sezioni del blocco di elaborazio-
ne dei dati. BUS DEI DATI BUS DI
I ln nr:ndo arrhtt,tn coniirir nór .^ntanóra E DELLE CONTROLLO
lp istrrrzioni del nrnnramma insieme ai dati ISTRUZIONI
ffiffiffi
olomonti ò r^rrrpllo rhe e conosciuto come
computer.
MEMORIA
PRINCIPALE PROCESSORE
':1.1 1,,.i,:','i:i;
"l
immagazztnare le istruzioni e idati brnarr.
L'unità di controllo riceve le istruzioni che man PROCESSORE
mano cleve eseorrrre le derodifira e npnera la
sequenza di segnali necessari all'esecuzione. ll
blocco di elaborazione dati si incarica, sotto la
supervisione dell'unita di controllo, di realtzzare
le onerazioni oener:te dalle istruzioni racco-
gliendo gli operandi dalla memoria e dagli l/O,
inviando irisultali a questi blocchi secondo MEMORIA
.^^-i{i--+^ (DATr)
VuorrLv rpsLrr!oLv ^luo- OQI-ìl lStfUZlOne.
^,,-^+^
Pero tutto il movimento delle informazioni
all'interno del computer è realizzato da tre tlo
(PERTFERTCHE)
insiemi di linee digitali, denominate bus ll bus
der dati e istruzioni ha il compito di trasferire
oreqte inform:zioni fra i vari blocchi del com-
puter. ll bus degli induizzi e caricato dal proces-
qÒro .nn ali ind rizzi dollp istrr rzioni d: pspnrrire
o degli operandi da cercare. Infine, il bus di con-
trollo supporta nelle sue linee differenti segnali, Nella fase di esecuzione, la ALU del blocco
rome orrelli del clock che sincronizzano il lavo- di elaborazione dati esegue le operazioni indrcate dal codice dell'istruzione
memoria, e all'indirizzo successivo all'istruzione in corso il caricamento sul registro delle istruzioni stesse pren-
d'esecuzrone, si trova quella da eseguire successiva- de il nome di fase di ricerca e si rioete oer tutte le
mente. Questa regola non vale per Ie istruzioni di salto, istruzion i.
Dono rhp il rodiro bìnario delle ìstruzionr è
ci:tn
)LoLU r:rirr+n
LollLcLU cr
'll'rnq6citn
)Ull
dl.JPvJ'rv inizi: ì.
ronictrn ttttLtu tó
MEMORIA PROGESSORE fase di esecuzione. L'unità di controllo interpre-
BUS DEGLI ta o traduce il codice delle istruzioni e genera
rNDtRtzzl
una serie di segnali che invia al blocco di ela-
borazione dati, il quale è formato da una Unità
Logico-Aritmetica o ALU, che sarà incaricata di
BUS DEI DATI E
DELLE effettuare le operazioni logiche o aritmetiche
ISTRUZIONI
che comporta l'istruzione.
Sia gli operandi che partecipano all'opera-
zione sia irisultati generati dalla ALU sono
posti negli indiizzi di memoria specificati dall'i-
Fase di ricerca di un'istruzione
slruzrone stessa.
MEMORIA DI MEMORIA
PROGRAMMA PROCESSORE DEI DATI
BUS DEGLI INDIRIZZI
DELLE ISTRUZIONI BUS DEGLI INDIRIZZI
DEI DATI
14,
8,
BUS DELLE
ISTRUZIONI
I
BUS DEI
DATI
. .
'ì
ferenziati, per cui la memoria di programma si control- istruzione da eseguire, ma dato che ricevono differenti
la con il bus degli induizzi, con linee sufficienti per flussi di dati, questa istruzione ottiene differenti risulta-
discriminare 1 K posizioni, e un bus per trasferire istru- ti Ppr nntor rondirridors i dati intermedi e i risultati che
zioni da 14 bit ll bus che gestìsce gli indirizzi della producono i processori, e necessario che esista una
memoria dei dati ha meno linee, perche questa memo- intercomunicazione fra i microprocessori. Ci sono due
ria ha minore capacità. ll bus sul quale circolano idati modi di ottenerla:
ha 8 linee per supportare i bit di ogni posizione.
'''''': :.'".I'
sequenze di istruzioni vengono eseguite sopra lo stesso ,L ;'I .i 'i :'i It ; i:;,i,..;;
;i 1""r 1;r y' ,1
dato. MISD: Multiplo flusso di istruzioni, unico flusso di È un gruppo di monoprocessori convenzionali, ognuno
dati. Non sono stati costruiti modelli commerciali di con la sua unità di controllo e il suo blocco di elabora-
questi tipi di computer zione dati, associato ad una memoria locale. Lavorano in
parallelo ognuno con il proprio flusso di istruzioni e il
f"rl rì,Ì ili.i t i:ij;, ii:tr.,i+ oroorio flusso di dati. Inoltre se utilìzzano la memoria
Hanno un flusso di istruzioni unico e un flusso di dati condivisa, ricevono il nome di Sistemi a Multiprocessore,
multiplo. Esiste una sola unità dì controllo. che governa se utilizzano la rete di interconnessione danno luoqo a
differenti processori. Tutti i processori ricevono la stessa Sistemi Multicomouters.
;i'i;;;:;i:|::.:ii-i::;":Í;.iil]:Ì,.il:;]:j|!:i!!;||ii:,!,'i!111',1;;ij'..,,...|11ii|i.|1:||.N
||
MTGROGONTROLLER
ll PtC | óF84 denlro
\*,,,*,
PIC fanno un uso intensivo dei registri per realiz- come se sitrattasse di registri. La memoria dei dati RAM
zare le ooerazioni necessarie alle istruzioni che si del PIC 16F84 consta di 90 posizioni da 8 bits ciascura.
stanno eseguendo. Questo significa che normal- Queste celle si comportano come se fossero un banco
mente la ALU del blocco di elaborazione dati, dci rpnicf ri :vonti l: dimenciono dol hvto | 9O ronictri ci
ulilizza come operando il contenuto di un regi- dividono in due grandi gruppi:
stro e il risrrhafo lo nrro archiviare rn un altro reoistro - Registri specifici (SFR). sono 22, e i loro brts hanno
In realtà La ALU necessita didue operandifonte per rea- il compito di controllare e programmare il lavoro delle
lizzare un'operazione. Uno di questi è sempre scritto nel diverse risorse del microprocessore. Svolgono il compi-
registro di lavoro W (WORK) e l'altro provrene da un to di registri di controllo del funzionamento del PlC.
registro, o dall'istruzione stessa quando si tratta di un - Registri di utilizzo generale (GPR): sono le 6B
operando immediato. celle restanti della RAM, le quali sono a disposizione
Data la semplicità dell'architettura del PIC non sono dell'utilizzatore per archiviare idati. Nella figura si
stati implementati nel processore i banchi der registri, mostra la ALU che riceve gli operandi tramite il regi-
utilizzando al loro posto le celle della memoria RAM stro di lavoro W, oppure dalla propria istruzione o dal
banco dei registri, a seconda di come è
selezionato l'ingresso del multiplexer. ll
risultato della ALU si ouò deoositare in W
o in uno dei registri implementati nella
memoria RAM.
OPERANDO RAM
INTERMEDIO
-1 ll
Tutto il contenuto del PlC16F84, sarebbe a
REGISTRO dire, tutte le risorse di cur dispone insieme
mffi
DI LAVORO ai collegamenti delle medesime, è mostrato
nella figura, che presenta l'architettura det-
tagliata di questo microprocessore. Si puo
8--- 8-'-- riassumere tutta la sua potenza descriven-
do i prrncìpali elementi di cui è costituito e
le relative caratteristiche:
i\l
ilIICROCONTROLLER.
tl!
t,,:,
,ta.
t:, i.1! t t! : I
;'j'lt
*ffi-\8ffi
MEMORIA DEI DATI
13
DIREZIONE
-\ ,|3
ffi
coNsrGLl 7'--DIREZIONE
MICROCONTROLLORI
TEMPORIZZATORE
-- 14
INDIRIZZAMENTO DIRETTO 5 m îà3^,
PORTE I/O
nao
ffi ffi
ffi
:s
nar
W
m RA2
lRÈ nae
ffi neo
ffi ner
ffi nez
Architettura base del PlCl 6F84, con icollegamenti fra ivari blocchi che lo costituiscono
. Un puntatore per induizzare la memoria dei codici zioni e realizza sempre ìa medesima operazione, si chia-
lnnr+n
legdLU dr ullu
rrna c+trlz. tnm
^itn lirrolli
)LdLN d urLv ilvsilr, dnrro
uvvs <i
Jr ronictrrnn
rs9rJUdru lcilr- ma fase di ricerca. La seconda e specifica per ogni istru-
poralmente gli indrizzi di ritorno delle chiamate di zione e si chiama fase di esecuzìone.
subroutrne e degli interrupt.
. Un sistema per l'indirizzamenlo diretto e indiretto FASE DI RICERCA
della memoria RAM. ll contenuto del puntatore viene caricato nel bus degli
. Circuitì di Reset e temporizzatore legato al medesi- indilzzi della memoria di programma e contiene l'indi-
mo. rizzo in cui si trova il codice binario dell'istruzione che
. Possibilrtà di lavoro in condizioni di basso consumo. bisogna eseguire. ll PC contiene solo indirizzi di istru-
zioni, mai valori relativi a dati. Nel caso del PlC16F84la ciascuna. La memoria FLASH ammette fino a 'l 000
memoria di programma ha una capacità di '1 K posizro- cicli di scrittura e cancellazione con la massima sicu-
ne di '14 bits. rezza.
Dato che la longitudine di ogni istruzione è sempre Per leggere una memoria da 'l K posizìoni abbia-
r-li 1 /. hitc ,,,-,rlOlld:
h: lcì
l: p{J5slUllltd
nnccihili+r Ol
nr ro<.t: ;-1-lpppnri
lld n COnîene- mo bisogno di indvizzi a 1 O bits, dato che 2'o = 1 .024.
re programmi con un massimo di 1.024 istruzioni; rnol- ll program counter, PC, del nostro PlC, ha 13 bits con
tre è di tipo FLASH il che significa che si puo scrivere e t quali puo indirizzare 2 = B K posizioni diverse. I bits
cancellare elettricamente con l'aiuto di un programma- in più di cui dispone il program counter sono dovuti
tore e un PC. alfatto che l'architettura ditutti imodelli deì PIC della
ll bus delle istruzioni sposta icodici brnari dell'istru- gamma media PICl6CXX e la stessa; pero, in ogni
zinne nrrnt:ta d,al PC f no all'unita di controllo del P'
vrrv uLr nro-
v modello, il costruttore ha implementato differenti
cessore, dove si trova un registro speciale denominato capacita di memoria, per cu, l'utjlizzatore selezronera
Registro delle lstruzioni, che viene caricato con questi la piu conveniente.
valori, terminando così la prima fase dell'istruzione. Nel PlC16FB4 sono state fisicamente implementa-
Questa fase di ricerca del codice dell'istruzione da ese- te solo le prime 1.024 posizioni degli B K possibili
ottire e ttnttale ner tlrl'p lo iqtrr rzinni riol ronqr{gri6. della mappa di memoria. ll primo indirizzo è lo
0000H, e l'ultimo valido è lo 03FFH.
FASE DI ESECUZIONE lindirizzo 0000H e riservato per il Vettore di Reset,
Con il codice dell'istruzione collocato nel Registro oilesto sionifica Lr r! r-,,^il-
che ; r- l.JU)l4lUllC I cui va il
9uEllo E lo ^^-i-r^^^ c
delle lstruzioni, l'unità di controllo procede a deco- puntatore ogni volta che si effettua un reset. Per que-
dific,arlo c,a intcrnrclare a Che istrUziOne Si riferisce. sto motivo il programma di lavoro del microcontroller
Terminata l'interpretazjone, viene generata una deve iniziare obbligatoriamente all'indirizzo 0000H,
serie di segnali di controllo che si applicano al resto dato che l'istruzione che cortiene e la prima che siese-
degli elenenti, dando via all'esecuzione La maggior gue dopo il Reset.
parte delle istruzioni implica il realizzarsi di un'istru- Se vogliamo iniziare il programma all'indirizzo
ziano laaiez n:ritmotir: tinn <nmma
,,,,,,, -Jttrazronr,
cr 0005H, dobbiamo mettere un'istruzione di salto in
AND, OR, rotazione eccetera. questo indirizzo nel Vettore di Reset, sarebbe a dire,
Per effettuare le operazioni esiste all'interno del go to 5.
blocco di elaborazione dati una unità denominata
ALU. La ALU del PIC 1 6FB4 riceve due operandi, uno
arriva dal registro di lavoro accumulatore W e l'altro MEMORIA DI
puo provenire dalla propria istruzione, se si tratta di PROGRAMMA
operando immediato, oppure da uno dei registri del
h:nrn rha a imnlallppf2'to nplle nosiziOniPvrr4l della
memoria RAM dei dati.
A volte bisogna estrarre o introdurre informazio-
ni nel micronrocessore
,,,,-,-F,-lY-, ner otreslo ahhiamo due
porte, la A e la B, che dispongono di linee collegate l3\
con ipiedini di uscita dell'integrato, attraverso i
r,.tt it,
11,.;;L ::, t..
'rllr
lil
MICROCONfROTLER
ll PIC | óF84 denlro
5 più signifìcativi al PCLATH, così come è rllustrato nella puntatore, ir modo che durarte la fase di carica ilvalo-
figura. re passa oa puntatore al livello 1, e gri altri valori scen-
ll rpoistro PCI e sitrrato all'induizzo 02H del banco 0, dono di un livello. Quando lo stack si scarica, il conte-
p rinptr rto npl h,rnro 1 dolla manna dei reoislri SFR della i^r ri,.^,r^
^.,+^ Utrt
ItuLU ilVCIU rI pd))u
^---a al pC e lrrtti nii altrr ValOfi Sal_
-,
memoria RAM. ll registro PCLATH si trova anche dupli- nnno di rrn livello oresto siorifica che l'rrltimo valore
cato all'indirizzo relativo 0AH dei due banchi. che è stato caricato e il primo che si scarica (LIFO: Last
Input First Output)
Lo stack serve per scrivere temporalmente gìi indi-
Associato al puntatore esiste una memorta ttpo LIFO a rizzt delle istruzioni, e si usa sempre automaticamente
R nosizinni da 1 3 hiîs oonrrni che si rhiama stack. se si ha la chiamata di subroutine (CALL) o se avviene
Dato che e di tino llFO si carica e si scarica tramite il un interrupt. In entrambi i casi bisogna memorizzare gli
suo livello superiore, che e drrettamente collegato al induzzi di ritorno al programma principale, infatti ter-
mìnata la subroutine o il programma legato all'inter-
rupt, s ritorna a programma principale.
A volîe oossono esserci situazioni di annidamenti:
t2 CONTATORE Dl PROGRAMMA (PC) O dall'interno di una subroutine ne viene richiamata
un'altra Ogni volta che questo succede, bisogna
mernorizzare nello stack l'indiizzo di ritorno. Visto che
non esiste un segnaiatore che segnala il rierrpimento
:8 ...l^ll^ )LcLN,
uElv )!o o
-+--1, -+- -l ^"-
p,ùgrammatore tenefe conto degli
ffi
annrdamenti ner evrtarp rhp srrneri nlr R v,alori e debor-
di nordpndo informazront.
A differpnza deoli .rltri nroressori lo stack del
PIC 6FB4 non e accessibrle da parte dell'utilizzatore e
1
,y'
stri snecificr (SFR) i cui bits controllano il funzionamento
SELEZIONE ooH delle risorse interne del microcontroller. Funzionano
DEL BANCO
come registi di controllo programmabili. In questa zona
INDIRIZZI
DEL BANCO
124 SFR abbiamo due posizioni non implementate, che occu-
:
t;
bit RP1, che occupa la posizione 6 nel Clad( / CoIidoG tn tetlEo €le r I btts xxxx xxxx qsuu úsqu I
che, come abbiamo gia detto, il BIf BIT BtT BIT 8tT BIT BIT BIÎ VALORI DOPO VALORI ALTRI
?6543210 IL RESET
banco 1 è mappato sopra il banco 0. tho e @rúedsb di fsR gq lndirÌaÉ lq reddià (@r è s rtgiÉtn firt€)
FÉSET
Or rindi la oesîione dell'accesso ai ftOFU* INIDG TOCS TOSE P{tA FSz P51 PSO lttl tlll îf11 l11l
Èy$ nm rlgntticttuo d€l PC 0000 oooo ooo0 0000
banchi, consiste nell'impostare il valo- IBP NPT RPO TO* Pb* Z DC C OúOltxxx 000q quuq
re del bit RPO, che e il quinto del lndtnEsrunto díetto @ lrtDf xxxxxxxr uquú uuuu
. conft$ruloÉ lortr A ---l {tl't ---l l1l't
Registro di Stato, rl quale occupa l'in- confiEHrfsG por& B 1!r1 tltl 1111 1t',ll
t{on lnFlenènqÉo 5l Lggè ffi '0"
diizzo 03H dei due banchi dell'area . EEIF WHEÉE WREN WÉ fiD ---ó x0o0 ---- q00O t
ièglelo tlt .o[tnlto :EPfotil (mn Egùfs fitko]
SFR. Ci sono due istruzioni nel reper- è sn
- CttfEwdm?cttA ".'O 00OO '.-0 0Oo0
torio del PIC che facilitano enorme- GIE EEIE ?OfE INIE RBIE 'ÍOIF INTF RBIF O00O oóOx Oo00 000u
Indirizzamento
delta memoria dei dati RAM
,,',1;,.,1.,, dati gestiti dalle istruzioni prima dell'esecuzio-
La memoria dei dati RAM del PIC della gamma media e
dotto dall'esecuzione dell'istruzione è il risul- organizzala in quattro banchi da 128 posizionj con 8
tato. Nel PlC16F84 i dati, in generale, occupa- bits di dimensione cadauna. Nel caso del ptC16FB4
no indirizzi della memor a dei dati RAM, sono state implementate solo le prime BO posizioni
sarebbe a dire, registri. Esistono dati speciali il cui (00H-4FH) dei banchi 0 e 1.
valore non deve essere perso quando si toglie tensio- Per tndvizzare una posizione della memoria RAM in
ne al srstema, per questo vengono scrrtti in una zona un PIC bisogna specificare, in primo luogo, il banco in
di memoria EEPROM, che studieremo successivamen- cui si trova, e dopo, I'induizzo relativo al medesimo. per
te. ll dato puo anche essere contenuto nel codice selezionare il banco ci sono due bits nel Registro di
binario dell'istruzione, nel qual caso si chiama ope- Stato dell'area SFR della RAM, che si chiamano RpO e
rando immediato. RP1, e occupano le posizionr 5 e 6 delsuddetto registro.
tutte le istruzioni sono realizzate
Normalmente Per determinare la posizione relativa in un banco, biso-
con un'operazione elementare logica o aritmetica gna specificare 7 bits per poter formare 27 = 128 indi-
nella ALU, la quale riceve uno dei due operandi fonte rlzzi possibili.
dal registro dr lavoro W, che è stato precedentemen- Esistono due modi per indirizzare la RAM: l'indiriz-
te caricato in modo adeguato. L'altro operando, se zamento diretto e quello indiretto.
non è immediato e quindi è già dentro l'istruzione,
arriverà da una posizione o da un registro della RAM. ' 'r
Infine, come è indicato graficamente nella figura, il Questo modo per definire la posizione nella memoria
risultato della ALU è caricato in W e in uno dei regi- RAM, dove si trova il dato ricercato, inizia scrivendo nei
stri della RAM. due bits RPO e RP1 del registro di STATO il codice corri-
spondente al banco. tindirizzo all'interno del banco è
incluso nel codice della propria istruzione, dato che dei
MEMORIA
DEI DATI
éilffire
;niúiul-ffE
rc
rc
rc ffirT6jSTATOo
ffitr ffi
ffi
re-rc
*ryre
sELEztoNE DEL BANco "2
8-: :re
ryrc ooH
oo ol 'to
rc
ffiG
ffi
DIREZIONE
(coDrcE oP
TSTRUZTONE)
Ìre
rc
rc 7
gH$Effiffi
ruru
8.r 07t
BANCO O BANCO I BANCO 2 BANCO 3
Gli operandi fonte della ALU arrivano o dal registro W Nell'indirizzamento diretto i bits Rp0 e Rpl del Registro di Stato
o dal multiplexer ll risultato finisce o in W o in una posizione selezionano il banco, e i 7 bits
della RAM meno significativi dei codici dell'istruzione, la posizione relativa.
occupa l'indirizzo 00H deì due banchi dell'area SFR. In
STATO realtà il registro INDF non è implementato fisicamente,
pertanto quando si fa riferimento a questo registro, si
accede ad un altro reqistro specìf ico dell'area SFR, che
si chiama FSR. Nei 7 tits meno significativi del FSR si
00H
trova il valore dell'induizzo relativo al registro cercato
nel banco selezionato.
{ OBH
0cH Listruzione con modo di indirizzamento indtretto,
ultlizza come registro operando INDF, pero il PIC accede
4FH al contenulo del registro FSR, che occupa, oer duplrca-
50H
to, la posizione 04H dei due banchi della RAM.
Non solo e diversa la maniera di ottenere i 7 bits di
] BANCO O I BANCO 1
indirizzo, ma nel metodo indiretto cambia anche il
modo di specificare il banco. In quello diretto si usava-
Per selezionare il banco nel PIC 1 6FB4
no i bits RPO e RP1 per scegliere il banco, nel modo indi-
bàstà scrivere nel Regislro RP) del Regtslro di jtato. retto si usa il bit 7 - il più significativo - del regrstro di
STATO, che si chiama IRB e il bit 7, il più significativo,
del registro FSR (ricordiamo che i 7 bits meno significa-
14 bits che la compongono, i 7 meno significativi sono tivi contengono gl indirizzi ativi). Dato che nel
re
riservati a questo compito. PlC16FB4 abbiamo solo disponibili i banchi 0 e 1, il bit
Per caricare il codice del banco nei bits RPO e RPl, IRP der registro di stato varra sempre 0.
es stono, come abbiamo già visto, un paio di istruzioni Se, per esempio, vorremo selezionare in forma indi-
molto efficaci, capaci di mettere a I o a 0 un bit di qua- retta la direzione 12H del banco 1 in un PlC16FB4,
lunque registro. Per esempio, se vogliamo accedere al
banco 2 dobbiamo caricare RP1 = 1 e RPO = 0, visto che
: STATO IóFSRo
ilffi
o
sr usano le ìstruzioni "bsf STATO,6" e "bcf STATO,5".
Nel PIC 16F84, l'indirizzamento diretto e più sempli-
ffi *t
sELEzroNE oeL enNco
ce dato che la memoria RAM è solo implementata nei 00 0l tt
prmi due banchi, il banco 0 e il banco 1. Questo sup-
pone che con un solo bit si scegtie il banco, in realta e
usato solo il bit RP0, essendo indifferente lo stato che
ha il bit RPl 5e RPO = O, si accede al banco 0 e se RPO
= 1, si accede al banco 1 . Rimangono gli altri 7 bits
necessari per indirizzare una delle B0 possrbili posizioni
che ci sono all'interno di ciascun banco. SAl.lCO O gAl'KO I BAN{Ò 2 SANCO 3
' , I i, '
Nell' indirizzamento indiretto il banco si sceglie con il bit
piit significativo del Registro di Stato e quello pru sgnificativo
Quando si utilizzano tecniche avanzate d programma-
di FSR. L'indirizzo relativo
zìone, o si lavora con linguaggi di alto livello come il C, di
è contenuto nei 7 bits meno significativi FSR
così interessante nei srstemi con microcontrollori, è
molto conveniente disporre di un modo speciale per
f indirizzamento dei dati nella memoria RAM. Si tratta cominceremo caricando in FSR il valore '12H (0x'12), per
'1
del modo di indirizzamento indiret'to, nel quale il codi- I 7 bits di minor peso, e metteremo a il bit 7 dt mag-
ce dell'istruzione non contiene i 7 bits che formano la ninr no<n dal ronictrn nor <ronlipro il h,anco 1
Le porte
di ingress o/uscita
lprocessore che contiene il
a - -t .--^
l'lL lbfó4 tnat|7za e^.---^^lt^
Íaccogile PROCESSORE
icodici delle istruzioni resi-
denti nella memoria di pro-
gramma, le decodifica, cerca
nìi nnor:ndi lo pcpnrrp p nrndrrrp doi
risultati che memorizza. Questo è il
tipico lavoro necessario per processa-
ro rrn'i<trr rzinnp noraì : rho crnnnT
l'nhiottivo fin:lc p nrrollO di COntrolla-
re una serie di dispositìvi esterni che
configurano il sistema che dobbiamo
nn\/orn:ro lìrrocti di<nnqitivi rho
YvrJL'
l\:;::1:r::::ti:,,i,,,4,?41@útt9$||"/aaaa*att
valore di un bit, in modo che
quando il programma che sta ese-
guendo il microprocesso.e legge
questa linea, riconosce se c'è un 1
o uno 0. Programmando una di
queste linee di l/O come uscita,
potremo collegare ad essa una
periferica di uscita, come un LED
e quando il programma va a scri-
vere il valore di un bit sopra que-
sta linea, se è un 'l il LED si illumi-
nerà, e se è uno 0 il LED si spe-
gnerà. ll collegamento di una
neriferir:
}."''."' d'innrpcsn in nrrpcto
caso un interruttore, e di una
periferica di uscita, un LED, è illu-
strato nella figura.
Può capitare, in alcuni sistemi,
che i livelli logici delle periferiche
I diodi LED sono le periferiche digitali di uscita più semplici e utilizzate
siano al contrario rispetto a quelli
indicati nella figura; per esempio,
sono periferiche di ingresso introducono il valore di un !,
se l'interruttore e aperto, viene introdotto uno 0 nella
bit su di una linea, mentre se si tratta di periferiche di i
linea di l/O, e se è chiuso un 1 .
e
À
programmara come In9resso,
nrnarrmmr*r
se e aperto o chiuso, questo perché leggendo la linea di ingresso esso riceve un 1
sara possibile collegare ad essa un se e dperto o uno 0 se è chtuso. ll LED della linea di uscita
e controlldto dal processore perche lo accende scrivendo 1 e lo spegne scrivendo 0
dispositivo esterno che introduca il
;1;:'11;,i+1;:11.+i+i.i:'i,Èl.l;i=ltjl..e"+l.loll:+'r:l.+l.È;.+#'oÈ1Ì,.:;!1#;tt,1]tli1i,f.+i.íiÉ11iiii'.i;;t1i;.ii!
processore ìa leqqe.
Ooni reoistro nel ouale si collo-
cano le informazioni da trasfe-
l
INTERRUTTORE
'o+v;i rire ha associato un altro regi-
qtrn rho <or\/o nar COnfigUfafe
-."-'-
LINEA DIGITALE DI INGRESSO ognr ilnea come Ingresso o
,,--i+-
uscrta. l-La poria A na assocrato
^^"+- A I
I
insieme ai loro associati TRISA
e TRISB, occupano gli indirizzi 5
e 6 di entrambi i banchi della
memoria, come si vede nella
F---F FFF-FFFF figura.
ÈoNrO \CÈOàQN-O
I:l
g***rrrllÍf Íf lllllllti:srzrììlìiìì:ì:ìll.:
P t8 MIGROCONTROLTER
rytzlzv,{tlM&}M,llrrlrf *i\\\ìss{.wj,
5i desidera configurare come ingressi le linee RA4, RA3, RA2, e RAI della PORTAA, mentre la linea RAO deve funzionare come usrita. Realizzare il programma
corrispondente.
5i deve caricare nel regisiro di configurazione TRISA il valore binario "xxx11t10", I tre bits di maggior peso di TRISA non hanno significato né funzione, dato the la
P0RTA A dispone solo di 5 linee. Scriveremo in quefi registri tre zeri, in modo che il valore da caricare sarà "000111'10", che corrisponde al valore 1!H. ll programma
richiefo dovrà scrivere 1EH nell'indirizzo 5 del banco 1, dove è indicato TR|SA.
N0TA: in assembler i valori esadedmali si scrivono dhettamente preceduti da 0x.
Al momento dell'atcensione del PlC, o in caso di reset, tutti i bits de' registro di configurazione TR|S vengono posti a t, il che signifita che tutte le linee delle porte
rimangono inizialmente configurate come ingressi,
Preparare uî programma per configurare tutte le linee della porta A come ingressi e le linee della porta I come uscite,
Dovremo scrivere nei 5 bits meno siqnificativi di TRISA un I e in tutti i bits di TRISB uno 0.
l-r r ^^ I-^rianle
Ll
l^
lr
r\/tutrr\ lp o.,,t
,L
:^
llvullrr )l i"t.'eI
|r si I Cr ! scono le tr:qfor ro Por lonnoro I COntenUtO df Una pofta Cl'ln-
nfo.rr.rzinn dinilali dcf'npnnn nli ,.nresci e le uSCite. ,,- .- rho
nro<<Ò , rl^rÒ /Llle
rnni cno- .l . drure hÒ l.
ld Uel llel lLcl CO" SpO'-
^^.'{^.i..
Realizzata la conf gurazione delle inee l/O scrivendo net dente vi ha deposrtato, si utiiizza l'istruzione " movf
'pcist' TRIS nèr nÒ'tzrp :l nrnreccnro''in'Oranazione PORTAA,\/", con la quale r dato presente nelia porta
.^^ a."i',1
Llltr c'lvo Ud r'nî aar'{6t1,1 2 d'innreccn
U ld Pcll,!.'!u J I yr rnl on.,
Lqdld d i-rlrl passa a reg stro w.
^î
r.1 rr-: nnr+: dnhhiàmo cO'o lenOprp I r-nrler_tO
v ,LvYri del Per spostare un dato verso una porta d'uscita, prma
rY,JLr v rli arroctr ^^"1a, OSSia, PORTAA O PORTAB.
ranicrrn s ca';ca qL,est'- I ro rel reg slro W e dopo s esegue
A contrario, se si deside'a po'tare da processo.e il 'rstruz one "rnov\r/f PORTAA" ll valore contenuto n W
va ore dell'rnformazione digrtaie ad una penfer ca di viene spostato sui a PORTAA e le linee d uscita corri-
usc ra coi egata al oin d -na porra, conI gurata co-e spondenti portano verso rl mondo esterno i bits corri-
uscita, basta scrvere il suddetto registro con lva ore da spondenti
Caratteristiche
detteporteAeB
-i' ri'
i ,r1 1::1.;iilgi .'i 'i.,È r.i,i'r Él Í;.r i liT ;i {" :'ì 11 il i: i'ì :{ il È'+ 5
Questa porta ha solo 5 linee digitalì che st collegano Le ìinee RAO-RA3 accettano livelli di rngresso TTL e
con l'esterno mediante cinque pìedini denominati RA0, CMOS. Nella figura della pagina seguente è mostrato rl
RA1, RA2, RA3 e RA4. Essi occupano le posizioni supe- circuito elettrico di adattamento di questt pin con le
riori delle due file di cui è composto il contenitore del linee di controllo e con quelle del bus dei dati del pro-
PlC16FB4, come mostrato nella figura. cessore, Leggere una linea della porta A significa cattu-
Le informazioni che entrano ed escono da questi rare il livello logico che essa ha in quel momento, e que-
piedini passano temporaneamente nel registro POR- sto viene fatto ogni volta che si esegue l'istruzione
TAA, che occupa I'indtrizzo 5 del banco 0 dell'area dei "movfw PORTAA". Al contrario, quando le linee della
registri specifici SFR della RAM. Inoltre per configurare porta A lavorano come uscite, lo fanno tramite il latch
come ingresso o uscita ognuna delle linee di questa interno, che mantiene stabìle nel tempo l'ultimo valore
porta disponiamo di un registro chiamato TRISA, che caricato in PORTAA.
occuoa la posizione 5 del banco 1 . Come ricorderete. se Come sì puo vedere dalla figura, per portare un
in un bit del regrstro TRISA si scrive un 1, la linea della livello logico su una linea della porta A, prima vlene
porta A corrispondente f unzionerà come ingresso, e se scritto nella linea corrìspondente del bus interno dei
si scrive uno O funzionerà come uscita. Ogni linea della dati e viene attivato il segnale di WRìTE, il quale per-
porta si configura in modo indipendente, per cui nella mette la scrittura di questo livello sul flip-flop dei dati.
stessa porta potremo avere contemporaneamente llnee ln questa situazione il flip-flop di configurazione
di ingresso e di uscita. dovrebbe contenere un livello 0, ìn modo che si com-
ll piedino RA4 è speciale, dato che oltre a compor- porti come un'uscita. Con questivalori Ia porta OR avrà
tarsi come una trpica I nea di l/O, si puo programmare uno 0 alla sua uscita e la stessa cosa succederà alla
perche serva come ingresso di impulsi esterni per il con- porta AND. Questi valorì ortgineranno la conduzione
trollo del timer TMR0, che studieremo più avanti. del transistor PMOS superiore e l'interdizione di quello
NMOS inferiore. In queste condizìoni il pin
di l/O resterà collegato a VDD e quindi avrà
livello alto.
Dato che la linea dt uscita è "lecciata"
R/42- (cioè e comandata da un latch) conserverà il
suo valore logico sino a che non scrlveremo
na*r J? g
ìr nuovamente sul flip-flop D.
s Se una linea funziona come ingresso,
RA4/TOCKI$ I
quando si attiva il segnaie READ il livello
ff'
logico depositato ìn essa dall'esterno, passa
alla linea corrispondente del bus interno der
dati, e il dispositivo ad alta impedenza che li
unisce diventa conduttore, Dato che il pin è
programmato come ingresso, i due transi-
stor MOS rimangono bloccati, e la linea di
uscìta passa ad alta impedenza. Quando si
legge un piedino, si rileva il valore che ha in
Posizione dei piedini della porta A quel momento, e non deve essere memoriz-
l ;rliìì,11ì,ììì,ìììrì1rìuuuuuuuttììììrìùrrr: : .rrl
$ii{Ft:Èe.l
-lrlrìlììuììì.ìiirllr'llllllllllìììììì:llrlllllilrllrlìlìì
.-{ÉEl í C*l ,tÉi.s:i +eli ì
'l
Voo
LINEA DEt
BUS DEI DATI
WR
SCRITTURA
PORTA A
{RA3:RAO)
WR
SCRITTURA
TRIS A
BUFFER
VssE INGRESSO
TTL
RD
LETTURA TRIS A
RD
LETTURA
PORTA A
Circuiteria interna che collega i piedini RA?-RA3 con le linee di controllo e il bus dei dati interno al processore
l',]ììì
-RB7
<-* RBó
*rtl
to ali'indirizzo 6 del banco 1 dell'area SFR della RAM. ..:t
j:rf
Come succedeva con ia porta A, anche la poria B RB2
attiverà tramite un livello alto, verrà generato un inter- Le quattro linee piu significative della porta B (RB4-
rupt. RB7) insieme. possono svolgere un compito molto inte-
ressante e pratico, orientato alla gestione delle tastiere.
Le tastiere matriciali hanno i loro pulsanti dispostì nella
A tutte le linee di questa porta è possibile collegare confrgurazione di quattro file per quattro colonne. Per
delle resìstenze di pull-up di valore elevato. collegate a rilevare l'attivazione di un pulsante e individuare quale
loro volta al positivo della tensione di alimentazione. Se sia questo pulsante, si collegano le quattro file della
si vuole realizzare questa connessione dobbiamo met- tastiera ai oiedini RB4-R87.
tere a zero il bit RBPU# che c'è nel registro specifico Le quattro colonne si collegano agli altri quattro pie-
OPTION della RAM. Quando si produce un Reset ven- dini della porta B (RBO-RB3), in modo da introdurre un
gono scollegate tutte le resistenze di pull-up, e tuttì i lìvello logico alto in modo sequenziale, uno dietro l'al-
piedinì della porta B vengono configurati come ingres- tro. L'attivazione di un pulsante permette ìa comunica-
si, come succedeva con la Porta A. zione di una fila con una colonna, pertanto si avra un
P (pull-up)
RD
TETTURA PORTA B
DAGLIALTRI
PIN
RB7:R84
Colleqamenti clei piedini RB4-RB7 can le lrnee di cantrollo e quelle del bus dei aati rnierno al processore
livello alto, sia sulla fila che sulla colonna dove e srrua-
:
to il pulsante premuto.
Si possono programmare i quattro piedini piu signi- Le tastiere piu comuni, impiegate nelle applicazioni con
ficativi della porta B, in modo che se uno di questi cam- microcontrollori, dispongono di l6 tasti, numerati da 0
bia il suo stato logico viene generato un interrupt. a F e disposti in matrice di quattro file per quarrro
Quando si attiva un pulsante, cambia il livello logico di colonne. Ogni volta che si attiva un pulsante il proces-
un piedino e si genera un interrupt, la cui routine indi- sore deve riconoscere jmmediatamente quale sia stato
vidua il pulsante premuto conoscendo la fila e ta coton- pigrato La possibilità di generare un interrupt quando
na che sono passate a livello alto. varia lo stato logico di una delle quattro linee più signi-
ll circuito elettrico di adattamento dei piedini RB4- ficative della porta B, semplifica la rivelazione della
RB7 e abbastanza complesso, ed e mostrato nella figura. tastiera, per questo si collegano, come rndica la figura,
I prediniRB6 e RB7 inoltre hanno una funztone le quattro linee meno significative della porta B con le
speciale, durante la funzione di scrittura del program, quattro colonne, e le quattro file con le linee RB4-RB7
ma nella memoria FLASH. La scrittura in memorra sr della porta B.
realizza inviando le informazioni in modo seriale tra- Le lrnee meno significatrve della porta B vengono
mite il PC, per cui sono necessari il segnale di clock e messe a uno in modo sequenziale, in modo che in
ilvalore binario di ogni impulso, ossia dei dati in serie. ogni momento ci sia una linea a livello logico alto.
ll piedino RB6 riceve il segnale di clock e RB7 l,ingres- Se non ci sono pulsanti premuti le file sono scolte-
so dei dati. gate dalle colonne e il livello logico alto inviato alle file
non puo passare alle colonne, di conseguenza non
I , :' ,"',I
cambierà lo stato di RB4-R87.
Ogni linea d'ingresso puo erogare una corrente il cui Premendo un pulsante, ogni volta che la colonna
valore massimo arriva a 20 mA, mentre un,uscita puo corrispondente a questo pulsante invra un Iivello logi-
assorbire fino a 25 mA. Dato che esiste una limitazione co alto, questo passerà alla fila associata e cambierà
nella dissipaztone massima della potenza del chip, l,as- stato uno dei quattro piedini piu significativi della
sorbimento massimo di corrente della porta B e limita- porta B, gene.ando un inte'rupt.
to a 150 mA, mentre l'erogazione massima è limitata a La routine dell'interrupt verifica ia f ila da cui arriva il
100 mA. La porta A, con meno linee, raggiunge la cor- livello logico aito e la colonna da cui e partito, per
rente massima di assorbimento di B0 mA e 'l 50 di ero- determinare il pulsante che è stato premuto, in pratica
gazione. quello che si trova all'incrocio fra ia fila e la colonna.
RA2 1
+Vcc 'nqs 2
^
- RBo 6
ffi
RB2 8
RB3 9
Ptc r óF84
istruzioni - che è l'unìca cosa che sa fare - e mo, si configurano quattro tipi di oscillatori:
necessaria la presenza di un clock, il cui Tipo RC: è un oscillatore di basso costo poco stabi-
impulso determina la velocità di lavoro. le. Necessita solo di una resistenza e di un condensato-
', ,' L'oscillatore che genera questi impulsi è re esterno.
implementato dentro il circuito integrato, pero, per
regolare, selezionare e stabilizzare la frequenza di
lavoro, dobbiamo montare esternamente alcuni com-
ponenti, fra i piedini OSC'l/CLKIN e OSC2/CLKOUT,
che corrispondono rispettivamente ai piedini 15 e 16
del contenitore.
Un'istruzione impiega normalmente 4 periodi di
clock ad essere eseguita, e se sitratta di un'istruzione di
salto, impiega il doppio.
4t
b.tr
*}H
CRISTAL
é3, *=s$j,
g *3 *.{" àj g,lE
-**StEtLeè==*#E
lmpiegando alcune porte logiche TTL
Schema elettrico dell'oscillatore di cristallo a risonanza parallela
molto spmnlici si nnssono costruire
+F + :,ìÈ E €i4 +:$ $ .€ e+ *.t :*, $'# t*É ÈH +ÉÉj+ iÈ'* *+É
MIGROGONÍROLtER
Ripaero dei, concelti sullei frequenzc di
ut '
74ASO4 74ASO4
XTAL
'.n,
"t
:i+irit+;;:;:'..-:.r+î:::Ì:;ti::::iiìl.iljiia:i::ai;ii1:,Ì:tii!r'r:':*;
il
i,
oscillatori che hanno un otttmo comportamento e nella generazione della frequenza, che e determinata
un'ampia gamma di frequenza. Ci sono due tipi di oscil- Oar crlStallO 0r QUafZO.
latori al quarzo: a risonanza parallela e a rtsonanza in I
PAROLA DI CONFIGURAZIONE
13-
TEMPORIZATORE "POWER-UP"
WATCHDOG
TIPO OSCTU.ATORE
Distribuzione dei bìts nella parola di confiqurazione con i quattro campi che la compongono
+ia"ÈÉl!.tli!i;r;,ì+ +i++iÌ :::+i:l+..*'4,;,.+3fla':i *t;a;iìi ,'f 1.'1qq+.+11:11;+ # ii ti+ r*+ l*i ;rf sii:'Èr:iÌ È"i:É *í gÈÉi+
gramma dell'applicazione, dobbiamo memorizzare in tando le copie. Owiamente il programma non si potrà
essa un determinato valore binario che andrà a definire nemmeno sovrascrivere, né sarà permesso l'accesso alla
alcune caratteristiche fondamentali del funzionamento memoria EEPROM dei dati.
del microcontrollore. Se si prova a modificare i bits CP passando da 0 a 'l
La parola di configurazione ha 14 bits che si divido- si provoca la cancellazione completa della EEpROM.
no in 4 campi. ognuno dei quali controlla una caratte-
ristica del comportamento del PIC: i. i'.!.,1,"i')ì,i;; i, 1 ; I i-1 i. i ,-rrr i :" i:t: iti ' !,::
'1. Campo dei bits che selezionano il tipo dì oscillatore. ll WTD o Watchdog Timer, è un temporizzatore che
2. Campo dei bits che controllano il Watchdog. serve per controllare che il corretto sviluppo del pro-
3. Campo dei bits che controllano il temporizzatore di cesso di elaborazione delle istruzioni avvenga secon-
"POWER-UP". do una determinata cadenza. Se per esempio, il pro-
4. Campo dei bits che controllano la protezione della gramma entra in un ciclo chiuso da cui non riesce più
memofla. ad uscire, il Watchdog si attiva e resetta il program-
ma.
La parola di configurazione dispone di un bit chia-
mato WTDE che controlla il Watchdog. Se WTDE = i
Quando sr memorizza un programma df applicazione in il Watchdog è attivato e controlla l'elaborazione delle
un PlC, bisogna scrivere la parola di configurazione, e in istruzioni, Se WTDE = 0 il Watchdoq è disattivato.
uno der suoi campi dobbiamo specificare il tipo di oscil-
latore fra i quattro possibili, con cui funzionerà il micro-
controllore.
A questo scopo sono riservati i due bits meno signi- ll lemporizzatore Power-Up controlla un tempo fisso
ficativi di questa parola, che si chramano FOSC'1 e dt 72 ms e serve ad evitare problemi durante il colle-
FOSC0, nei quali bisogna scrivere i codici indicati nella gamento iniziale della tensione di alimenTazrone al
tabella per specificare l'oscillatore utilizzato. m icrocontrollore.
A volte la tensione di alimentazione, nel momen-
to immediatamente successivo all'accensione, è
,|
instabile e conviene ritardare la sua applicazione alla
RC I
circuiteria interna del PIC sino alla sua comoleta sta-
bilizzazione.
Nella parola di configurazione il bit pWRTE# si usa
XT 0 I per attivare o disattivare il temporizzatore Power-Up,
che ritarda la connessione dell'alimentazione esterna
alla circuiteria interna.
. ': - :, : :
i: -:
ru
IMPULSI DI CTOCK
SEGNALATORE
00 l
. ,,',, . .
fl possr0rlr.
Abbiamo un solo divisore di frequenza, cre
-J^..^E))ct c d))r
' ucvc ----agndto al TMR0 o al
, Watchdog; per fare questa scelta disponiamo
di un bit nel regLstro OPTION, chiamato PSA.
ll contatore TMR) occupa l'indiilzzo 1 del banco 0 Se PSA = 0 il divisore di frequenza è applica-
e il registro OPTION, di cui alcuni bits programmano il funzionamento to al TMR0, con il quale funziona come
del TMR), occupa l'indirizzo 1 del banco 1.
Predivrsore, o Prescaler. In questo modo gli
impulsi del clock passano prima attraverso ìl
sti bits si chiama TOCS, e se vale 1 il IMR0 funziona divisore di frequenza, vengono divisi per il valore scelto
come contatore di impulsi, se vale 0 come temporizza- e sono poi applicati al contatore TMR0 per ottenere l'in-
tore di ulilizzo generale. L'altro bit chiamato TOSE, sce- cremento di valore. Gli impulsi del clock possono pro-
glie il fronte attivo per il conteggio del segnale applica- venire dal proprio oscillatore interno, con una frequen-
;:11
)%F- tffisf-*
**FW:^ffi*n, PSA
sErEzroNE RANGE
oPTtoN
Schema interno del TMRj con i bits di programmazione del registro OPTION.
24
za di Foscl4, o da impulsi esterni applicati al piedino vernano il comportamento dei temporizzatori TMR0 e
RA4/TOCKl. Questi impulsi passano al Prescaler che li WDT; inoltre il bit RBPU# serve per collegare o meno
divide per un valore impostato dai tre bits meno signifi- lo rp<iqton zo dr nrrll-r rn doll: nnrt: R I In :ltrn hit
cativi di OPTION (PS2, PS1, PSO). yuurL crrì
INITFDG doridp 611;lp )dld il rnn+n dLLIVU
ll fllUlrLC r1-ii,in nor
pcl l,intar_
llllLCl-
Per calcolare il tempo che controlla il temporizzato- lInt
rupL a<tornn
sJrsr rrv rho
!rrE nni.. d c))crc rnlJnar+n
LUtìtr9dtu rllr
dtd narlr
vwLt PUtLd
re TMR0, dobbiamo tener presente il valore caricato ini- RB0/lNT. Nella figura è indicata Ia distribuzione e la
zialmente e il fattore di divisione del Presca er, in accor- nomenclatura dei bits del registro OPTION così come
do ron la spnrrpntc formula: l: f r rnzinnp rhp nnnrrnn di esqi romnip a seconda del
|||/|!9J!t
ll Ytfcrfchdog
Un cane
che morde
#
È-
.{..,,:
3.t:
;:':..
::.:: :
ì.,,
ìr'
=.!: .,
Qcre-sto eArbo, un cane mtcrorobat castruita dalla Sony, che sa anche morclere. E una mascotte dtsegnata
D-or coloToche abitano rn città, e non devc:rtt,t preoccuparsi di portare tl cane a spasso, dargli da mangtare, evitare che abbai di rtatte ecc
PuÒ capire 14 messaggt, o ordtni del padrr:ne, rrnpara percl'te
è senstbile alle carezze e ai castrgttt. Gioca con la palla, segue rl paclrone, abbara, dice rl suo nome, alza la zampa quando fa prpì ecc.
Cort la sua telecamera vtgila -o rnorde li estraner, e non ha ntente a che vedere con tl
Watcltcloq cite contiene rl PIC e che dev-. solo resettare rl mrcrocontroller, quando ll programma di lavoro non è eseguita normalmente
bene, prima che il Watchdog termini ìa sua temporiz-
(Watchdog Timer) è un contatore ascendente a zaztone, il programma gli fornisce un'istruzione che lo
B bits che ha Ia proprietà di mandare il micro- cancella e reinizia ìl conteggio, in altre parole effettua
+ controller in reset ogni volta che va in overflow. un "refresh". Se il programma si è "piantato", e non
. n differenza del TMR0, il Watchdog non dispo- sono state eseguite le istruzioni secondo le previsioni, il
ne di segnalatori, ne genera interrupt alla fine del ciclo, programma non fornirà l'istruzione di refresh, di con-
l'unica cosa che fa e provocare il reset del microproces- seguenza il WTD andrà in overflow e verrà generato un
sore, il quale ricomincia ad eseguire il programma prin- reset. Con quest'azione si ottiene che il microcontroller
cipale dalla prima istruzione 0000H della memoria dei inizi nuovamente il programma, ed eviti la causa del
codici (Vector Reset). blocco. Un programma si puo bloccare perche, ad
L'obiettivo del Watchdog è verificare la corretta ela- esempio, entra in un ciclo infinito, o perché necessita di
borazione delle istruzioni del orooramma. Se tutto va un segnale per uscirne che non arriva, ecc.
Nell'organigramma di attuazione de
lNtzlAlrzzAztoNE (RESET)
Watchdog si osserva che alla fine della tem-
porizzazione del WDR si esegue l'istruzione
"clrwdt", si cancella il te'nporizzatore e rico-
mincia il conteggio. Se non si esegue questa
INIZIO TEMPORIZZAZIONE WDT istruzione, qualcosa non ha funzionato, quin-
di si npnpra rn reset. Per controllare il
Watchdog si aggiunge l'istruzione "clrwdt" in
certi punti del programma su cui si vuole vigi-
t^-^ . ^^| \-1uE)Ld
tdtE. LUt ^, ,^-+î i-*.,,:ione
r)u uz il contatore torna
ESECUZIONE DELLE ISTRUZIONI a 0 e inizia il conteggio, evitando l'overflow
Se il programma non è eseguito normalmen-
te, l'istruzione "cìrwdt" non arriverà in
tempo, il WDT andrà in overflow provocando
il reset del sistema, come nmedio per supera-
FINE
re l'anomalia.
b TEMPORIZZAZIONE
WDT ll refresh o reinizio del conteggio del WDl,
si puo produrre anche quando si esegue I'i-
strr rzione "sleen"
J|!!y, che serve ner norre il PIC in
uno stato di basso consumo, fermando I'oscil-
latore interno e sopprimendo l'elaborazione
delle istruzioni. Anche se il WDT si cancella
con l'istruzione "sleep", non si ferma, a meno
che non venga fatto da programma.
ESECUZIONE
CTRWDT
:, ,,,".' . ' '' : ,
{cANCErrO WDT)
ll Watchdog si attiva e si disattiva con il valore
del bit WDTE della Parola di Configurazione.
come abbiamo visto in precedenza.
tlO La frequenza di lavoro di questo temporiz-
zatore e sempre interna e indipendente, origi-
nata da un oscillatore RC proprio. Quando si
Organigramma sull'attuazione del Watchdog. Se il programma si eseErue assegna il Divisore di frequenza al Watchdog,
normalmente riceverà in tempo l'istruzrone clrwdt e non deborderà. Se qualcosa questo lavora come postdivisore, al contrario
va male, o questa istruzione non arriva in tempo, verrà generato un reset.
di come lavora con il TN/RO. In questo modo
ilTICROCONÍROLLER
IMPUTSI DI CLOCK
PER TMRO
TOSC
8-
ArrrvATo/ /l
DISATTIVATO Ps2.Pso7ffiK
WDTE At TMRO
(PAROLA Dr CONFTGURAZTONE)
ffi PsA
OVERFTOW WDT
(RESET)
gli impulsi che genera il WDT passano al Divisore di fre- frequenza si puo fare in modo che questo tempo si elevì
quenza, che li divide per ilvalore che selezioneremo con fino ad un massimo di 2,3 secondi.
i tre bits meno significativi del registro OPTION.
Se il bit PSA neì registro OPTION e a 1, il Divisore di ESEMPIO
froatanza si annlir,a al WDT. E curioso notare che il ln un programma si desidera controllare che un deter-
Watchdog non dispone di nessun registro nell'area SFR ^;^^+^
Ilil IA LV
I -;-t^ lvt-^^^^sto
ttllWt lPV
r da 200 istruztoni normali
della RAM. senza nessuna di salto, sia eseguifo esattamente 100
La ragione si deve al fatto che non si carica con volte. Si lavora con un PlCl6FB4 con un crtstallo di
alcun valore iniziale, iniziando sempre da zero sino al- quarzo a 4 Mhz e si utilizza il Watchdog per controlla-
l'overflow. re questo tempo, che può essere critrco nell'applìca-
Ogni volta che clrwdt produce un refresh torna a ztone.
zero e inizta a contare nuovamente. Nel registro STATO ll controllo del tempo del ciclo, richiede di postzio-
esiste un bit chiamato TO# che passa a valore 0 quando nare davanti allo stesso un'istruzione "clrwdt", che
il WDT va in overflow, così discrimina il motivo per cui resetta il Watchdog e inrzializza la sua temporizzazio-
e avvenuto il reset. Al termine del processo di 100 ciclr, collocheremo
ne.
nel programma princrpale un'altra istruzione di refre-
sh del Watchdog. Con quale temporizzazione si deve
programmare il Watchdog, per ottenere un reset nel
rtca )/d
ciz JUlJcldLU
.t t^Òra+^ llil Lcl
famnn
t tPw rha
rt tc uimniaaa //il rirl^ 1A cJ)c-
ll temporizzatore WDT è preprogrammato per control- Ld)u t tPtcva L/!ru ou ^..^
lare un tempo di 'lB ms, pero regolando il Divisore dr ro o<aattitn 1îtît rrnlfo?
P26
PSA PS2:PSO
ATTIVAZIONE
DEt WDT At TMRO
wDrE)
P5A
OVERFTOW
DEL WDT
Bits del registro OPTION che intervengono nel comportamento del Watchdog.
tNDtRrzzo
/,o
tNDtRtzzo
/,
I I
da 1 K, ma 13 con le quali è
L'architettura Harvard del PIC rende indipendente la memoria del programma da quella dei dati.
possibìle induizzare capacità
,:
:,
.' ,
':'l
"i , ,orr)uo," il ,**rirlru'" i
ttu, a"g i ,:,iiri;i nunì,o t s t*,
MICROCHIP non ha realtzzalo un progetto specifico con i quali si può indirizzare uno spazio di B K posizioni di memoria.
ll PlCl6FA ha solo implementate le prime 1 024 posizioni.
per il PIC16FB4,l'architettura utilizzala è la stessa per
fino a 8 K posizìoni di memoria del programma tipo , ll fatto che il programma principale cominci all'indì-
FLASH. Nel caso del PlCl6FB4 è stato fisicamente ' rizzo 0000 H e la routine di interrupt al 0004 H non
implementato solo il primo K, sarebbe a dire, dall'indi- cinnifir: rhp lo rpstanti istruzioni continrrino seouen-
rizzo 0000 H al 03FF H , zialmente, altrimenti il programma principale intacche-
, rebbe la routine di interrupt che inizia quattro posrzro-
;'y,:; i..j :j r:'irí. I ::i :- I
;';:1:!; j,1:.
ni dopo. Normalmente all'indirizzo del vettore si collo-
Nei PIC di gamma media abbiamo due indirizzi della , ca un'struzione di salto incondrzionato al vero indiriz-
memoria di programma che sono riservati per espleta- zo dove inizia il programma. Per esempio, se il pro-
'
re due funzioni principali. Un indirizzo riservato è lo ; gramma principale - con l'obiett vo di salvare il Vettore
0000 H, che è il primo della mappa. ln esso è ubicato : di Interrupt - si decide di farlo iniziare all'indirizzo 0005
Vettore di Reset o Reinizializzazione. ll suo compito è , H, all'indirizzo 0000 H, viene collocato un GOTO alla
direzione 0005 H, come si puo vedere dal seguente
: OrOOfamma:
MEMORIA DI
PROGR/AM^tu4
0000 H RADIX HEX ;l valori si rappresentano in esadecimale
tk
íÉ ;l,r :;e + i:' i. *tu *11 a1; I i + i.# $i-l tr;l ;i:, i; n:+ i;-i,j
frilc
PCTATH
cARrco SCARTCO
\13
STACK STACK \I3
T.INFORMMIONE I-'INFORMAZIONE
5I SPOSTA At stSPosTA
HVELTO SUCCESSTVO At LIVELLO
PRECEDENTE
,-!, i,
NfiICROCONTROTTER
livello 2 al livello 3 e così di seguito; in aìtre parole, stamento dell'informazione di ogni livello al seguente,
quando si carica l'rnformazione aì ìivello 1, quello che quindi si perderà quella che esisteva al livello B.
c'era memorizzato in ogni livello si sposta al seguente Per recuperare le informazìoni dallo stack, lo spo-
livello. stamento delle informazioni si realizza al rovescio;
Se lo stack e nieno e contiene informazioni in tutti esce quella che sta occupando il livello 1, e ìn esso
qli otto livelli, rl carico di un nuovo dato produce lo spo- viene caricata quella del livello 2. Le informazioni si
spostano al livello precedente
e il dato che esce dal livello 1
sarà l'ultimo che è stato inse-
t,, rrto.
- Tensione di alimentazrone
- Freorenza di rifprimpnto.
- Reinizializzazione o Reset.
góh
85 lr ---11111 ---r l]1t -.-r llil ll temnnrizTz,tore PWRT
tlil lill 11111111 llll llil llll llll
(Power-up-Timer) aggiunge
sl h 1111l',] t1 illr I11r UUUU !UUU ll]t lltl il| 1t1r
: 08 h xxxx xxxx UUUU UUUU UUUU UUUU UUUU UUUU
72 millisecondi che manten-
09 h xxxx xxxx
j,, h
es ,.. o oooo ---o?ooo 0?000 .--0?000 gono rl microcontroller nella
r.' ge h
situazione di Reset, per dare
;i:,oah ---oúooo ---00000 00000 ---00000
ìììr oal oo00 Òoox 000O 0O0u uuuu uuuu 0000000u 00000000 tempo alla tensione di ali-
i U=Noncombio x=lndelerminoto --- = Non ufìlizzoto ? = Dipende do olke condizioni.
mentazione di stabilizzarsi.
.i
Per il suo funzionamento
Tabella con i valori che assumono i bit dei registri durante i possibili Reset
dobbiamo mettere a basso
SFR
livello il bit di accesso PWRTE#, che
risiede nella parola di configurazione.
Laltro temporizzalore, OST, fornisce un
ritardo di 1 .024 Tosc e ha il compito di
assicurare che l'oscillatore principale del
processore slabilizzi la sua frequenza.
OST inizia a funzionare quando termina
la temporizzazione di PWRI, dovuta al
collegamento della porta OR7 con la
AND5. L'ingresso Set del flip-flop di usci-
ta sr attrva:
. All'attivarsi del piedino MCLR#.
. Quando va in overflow il WDT. I bit TO# e PD# del Registro di Stato determinano la causa che ha originato il Reset
... : l .
..':. :
#+È*É.eÈs$Eea*=$+$È+ # R*s+*
ecessità di m emo rizzare
N
contatti che permettono l'apertura della porta. Le prin- Le memorie EEPROM nascono per superare gli inconve-
cipali periferiche saranno una tastiera, un display di nienti delle EPRON/, che si potevano scrivere e poi can-
visualizzazione dei messaggi, e un relé di uscita. Ogni cellare sottoponendole per alcuni minuti ai raggi ultra-
utilizzatore introduce la sua chiave segreta mediante la vroletti, per cui disponevano di un cristallo sulla superfi-
tastiera e i messaggi che appaiono nel video guidano le cre. La scrittura della EPROM è di tipo elettrico, però per
operazioni del medesimo. cancellarla, bisogna estrarla dallo zoccolo e posizionar-
Nell'applicazione descritta, ogni utilizzatore ha un la sul "cancellatore" a raggi ultravioletti. Questo pro-
suo codice, e l'insieme di questi deve essere memoriz- cesso è lungo e complicato.
zato in modo permanente, per essere utilizzato quando Nelle memorie EEPROM sia la scrittura sia la cancel-
'è necessario. Inoltre sarà possibile cambiarli in qualun- lazione delle informazioni, sono realizzate mediante
que momento. segnali elettrici, per cui non è necessario estrarre il cir-
Por momnrizT)ro
^tro<ti , ,,---554|a
tini di drri ò nara una cuito integrato dallo zoccolo.
memoria non volatile, perchè il contenuto possa essere Nella costruzione della cella N/OSFET delle memorie
EEPROM, si introduce una sottile lamina di ossido sopra
il drain, che permette la cancellazione elettrica. Quando
si applica una elevata tensione fra il gate e il source del
MOSFET si introduce una carica nella barriera di poten-
ziale, che rimane memorizzata anche se viene tolta l'a-
limentazione. Per distruggere questa carica basta appli-
care la stessa tensione inversa.
Nella EEPROM si possono scrivere e cancellare sin-
gole celle. Le operazioni di scrittura e cancellazione di
solito durano pochi millisecondi. Linconveniente è che
la superficie che occupa questa cella e grande e per
questo la densità di integrazione è bassa e il costo ele-
vato.
La memoria FLASH ulilizza la stessa tecnologia pero
riducendo lo spessore della iamina di ossido, il che per-
mette un funzionamento simile alle EEPROM, con mag-
giore densita di integrazione, minor costo e maggior
velocità di accesso.
Terminali programmabrli della OMRON, che hanno funztone dr
Per questo motivo useremo la memoria di program-
nterfaccia uom o-macch i n a.
i
ma FLASH nel PlC16FB4.
P3l
Altre caratteristiche interessanti per la scnttura dei Per le operazioni di scrittura e cancellazione, la
dati nella EEPROM del PlC16F84 sono: memoria EEPROM necessita di una tensione Vpp alta,
dell'ordine di 13,8 VDC, che viene introdotta tramite
il pin MCLR#l/pp, come si puo vedere dalla figura.
Mantiene le informazioni più di 40 anni.
64
POSTZTONI
1._ 8 BtrS _l
BANCO O BANCO I
Nel rcaistrn FFADR * eari16 | inj111776
a cui accedere, e in EEDATA, il dato da scrivere o quello letto
Ubicazione dei registri EEADR ed EEDATA, che si utilizzano ,; ',",i' i,;,t, i'.:,, .',. ' ',,,";1,1 1', I 1 "
nella gestione dell'area di memoria EEPROM, , t ,.', i;',':
sono riportati anche i registri di controllo EECONI ed EECON2
All'indirizzo OB relativo al banco 1 della zona SFR
della RAM è situato il registro EECONl i cui bit
., ,;.
il hanno rl compito di controllare le operazione della
EEPROM.
cicli di lettura e scrittura della EEPROM sono realizza- I tre bit meno significativi di questo registro non
ti <rrnli ind,irizti di rrn hrito hanno alcuna funzione.
ll ciclo di scrittura comoorta la orecedente cancel- Di seguito descriveremo il compito di ognuno dei
lazione in automatìco delle informazioni che contene- bit del registro EECONl:
va la posizione a cui sie fatto accesso. lltempo diciclo
di scrittura è controllato da un temoorizzatore inte- RD: Lettura
grato nel chip. Quando questo bit è messo a 1, si realizza un'opera-
ll problema maggiore e che questo tempo non zione di lettura all'induizzo contenuto nel registro
solo è lungo, '10 millisecondi come massimo, ma è EEADR. ll contenuto di questo indirizzo viene caricato
variabile a seconda della temperatura e delra rensro- nel registro EEDATA. Terminata l'operazione di lettura
ne aoolicata. RD torna automaticamente a 0.
FLAG
tl roni<rrn ll(a^l) fitn-tnnà snlo romc di<no<itivn di <ìrttra--1 nall ana,> ìana el1 5;1'11[ut'2
MICROCO
Registri dedicati
alla EEPROM
er gestire in lettura e scrittura le 64 posizio-
ni della EEPROM del PlC16FB4, si utilizzano Creore un progrommo per leggere l'indirizzo 0C H
ouattro reoistri dell'area SFR: dello EEPROM e deposiiorlo nel regislro W.
slufus Eu 0x03
eesdr qu 0x09
eedoh equ 0x08
eeconl equ 0x08
\"
EEDATA (08 BANCO 0) dato in un indirizzo della EEPROM, dob-
Per scrivere un
biamo seguire una sequenza di istruzioni in cui parteci-
pa in modo speciale il registro EECON2. Questo regi-
EECONT {08 BANCO r)
stro, che in realtà non è implementato fisicamente,
assume solo una funzione di sicurezza, caricandosi con
ivalori 55 H e AA H in sequenza. Questo evita interfe-
renze durante la lunga operazìone di scrittura, che a
EECON2 {09 BANCO r)
volte dura fino a 10 ms.
ll ciclo inizia caricando in EEADR l'indirizzo della
cella e in EEDATA il byte da scrivere. Se decidiamo che
Registri incaricati di realtzzare durante il processo di scrittura non si possono accet-
le operazioni con la memoria EEPROM tare interrupt, si deve mettere il bit di enable global
GIF - O In,, I nrrpctn
YvLJLv
modo si evita che durante
'LL
Il'onera-
vVL' u
La lettura di una posizione della EEPROM inizia carican- nel registro EECON'1;poi dobbiamo includere nel pro-
do in EEADR l'induizzo a cui accedere, Successivamente gramma una sequenza di istruzioni che caricano in
si pone a 1 il bit RD del registro EECONl. Nel ciclo primo luogo il valore 55 H in EECON2, in seguito AA
seguente il dato letto è disponibile in EEDATA. Questo H nel medesimo registro. Terminata questa sequenza,
dato permane nel registro sino al realizzo di un'altra si pone il bit WR = 1 in EECONl e si inizia la lunga
operazione di lettura o scrittura nella EEPROM. operazione di scrittura.
MICROCONTROLLER
Memorier dei deiri EEPROilI [lII
scritta correttamente.
sempre valore zero in caso di lettura. Infine i bit RD, WR,
WREN, ed EEIF del registro EECONl, prendono un valo-
Creore un progrommo per scrivere il volore Oxff
re casuaìe dopo un POR oppure un valore che dipende
oll'indirizzo dellq EEPROM 0x32.
dalla condizione precedente (q) se il Reset dipende da
Si suppone che primo del progrommo si siono specificoie
altra causa. Nella tabella riportata qui sopra si riassumo-
le direftive che ossegnono oi
no i valori di questi registri dopo i vari tipi dr Reset.
regislri di controllo impiegoti gli indirizzi corrispondenfi
{eeodr, eedolo, slolus, inlcon, eeconl, eecon2}.
Sequenzo di scritturq
5CA
5CL
Gi'
sPl
frequenza, tensione di lavoro fra 2,5 e 5,5 VDC con
1 000.000 di cicli di scrittura/cancellazione.
In alcuni casi sono necessari grandr quantità di
EEPRON/, e per queste situazioni si possono configura-
re insiemi di dispositivi controllati in modo indipenden-
te da diverse linee di indirizzamento, che utilizzano gli
stessi l/O del microcontroller. Nella figura e mostrato un
Collegamenti della memoria circuito formato da otto memorie da 64 Kbits ognuna,
EEPROM 25xxxx per il bus SPl, ad un mtcrocontroller PIC
per ottenere un totale di 512 Kbits.
r ît.
bí $Alus,s ;Selezioniomo il Bonro I
I f-------------- i.
bsf
_t_t_t_r
: I !"*--*-::;\
.!,,
M
ÍEDATA,RD Éomondo di leturo
*l*t&ta1
ro '1P "1f "lf :1 .-. f-ffi SIATUS,s ;Selezioniomo ilhnco 0
movwf DAIO-A
=-r=T=T=Ta
pqpqpqFq
, l, t' ,!i-
,! f,orliomo il numero bore in DAIO-A
f*!o"P*P*.'. ,{:
I |
I
<'!.J'j
R_8UC movlw h'lf
TASIIERA MAIRICIALE 4X4
n*, f
J*--
I
subvrf FSR,\{ ,'Vedfichiqmo seà sbto kminob ilnumero
mov{w d'173'
ln ouesta annlicazione si utilizza la EEPROM molto R-DIG oddlw' d'10' ;5i sommo I 0 o W sino o che non genero riporlo
frenttentemente ad esemnio qerve npr memorizzare sia btfis SIAIUS,ÍC Suesto fo sì che il numero sio do 0 o 9
che ha preso piu punti, pero noi abbiamo pensato di oddhv h'39 ;5i converle in ASCII il numero
tiilizzarlz
u-rtLLut ru nor
pLr <rrirroro
rLr rv!.L ìn
I nnni
w9ril n:r+it: .a."îl^ movwf lNtr
PorLtLo ilil nrrma"^
;5i conhollo lo posizione oll'inlemo del numero
f tuItctu Ld)udtc
nanar2t^ el;l ninrn iid' t$Rl ;Si intremenh lo psizione del numero
I m pa ri a m o ad uti tizzare
le EEPROM
computer e i sìstemi informatici attualmente uti- tutte le parti del progetto, quello che intendiamo fare è
lizzano le memorie come elemento base per mostrare pezzi dedicati a leggere e scrivere la EEPROM.
supportare le loro applicazioni. f importanza di Concentriamoci su queste parti.
questi dispositivi è enorme, e imparare il loro
utilizzo è fondamentale a tutti i livelli. Fino ad
ora abbiamo studiato la struttura e i registri che con-
trollano la memoria EEPROM del PlC16FB4. Si tratta di lllustreremo ora un progetto che ha una vasta applica-
fare un passo in piu, e imparare ad utilizzarla mediante zione negli stabilimenti, per gestire gli ingressi del per-
i programmi adeguati. sonale. Lo svilupperemo sopra un potente ed economr-
Anche se la programmazione del PIC e ancora in co sistema di sviluppo chiamato "Micro'PlC Trainer",
fase di apprendimento, dato che abbiamo solo iniziato che è stato progettato e commercializzalo dalla ditta di
ad utilizzare le istruzioni principali del microcontroller, lngegneria di Microsistemas Programados S.L.
crediamo che sia di notevole aiuto, una volta studrato a Un sistema di sviluppo è uno strumento fondamen-
fondo un dispositivo, provare ad assimilare le routines tale per la realizzazione di progetti, che in questo caso è
che lo devono governare. Non importa se non capiremo stato dedicato ai microcontroller PIC della qamma
tuffi4lwffidw#
Utilizzo e progrdmnrcrzione dello EEPROll,t
$
N r^l - -^^,
t\cilo ,^^_- ucl
)cquErrzo r^rle iStrUZiO_
Fotografia del sistema di sviluppo Micro'PlC Trainer. ni, prima di iniziare rl pro-
gramma prìncipale, esistono
media. Sostanzialmente è formato da tre elementi: una serie di blocchi e di soubroutines che descriviamo
1) uno scrittore/cancellatore di programma del PlC, dr seguito:
2) un insieme di periferiche utilizzate nelle applicazioni
con microcontroller, 3) circuiteria ausilraria che com- 1o. Intestazione
nrondp :limpnt:tnrc rircuito di Reset e crìstalìn di nrrar- lnrlr
ilrLruuLrflo lo
rL dirottirio
uilLLLrvL 661 l'-..^-hlar
llUlEf, l:lo lihrari:
llUlEllo doi
uLr ranictri
rLyrJLl
vrL I rvL VLr lO))Cl I
zo. La scheda Micro'PlC Trainer e collegata alla porta interni del PIC e le relazioni delle etichette utilizzate.
parallela del PC e si controlla facilmente dal computer
con il software che la correda. 2o. Subroutine EE_Write
Data l'efficacia e le possibilità che off re questo stru- È una ruotine incaricata d scrivere un byte caricato ini-
mento, dedicheremo più avanti una sezione completa zialmente nel registro EEDATA nella posizione ountata
npr dpscriverne le caratteristiche e l'utilizzo. da EEADR
premuto, incrementa iì turno e prepara al seguente. l'effetto di rimbaìzo tipico dei componenti elettromec-
Questo pulsante chiamato RAO e collegato alla linea 0 canici, come il pulsante RAO.
della porta A.
In questa applicazione dovremo risolvere il proble- 6o. Programma principale
mà .hp qnrflp npl rasn 6j; Una mancanZa momentanea ln questo programma si gestiscono i blocchi precedenti
di energia elettrica, o allo scollegamento involontario per risoìvere l'applicazione.
list p=lóF84 ;Tipo di processore
lntlude "Plóf84.lNC', ;librerh con definizioni dei regiski inlerni
;EE-WRITE: E uno routine che scrive un byle nello memorio EEPROM. lindirizzo sqrù contenuto nel registso
;EEADR e il doto è stotro precedentemente introdotto in EEDAIA
;EE-Reod: Rouline che legge un byte nello EEPROM. Nel registro EEADR si corico |'indirizzo dove ondqre o
;leggere, e in EEDATA si corico il dotro letto.
;Tobello: questo routine converb il codice BCD presente nei 4 bit meno significotivi del registro W nel formoto
;qdqtto od essere roppresenhto nel disploy o 7 segmenli. ll codice di 7 segmenti, riiorno onche nel regisho W
;con l'isfuzione retlw.
ItÌ
.,111Ì
,,j.::t
1:11i'
Deloy_2O_ms: Si lrotlo di uno routine che lemporizzo 20 ms per eliminore l'effetto rimbqlzo. doi dispositivi elet-
tromlcconici. Se il PIC lovorq o 20 MHz, il TMRO si increménh ogni microsecondo, quindi contondo 20.000
microsecondi otterremo un lempo equivolenle q 20 ms. Se sceqliomb il volore di 128 per il divisore di frequen-
zo, il TMRO dovrà contqre l5ó impulii che equivolgono o Ox9cin esodecimole, e dolo èhe il TMRO è oscendente,
dovrò essere coricoto con il suo complemento o l, cioè 0xó3 in esodecimole.
Le risorse ausiliarie
I PIC
1 6F84 ha il soprannome di "f ratello nostro m icrocontroller che funzìona come cervello di
povero" della famiglia. Ha poco di tutto, ma Monty. Queste risorse sono:
nonostante questo, e molto piu utilizzato
dei suoi fratelli, che hanno più risorse. Ha
avuto grande successo e la spiegazione arri-
{POR), per attivazione del piedino MCIR # e per overflow del WDT.
va dalla sua semplicità, economia e media delle
ca ratteristiche.
Prima di passare a studiare gli interrupt, così vitali
nelle applicazroni del mondo industrrale, abbiamo con- 38 La parola di configurazione.
îlt1#.|||24;waa.aa/ataaaaiait.aaa
REGISTRO DI STATO
Quando si produce un Reset per I'attivazione del pin MCLR#, il bit PD# del registro di Stato si pone a 0
REGISTRO DI STATO
Valore che prendono i bit del registro di Stato quando si attiva MCLR# durante il normale funzionamento del microcontroller
in stato di "riposo", oppure stia funzionando in ln questo caso la reitiztalizzazione del processore si pro-
modo normale, quindi eseguendo delle istruzioni. Nel duce quando si collega per la prima volta l'alimentazio-
primo caso il bit PD# del registro dì Stato si pone a 0 ne. E chiamato Reset per POR (Power On Reset).
eil bitTO#a1 Questo Reset è generato con un leggero ritardo
Quando l'attivazione del l'MCLR# si origina col pro- I rrvL LLv :l momentn doll'ennlir:zinnp doll'alimenla-
risnptln
cessore funzionante in modo normale i tre bit meno zione, con il f ine di permettere che la tensione dell'a-
significativi del registro di Stato passano a 0 e i rìmanen- limentazione stessa sì stabilizzi al suo valore nomina-
ti non cambiano, così come è rappresentato nella figura le. È un ritardo di 72 ms qenerato dal temporizzatore
REGISTRO DI STATO
x: Indeterminoto
.aa-.t*ffi |ffial*,ia1tt:aLttiltlltLa
PWRT (Power-up Timer) Inoltre con l'obiettivo di processore f unziona normalmente o quando si trova in
/,.+.^/.Jt\!,t'
ottenere la slabilizzazione della frequenza del funzio- 5Ldruuy , ;^ .+-t^ ur
IrsLdL(J ^1,,Iposo.
namento del sistema, si aggiunge un altro ritardo di ll bit TO# del registro di Stato va a 0 quando il
1.024 impulsi del segnale applicato in OSCl. Lo pro- Respt e stato nrovocato dall'overflow del WDT. Nelle
duce il temporizzatore OST (Oscillator Start-up Timer). figure annesse possiamo apprezzare la differenza dei
Cosi quando si inizia l'esecuzione delle istruzioni, la valori che prendono i bit del registro di Stato, in
f requenza di lavoro e stabile. Come si vede nella figu- accordo con lo stato del processore quando il WDT va
ra, dopo che si e prodotto questo tipo di Reset, ibit in overflow.
PD# e TO# restano disattivati, sarebbe a dire a 1, nel
registro di Stato.
Molte volte r sistemi basati su microcontroller devono
.l , ,. :: .,:, l:: , ri. l',,; . rimanere inattivi per molto tempo, aspettando che
Come ricorderemo il Watchdog (WDT) è un contatore \-.luolLullu ---;- r-,,^.Àre
^,,-r-,,^^ rill floLLlo lovvrorL. c)|es,tn
vuL)rv L r:so \delle mac_
e ilil Lqrv
che si incrementa al ritmo della frequenza dell'oscrllato- chine distributricidi prodotti vari come caffe, bibite,
re principale, e quando va in overflow origrna un Reset. srgarette, ecc. Durante lunghi perrodi di tempo queste
ll WDT viene caricato con un valore, ed entra ìn funzio- macchine non fanno nulla, fino a quando un cliente sì
ne all'inizio del programma. Prima che vada in over- avvicina, introduce una moneta e chiede qualcosa. Con
flow, lo si deve resettare mettendolo a 0. Se il flusso di lo scopo di ridurre al minrmo il consumo di energia, si
controllo entra in un ciclo infinito, o rimane in attesa di induce il microcontroller ad un sonno profondo, nel
un segnale che non riceve, il Reset del WDT non arriva rludrc rd -"-
^"^r^ r- )ud d-++;"r+r À
LUVTLd ( 'idotta notevolmente. ll PIC che è
|
in tempo e l'overflow reinizzializza il processore. in questo stato di riposo o di basso consumo, si suole
lloverflow del Watchdog si puo originare quando il dire che sta dormendo
REGISTRO DI STATO
REGISTRO DI STATO
u: Non cqmbio
:l
i
Registro di Stato dopo il debordamento del Watchdog quando il processore e in stato di "riposo".
PAROTA DI CONFIGURAZIONE
Per produrre questo stato di relax, basta eseguire ì'i- zioni del programma non possono essere lette, al
'1
struzione SLEEP Pertanto si ottiene che l'oscillatore contrario. se CP è il programma memorizzato nella
principale e le linee di l/O si congelano mantenendo il FLASH si puo leggere. Con i due bit meno significa-
<rr^ (f:tn nrororlonto tivi, FOSC0 e FOSC 1 , si determìna il tipo di oscillato-
Per togliere il processore dallo stato di riposo esisto- re che ulilizza il processore, secondo la seguente
no due alternative: attivare esternamente il piedino cod if rca:
MCLR#, o fare in modo che il Watchdog vada in over-
flow, se è rimasto attivo quando si entra nello stato di
riposo, visto che non si eseguono istruzioni e non rice-
RC
ve refresh. Un'altra possibilita per togliere il processore 1 I
Che cos'è
un interrupt?
'-r't
'?;i:{:1:1r1 ,t"l
previste nelle istruzioni del pro-
gramma. Ad esempio, una PROGRAMMA PRINCIPATE
causa che provoca un Interrupt
:l nrnressnre e l'ettivazione
mediante un livello logico alto,
di un piedino del microcon-
troller.
Orrpstn
YULJLV
livplln altn ootrebbe
essere prodotto da un compa- RILEVATORE DESTRO f_
RUT SX
ratore, che riceve come ingres-
so il segnale analogico di un 1
i
sensore di temperatura; il vaio- RUT DX :
"^ ...l^l
RETURN i
tc uct .^^^-l^
)c9trdrE h-
Id .,,^^"-+^
)uPcrdru l-
rd
' -,':
colo sul lato destro, come si può vedere nella figura. In dalla subroutine, o dalla routine di interrupt, come
questo esempio si producono due interrupt differenti, espresso graficamente nella figura.
perché ogni antenna del microrobot fa riferimento ad Lo Stack è il luogo dove si depositano tempo-
un piedino diverso del microcontroller, questo permette ralmente gli indirizzi di ritorno al programma prin-
i salti a due routine distinte. c ipa le.
scARrco
STACK LIFO
34. ll PC si carica ron il valore del Vector di lnterrupt, che punta la prima
istruzione della routine dedicata all'intenuot,
iu!u1aìììììììììììììììììtùltrtuìtaiuiu:nt!t
Utilità delf interrupt
.i,'ll'T ._- ossiamo montare su Monty un finecorsa zare di qualche centimetro, girare nuovamente di 90" e
. -. continuare il suo percorso.
ostacoli sul suo cammino, come si puo vede- ll tempo che deve trascorrere fra l'attivazione del
fi re dalla figura. Uideale sarebbe che quando sensore e l'esecuzione del programma specializzato
il sensore chiude i suoi contatti, il processo- nella manovra anti-ostacolo, deve essere minimo. La
re abbandoni il programma principale in esecuzione per cosa migliore è utilizzare un interrupt, per questo è
entrare in una routine specralizzata, che ad esempio lo necessario progettare un circuito per fare in modo che
faccia retrocedere di un centimetro, girare di 90', avan- subito dopo che ilcontatto difinecorsa siè chiuso, arri-
,.:*Í:!211Hi$i*1]*i$llliiì"lfill;;a,
ffi
t
, ''
'
euando si chiude I'interruttore di finecorsa, si genera un fronte di discesa che si appltca al piedino INT e causa un tnterrupt
ROUTINE DI INTERRUPT
le Indogo sullo cquso Una delle difficolta intziali che presentano queste
2e Sqlvo i vqlori dei registri
3e Risolve lo cquso
frrnzinni ò rho y--,-,
nrr:lrrn^"^ "i. l.ta causa
ìque std --".- cne
-L^ l^na oflgtna-
to l'interrupt, la routine dedicata inizia sempre all'indi-
rizzo del Vector dr interrupt che è lo 0004 H. Altri pro-
cessori dispongono di un Vector di interrupt per ognl
RETF;E causa che li produce, con il PIC 16F84 non c'è altra
PC-<-UVELLO| (STACK)
soluzione che inrziare indagando quale sia stata la
causa dell'interrupt, testando i flags corrispondenti, e
indirizzando il processore alla routine corretta.
FINE
i i .l tl''i : : í t;i i' ; :,.'i i'1 1..1 i:, 1. :,'i. irj i i:.i:i'il:,X, i í: t:'
:J:
INTCON
t-,".-"--"----.-"="-
"i
ll bit piit significativo del registro INTCON è quello che permette o proibisce globalmente le quattro cause di interrupt
5i determino lq csuso
dell'inlerrupt
Si recuperono i vqlori
dei registri memorizzqti
5i cqncellq
Siconcello ilflog ilflog
di inierrupt di interrupt
Ritorno (RETFIE)
PC+ STACK
Gie= I ir
.i
=
il
Organigramma dello sviluppo
dr un interrupt tenln!1 co,nt1 dell funzion.e di GIE_
p 43
INTERRUPT INTF
ESIERNI INTE
Voo--+5VD€
INTERRUPT
rok
I N4r48
PUI.SANTE
Logica di controllo corrispondente al circuito
DI RESET
I
di generazione degli interrupt esterni.
4
I Dentro la ruotine di interrupt e prima di
ritornare al programma principale, il pro-
grammatore deve necessariamente riportare
Circuito che genera l'impulso di una durata determinata, per provocare il flag INTF = 0, altrimenti subito dopo l'i-
interrupt in modo ciclico.
struzione di ritorno RETFIE, torneremo a
yiono
vr!rrL nonor:tn fl:^ inrrrir:in
lllLollLoLv Ài
ul cannrllyp
VLrrLruLv, rrn
urrrruV )EVIlOlols n1o(t:
Vuq)Lo
situazione si oone automaticamente a 1 .
Si tratta del flag INTF del registro INTCON come
mostrato nella figura.
bd |NTCON, gie ;GlÈ = 1, Permesso Globale di Interrupt
INTCON SEGNAIATORE
7 4
ll bit INTF è un flag che viene messo automaticdmente a 1 quando si produce l'interrupt esterno
ripetere il processo di interrupt, quindi il flag INTF sarà
ancora a 1.
:,,l;:.,.,,,, i .t,:,;r",rt.l.',t I
à;l# X E ú e6 N-
'-:
A c J JIw ú
>fIUlccYoÌCil<;<<<dd
^ -lolq t ^ - <{d < RST 7.5
ooÉ^€ó{ó*-ooóA€ol4ò- ll piedino che attiva questo interrupt è sensibile al f ron-
nóófió-nróqn&1À&^NÀNtu
I te e gli corrisponde un vector il cui indirizzo e 3C H. È
tó
Y'
un interrupt mascherabile, che puo essere ignorato
etó€s9À@ o*N-tooÀ€oo quando il bit di maschera situato in un registro di con-
LJ U LI L' U U U IJ U UU U U U U U U U U U
RF trollo e messo a zero. Ha una priorità inferiore a quella
x- x :) O O d ú o ú dt< O - N ó e 6 6 È o
O; { o o *l> ó O ó ó ó O O O -o
O 6 -'c( -- > p ZIZ del TRAP
664-'
ad ognuna una routìne indipendente. INTEL, non soddisfatta dalle precedenti richieste di
Nel microcontroller PIC esiste solo un Vettore di Intérn rnt LrLL,,,qr
oqtorn: ,,=
no ,la
I introdotta una speciale, il cui
interrupt, che ha assegnato I'induizzo 4 della memoria meccanismo viene solo impiegato da questo fabbrican-
di codice, per tutte le cause di interrupt. Qualunque te, che permette di saltare fino ad otto routires diffe-
interrupt che si produca nel PlC16F84, fa sì che il PC renti con il solo piedino INTR.
passia puntare I'indirizzo 4 e ad eseguire il programma Inizialmente INTEL ha rntrodotto nel repertorio di
che inizia in questa posizione. Generalmente nell'indi- istruzioni la chiamata RESTAR n, il cui mnemonico e
lzzo 4 si usa mettere un "goto" all'induizzo vero di ini- RST n. Dato che n puo valere otto valori da 0 a 7, da
zio della routine di interrupt. orioino : otto rodiri ,^l; istruzioni corrispondenti a RST0,
Dato che le cause che provocano gli rnterrupt pos- 1,2,3,4,5,6 e 7, ognuno dei quali e composto dai
sono essere diverse, il loro trattamento deve essere snli otto hit Fspnrrprdn nrpctp ictrr rzioni ci nrodUce Un
fatto in modo individuale, per questo all'inizio della salto agli indirizzi n x B, ossia, alla 0, B, 16,32, ecc. Dal
routine di interrupt in un PIC inizia la verifica di cosa ha programma, e in forma sincrona, si puo saltare a que-
originato l'evento in modo da poter scegliere la routine sti indirizzi di memorra, in ognuno dei quali si puo dare
corrispondente. inizio ad una routine differente.
INTR è il piedino di richiesta di interrupt maschera-
{:i *. * i. {ìÌ H i: E * t+ g, ;s 5 t s: E J {+ *|,{ {.i I'd,.x l4 il hl "i i.l bile di priorita minima. Quando la CPU genera due cicli
ii *. + i"i i' +li:È: ft 5t È..{ PF *É'iF- H i'j f l,} ii L L $i*;Ìr i: del bus di lettura, iquali sono attrvati indicando il pie-
TRAP dino INTA (Riconoscimento di Interrupt). Nel secondo
Si tratta di un interrupt non mascherabile, quindi la CPU dei cicli, la CPU legge gli otto bit presenti nel bus dei
lo accetta sempre indipendentemente dallo stato del bit dati (DO-D7) e li interpreta come il codice dell'istruzio-
di maschera. A questo corrisponde un vector che indi- no (orr ronto
,L JLyuL, ,LL rho
!, ,L dovo
ucvc e Se
1
QUI[e .
rizza il f lusso di controllo alla posizione di memoria 24 Se il codice che introduce tramite il bus dei dati il
Hex. È sensibile sia sul fianco sia al livello. richiedente corrisponde con uno degli otto dell'istru-
F otiello di maocrior nriorira di ronsenrrpnza se arri- zione RST n, si produrrà un salto agli otto indirizzi pos-
vano diverse richieste di interrupt contemporaneamen- sibili ln x B).
te, il TRAP e il primo che vrere gestito Generalmente e Questo fa sì che il PC si carichi con uno degli otto
impiegato per far fronte a situazioni estreme, come la induizzi e inizi l'esecuzione della routine applicata a
mancanza di alimentazione. che 0ermette l'entrata in partire da esso.
FIAG
IMPUTSI ESTERNI
TOCKI
T. TMRO
,
l'
IMPUI.SI INTERNI
INTC O N
FOSC/4
Per fare questo e necessario abilitare I'interrupt del La famiglia x86 di INTEL, alla quale appartengono i
temporizzatore, il quale implica di porre il bit GIE = 1, moderni Pentium, dispone di un meccanismo di alta
che è il permesso Globale degli Interrupt. e dopo atti- qualità e versatilità per supportare gli ìnterrupt esterni.
vare il bit di permesso dell'interrupt del TMR0, ossia, È interessante analtzzare le alternative esistenti nei pro-
scrivere un 1 in T0lE, così come si vede nella fiqura della cessori più utilizzati e verificarli con quelli dei PlC.
n:nin; <onron+a Per gli interrupt esterni la famiglia x86 utilizza due
,, piedini: NMle INTR. Ognivolta che uno di essi e attiva-
, ,;.
, ,.t . , li ,
to con livello logico appropriato, la CPU ferma il flusso
Per calcolare il tempo che misura il TMRO, bisogna di controllo, sospende l'esecuzione delle istruzioni nel
conoscere il valore che si carica inizialmente in esso, programma principale in corso, salva nello Stack l'indi-
dato che e ttn reoistro che ncrr na l'indiriTTo '1 del rizzo di ritorno, e salta ad eseguire una routine incari-
banco 0 dell'area SFR della memoria dei dati RAM. cata del trattamento della causa che ha oriqinato l'in-
Questo valore espresso in decimale, lo chiameremo N; rerru pI.
bisogna anche tener conto della frequenza di funziona- Esjstono 256 vettori di interrupt che danno accesso
mento de1 processore così come del range programma- a 256 routines differenti. Ouesti vettori sono indicati
to per il Divisore di Frequenza, in caso di un suo utiliz- nella tabella degli ingressi che si chiama IDT (Tabella di
zo. La formula che determina ouesto temoo è: Descrizione degli Interrupt).
Questa caratteristica determina una differenza fon-
Tempo = 4. Tosc
. (256 - N) . damentale con i PIC che dispongono di un solo vettore
. Range del Divisore di Frequenza di interrupt per tutte le cause che possono originare
una richiesta di interrupt.
Esercizio Nel PlC16F84 il vettore di interrupt occupa l'indi-
Consideriamo un PIC'16F84 funzionante con cristallo di rizzo 4 della memoria di programma e dato che è
quarzo da 4 Mhz. Supponiamo di caricare il TMR0 con comune a tutte le cause, il primo lavoro che realizza
: t jtl.rtt'f:.i:,a t::;tjl;,':t!,4+llli,;r;':rlt
Per esplorare la tastiera e rilevare il pulsante premu- colonne, ed essendo sospese in aria, si comportano
to si applica il seguente metodo: il microcontroller come se su tutte arrivasse un Iivello logico alto. ll livel-
deposita nelle 4 linee di uscita digitali (colonne) un codi- lo basso in uscita da una delle colonne, viene spostato
ce formato da tre livelli logìci alti (1)e un livello basso in modo sequenziale da una all'altra, e quando arriva
(0). Ad ogni scansione il codice sposta la posizrone del alla fine il ciclo si ripete da capo. Dato che si conosce
livello logico basso in modo sequenziale, su ognuna sempre da quale colonna si sta facendo uscìre il livello
delle 4 colonne collegate a RB3:R80. Quando non c'è basso, basterà conoscere la fila da cui detto livello viene
nessun pulsante premuto, le file essendo isolate dalle ricevuto per riconoscere il pulsante di incrocio fra fila e
colonne, sono "in aria" e introducono un livello logico colonna, come illustrato nella frgura.
alto, dovuto ad una caratteristìca costruttiva pro- .:
pria della tecnologia TTL. In questa situazione, COLONNI CODICE HEX
{usclrE)
quando si leggono gìi ingressi digitali, che sono le R33 RB2
xB4 RBI RBO
file della tastiera, avremo quattro uno. Nel caso
venga premuto un pulsante, quando il livello
o '
ijiili#iiili I t tIo I 7D
ijliilt'*É I ttt
basso che esce dalle colonne, coincide con l'in-
iilli* '' ' I
o
rro
o
I
EE
DE
grazie al quale si potrà localizzare immediata- :iili:i$#' I rto I
i.$ii.,* r r'
o DD
mente il pulsante che è stato premuto, perché si
o I lot I DB
orodurrà un interruot.
,.jr1.;r* r o I I ttl o BE
,,1frÈ.-:l. o r r I otl t 77
Dalle quattro colonne collegate alle uscite
quattro livellì logici, uno attivo, :.:.1l.;,,O1
:. I O I I oìt I 87
RB3:RBO escono
o tre inattivi, o altr. Se c'è un pulsante lì,'..1',1:€È,: r r o I olr I D7
1ì11$ r r
basso, e
premuto nella colonna che ha il livello logico
I o ort I E7
t
RBO
A
I
RBI RB2 RB3
crocio fra la fila di questo pulsante e la colonna da cui
sta uscendo lo zero, apparirà un lìvello logico basso.
Si puo facilmente compilare una tabella che stabili-
sca il oulsante oremuto in funzione della fila e della
Quando dalle colonne esce il codice 1 1 10, colonna che hanno il livello logico basso, come propo-
se il pul.sa.nte premuto è E sulle file si ryceve il codyce 01 1 1
sto dalla fiqura.
,l '