fNICROCONTROLTER Presenlcrzione Generole
Computers: [e macchine che governano it mondo. ttualmente è imoossrbile conceoire il mondo nel quale viviamo senza computer. Se questi smettessero di funzionare la Terra girerebbe comunque, pero gran parte delle cose che esistono su dr essa si fermerebbero. Si interromperebbero i collegamenti telefonici, fax, e Internet. GIi spostamenti su terra, mare e cielo sarebbero seriampnto ncnalizzati lp induStrie fermerebberO i loro nro-
-^--t ^-^.r,,++;,,i ^ ,ld C VfUUULLIVI
LC))l
_rmmerCializZaZiOne
LUI lllllEILlOll4LOLIVttC
lgi UCr
lnrn rvrv
nro_ lJrv
dotti. Gli ospedali non potrebbero eseguire determinati interventi. Persino a casa nostra avremmo dei problemi con l'ascensore, l'antifurto, ecc. ll caos sarebbe totale. ll computer è uno degli strumenti più importanti
avrete bisogno di un PC. ll computer vi permetterà di eseguire interessanti lavori, ad esempio:
Poter vedere Microrobots commerciali con il CD. Seguire lo sviluppo costruttivo del Microrobots, Constatare il comportamento del Microrobot eseguendo i programmi che riceverete. Produrre voi stessi i programmi per pilotare il vostro nuovo "animale domestico", Poter visitare siti Internet da noi consigliati per ottenere informazioni sulle caratteristiche, prezzi, punti d'incontro e corsi di Microrobots.
fabbricati dall'uomo ed e da questo strumento che dipende il suo progresso.
Risolvere i dubbi ed i problemi che nasceranno durante lo sviluppo dell'opera attraverso il supporto elettronico.
Per poter seguire con profitto questi fascìcoìi, dedicati all'affascinante tecnica dello sviluppo, costruzione, pro-
Tutti i computer, dal PC a quelli molto più potenti che
grammazione ed applicazione dei Robots intelligenti,
controllano un insieme di celle robotizzate oer l'assem-
blaggio d'automobili, o come quelli piccoli di un Microrobot, hanno la stessa architettura fondamentale, composta dai senrronfi tro olomonti'
MEMORIA In questo elemento del computar \/onfl^nn <rritti ,..,i rprogramml che si vogliono utilizzare, assieme ai dati necessari ed ai risultati 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'intprno dpl nrncpqqorp l'Unita di ll aersonal computer o
PC
sarà uno strumento indispensabile per operare con
i microrobot
Controllo è quella che rnterpreta
o traduce le istruzioni, quindi il
P Ol
Memoria
Processore
Periferiche
lstruzioni e dati
Interpreta ed esegue le istruzioni
Stampante
Un computer è composto da tre parti principali: memoria, processore e periferiche
percorso dei dati esegue le operazioni impartite ogni istruzione.
da
PERIFERICHE
Sono i dispositivi che utilizzano gli utenti, nei quali vengono caricate le informazioni e vengono raccolti i risultati 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.
di un circurro InTegrato. I progressi tecnologici dell'elettronica hanno permesso di implementare tutti i componenti di un computer dentro un chip di silicio in un solo circuito integrato. Ad esempio, il Microcontroller della fotografia che viene evidenziato sul dito è un PlC12C5O9, ed è contenuto in un "case", o contenitore, di otto piedini, occupa un superficie di 12 mm. di lunghezza per 6 mm. di larghezza, pesa poco piu di 3 gr., il prezzo puo essere inferiore a 1 Euro, a seconda del numero di pezzi acquistati. Con le caratteristiche segnalate precedentemente E un computer costruito all'interno
è facile dedurre che un Microcontroller è un piccolo cornputer, con poca memoria, dove il processore e molto semplice, infatti può riconoscere soltanto poche istruzioni di base e le periferiche che possono essere colleqate sono abbastanza limitate.
Un tipico Microcontroller sulla punta del dito.
dotto molto conosciuto, che ha al suo ìnterno un Microcontroller, il quale individua il tasto scelto, genera icodici che lo identificano e lo invia al processore. Lo stesso succede con il mouse, al suo interno esiste un Microcontroller che conta, registra e tra-
I Microcontroller sono computer di dimensioni molto ridotte che possono essere situati nella stessa applicazione che gestiscono. La tastiera è un esempio di pro-
smette al processore i segnali che vengono prodotti dai due encoders che controllano il movimento della pallina in X e Y inoltre riconosce, codifica e trasmette i comandi dei tasti.
TWGROGONTROLLER u
Presenleizione Generole ,
PANNELLO DEGLI
CONTROLLO DEL MOTORE
CONTROLLO DELLA VELOCITA CONTROLLO DELLA CLI MATIZZMIONE SISTEMA DI NAVIGMIONE MULTIPLEXING DEL CABLAGGIO
AIRBAG
La tastiera e il mouse sono due tipiche periferiche del PC, ognuna delle quali viene governata da un microcontroller che si trova al suo interno.
Un microcontrollore inserito nel prodotto che controlla, sa eseguire solamente un compito, motivo per il quale esegue sempre lo stesso programma: controlla dati che si assomigliano e controlla sempre le stesse periferiche. Un computer di ulilizzo generaìe come un PC, possiamo utilizzarlo per disegnare un circuito elettronico, oppure per grocare. ll microcontroller permette d'impiegare un computer per far funzionare tutti i prodotti, piccoli o econo-
ll numero di Microcontroller che vengono incorporatr nell'automobile è sempre maggiore
durante il secolo XXI assisteremo ad un'invasione generalizzala. La dìstribuzione percentuale della applicazione dei microcontrollori nei diversi settori alla fine del secolo XIX è la seguente:
mìci che siano. COMUNICAZIONE: 3O% Telefoni fissi e mobili. Sistemi di comunicazione. Navigazione.
Le oossibilità d'utllizzo dei microcontroller sono ltmitate solo dall'ingegno dei suoi disegnatori. Chi avrebbe mai
pensato, anni fa, che una radio avesse bisogno di un computer? I ricevìtori moderni, grazie al lavoro di uno o più controlier, hanno cambiato immagine a questo classico prodotto. La sintonia delle emittenti migliora, sì possono memorizzare le stazioni desiderate, programmarle in modo casuale, realizzare l'accensione in data ed ora prefissate e tantissime altre possibilità, con la capacità di aumentare la categoria e le prestazioni di questo apparecchio che prima era solamente una radio. L'incorporazione dei microcontrollori a tuttì i prodotti e sistemi che abbiamo, è in costante crescita, e
PRODOTTI Dl LARGO CONSUMO:27Yo Elettrodonrestici. Macchine da gioto. Giocattoli. Sistemi di skureza ed allarmi Climatizzazione.
AUTOMOBILI:18o/o (ontrollo del motore (consumo,
gas di scarico, eccJ. Controllo di frenata
(AB5). Airbag. Strumentazione. Controllo della velocità. Climatizzatore.
Navigazione satellitare, Computer di bordo. Sistema antifurto.
PERIFERICHE INFORMATICHE:
1
5%
Tastiera. Mouse. Disro rigido. Gestione dell'immagine e del suono.
Stampante. Multirnedia.
INDUSTRIA: 1O7o Strumentazione. Elettromedicina. Automazione. Robotica. Telecamere. Applicazioni militari. Domotica (automazione delle abitazioni civili).
MICROCONTROLLER Presentcrzione Generole
Controllo illuminazione
.,....1
SCALA
COMPUTER E PERIFERICHE PC e periferiche associate
Ascensore
Controllo illuminazione. Antincendio
.....".. ...... ... 6
TOTALE:37
(prnnr{n l: lì:t:nlo.t, nell'annO 2000 efanO 240
i
microcontroller installati in una casa americana. A casa nosîra oLranîi ce ne sono? Facciamo un piccolo bilancio ln breve aumenteranno 1e quantita a ca:sa del a rni-e-re nasctta del nostro microrobot Monty.
Oltre ad aiutarci con i nostri lavori domestici, nei nostro lavoro e nei nostri viaggi, divideranno e parteciperanno ai nostri momenti di relax e lotteranno per diventare i "migliori amici dell'uomo".
L'invasione dei mrcrocontroller e appena inizìata. Ogni anno apparono sul nostro mercato mndo li n I n.ìtont L r .-^--i LoVoL V u VvLLr
,1, .^ul lcd-
,t:.:'
lizza'e corrnlessi iavor con l'obret-
tivo dl
automatrzzare prodotti
mportantr Pero uno dei più appassronanti e con ptu futuro
e sociale e quello relativo ai microrobots Queste nirr-oie rn.errhino diventerarno
commerciale
.^mn:nnó n<or:r:hil p n.è(to oqpcr.ir:nnn
de l'uomo
COn veloCiia
ed e'{rcienza "nolri avori quotidiar- rhp.rdpsso s'rnlni,lrno noi.
Pratotipo del srstema PALMA di atuto alla mobilità per bambtni con paralisi cerebrale lstituta di Automazione lndustriale (C5lC).
Classifi ca zior€, mercato
e costruttori di microprocessori *#
*ffi
il
rT=I-H*T
*
ll microrobot della Husqvarna taglia conttnuamente l'erba del grardtno alimentandost con energia solare
smeltere nformazioni ll microprocessore e un computer in un chip, pero le sue
risorse e le sue capacità sono molto limitate. Si utilizza
nel controllo di aoolicazíoni concrete e di solito e inserrîo nel medesimn nrodOttO Che COntrOila. A SeConda dollc,annlir:zinni lp Lor 6pr:r+aric*irh^ ucilc oPPillqzrvr il, rE o LLqr ')UL'ic .h^ Lt tc ucvc nnq(onoro ^^,,^ i mirrnnrnroqqnrp (nnr'r d'fforonti Orrinn nar n^\/arn:-
,,,.,"|"
rp . rn rohot '.drrstriale si deve vvJJ!vU nossedpre r,na I ur ru memoria coc ufa grande capacita, perche dovra contenere tutti i programmi e i dati, i vari temporizzalori per controllare r terrpi, i convertitori AD per il trattamento derle ^r--À^.-^ 9tóttUÍ//t
rirrttiti dlldlUVlLl '^.1^^;-h^lC, |i !ilLurLr
:rri: <nori:li di .rrLLrldLLld )VLLruil ur intorf
nar i_,el
i motori e comunicazione seriale ad alta velocrta per tra-
e nrragini
delle telecarnere che prestigiosa ulilizza. Un microrobot della azienda HUSQ-
VARNA taglia continuamente l'erba del giardino. ll microprocessore che lo governa deve disporre di circuiti per il controllo dei suoi motori, interfacce con jsersori che limitano la superficie dr taglio e sistemi di carica delle batterie mediante energia solare. Per pilotare un distributore automatico di iattine, il microprocessore deve solo contare le monete che vengono ntrodotte, gestire r pursaf ri di selezrone, rl pannello di visualizzazione e i meccanismi che liberano i' prodotto selezionato. A fronte di necessità così diverse, a seconda delle aoolicazioni i costruttori offrono un.r
),tt,'
"'
enorme varietà di microprocessori: dai più semplici ed economici, destinati a prodotti comuni, sino a quelli più completi capaci di controllare sistemi avanzati. ,'.'i,, t t,':t.1.!,
í::',:. !.'.
i,: i.1 ii :,.,; ì; li. i", i. : i..i " i: ! i,i
A seconda delle loro caratteristiche, i microprocessori si possono classrficare in molti modi, il piu significativo e ulilizzalo è quello riferito alla dimensione del bus dei dati. ll bus dei dati è l'insieme delle linee mediante le quali vengono trasferite le informazioni all'interno del processore. Ne esistono di quattro tipi:
Microprocessori a 4
bit
progettr piu avanzati, come le applicazioni nell'intelligenza artificiale, oppure le applicazioni militari e dispositivi di immagazzinamento massivo di dati. i:r'.,,i
1,1.1'"';',':,::"'1t,
i,'i,.',:\
i.j i: ;:
i),:"1
Sono ipiu usati e venduti, e dentro questa gamma si differenziano per le loro risorse e capacita. Un buon progettista deve scegliere il microprocessore che soddrsfi tutte le specifiche del suo progetto, incluse le prevedibilr espansioni future I microprocessori a B bit sono caratterizzati dall'avere il bus dei dati da B linee, questo comporta che tutti ì trasferimenti di informazioni all'interno della struttura del chip saranno realizzaÍi a byte di 8 bit didimensione, e la memoria dei datiavra anch'es-
Microprocessori a 16 bit
Quelli a 4 bit sono i più semplici e si utilizzano in piccoli automatismi e giocattoli. Vengono fabbricati in grandi quantità e risultano molto economici da installare nei prodotti di largo consumo. Quelli a B bit, sono i piu utilizzati per la loro grande varietà e versatilità. Quelli a 16 brt sono impiegati in applicazioni più esigenti e, infine, quelli a 32 bit dominano il settore dei
I microprocessori a B bit gestiscono dati di tale dimensione
,
F -lì,
d
90 I
Anno
-
>
Milioni di dollorì
& @8h,
:
[voluzione comparativa del mercato dei mrcroprocessori a B e I6 btt
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 istruzioni nr rn pssere differtrntp e si ad:tter: :l fnfmato del m
r
OTP: la memoria viene scritta dall'utente finale tramite uno scrittore di memorie e un PC. 5i possono solo
programmare una volta e non si possono cancellare. Adatte ner serie medio niccole delo il lorn h:sqo nrez-
icroprocessore.
zo.
La struttura generale del microprocessore e composta rl , r++"^ ^-"+i uor ^, 9uoLLr u Poru.
Memoria di programma
.
EPROM: mediante uno scrittore e un programma di comunicazione con il PC si memorizzano i programmi e si possono cancellare molte volte. Dispongono di una finestra di cristallo sulla parte suoeriore del conte-
nitore per facìlìtare la cancellazione, che viene realizzata sottoponendo il chip a luce ultravroletta, per il periodo indicato dal costruttore. . EEPROM: si scrivono e cancellano elettricamente Processore
qén7: no.p<<it: di r:nni rrltr:vinlofti "' '"vY'
.
:
"ispositivi
ausiliari
FLASH: simili alle EEPRON/. Le puo scrivere e cancellare l'utente finale tramite un 0roorammatore colle-
gato a un
PC
A seconda del modello, la capacita della memoria sarà diversa, così come il set di istruzioni che il processore puo accettare, in sintonia alla dotazione di periferiche di cui è dotato. t,,1,,,'
Contiene le istruzioni del programma che governa l'applicazione a cui è destinato il microprocessore. Dato
rhp devc osonrrirp somnre lo slesso !v, comnilo ,,v, Lv, rdeve essere una memoria non volatile, che non perda le informazioni memorizzate quando si scollega l'alimentazione. Esistono diversi tipi di memoria di programma: . ROM mascherate: le istruzioni vengono scritte all'interno della memoria dal costruttore e non possono essere cancellate. Sono consigliabili per le grandi serie.
Fotografia di un programmatore per microprocessori con memoria di programma OTP EPROM, EEPROM e FLASH (Micro' PIC Progymmer di Microslstem: Engineering)
Archivia le variabili di processo e i risultatr temporanei. a )Ll crr''t+' DOrio nOrmettoro lottr 1rt C yLvL rL!Luld ltLUld VL,rrruLLLrL
(:/
.^-nnr.l:
d )t:LUllUd
nlall: UClld
tecnologia di fabbricazione, si divide in due categorie fondamentali: o RAIV: Memoria di iettura e scrittura molto rapida
à. |r
e volatile.
.
EEPRON/: Memoria
di lettura e scrittura lenta,
ma
non volatile. ; I
^t
t)frr^
hlnrrhì
tinìri
Aì tt
-. -n
mtcroprocessore
' ';' :,' :1" . , ' l,'ll,
È la narlp dpl romnrrtpr ''|,"..'''inrarirata di intprnretare ed eseguire le istruzioni del programma E formata da due
sezioni, l'Unità Centrale che traduce le istruzioni e ALU (Unita Logico Aritmetica) che le esegue. , :
':
':
l ;l':
la
! l::
che.
Questa parte del microprocessore contribuisce, insieme alla capacità della memoria, a determinare la potenza e la complessità del dispositivo. Alcune delle periferiche niir imnnrt:nti <nnn' o Porte di inoresso e di uscita.
r
.
Temporizzatori. Comparatori e campionatori di segnale.
La quarta parte e stata assorbita da prodotti di largo consumo, come elettrodomestici, giochi, TV, eccetera. ll settore delle telecomunicazioni, l'area industriale e l'automazione completano il resto.
I maggiori costruttori di circuiti integrati dispongono di una linea di microprocessori, date le enormi aspettatrve di mprc:lo che si nrevedono. INTEL è considerato come il padre dei microprocessori, perche fu il pioniere nella
o Convertitorr AD e DA.
o Interrupt. . Whatch dog. o (i<lom: di <t:nd-hv
la fine deoli anni 90 ha consolidato un forte
anno del secolo scorso, arriva a moìte centinaia di milioni. ll maggior consumo, circa la terza parte, si e verificato nel settore dei compu'ter e relative periferi-
incre-
mento nella vendita dei microprocessori a B bit, mentre ha mantenuto ilvolume divendita di quelli a 4 bit, inoltre sono incominciati a crescere anche quelli a 16 e 32 bit. Se si suppone una media di 4 dollari per unità, il valore dei microprocessori venduti nell'ultimo
fabbricazione di questi componenti, con il modello 8048 negli anni 70 poco dopo aver commerctalizzalo, nel1971, il primo microprocessore del mondo. In seguito ottenne un grande successo con la produzione del microprocessore a B bit della famiglia 8051, alla quale seguì la 80C196 a 16 bit. Tuttavia è stata MOTOROLA che ha occupato il primo posto della classifica mondiale negli anni 90. ll modello a B bit 6BHC'11, costruito 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 nrestazioni, che sono le stesse che ci hanno ìndotti a sceqlierlo per la nostra macchina.
1990
RÀilKtil0 1,
lloloro|a
2.
Mihubishi
3.
NEC
4,
Intel
c,
Hitachi
6.
Philips
Hitachi Phìlips Philips Hilachi
1.
tulatsushik
l\rlatsushik l\4ahushila
8,
National Siemens
10,
Ti
11,
Sharp
12, 0ki 13,
Toshiba
15,
Zilog
t!,
l\4atra I\4HS
sGs
17, Sony t0,
Fujitsu
19,
AI\40
20. l\4icrochip
La vendita in miltoni di dollari dei mrcroprocessori a B bit supera ampiamente la somma di uttigli alLri.
1991 1992 RAIIKIIIG RATIKIIIG l\4otorola Motorola l\lilsubishi lllilsubishi
NEC lntel lntel NEC
SGS SGS f Slemens Nalional I Ti Ti I Nalional og I Toshiba Toshiba I Sony Siemens I Sharp Èl/licrochip J Oki I Sharp Zilog I Sanyo fulicrochip J ltlatra||4HS [4HS Sony Fujitsu Oki Sanyo Fuiitsu Z1
Itlatra
1993
I
{001
t000
RAI{KIIIG
FIt|KIT{G
MilKtilG
RAIIKIIIG
l,lolorola
l\4otofola
l\4otorola
lloloro|a
NEC
l\4itsubishi
ll4itsubishi
tulicrochip
lllitsubishi
NEC
NÉC
Hitachi
Ph lips
Philìps
Intel
lntel
lllicrochip
SGS
JUù
Microchip
lllatsushita
Hitachi
i\4atsu$ita
Hitachi
Toshiba
Toshiba
Toshiba
Fìjilsu
Nationa
National
Zilog
Ti
Matsushila
Ti
Htc0n
Ti
Siemens
Fijitsu
National
Sharp
Zilog
Siemens
994
Philips
I
Èl\4icrochip cnc Inlel
Hicoh
Oki
Siemens
Zilog
Sony
Sharp
SonY
Sanyo
0ki
0ki
Fujitsu
Sony
Sanyo
AI\4D
Temic
tem c
\npt tsrnlsrp s<ep<s doll'e-ienda MICROCHIe produttrice del mrcroprocessore PIC
Perché
it
PIC?
€'É
Presso
i
lvenditori
che dlstribuiscono MICROCHIP in tutto il mondo, tyoviamo una straordinarla
ll'interno dell'ampio panorama di modelli e fabbricanti di microprocessori, qual è la ',t?i regrone che cr ha indotto a scegliere il ptC ,;l'
gio, e molte università e centri di formazione specializzaIt, hanno scelto questo fabbricante per dare suppor-
"';.,i .F:1"
' : to allo sviluppo dei loro programmi formativi. Nella ,
tenere conto che per ogni applicazione concreta esiste un microprocessore ottimale, pero a seconda 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. MICROCHIP ha scalato la classifica mondiale di vendita dei microprocessori a B bit, infatti dai 20. posto del 1990, è arrivata al 2" posto ai giorni nostri. euesta fantastica accoglienza da parte di industrie, professionisti e
offera di prodotti relatwi ai plC
tabella che segue elenchiamo gli aspetti piu rilevanti del PIC:
:
Semplicità di
utilizo
t
,
Preao molto conveniente
ì
appassionati,edovutaalfattocheiPlChannouna dote molto particolare: questi microprocessori sono dotati di un complesso di caratteristiche medie che li
:
avvantaggia notevolmente rispetto ai loro concorrenti. inoltre l'immagine dell'impresa e aumentata di presti-
i
Strumenti di sviluppo economici e facili da utilizzare :
Enorme varietà di modelli di microprocessori
$"*
S+el"+eÉs*$Èe+'uu
tr$€lìn* eii* sEè+*+.+e{*$+e
r.t-
..;
l
'
,tí .ti
I
Un dato significativo è costituito dal fatto che il fabbricante N/ICROCHIP, si è preoccupato più di vendere e far mercato con i suoi microprocessori, che con gli strumenti ausiliari di cui questo componpntp nereqqita In ortesto modo molti ,rrrJJ,Lv. Ye "' strumenti software si lrovano liberamente disponibili attraverso i loro distributori nel mondo, o possono essere trovati nei siti Internet. Le risorse hardware che
sono utilizzate nella sua applicazione hanno fatto sì che molti fabbricanti s'in-
o,9
I !
o,8
I
o,7 o,6 I I
0,5
I
o,4
I I
o,3 I
teressassero alla loro costruzione, quindi
attualmente si hanno modelli di tipi e prezzi.
tutti
i
I
o,2
G
o,r
Sui mercatr esiste un'importantissima e varia offerta di prodotti relativi ai PlC. fenorme varietà di modelli d PlC, più di
un centinaio, permettono di scegliere il mrgliore a seconda delle applicazioni. ll costo dei microprocessori PIC dipende molto dalla quantità acquistata, pero comparativamente è inferiore ai suoi
-#
ffi
I
i
-JI
a a
a
*ill
80c5 l
X8óCXX
Mcó8HC05
coP800
@rMHz
@l2MHz
THOMSOM
INTEL
ZITOG
@4,2MNz MOIOROLA
@20MHz NATIONAL
Ptct óc5x @20MHz MICROCHIP
."_#
Comparazione della velocità di esecuztone di un insteme di programmi di prova del PlCl 6C5X a 20 MHz, rispetto ai principali concorrenti
di 35 che è quella più semplice ed efficiente. ll basso con-
sumo e l'ampio range di voltaggio che permette la sua
Í
elS
-!
STó2 @8MHz
competitori. Sono facili da utrlizzare, perché nella gamma media - che è la più popolare - la gamma di istruzioni è
!l
:ffi
i j I I ll
alimentazione è molto apprezzato. Come si puo vedere dai grafici sia la dimensione dei codici che genera il suo programma, come la velocità di esecuzione lo avvantaggiano notevolmente rispetto ai suoi concorrenti.
,rE
,
2,5
,
i1
2 '1,5
I
o,5 o Ptcl óc5x @20MHz MICROCHIP
i! 1ì-.,",.,.-=,".-.'+"".
coP800 @20MHz NATIONAL
MCó8HC05 @4,2MHz
78óCXX @12MHz
MOTOROTA
ZITOG
80c5r @l I
MHz
INTEL
STó2
@8MHz
THOMSON
l'
t
"."-.,,:..",i
+,*'*r+,*'
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
Disposítivo per la programmaztone del microprocessore plC, preparato per lavorare con chip da 1B a 28 prn. Permette la connessiane a un PC attraverso la porta paratrcta
EEPROIVl,
Come succede di solito con
1e
grandi imprese amerrca-
tJtto in,zia da qua cosa o, motto oicco o, che g"azie allo sforzo, alla qualtta tecnica e alla vrsione commerne,
ciale, assume rapidamente dimenstoni enorm ll primo successo di questa giovane impresa, la cuì sede centraie e a Chandler tn Arizona, risale al 1989, quando mrse In vendita un PlCl6C5X a 8 bit In verstone OTP, ad rn costo molto basso. Due anni dopo, sviiuppo il s stema di emulazione integra e per i suoi PIC
sotto Windows Nel '1992 rntrodusse sul mercato r1 plmo mrcroconÌroller con converttore AD rntegrato st trattava dei modello PlC16C71. Attorno a 1994 commercialjzzo ì primi prodottr con memola FLASH e rl PIC 16C84 con fnemor a di programma
che
fu
presto sostituita con la memola
FLASH, tecnrcamente piu eff iciente. Nel 1996 presento modelli PlC12C508/9, in contenitore con solo B pin,
che ebbero un successo senza precedenti. Alla fìne degli anni '90 presentò la gamma alta, migliorata con una poderosa architettura che risiede nella famiglia PICl BCXXX, riducendo i prezzi dei microprocessori, fino
ad arrrvare a 0,50 $ per unita. Nel 1999 aveva venduto un miliardo d mtcroprocessorì a B bit rn tutto rl mondo.
PICN/4ASTER
Plcl6csx PIC16CXXX
PlclTcxxx (
etcrecxxx
*
FAsclA
BASE
FASCIA MEDIA
ALTA FAsctA MTGLToRATA FAsctA
model i di PIC superano abbondaniemente tl centinaro, e sr possono raggtuppare rn cinque categorie, che
I
sr presentano secondo le loro principali caratteristiche,
nella seguente tabe la.
2oo ns t zo 2OO
ns | 2O
NtHz
33 istr. da
MHz
35 istr. da f 4
bit
58 istr. da 16
bit
77 istr. da i6
bit -)
MHz 10 Mrps | 4o rrlrHz 120 ns / 33
t2 bit
PIC12C5O8
512 x
12
25 x
8
NESSUNO
6
4
I
MHz
Alcuni modelli di PIC sono molto semplici ed economìci, dispongono delle risorse minime per controllare le periferiche principali, come nel caso del PlC12C50B. Altri sono così potenti, come il PIClBCB5B, che i suoi parametri e le sue prestazioni assomigltano a ststemì di applicazrone molto avanzati. Nella tabella riportata sopra, sono messi in comparazione questr due tipi di
72 modelli differenti. Si trovano in commercio con contenitori da'18 a 68 pin e sono dotati di un set di 35
PIC.
ed elaborazione der segnali, che richredono ìa gestione dell'energia di alimentazione.
' 'l
I '';',' , : t'
.'l'.'
istruzioni da 14 bit ognuna. ll loro stack arriva ad 8 livelli orrpsto nprmpttp sino a B annidamenti di subroutine come massimo. ln questa fascia e compresa la famiglia dei P|C14C000, specializzati per i progetti dei carica-
batterie intelligenti, gruppi di continuità, acquisizione
.'
Comprende tutti i modelli rnquadrati all'interno della denominazione PlC16C5X, iquali sono dotati di un set di 33 istruzioni da 12 bit di lunghezza ognuna. Sono talmente semplici che non sono dotati di interrupt, ed hanno solamente due Iivelli di stack. Hanno una dimensione molto ridotta, infatti sono commercializzati in contenitori da 18 a 28 pin, sono ideali per applicazioni semplici, di grande consumo, e che funzionano a bat-
' , , ,.
l,
,.
.
In questa gamma sono compresi undici dispositivi della serie PICl2CXXX, tutti quelli con contenitore da B pin, che hanno avuto un successo commerciale senza precedenti, data la loro dimensione e il loro prezzo. Alcuni îllî {ac.;î hrca olLl :l+riI o: eli ld)Lld ud)cr rvucilr rnrric^^^.1^^^ !urrJPUllut-rl lu dlld ur nrro<ti vuE)Lr rmnIellr quella media.
teria.' I
it
'
t,
:l
Sotto questa denominazione si raggruppano
i proces-
sorì che si identificano con la nomenclatura PICl6CXXX e formano la gamma piu ampia e diversificata, con ben
Hanno un'architettura aperta, che permette l'ampliamento esterno delle periferiche del microprocessore, tramite il bus dei dati, quello degli indirizzi e dei controlli. ll set di istruzioni arriva stno a 58 e la loro dimensione e di 16 bit. Dispone di un sistema molto potente di gestione vettorializzata degli interrupt, e vengono utiìizzati in applicazioni di grande complessità. l l
'-.:,
' ,',':,
';1
'
.,',r
lt,'lll
I'1.;
MICROCHIP ha prodotto nell'anno 2000 la serie PIClBCXXX, caratterizzala da uno straordinario rendimento, dell'ordine dei '10 MIPS ad una frequenza di 40 MHz. Sono dotat; di ln notentissimo set di 77 istruzionì da '1 6 bìt ognuna, e vennnnn rommereializzali in contenitori da 28 f ino a B0 pin Sono destìnati a lavorare con compilatori molto efficienti in linguaggio C, e la loro memoria arriva a capacita di 16 KWord da 16 bìt.
Selezione e presenta zione del "PICI6F8 4" na volta deciso di utiiizzare un mrcroprocessore PIC di N/ICROCHIP, il passo seguente e
scegliere il modello adeguato
pe' il nostro
progetto, all'interno de '116 possibili Per poter fare questa scelta, dovremo st;diare molto attentamente le caratteristiche dell'applicazione che il chin dovra oestire. Nel lavoro che abbiamo intrapreso vogliamo costruire un robot mobile che sra capaÀi,,^"-, -^ ur lrLVurs LL ^t ^.^^,,t"^ urvq: uOl'lìpt{L
..,;ir1.r, tl,l,.:i;:r; 11' , 1,,, , :. r,.,':, Per governare un robot mobile, il microprocessore dovr: renol:rp drre motori che muoverannO le fuote motrici, e dovrà ricevere ed elaborare le informazronr che gli rnvieranno alcuni tipi di sensori, come quelli di prossimita, di contatto, di temperatura, a ultrasuoni eccetera. ll corretto trattamento delle informazioni fornite dai sensori, determinerà il movimento delle ruote. '1,,,.,'
,
I r
l.
I compiti che desideriamo rnstallare nel nostro animaletto intelligente, saranno molto diversi, anche se non 'nolto complicati. Per questo motivo, ron serve che la memoria del programma e dei dati del PIC sia molto grande. Quello che risulta indispensabile e che la memoria del programma possa essere scritta e cancell:i: rìn+ó \i^r+^ . noroc<:rin qudrìLe rdLd n' v(JrLe .s'd r--,---,,-, narrho r,-,-,,- il., nr f.,'Ogfamma d'oendera dal lavoro che dovra eseguire rl .obot D'altra n:rtp il mirronroro<.qoro <rpltn sorvir,r npr ,far _, ct tmpara'e la programnazione prima di costruire I robot; questo signifrca che lo programrneremo e lo proveremo eseguendo molti esercizi didattici e pratici
Una volta stabìlite le caratteristiche oiù imoortanti che deve avere il modello del PIC che qovernerà il nostro
Dimensioni e costi ridotti
Memoria di programma con capacità di circa 1000 istruzioni
Un robot come il famoso R2D2 di "Guerre stellari" necessita
Memoria dei dati di almeno due dozzine e non volatile
di indirizzi,
rt^ trn ur rhe np<li<es i<ttni moforr, p -tì , qi2 rru LolJoLq ricevere ed elaborare le informazioni inviateqli dai sensort. rli ttn mirrnnrnlp\\nrp
-.1,".,,
il:,.,,1,::,:,: i:',,::;l
'
.-""-''-'..'.'.'.',.,".'..fr
,ò7;ll'
MICROCONTROLLER Sceltei
del
ii
PIC
robot, le potremo
riassumere
nella
tabella
".
Caratteristiche che deve avere il PlC Conoscendo le esigenze che deve avere il microprocessore, potremo trovare nel catalogo del fabbricante un modello della gamma media del PIC che soddisfi le "
nostre esigenze.
ll modello che meglio si adatta alle nostre richieste, è il PlC16FB4, capace di lavorare fino a 10 MHz, pero dispone dr una versione PIC'l6FB4A, capace di funzionare fino a 20 MAz Sceglieremo il modello normale, perche tendramo a minimizzare il costo, e la velocità di elaborazione non e critica.
E piccolo perche ilsuo contenitore ha solo 18 piedini. La memor a di programma ha la capacità di 1 K word da 14 hits e nonrrna di orreste nrro ronlenere rrn'istrUzione.
Inoltre, è di tipo flash, il che permette di registrarla e cancellarla irn mioiiaio di volte in tutta sicurezza. la memoria dei dati contiene una zona RAN/ volat le da 68
bytes,
e un'altra EEPROM non volatile, da 64
bytes,
adeottata alle nostrp esinonzp Disnone r^li 1? l,nee di l/O dioitali un temnorizTÀIorp |rn watch-doo nrto funzio, ""Y, Y' -'y'.-'', nare in modo "riposo" con basso consumo. La velocita
Memoria di programma:
I
K
x 14, tipo flash
Memoria dei dati RAM: 68 Bytes s
:îS:u *
tt
-t
*!
4 {g
Memoria dei dati Eprom: 64 Bytes
L!""Ilt'g!3
a 5.!j
Set tJi istruzioni: 35 da14 Bits
-'
Tempo di esecuzione delle istruzioni normali: 4 X Tosc
a:
i;-
91 r$: S'"
Tempo di esecuzione delle istruzioni di salto: 8 X Tosc Cause che provocano
Interrupt: 4
Frequenza massima di lavoro: f 0 Mhz Linee di l/O digitali:
'13
Temporizzatori: uno per l'utilizzatore, uno per il watch-dog. Tensione di alimentazione: da 2 a 6 VDC Tensione di programmazione: da f 2 a 14 VDC
Contenitore: DIP a 18 PIN (oppure SOIC)
MICROCON
al
6F84 esistono altri modelli con caratteristiche molto simili. Così il PlCl6C84 è uguale, però con memoria di codice di tipo EEPRON/. ll PIC16F83 ha come memoria di programma FLASH solo 512 oarole. Ci sono modelli le cui lettere intermedie Assieme
PIC'l
sono CR, il che significa che la memoria dr programma è RON/; questi sono interessanti solo quando il programma e sempre lo stesso, è gia stabilizzato, e viene montato in serie di molte mioliaia di aezzi.
ll
PIC
1
6F84, che utilizzeremo nel nostro lavoro
di
apprendimento dei microprocessori e applicazìoni alla robotica, è fabbricato con tecnologia CMOS e si trova incapsulato in un contenitore plastico con 1B piedini, come si può osservare nella figura. Secondo le loro funzioni, i piedini si classificano in 4 grandi gruppi.
lmmagine del PlCl6FB4 sopra uno zoccolo per proteggere i suoi piedini.
massima di funzionamento è di 10 Mhz, che risulta sovrabbondante, dato che le istruzioni si eseguono a 400 ns, tempo inferiore a quello di cui noi abbiamo bisogno nella nostra applicazione. Pensate che il programma più lungo è di 1 .024 istruzioni e a questa frequenza ci sara un ritardo nell'esecuzione di 0,5 ms, che vengono accettati come tempo massimo di risposta del
Perché tutti r componenti elettronici del microprocessore possano f unzionare, è necessaria una tensione di alimentazione a corrente continua, che deve essere applicata nel seguente modo: il positivo al piedino VDD e la terra a VSS. ll voltaggio di alimentazione è compreso tra
robot.
2e6VDC.
èi;c[r
. Alimentazione
Ptcr6c84 Prcr6F84 Ptc!6cR84 PlCr6F84
4ltttl\|lllti/|M
to
lo lk
tk 36
68
64
64
TMRO+WDT TMRO+WDT
RAilGE DI
tl
4
4
t3
t3
2.0'6.0 2.0-6.0 18 pin l8 pin
DrB
Varianti del PlCl6FB4
SO|C DrB SO|C
PrCr6CR84
L'altro compito del piedino 4 p -l rho ci rifaric.o r nttolln rilLrrrLC yuLr dl
PD|P, SOIC
VPP cioe nermette la scrittu-
€ *
* MCLR *
*
Vss '-*
**
RA4/TOCKI
€ RBI *
**
RBO/INT
RB2 RB3
*
{-*
ra e la cancellazione della memoria FLASH e EEPROM del PIC 1 6F84 Per ouesto Y
R/qI
lavoro si deve fornire al piedino 4 una tensione a cor-
R/AO
rente continrra comnresa tra 12 e 14Y.
oscl /cLKlN osc2lctKouT
.
I tredici piedini rimanenti, di
VOO
cui non abbiamo ancora -i ^-.1-+^LU, 5l lJdllcì
RB7
"* *
,,+il;---^^ ULllll./dll(-)
pef
introdurre e ottenere infor-
4-È RBó
*
Linee di l/O digitalì
*--;^^: !i^i+-l !- ^ vr,:fSO tt taLtwt I ut9tLoti, uo u
tl
nrocessore Orresti niedini H sono dislrihrriti sl 2 oorte.
RBs
la A rnnc+r,-J LO ^^.ta LO H lV|)tO VWr
RB4
U
tr l,^^^ J lttCE
che corrispondono ai piedini
denominati RAO-RA4 nnrt: R o r1icnnct:
qr JU rR U
di l/O rhp corrisnnndono
Contenitore del PlCl 6F84, cosi come di tutte le sue vanantt.
La
linao llllrc
ai
pìedini RBO-RB7. Ci sono un
.
-.^-r,---"^r^ ^-ioni di l/O uo|LLQt E rE + turrl
n.ein ul di PlEuil nipdiniil l|E/ r.hp vrLrE nl+.^ a vqlu
Frequenza di lavoro La velocità di funzionamento del PlC16FB4, e determi-
digitali, hanno un alrro compito multiplexato, corne
n:+: llOLq
.^i^^L^"À -,,-^+i1Lr. pru dvdr )prcgr rcrd ^;,,
r{:ll: UOI|O
{ran"on-:.ho llEVUE|l4O 1,,!
ci nonor: intornan-^^+^ rru'rlclltc/
-1.^ LllE
si
deve essere stabilizzata dall'esterno mediante un cri-
-+-il^ ..Ji ul 9uol4w
-^ilîoato ai ur nredini il p'Luil
LUlltrVuLv
)LCllU
oSC 1/cLKlN e vJL
ll PlCl6FB4 è un circuito integrato con doppia fila
OSC2/CLKOUT.
.
Reset e programmazione ll piedino 4 denominato N/CLR#/VPP, supporta due funzioni rhe si mrrltinlpxano nel tpmnn ll PIC lavora norm:lni:ntp oqonrrondn il nrnnr:mm: rho h: roni<tr:tn nella memoria FLASH, quando si attiva a un livello basso sul piedino 4, si reinizializza o resetta il microprocessore n{testo sicrnifica che i cr rni rpni<,tri intprni aSSUmono un valore determinato e che il contatore di programma punta la direzione 0, da dove incominciare il programI
:^i-r-ri-'-'r^ tu.
lld pul I rLtorLLót
tv ^ 4CLR:
lVaster Clear Reset.
NOîA !À'IPOn!AHTE ll simbolo # che si antepone a certi segnali indica che i medesimi sono attivi a livello basso. Questo simbolo è identico alla riga che si trova sopra al nome del segnale.
r,;i,,;; r'rli 2,i:it'l:.ti
:l:.:
!l:i:,
di
piedini. Ha 9 piedini metallici su ogni lato del contenitore che sono abbastanza flessibili. Questo circuito integrato, a volte, deve essere scrit+a rnl nraarr*-. .,,^^^r+î -h^ ^^. por essere ro cor p"ogramma cne supporLd ilil 1.,,^"^ dvoro, per inserito nella scheda di applicazione ed e abbastanza frporrentp dnverlo inserire sullo zoccolo dello scrittore per poi toglierlo e reinserirlo nuovamente su quello
dcll: crhcd,a di :nnlirazione Orrpsta onerazione Y vrJ
Lu
vvL
e
molto delicata perche se si forzano e si piegano i piedini rinetute volte notrebbero staccarsi rendendo irrecuperabile il circuito integrato. Raccomandiamo di collocare il PIC'16F84 sopra uno zoccolo normale, perche srano i piedini di quest'ultimo a subire la pressione, o menlio sosîiîrrire lo zoccolo dello scrittore o della sche"'_v"' r- ur'Ji oPPilLo4rurc, -^î uno zoccolo a f orza di inserzio^^^ri---i^^^ LUI uo
,,^- l^,,- -^^ ne ^^"^ ' fOf i dOVe rc Inrrll: uilo, n|esto rE oPtE 9uc)LU nnssip;^ PU))rEuE ur rc rcvo lr piedini, si introducono i cio aiuta enormemente a preservare l'insieme dei oiedini. I
I
La frequenza di funzionamento del, microprocessore .--r.i
l cervello del nostro robot sarà un mtcroproces;" sore. ll modello scelto è il P|C16F84, che è un t:::-,':_ piccolo computer la cui missrone è eseguire le istruzioni che noi scriveremo nella sua memoria ' .''.i.i , '' di programma. Attraverso queste, decodificherà i dati che gli invieranno i sensori per riconoscere le ,
:r.:
caratteristiche dell'ambiente, stabilendo con esse la strategia di movimento dei suoi motori per realizzare efficientemente i comprti che gli abbiamo attribuito. ll PIC sa solo eseguire istruzioni. Ne conosce 35, non una di più. Nel suo costante lavoro di esecuzione, converte le istruzioni in operazioni elementari. Ognuna di queste cperazioni elementari necessita per essere eseguita sempre dello stesso tempo, che è stabilito da un clock molto preciso che indica I'inizio e la fine di ognuna.
ll nostro robot ha incorporato un PlC16FB4 che puÒ 'funzionare ad una freouenza di clock massima di 10 Mhz. Esiste una versione speciale chiamata PlC16F84A,
che ammette una frequenza massima di 20 Mhz. Se lavora a 10 Mhz ogni ciclo di clock durerà 100 ns e in questo tempo si realizzerà un'operazione elementare di una istruzione. Pertanto, un'istruzione verrà eseguita in vari cicli di clock.
Tanto maggiore è la frequenza di lavoro del PIC tanto più rapidamente si eseguono le istruzioni e prima
si realizzano i programmi, pero ci sarà maggiore consu-
mo di energia, cosa molto importante nei sistemi alimentati da batterie.
; i ,;:,,
'
l',.i,;,,:t,r;,
ll ciclo di istruzioni è il tempo impiegato ad eseguire un'istruzione. Non deve essere confuso con il ciclo di clock, che è il tempo con cui si realizza un'operazione elementare.
Un'istruzione si esegue in due fasi: o Fase di ricerca: nella quale si cerca il codice binario dell'istruzione nella memoria del programma. . Fase di esecuzione: nella quale si interpreta il codice, si cercano gli operandi e si eseguono le operazioni conseguenti. Ognuna delle due fasi di istruzione si realizza in quattro ciclidiclock, che sichiamano Q1, Q2, Q3 e Qa. Quindi se ogni istruzione fosse eseguita in sequenza si tarderebbero quattro cicli di clock nella fase di ricerca e altri quattro in quella di esecuzione, in totale otto cicli, come si vede nella frgura. I microprocessori PIC dispongono di un processore molto moderno, nel quale si utilizza la tecnica
della segmentazione per eseguire le istruzioni. Questa tecnica si usa anche nelìa fabbricazione delle macchine, e nelle catene robotizzate delle grandi
FASE DI RICERCA
FASE DI ESECUZIONE
Un'istruzione è composta da due fasi: ricerca ed esecuzione. Ogni fase occupa quattro cicli di clock, e se il PIC avesse un processore normale il ciclo dell'istruzione occuperebbe otto cicli di clock
t.:"
e inizicrlizzeizione
Velocitù dl, I
:
*3
" @i
r-
,,:1::::1|11l::l::::tt;::l',$i.t'tll)::
DELU ISTHUZIONE
ll processore del PIC è diviso ln due parti indipendenti. Mentre una realizza la fase di ricerca di un'istruzione, l'altra si rncarica della fase dt esecuzione di quella precedente
fabbriche In pratica, invece di iniziare un'automobile, e fermare la produzione fino a che non sia stata terminata la prima, si divide il lavoro in stadi successiv, in modo che iveicoli passrno da uno stadio all'all-',^.n pdldllel(J, n:r:llaln Sl rleSce trn ( nn,y-*-.n{toqt: tprniroel lavoro -,-, ra Àol a dividere il tempo impiegato in tante parti quanti -^^^ ^li gll -+--li slaor ,,+ili---+ uuillrdLl. sono
ricerca di un'istruzione, il secondo si oedica a realizzare ra fase di esecuzione dell'istruzione che e stata prece-
dentemente trovata. Con la segmentazione si ottiene di w9rrr nnni i<trr rzinnp rrur npl temnn Ii Ulld lo)C, rur r)rru4,vrrL ur "^a +r.ò <:rphhe e: v,,L dirc nrr:ttrn di clock. cicli YvuLL,v Al sovrappors' dei due stadi d'istruzione, il tempo che imnipne rrn rrrln di istrr rzionr e di orratiro cicli di clock. rzinno Il'acorr c)ELu4tvttE
ll nrorcssore del PIC e
costruito con stadi diffe-
renziati,
o
stadi
che
generano una segmentazione di secondo ordi-
FASE DI RICERCA
f
ne Uno stadio realizza la fase di rìcerca e l'altro
tslRUztoNE FASE DI RICEBCA
2" ISTRUZIONE
la
FASE DI RICERCA 3" ISTRUZIONE
fase di esecuzione Gli stadi sono indipendenti fra di loro, quindi possono lavorare in parallelo;
FASE DI ESECUZIO}IE
,f
5AISTRUZIONE
il
Dato che la fase di ricerca e quella di esecuzione si realizza in parallelo, il ciclo di istruzione dura quattro cicli di clock
prtmo sta effettuando la fase d mentre
Un P!C16F84, che funziona ad una velocità 10 Mha esegue un programma di 100 istruzioni,
di
delle quali 30 sono di salto. Calcolare il tempo che impiega ad eseguire il programma,
TEMPO Dl CLOCK =
,i;l;:ji,yt
,;.
!;
,;1
nell'esecuzione del programma anteriore in un P!C16F84 che funziona ad una frequenza di 4 Mhz.
;,:.
:1,1,:-:':
TEMPO Dl CTOCK = 1s I 4 Mhz = 250 ns
TEMPO Dl CICLO ISTRUZIONE Dl SALTO = 8 x T. CLOCK = 2.000 ns = 2 ys
:5l
x 8ffÌ=S
,.;i :;, -:,; ;riy
Calcolare il tempo di ritardo
I s/ f0 Mhz = 100 ns
TEMPO Dl CICLO ISTRUZIONE SALTO = 8 x T. CLOCK = 800 ns
,itùr j!tlrr,r!N:]*!i,::]i#lHì.ìlrr:rìrr}rrrrrl
ISIBUZIONE
FASE DI RICERCA
:+:,:i';
:,i";
úft ,.,jij@rr#tlsÍ{!{l1
jìrììlìxìì11ììtlrrrltlillrnr\irmr&14?mrlifr
lfr
stllffi f lÍ{f 11fi
11
í,t'
Questo è valido per tutte le istruzioni del
ronortorin p.rctto rhp ner nrre lle di <:lln rho <nnn nirrlonto o imnìpo,eno il
St r* tlt.s
doppio del tempo, cioè otto cìcli di clock. l,a r:niono di nrrpsto ritardo si deve al {r++n rhalc IdLLU Ll ^, '.ndn vuoriuv
:rrirrr qrrrvo
NeE {ÍS
:l nrnao<<^ro or PrvLsJJvls
c:o
un'istruzione di salto non si puo comin.i-r^ Lldlc
la I lLqlLú ld {-.^.li l6)c ul r''rarra
rjoll> uLilu
(afl1Anto JLVULTTLL,
nerrhe non si sa orrale sia. Le istruzioni normali sono ordinate in indirtzzi succes-
sivi nero nel caso di un'istruzione di
I
salto, fino a quando non si completa la fase di esecuzìone non si puo sapere quale sara I'indtrizzo seguente.
I
microprocessori PIC dispongono di un oscillatore interno che determina la f requenza degli impulsi di clock Sonz: drrhhio nor rontrollare il valo-
Cristaili ar quarzo
re della frequenza e stabilizzarla, e necessario aggiungere alcuni elementi esterni ai piedini 15 e 16 (OSCl/CLKIN e OSC2/CLKOUT).
Secondo il tipo di cìrcuito esterno, gli oscillatori dividono in quattro tipi
si
di
uso corrente
. . . .
Oscillatore RC Oscillatore LP Oscillatore XT Oscillatore HS
Uno dei dat, di inizializzazione necessamicroprocessore riguarda il tipo di oscrllatore che si utilizza. Der questo esistono due bits FOSCl e FOSC2 in una posizione della memoria di programma, chiamata Parola di Configurazione, che dobbiamo scrivere con la combinazione
ri al
+Voo
corrispondente.
':,,,:l
ffi OSC2/CLKOUT flw-> Fosc/4 Fosc Rexr 625 kHz 10 ko 80 kHz 10 kfi 80Hz 10 kO
ln
,L' nrro<tn VULJ(v
r:<n <i rnllon:nn :l nior^linn 16
del PIC 6FB4 (OSC 1/CLKIN) una resistenza 1
e un condensatore, i cui valori sono forni-
Cexr
20pF 220pF o,1pF
ti dal costrutlore nella scheda tecnica, e cne sono funzione del valore della rreflron7: C)rresto nroredimento e molto economico, pero la stabirita della f'equenza è mediocre e sono adattr solo in sistemi in cui il tempo non sia un fattore critico, e
il risparmio sia un obieltivo prioritario. Dal
edino 15 (OSC2/CLKOUT) esce la quarta parte della f requenza di clock (Fosc/4) che e iì tempo di ciclo di istruzione normale p
I valori della resistenza R esterna e del condensatare C esterno determinano la frequenza nell'oscillatore RC Questl dati sono forniti dal fabbrrcante
';:
't:;:;;tj tt,
Questo tipo di oscillatore si usa per lrrinrrro
ran
rze supefloI
fraartar
a
4Mhz. Ulilizza un cristallo di quarzo e un risonatore ceramico tra i piedini '15 e 1 6 collegato ai condensatori di disac-
OSCl/CLKIN
coppiamento. Non tutti i modelli di PIC ammettono questo tipo di oscillr+arn Flr+r lo LU E. UAtA
l-.,,-)Ud drLd .l+- +.^^,,^^-tA il trquct tzdr :ltl
consumo è molto elevato. i;t F;
it
l_r
ii
it +.*,.,,"=,*=,".,."",.*,.,.,",=,-, Per le f requenze comprese tra
=_,.._,.,_,,,.,.,_,j
4 e 1 0 Mhz i condensatori CI e C2 hanno una capacità
i-tfiq-"ii"L+ {-}+:iF: i"::r' i piedini 15 e 16 del microprocessore si monta un cristallo di quarzo della frequenza corrispondente a
i
Tra
quella'con cui si vuole lavorare. È possibrle instaliare al posto del cristallo di quarzo un risonatore ceramico A ognuno di questi piedini si collega un condensatore dr disaccoppiamento ilcuivalore è fornito dalfabbricante. A,,^r+n vuE)Lw
, '
.-:;trLi'.i,1,
i:5li:ì +l
ia'j
ili;,irî I f
;ri L 'ì
"i
=il
il
È,-.1" i.
i-i i:i {;
Quando il pin 4 (MCLR#) passa a un livello basso, il PlC16tB4 si resetta e ricomincia a eseguire il programma dall'inizio nonendo à uno Stato noto
tutti isuoi registri interni,
+;^^ --l -++^ pcl ^^" ^li V)LilrOLUrE ^.-ill-+^"^ ^ CUCttu LIPU Ur E
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 ^^-^--t'^ Lr rC IICLtj>)ILd
nr-
^l TIL dl
per funzionare, dalo molto importante nei sistemi che si alimentano a batterie.
#SflEil€-.éè€q}-qtr
SsiT
.^^lC U)ClCOrroctn o ,r tinn L ìl Lrl.,v di ur n<rill:+nra vrlllloLUlC Ll "c^r^ VuLrLv 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 dipendono dalla frequenza selezionata.
€*€**$*'efu
#* $ww*s*
*
e
Quando si attiva il pulsante di RESEI si resetta il microprocessore, cosi come quando si applica la tensrone di alimentazione per la prima volta
$s&€H$*E$eemeÈ**e*
Questo
processo avviene anche quando si collega per la prima volta la tensione di alimentazione al chip, e si chiama "Power on Reset" Le due azioni principali del processo di rernrzializzazione o reset, sono mettere a zero il Program Counter con il quale si inizia l'esecuzione dell'istruzione situata nella prima posizione della memoria di programma, e porre ad uno stato conosciuto tutti bits dei orincioali reqistri di controllo del PlC. i
t,
i.!;
"t
-r,
-,:,,
t,
-
't'
fintuizione di un sognatore el 1945 Von
Neumann stabilì le basi per la costruzione dei com-
puter che oggi hanno invaso
MEMORIA
PROCESSORE
PRINCIPALE
il
BUS DEGLI
tNDtRtzzl
mondo. Disegno una macchina in cui vi era un blocco - unità di conrrnlln Lrvllv
ictrr
- LovoLE
Ài llininp5laf;ra rLEi Pr sLors ul
rrn| ilinciomo .li uÌ rJrEr I rE ul
rzinni nonor:\/: i qonn:li nore<q:ri nor l: v!' "' '!'
realizzazìone delle operazioni che coinvolgevano le varie sezioni del blocco di elaborazione dei dati. I ln nr:ndo
arrhtt,tn
coniirir
E DELLE ISTRUZIONI
lp istrrrzioni del nrnnramma insieme ai dati che esso oestiva. infine un ultimo blocco. J.'""-' -hi---+^,,^i+^lì l^^"^..^/,,.-i+Lr ildilrdt\J urrLd ur il19rc))u/u)LtLd,
BUS DI CONTROLLO
BUS DEI DATI
nór .^ntanóra
^^"'-^++^ pc||ctLc-
va il trasferimento delle informazioni da e nor lo noriforirho a<tprno Orroct'inciomo di rl YsLJ\ olomonti ò r^rrrpllo rhe e conosciuto come computer.
ffiffiffi
MEMORIA PRINCIPALE
PROCESSORE I bus sono un Ìnsieme di linee digÌtali, trasportano tulte le informazioni che gestisce il computer. BUS
t,,,',t,:;,'t;
1
,,
,1,
I ,:,.1',,
ll computer di Von Neumann è una macchi-
na digitale. Tutte le informazioni vengono archiviate in formato binario, ed essendo una macchina elettronica, impiega per rappresentare i due bit di questo sistema, il livello logico alto e il livello logico basso, che generalmente corrispondono alla tensione di alimentazione +VDD e massa o VSS rispettiva mente.
Un'istruzione del computer è formata dall'insieme di bit che la codificano, e la
:1 ,.:,. tr,,,.,,, r.
stessa cosa awiene per i dati. La memoria è
Architettura base del computer di Von Neumann.
.^mn^<+: d:nli ,,,-,|zzt necessaI per --r,, indi
':1.1
1,,.i,:','i:i; "l
immagazztnare le istruzioni e idati brnarr. L'unità di controllo riceve le istruzioni che man 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
PROCESSORE
racco-
gliendo gli operandi dalla memoria e dagli l/O,
inviando irisultali a questi blocchi secondo .^^-i{i--+^ ^,,-^+^ VuorrLv rpsLrr!oLv ^luo- OQI-ìl lStfUZlOne. Pero tutto il movimento delle informazioni all'interno del computer è realizzato da tre 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 computer. ll bus degli induizzi e caricato dal procesqÒro .nn ali ind rizzi dollp istrr rzioni d: pspnrrire
MEMORIA (DATr)
tlo (PERTFERTCHE)
o degli operandi da cercare. Infine, il bus di con-
trollo supporta nelle sue linee differenti segnali, rome orrelli del clock che sincronizzano il lavo-
Nella fase di esecuzione, la ALU del blocco di elaborazione dati esegue le operazioni indrcate dal codice dell'istruzione
ro della macchina, quelli di lettura/scrittura che indicano ìl tipo di accesso alla memoria eccetera.
L'esecuzione di un'istruzione inizia in una parte del processore che si chiama Puntatore, o Program Counter (PC). È situato nell'unità di controllo e contiene l'indirizzo dell'istruzione da eseguire.
il
Puntatore dispone di un contatore che aumenta automaticamente di un'unità il oroorio valore ad ogni istruzione eseguita. Questo perche la maggior parte delle istruzioni di un
Di solito
programma,
si trovano ordinate in sequenza
nella
memoria, e all'indirizzo successivo all'istruzione in corso d'esecuzrone, si trova quella da eseguire successivamente. Questa regola non vale per Ie istruzioni di salto,
in cui si include I'induizzo dell'istruzione che deve essere eseguita al passo successivo. ll contenuto del Puntatore arriva tramite il bus degli indutzzi sino alla memoria, dove seleziona una delle oosizioni nella ouale rìsiede il codice binario dell'istru-
zione in corso. ln questo istante attraverso il bus dei controlli arriva l'ordine di lettura della memoria, e il
contenuto dell'indirizzo selezionato dal Puntatore viene caricato sul bus deì dati e istruzioni e portato al processore, dove passa su di un registro specifico chiamato registro delle istruzioni. Tr rttn il nro.oqqo r'li localizzazione delle istruzioni e il caricamento sul registro delle istruzioni stesse prende il nome di fase di ricerca e si rioete oer tutte le istruzion
i.
Dono rhp il rodiro bìnario delle ìstruzionr è ci:tn )LoLU
MEMORIA
PROGESSORE BUS DEGLI
rNDtRtzzl
BUS DEI DATI E DELLE ISTRUZIONI
Fase
di ricerca di un'istruzione
r:rirr+n LollLcLU
ronictrn ttttLtu inizi: ì. tó dl.JPvJ'rv 'll'rnq6citn fase di esecuzione. L'unità di controllo interpreta o traduce il codice delle istruzioni e genera cr )Ull
una serie di segnali che invia al blocco di elaborazione dati, il quale è formato da una Unità Logico-Aritmetica o ALU, che sarà incaricata di effettuare le operazioni logiche o aritmetiche 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'islruzrone stessa.
MEMORIA
MEMORIA DI PROGRAMMA
DEI DATI
PROCESSORE BUS DEGLI INDIRIZZI DELLE ISTRUZIONI
BUS DEGLI INDIRIZZI DEI DATI
14,
8,
I
BUS DELLE ISTRUZIONI
BUS DEI DATI
l--
a uir
__________*l
Architettura Harvard nel PlCl6FB4
tro la dimensrone delle sue celle dovevano adattarsi entrambi i tipi di informazioni. Sino agli ultimi anni del secolo XX, la maggior parte dei processori erano costruiti seguendo l'architettura pro-
posta da Von Neumann, come se si trattasse
' dogma di fede.
di un
I e nprpssita dpoli utilizzatori richìedevano nerò sempre maggiorr valori di rendimento, sarebbe a dìre sempre maggior numero di istruzioni eseguite per unità di tempo (MIPS: Milioni di lstruzioni Per Secondo). Per migliorare questo parametro furono implementate le tecniche moderne, come la segmentazione, la
predizione del salto, e altre ancora più sofisticate; comunque i principi di Von Neumann seguitavano a rimanere inviolabili. In seguito ci si rese conto di una grave limitazione: l'esistenza di una memoria in cui si scrivevano a caso sia i dati sia gli indirizzi delle istruzioni. Fra imnossihile accedere nel medesimo tpmno a entrambi i tioi di informazione. Inoltre il memorizzare richiedeva una memoria dimensionata per entrambi itipi di informazione: istruzioni e dati, mentre la dimensione o la lunghezza dei datì è molto differente da quella delle istruzioni.
Rìassumendo, l'inconveniente dell'architettura di Von Neumann era localizzaLo nella memoria unica di cui disponeva il processore, che da un lato impediva l'accesso contemporaneo ad istruzioni e dati, e dall'al-
ad
,,''tl',
I mrcronrocessori PIC si basano su di una nuova architettura chiamata Harvard. Essa è basata su due memorie indipendenti, una dedicata alle istruzioni e l'altra ai dati. Questa indipendenza permette di realizzare accessi simultanei ad entrambe le memorie, e trovare un'istruzione mentre si sta scrivendo un dato. lnoltre la rrnrri+r LdPdLILO
Ut UVIt ^i ^^^i
rrCilrWrrq -^mnri:
nl^ puw
o<<ora c))qrq
rllr 2611++r+r ara qucLLata
necessita snecifira dell'informazione che si deve npstirp
in ouesto modo la caoacità della memoria delle istruzioni puo essere molto piu grande di quella dei dati, come conviene che sia nela maggior parte delle applicazioni con i microprocessori. Inoltre si puo differenziare e adeguare alle specifiche esigenze la dimensione in bit delle celle di ogni memoria. Nel caso del PIC 16F84 la memoria di programma che è quella dedicata alle istruzioni, ha una capacità di 1024 celle di 14 bit ognuna, è costruita con tecnologia FLASH, che permette di sc.iverla e cancellarla elettrica-
mente. La memoria dei dati ha una capacità molto più piccola e le sue celle hanno una dimensione di 8 bit, che è la dimensione tipica dei dati. È volatile, di tipo RAM, ed a complemento ha una piccola memoria ausiliaria non volatile di tipo EEPROM, per contenere i dati di tipo permanente, necessari in alcune applicazionr. Lindipendenza delle due memorie esige dei bus dif-
.
.
'ì
ferenziati, per cui la memoria di programma si control-
la con il bus degli induizzi, con linee sufficienti per discriminare 1 K posizioni, e un bus per trasferire istru-
zioni da 14
bit ll bus che gestìsce gli indirizzi della
memoria dei dati ha meno linee, perche questa memoria ha minore capacità. ll bus sul quale circolano idati ha 8 linee per supportare i bit di ogni posizione.
istruzione da eseguire, ma dato che ricevono differenti flussi di dati, questa istruzione ottiene differenti risultaPpr nntor rondirridors i dati intermedi e i risultati che
ti
i processori, e necessario che esista una intercomunicazione fra i microprocessori. Ci sono due modi di ottenerla: producono
ln questo caso tutti i processori utilizzano una memoria comune, e quando uno vuole inviare un dato ad un altro, prima lo scive in una posizione che l'altro conorce, e 5uc(essivamente l'altro legge questa posizione. Secondo l'accesso permesso alla memoria, abbiamo quattro categorie:
Anche se I'architettura classica di Von Neumann e la Harvard sono molto popolari, esistono molti modi per classificare queste macchine: uno dei piu rilevanli e quelìo proposto da Flynn nel '1966. Per distinguere i proces-
sori, Flynn ne distinse il numero di flussi di istruzioni e il numero di flussi di dati che questi processori avevano. ll nrnresso comnrrtazionale consiste nell'esecuzione
. CREW: Lettura Concomitante - Scrittura lsclusiva. Vari processori possono leggere una locazione di memoria. però solo uno può scriverla,
qpnronz: di isfruzioni su un insieme di dati. ll flusso di istruzioni e la sequenza sopra la quale opera un processore, e il flusso di dati comprende la sequen-
di
rrn,a
JLYv!'
4d '- J^i uoLr i^ il r i^^"^..^ il r9rc))u ucr À.+i fnf:li rho <i nonor:nn
c^ lro .^^' )Er]ucr4d '^^--
,l^i ucr ^l-+i udLI ^."-i-li Pdtztdil
c^ r
CRCW: Lettura Concomitante - Scrittura Concomitante. Vari orocessori possono leggere e scrivere simultaneamente una locazione.
Le architetture dei computer sr caratterizzano per l'hardware che utilizzano per gestire il flusso dei dati. Flynn propose quattro categorie:
Negli ultimi due tipi si origina il problema dello scrivere nella stessa locazione da parte dì vari processori. Questo si risolve applicando una dr queste tre alternative:
i'
', ,
Corrispondono ai monoprocessori convenzronali, tipo Von Neumann, e dispongono di una unità di controllo e di un blocco di elaborazione dati. Le istruzioni in codice binario ricevute dalla memoria sono decodificate dall'unità di controllo ed eseguite nel blocco di elaborazione dati, con gli operandi che arrrvano dalla memoria der dati, archiviando poi in quest'ultima irisultati. '''''':
2, 5e tutti vogliono scrivere la stessa cosa, si può scrivere, in caso contrario. non scrive nessuno.
t
:.'".I'
Snno romnosli d,a 'n' unita di controllo che ricevono ognuna un flusso dr istruzioni differente.
Le istruzioni codificate sono inviate a 'n' unita dr processo, ognuna delle quali riceve il medesimo flusso dei dati o onerandi Orresîo slonif -'J' " ica che differenti sequenze di istruzioni vengono eseguite sopra lo stesso dato. MISD: Multiplo flusso di istruzioni, unico flusso di dati. Non sono stati costruiti modelli commerciali di questi tipi di computer '
f"rl rì,Ì ili.i t i:ij;, ii:tr.,i+ Hanno un flusso di istruzioni unico e un flusso di dati multiplo. Esiste una sola unità dì controllo. che governa differenti processori. Tutti i processori ricevono la stessa
;i'i;;;:;i:|::.:ii-i::;":Í;.iil]:Ì,.il:;]:j|!:i!!;||ii:,!,'i!111',1;;ij'..,,...|11ii|i.|1:||.N
In quela topologia la memoria è ripartita fra tutti i procesori, i quali sono uniti da linee bidirezionali di comunicazione. Ci sono diverse varianti, a seconda della rete di interconnessione che si utilizza.
;'I .i 'i :'i It ; i:;,i,..;; È un gruppo di monoprocessori convenzionali, ognuno con la sua unità di controllo e il suo blocco di elabora,L
;i
1""r
1;r
y'
,1
zione dati, associato ad una memoria locale. Lavorano in
parallelo ognuno con il proprio flusso di istruzioni e il oroorio flusso di dati. Inoltre se utilìzzano la memoria condivisa, ricevono il nome di Sistemi a Multiprocessore, se utilizzano la rete di interconnessione danno luoqo a Sistemi Multicomouters.
||
MTGROGONTROLLER ll
PtC
| óF84 denlro
\*,,,*,
It banco dei registri
PIC
fanno un uso intensivo dei registri per realiz-
zare le ooerazioni necessarie alle istruzioni che
si
stanno eseguendo. Questo significa che normalmente la ALU del blocco di elaborazione dati, ulilizza come operando il contenuto di un registro e il risrrhafo lo nrro archiviare rn un altro reoistro In realtà La ALU necessita didue operandifonte per realizzare un'operazione. Uno di questi è sempre scritto nel registro di lavoro W (WORK) e l'altro provrene da un
registro, o dall'istruzione stessa quando si tratta di un operando immediato. Data la semplicità dell'architettura del PIC non sono stati implementati nel processore i banchi der registri, utilizzando al loro posto le celle della memoria RAM
OPERANDO
come se sitrattasse di registri. La memoria dei dati RAM del PIC 16F84 consta di 90 posizioni da 8 bits ciascura. Queste celle si comportano come se fossero un banco
dci
:vonti l: dimenciono dol hvto | 9O ronictri ci
dividono in due grandi gruppi: - Registri specifici (SFR). sono 22, e i loro brts hanno il compito di controllare e programmare il lavoro delle diverse risorse del microprocessore. Svolgono il compito di registri di controllo del funzionamento del PlC.
-
Registri
di utilizzo generale
(GPR): sono
le
6B
celle restanti della RAM, le quali sono a disposizione
dell'utilizzatore per archiviare idati. Nella figura si mostra la ALU che riceve gli operandi tramite il registro 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.
RAM
INTERMEDIO
Tutto il contenuto del PlC16F84, sarebbe a dire, tutte le risorse di cur dispone insieme ai collegamenti delle medesime, è mostrato nella figura, che presenta l'architettura dettagliata di questo microprocessore. Si puo riassumere tutta la sua potenza descrivendo i prrncìpali elementi di cui è costituito e
-1 ll
REGISTRO
mffi
DI LAVORO
8---
rpnicf ri
8-'--
le relative caratteristiche:
.
Memoria di programma FLASH da 1 K parole da 14 bits ognuna. . Memoria di dati RAM con 90 celle da B bits, funzionante come banco dei registri BANCO DEI REGISTRI Nelle operazioni della ALU intervengono i registri della RAM.
dìviso in 22 specifici (SFR) e 68 di utilizzo generale (GPR).
.
.
Memoria EEPRON/ di dati da 64 bytes.
ALU da
8 bits per realizzare
operazioni logiche e aritmetiche. Un operando provie-
l:L',',,
i\l
ilIICROCONTROLLER.
tl!
t ,,:, ,ta.
t:, i.1! t t!
;'j'lt
: I
*ffi-\8ffi
MEMORIA DEI DATI
13 DIREZIONE
-\
,|3
ffi
7'--DIREZIONE
coNsrGLl MICROCONTROLLORI -- 14
TEMPORIZZATORE INDIRIZZAMENTO DIRETTO
m îà3^,
5
PORTE I/O
ffi
W CLKOUT
lRÈ
nae neo
nar RA2
ffi ffi ner ffi nez ffi nes ffi ne+ ffi nes ffi neo ffiG
ffitrffiffiffi VDD
MCLR#
nao
m
#ffifu
'ffiffi r OSCI/CLKIN osca ]
ffi ffi :s
nez
VSS
Architettura base del PlCl 6F84, con icollegamenti fra ivari blocchi che lo costituiscono
ne dal registro di lavoro W, e l'altro dalla proprìa istruzione o dal banco dei registri. A -^^ trrinee o Drrp Vvr norte di r/l/O dioi*^ri r^ ^^"+^ - yuL v uryrLoll. LO VWI LO n LVll J e la B Lu ur con B. o lJn temoorizzalore da B bits chiamato TMR0. . Un temporizzalore speciale da 8 bits, chiamato Watch Dog (WDT). . Un puntatore per induizzare la memoria dei codici I
lnnr+n rrna c+trlz. rs9rJUdru )LdLN d urLv ilvsilr, dnrro uvvs <i Jr ronictrrnn legdLU dr ullu ^itn lirrolli
poralmente
tnm lcilr-
gli indrizzi di ritorno delle chiamate
di
subroutrne e degli interrupt. . Un sistema per l'indirizzamenlo diretto e indiretto della memoria RAM. . Circuitì di Reset e temporizzatore legato al medesimo.
.
Possibilrtà di lavoro in condizioni di basso consumo.
.i. ';i i'i
'i
iL!
t''1.rì!i;'ii tr';
t
Quando un processore esegue un'istruzione lo fa in due fasi diverse. ll PlC16FB4 procede in questo modo, e chi vnrrì rnmnrandoro , fOndO il fUnZiOnamentO di Una macchina programmata, deve conoscere queste due i:nna LqVVq
fnnr'l:moni:li lwl luql I lEl lLqll,
+nmr Lfllld.
l-\nlln UUIIC
UUC {aci ld)l ^"^
nartanta\ incictoromn rv <t ru t nttectn VLr rur r!v 9uLrLv ' l.ld nrim: À : ttLULLC 1f+a la lC ic+rr l)tlUL rnmrrno lvrrrurrL u Vrilrru r
zioni e realizza sempre ìa medesima operazione, si chiama fase di ricerca. La seconda e specifica per ogni istruzione e si chiama fase di esecuzìone. FASE DI RICERCA
ll contenuto del puntatore viene caricato nel bus degli indilzzi della memoria di programma e contiene l'indirizzo in cui si trova il codice binario dell'istruzione che bisogna eseguire.
ll
PC contiene solo indirizzi
di istru-
MIGROGONIROTLER :I'L =--=; ll
PlCf óF84
dentro
-b**l
zioni, mai valori relativi a dati. Nel caso del PlC16F84la memoria di programma ha una capacità di '1 K posizro-
ciascuna. La memoria FLASH ammette fino a 'l 000 cicli di scrittura e cancellazione con la massima sicu-
ne di '14 bits.
rezza.
Dato che la longitudine di ogni istruzione è sempre
h: lcì l: p{J5slUllltd nnccihili+r Ol n COnîenelld programmi re con un massimo di 1.024 istruzioni; rnoltre è di tipo FLASH il che significa che si puo scrivere e cancellare elettricamente con l'aiuto di un programmatore e un PC. ll bus delle istruzioni sposta icodici brnari dell'istruzinne nrrnt:ta d,al PC f no all'unita di controllo del P' nrovrrv uLr v cessore, dove si trova un registro speciale denominato Registro delle lstruzioni, che viene caricato con questi valori, terminando così la prima fase dell'istruzione. Questa fase di ricerca del codice dell'istruzione da eseottire e ttnttale ner tlrl'p lo iqtrr rzinni riol ronqr{gri6. r-li
1
/. hitc
nr ro<.t: ;-1-lpppnri ,,,-,rlOlld:
FASE DI ESECUZIONE
Con il codice dell'istruzione collocato nel Registro delle lstruzioni, l'unità di controllo procede a decodific,arlo c,a intcrnrclare a Che istrUziOne Si riferisce. Terminata l'interpretazjone, viene generata una serie di segnali di controllo che si applicano al resto degli elenenti, dando via all'esecuzione La maggior parte delle istruzioni implica il realizzarsi di un'istruziano laaiez n:ritmotir: tinn <nmma cr ,,,,,,, -Jttrazronr, AND, OR, rotazione eccetera. Per effettuare le operazioni esiste all'interno del 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 puo provenire dalla propria istruzione, se si tratta di operando immediato, oppure da uno dei registri del h:nrn rha a imnlallppf2'to nplle nosiziOni della Pvrr4l memoria RAM dei dati. A volte bisogna estrarre o introdurre informazioni nel micronrocessore ner otreslo ahhiamo due ,,,,-,-F,-lY-, porte, la A e la B, che dispongono di linee collegate con ipiedini di uscita dell'integrato, attraverso nrrali entrano ed escono i bits Come aiuto alle operazioni del blocco elaborazione dati, il PIC 1 6FB4 dispone di un temporizzatore, TMR0, che è incaricato di contare il tempo, e un altro, chiamato Watch-Dog, che vigila sulla corretta elaborazione delle istruzioni del programma.
da 'l K posizìoni abbiamo bisogno di indvizzi a 1 O bits, dato che 2'o = 1 .024. Per leggere una memoria
ll program counter, PC, del nostro PlC, ha 13 bits con t quali puo indirizzare 2 = B K posizioni diverse. I bits in più di cui dispone il program counter sono dovuti alfatto che l'architettura ditutti imodelli deì PIC della gamma media PICl6CXX e la stessa; pero, in ogni
modello,
il
costruttore ha implementato differenti
capacita di memoria, per cu, l'utjlizzatore selezronera la piu conveniente. Nel PlC16FB4 sono state fisicamente implementa-
te solo le prime 1.024 posizioni degli B K possibili della mappa di memoria. ll primo indirizzo è lo 0000H, e l'ultimo valido è lo 03FFH. lindirizzo 0000H e riservato per il Vettore di Reset, ; r- l.JU)l4lUllC I cui va il oilesto sionifica Lr che r! r-,,^il9uEllo E lo ^^-i-r^^^ puntatore ogni volta che si effettua un reset. Per questo motivo il programma di lavoro del microcontroller deve iniziare obbligatoriamente all'indirizzo 0000H, dato che l'istruzione che cortiene e la prima che siesegue dopo il Reset. c
Se vogliamo iniziare il programma all'indirizzo 0005H, dobbiamo mettere un'istruzione di salto in questo indirizzo nel Vettore di Reset, sarebbe a dire, go to 5.
MEMORIA DI PROGRAMMA
l3\
i
1..,'-t',:;,:'
I,
.:,' . 1.,'.,.,. t', .t ll t
:,
ll PlC16F84 dispone di una memoria di programma di tipo FLASH, ccn una capacità di 1 K parole da 14 bits
Nella memoria di programma del PlCl 6FB4 sono state implementate solo le prtme 1 024 posizioni della mappa ll program counter ha una longitudine di 13 bits e lo stack può contenere fino a B indirtzzi di ritorno.
11,.;;L
r,.tt it,
::, t..
I
'rllr
lil
MICROCONfROTLER ll
PIC
| óF84 denlro
t'indirizzo 0004H è assegnato al Vettore di Interrupt, e funzrona in forma simile a quello del Vettore di Reset Quando si verifica un interrupt, il contatore di programma s carica con 0004H e in secrrtn eseore l'istrrrzione che si t'overa memorizzat: in nrroct: nncizinno Di conseguenza la prima istruzione della parte di programma relativo ad un interrupt deve essere collocata in questo indirizzo della memoria di programma.
ll
puntatore
è un registro da 13 bits, dei quali,
MEMORIA RAM
nel
PlC16F84 se ne utìlizzano solo i '10 meno significativi per indtrizzare le 1 .024 parole della memoria FLASH in
BANCOO I
cui si trova il programma l tre bits piu significativi di nl,psto renrstro non sono rttilizzali in clreslo modello di microcontrollore. Per gestire e conoscere il contenuto del puntatore, si 'utrLLót -^rositi della zona SFR della RAM. '+ li---^^ ru I| '^^t'+'t rtrgr)Lr roPl, Questr registri sono il PCL e il PCLATH, in modo che gri B bits meno significativi deì PC sono dedicati al PCL e 5 più signifìcativi al PCLATH, così come è rllustrato nella figura. ll rpoistro PCI e sitrrato all'induizzo 02H del banco 0, p rinptr rto npl h,rnro 1 dolla manna dei reoislri SFR della memoria RAM. ll registro PCLATH si trova anche duplicato all'indirizzo relativo 0AH dei due banchi.
BANCOl
I registri PCL e PCLATH sono dupltcati rtspettivamente nelle posizioni 02H e aAH dei due banchi della RAM.
i
Associato al puntatore esiste una memorta ttpo LIFO a
da 1 3 hiîs oonrrni che si rhiama stack. Dato che e di tino llFO si carica e si scarica tramite il suo livello superiore, che e drrettamente collegato al R nosizinni
t2
CONTATORE Dl PROGRAMMA
(PC)
:8
ffi
O
re passa
dono di un livello. Quando lo stack si scarica, il contei^r ri,.^,r^ pC e lrrtti nii altrr ValOfi Sal_ ^.,+^ Utrt ^---a al ilVCIU rI pd))u ItuLU -, nnno di rrn livello oresto siorifica che l'rrltimo valore che è stato caricato e il primo che si scarica (LIFO: Last Input First Output) Lo stack serve per scrivere temporalmente gìi indirizzt delle istruzioni, e si usa sempre automaticamente se si ha la chiamata di subroutine (CALL) o se avviene un interrupt. In entrambi i casi bisogna memorizzare gli induzzi di ritorno al programma principale, infatti termìnata la subroutine o il programma legato all'interrupt, s ritorna a programma principale.
A volîe oossono esserci situazioni di annidamenti: 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 ...l^ll^ )LcLN, -+--1, -+-l ^"uElv )!o o p,ùgrammatore tenefe conto degli annrdamenti ner evrtarp rhp srrneri nlr R v,alori e debor-
di
nordpndo informazront.
A differpnza deoli .rltri nroressori lo stack
del
6FB4 non e accessibrle da parte dell'utilizzatore e nnn <i nr ta r-zriTara n cr:rir:roL. Orrpctp YvLJLL drro --- operazlonl PIC
I bits del puntatore si scrivono nei regrstri PCL e PCLATH, secondo la distrtbuzione rndrcata.
ir modo che durarte la fase di carica ilvalooa puntatore al livello 1, e gri altri valori scen-
puntatore,
1
si realizzano automaticamente quando si esegue l'operazione CALL o avviene un interrupt.
La memoria dei dati RAM on la finalità di semplificare l'indirizzamento della memorra RAM e diminuire i bits degli induizzi, i progettisti della gamma PICl6CXX hanno organizzalo in 4 banchi da 128 posizioni da B bits cadauna. f indirizzamento implica la selezione del banco e la posizione relativa in esso. Per determinare Ìl banco a cui si desidera accedere esistono due bits denominati RPO e RP1, che si trovano ubicati nel regrstro specifico della stessa RAM, che si chiama Registro di Stato. Scelto il banco sono necessari altri 7 hits ner indirarp rrn: dollo tr 4v 7R nosizioni del vr medesimo, come si vede nella fiqura. ?
W,,
FEGISTRO DI STATO
ooH
INDIRIZZI DEL BANCO 7
124
:
POSIZIONI
i
-r:
-t
i;
BANCO
O
BANCO
1
BANCO
2
BANCO 3
I PIC della gamma media hanno la memoia organizzata in 4 banchi da 128 posizioni di B bits ciascuna. ll banco è selezionato con i due bits del Registro di Stato l, p?t:r:o!".ro-, ,., in!i:.:::o Z tti.t;_
1
"
l'; ij
l" rrif-
+,i
BANCOO
BANCO
BANCO
2
BANCO 3
t_.=.
O
DEL BANCO
i i È r;,É i.; l i'.lr
7FH
ll PIC 16F84 ha implementato fisicamente solo le prime B0 posizioni dei primi due banchi
,y'
SELEZIONE
4FH
j, r=.!
il {j
i.:
i1;
L !-..,.ri :ii É ir;
:l i;.F;ri+
ll microcontroller che useremo per il controllo del nostro
robot ha una memoria RAM piccola. Non sono stati implementati fisicamente i quattro banchi possibili, che forniscono la capacità massima di 4 x 1 28 = 512 bytes. Alcuni modelli più potentì della gamma media, dispongono di questa capacità. ll PlC16FB4 ha implementato solo i primi due banchi, anche se in modo incompleto. Infatti solo le prime B0 posizioni di questi banchi, cioè dalla posizione 00H alla 4FH, in totale 2 x 80 =160 bytes, sono stati implementati. Le prime posizioni dei due banchi sono riservate per i registri specifici e le
rest:nti npr r-rrrplli eli riilízza nonor.eio Le prime 12 posizioni dei due banchi, i cui indirizzi vanno dalla O0H alla 0BH, sono riservarti ai valori dei reqi-
stri snecificr (SFR) i cui bits controllano il funzionamento delle risorse interne del microcontroller. Funzionano come registi di controllo programmabili. In questa zona SFR abbiamo due posizioni non implementate, che occupano gli induizzi 07H di ogni banco, pertanto il numero totale dei registri specifici SFR del PlC16F84 è 22. Le 68 posizioni finali di ogni banco con indirizzi compresi fra 0CH e 4FH, sono usate come registri di utilizzo generale, GPR, destinati a contenere dati e risultati parziali dei programmi. Le 68 posizioni GPR del banco 1 sono mappate nel banco 0. Questo significa che anche facendo riferimento ad una posizione GPR del banco 1, si accede alla posizione correlata del banco O, idue banchi cioè non funzionano in modo indipendente. Riassumendo, il numero totale dei registri GPR è solo di 68, dato che i 68 del banco 1 funzionano su quelli del banco 0.
ii
:-a: :
:iTÈ,i
:i Ìrri:.i"î
ir.ii"i. 1i ij!i
ll nostro PIC dispone di 22 registri specifici SFR; attraverso
i bits di questi registri si programma il funzionamento
e
I'utllizzo delle risorse del microcontroller. Ci sono 1'1 registri SFR nel banco 0 e altrettanti nel banco 1 . ll registro che occupa la posizione 07H in ogni banco non è implementato. Nella figura si mostra la nomenclatura di questi registri, possiamo notare che alcuni dì questi sono ripetuti in entrambi i banchi. Per esempio il Registro di Stato occupa l'indirizzo 03H del banco 0 e il corrispondente indirizzo del banco 1. Questo succede con tutti i registri fondamentali del microcontroller; per poter accedere ad essi indipen-
$
fu+=cÈ+fuÈ
#+$$*
ffi&SsÈ
dentemente dal banco che definito con i bits
RPO
è
stato
programma l'istruzione "bsf STATO,5", ìa sua esecuzione metterà a '1 il bìt 5. RPO, del Registro di Stato, in modo che, a partire da quel momento, I'indirizzamento della RAM si effettuerà dal banco 1 nel programma. La seconda istruzione bcf, mette a 0 il bit specificato del registro che si indica. L'istruzione "bcf STATO,5" pone RPO = 0 e lascia puntato il banco 0 della RAM.
Memoria dei dati RAM
e RP1.
& 8ll a2 83 84
s s
lntegrano un insieme di 68 posizioni di ogni banco. compresi tra gli indiriz-
s",
'.,
&
zi OCH e 4FH. Però non ci sono 68 x 2 = 136 registri GPR. Solo la metà sono validi, perché quelli del banco 1 sono
8A' 8B
.r r ,.r,.'
8C
pi. Il primo include tutti i registri incaricati di controllare le funzioni vitali del nucleo oet microcontroller, tra i quali citiamo STAfO,
accede a un registro GPR del banco 1,
OPTION, INTCON, eccetera. Nel secondo gruppo sono compresi i registri incaricati del controllo del funzionamento delle risorse ausiliarie e delle periferiche, tra le quali citiamo PORTAA, PORTAB, TRISA, TRISB e altre. Nella figura è rappresentata l'organizzazione dell'area SFR della memoria RAM in modo dettagliato. In essa sono indicati i nomì di ogni registro specifico, l'rndirizzo che occupano in ogni banco
in realtà si realizza l'accesso al corrispondente del banco 0. Sono validi solo i 68 registri GPR del banco 0. 1-; ,'
t; tt l "'".,;
:
;'t.
Dato che il PlC16FB4 ha operativi i primi due banchi della RAM,
solo
"È:EE
non sono necessari due bits per specificare il banco selezionato. Dei due
i
e RP1 del Registro di Stato che servono per determinare il banco, al nostro PIC basterà pro-
Distribuztone e nomenclatura dei registri SFR e GPR della memoria RAM del PIC 16F84.
bits
RPO
grammare il bit RP0, che è quello che occupa la posizione 5 nel Registro di Stato. È rndifferente il valore che ha il bit RP1, che occupa la posizione 6 nel Registro di Stato. Se il bit RPO = 0, si accede al banco 0, se RPO = 1. si accede al banco 1.
Quando vogliamo accedere ai registri GPR non dobbtamo tenere conto del valore del bit RP0, dato che, come abbiamo gia detto, il banco 1 è mappato sopra il banco 0. Or rindi la oesîione dell'accesso ai banchi, consiste nell'impostare il valo-
re del bit
RPO,
che e il quinto del
Registro di Stato, rl quale occupa l'in-
BANCO
i..,. .,
.., .,"
0
SANCO
1
,
e rl nome di ognuno dei bits. ìnfine si indica
T ti1' T T T idlriffi '{ T 'é' ISSSIPO'O ffih (mn h cgli!ÈlÈiol CoIidoG tn tetlEo
€le r I btts
BIf BIT BtT ?6543210 tho
e
@rúedsb di fsR
BIT
gq lndirÌaÉ
nm rlgntticttuo d€l PC IBP NPT RPO TO*
glr*
lrt r*-:{ifé
BIT
BIT
BIÎ
FSz
P51
PSO
Pb*
Z
DC
C
lndtnEsrunto díetto @ lrtDf
. confiEHrfsG por&
l
i
VALORI DOPO VALORI ALTRI IL RESET FÉSET
îf11 l11l
lttl
tlll
0000
oooo ooo0 0000
txxx 000q quuq xxxr uquú uuuu ---l {tl't ---l l1l't 1!r1 tltl 1111 1t',ll OúOl
xxxx
conft$ruloÉ lortr A
B
.
I
reddià (@r è s rtgiÉtn firt€)
Èy$
ffi '0"
SFR. Ci sono due istruzioni nel reper-
,'cÈ+;i
8tT lq
ftOFU* INIDG TOCS TOSE P{tA
ièglelo tlt .o[tnlto :EPfotil (mn
i+t:ttnilrL+hi.
t;
xxxx xxxx qsuu úsqu
BtÉemèFrìgnmqfiwdetPc O0OO oOOC O0O0 OOOO G DC Po* Z oool txrr oooQ quuu fFP lRPt RPo îo# lndùíaménio indiEtto rs F{DF xxxx xxxx uuuu uuuq - RAl/foCt( nA3 RA2 iA1 ÉA0 --'x xtxx '--u uuuu Rg? RE6 RB5 RB4 nBs î82 FBI i60lNT xxxx tx*x uuuu sùsu ilgtr implèmtrio 3i hgge (om'o' isgfuBod€ida$fEPÈofrt xxxr xxxx uuuu uuuu i€glrtodaglilntiddÈEPnola xxxx xxxx suuù uuuu SísiemitbftsdiP€rl ---O OO00 -..ù 0OOO GtE EÈlE TolE tNlE HBIE TolF lNfF RBIF ooÓo ooox ooÓo oooo
t{on lnFlenènqÉo 5l Lggè
ii
VALOFIALTRI
è
t sodet cobt€Ntó dt FsRps Clad( /
il
valore che avrà ognuno di questi bits dopo aver effettuato un Reset normale o uno speciale.
diizzo 03H dei due banchi dell'area torio del PIC che facilitano enormemente il controllo di RPO. La prima è l'istruzione bsf, che ha il compito di mettere a 1 il bit specificato del registro che si indica. Se troviamo ìn un
t,t,; t:1.:i r,..'rl
I registri specifici SFR si classificano in due grup-
mappati sopra quelli del banco 0. Come è stato precedentemente spiegato, questo significa che quando si
,,
l.t
:::;
EEIF WHEÉE WREN WÉ è sn
fiD
x0o0 ----
q00O
".'O 00OO '.-0
0Oo0
O00O
000u
---ó
t
Egùfs fitko]
CttfEwdm?cttA GIE EEIE ?OfE INIE RBIE 'ÍOIF INTF
RBIF
oóOx Oo00
Organizzazione dettagliata dei registri SFR del PIC 16F84. Sono indicati gli indirizzi, il banco, il nome del registro e di ognuno dei suoi bits e i valori che questi avranno dopo un ,îeset normale o speciale.
ICROCONTROLTER Operondi gestiri dalle istruzioni
Indirizzamento delta memoria dei dati ,,',1;,.,1.,,
RAM
dati gestiti dalle istruzioni prima dell'esecuzio-
dotto dall'esecuzione dell'istruzione è il risultato. Nel PlC16F84 i dati, in generale, occupano indirizzi della memor a dei dati RAM, sarebbe a dire, registri. Esistono dati speciali il cui valore non deve essere perso quando si toglie tensione al srstema, per questo vengono scrrtti in una zona di memoria EEPROM, che studieremo successivamente. ll dato puo anche essere contenuto nel codice binario dell'istruzione, nel qual caso si chiama operando immediato.
tutte le istruzioni sono realizzate con un'operazione elementare logica o aritmetica Normalmente
nella ALU, la quale riceve uno dei due operandi fonte dal registro dr lavoro W, che è stato precedentemente caricato in modo adeguato. L'altro operando, se non è immediato e quindi è già dentro l'istruzione, arriverà da una posizione o da un registro della RAM. Infine, come è indicato graficamente nella figura, il risultato della ALU è caricato in W e in uno dei registri della RAM.
MEMORIA DEI DATI
La memoria dei dati RAM del PIC della gamma media e organizzala in quattro banchi da 128 posizionj con 8
bits di dimensione cadauna. Nel caso del ptC16FB4 sono state implementate solo le prime BO posizioni (00H-4FH) dei banchi 0 e 1. Per tndvizzare una posizione della memoria RAM in un PIC bisogna specificare, in primo luogo, il banco in cui si trova, e dopo, I'induizzo relativo al medesimo. per
selezionare il banco ci sono due bits nel Registro di Stato dell'area SFR della RAM, che si chiamano RpO e RP1, e occupano le posizionr 5 e 6 delsuddetto registro. Per determinare la posizione relativa in un banco, bisogna specificare 7 bits per poter formare 27 = 128 indirlzzi possibili. Esistono due modi per indirizzare la RAM: l'indirizzamento diretto e quello indiretto. '
'r
Questo modo per definire la posizione nella memoria RAM, dove si trova il dato ricercato, inizia scrivendo nei due bits RPO e RP1 del registro di STATO il codice corrispondente al banco. tindirizzo all'interno del banco è incluso nel codice della propria istruzione, dato che dei
éilffire ;niúiul-ffE
rc rc rc
ffitr 8-:
ffi ffi re-rc *ryre
:re ryrc rc
ffiG
ffi
Ìre
rc rc gH$Effiffi
ruru 8.r Gli operandi fonte della ALU arrivano o dal registro W o dal multiplexer ll risultato finisce o in W o in una posizione
della RAM
T6jSTATOo
ffir sELEztoNE DEL BANco
oo
"2 ol
'to
ooH DIREZIONE
(coDrcE oP TSTRUZTONE)
7
07t BANCO
O
BANCO
I
BANCO
2
BANCO 3
Nell'indirizzamento diretto i bits Rp0 e Rpl del Registro di Stato selezionano il banco, e i 7 bits meno significativi dei codici dell'istruzione, la posizione relativa.
STATO
00H
{
OBH
0cH
4FH 50H
]
BANCO
O
I
BANCO
1
Per selezionare il banco nel PIC 1 6FB4
bàstà scrivere nel Regislro RP) del Regtslro di jtato.
14 bits che la compongono, i 7 meno significativi sono riservati a questo compito. Per caricare il codice del banco nei bits RPO e RPl, es stono, come abbiamo già visto, un paio di istruzioni molto efficaci, capaci di mettere a I o a 0 un bit di qualunque registro. Per esempio, se vogliamo accedere al banco 2 dobbiamo caricare RP1 = 1 e RPO = 0, visto che sr usano le ìstruzioni "bsf STATO,6" e "bcf STATO,5". Nel PIC 16F84, l'indirizzamento diretto e più sempli-
occupa l'indirizzo 00H deì due banchi dell'area SFR. In 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 trova il valore dell'induizzo relativo al registro cercato nel banco selezionato. Listruzione con modo di indirizzamento indtretto, ultlizza come registro operando INDF, pero il PIC accede al contenulo del registro FSR, che occupa, oer duplrcato, la posizione 04H dei due banchi della RAM. Non solo e diversa la maniera di ottenere i 7 bits di
indirizzo, ma nel metodo indiretto cambia anche il modo di specificare il banco. In quello diretto si usavano i bits RPO e RP1 per scegliere il banco, nel modo indiretto 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-
tivi contengono gl indirizzi PlC16FB4 IRP
,
I
i,
'
Quando si utilizzano tecniche avanzate d programmazìone, o si lavora con linguaggi di alto livello come il C, così interessante nei srstemi con microcontrollori, è molto conveniente disporre di un modo speciale per f indirizzamento dei dati nella memoria RAM. Si tratta del modo di indirizzamento indiret'to, nel quale il codice dell'istruzione non contiene i 7 bits che formano la direzione del banco. Con questo metodo si fa riferr-
mento ad un registro specifico attraverso il quale si ottengono questi 7 btts. Nei microcontroller PIC le istruzioni che gestiscono l'indirizzamento indiretto utilrzzano il registro INDF, che
., i.t.: 1, \,., :.tit,': i, t!. t, :: . :.. ..:::: .. . .. . . . :. .. .........
:t:.
der registro di stato varra sempre 0.
Se, per esempio, vorremo selezionare in forma indiretta la direzione 12H del banco 1 in un PlC16FB4,
:
ffi
STATO
sELEzroNE
ce dato che la memoria RAM è solo implementata nei prmi due banchi, il banco 0 e il banco 1. Questo suppone 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. '
ativi). Dato che nel abbiamo solo disponibili i banchi 0 e 1, il bit re
IóFSRo
ilffi
o
*t oeL enNco 00
SAl.lCO
tt
0l
O
gAl'KO
I
BAN{Ò
2
SANCO 3
Nell' indirizzamento indiretto il banco si sceglie con il bit piit significativo del Registro di Stato e quello pru sgnificativo
di
FSR.
L'indirizzo relativo
è contenuto nei 7 bits meno significativi
di
FSR
cominceremo caricando in FSR il valore '12H (0x'12), per '1 I 7 bits di minor peso, e metteremo a il bit 7 dt magninr no<n dal ronictrn nor <ronlipro il h,anco 1
MOVIW
mowvf
0x12 tSR
; 5i carka W con 12
H
; ll valore di W si carica in F5R
iorte con Íl
,
Le porte
di ingress o/uscita lprocessore che contiene il a - -t .--^ tnat|7za e^.---^^lt^ Íaccogile l'lL lbfó4 icodici delle istruzioni residenti nella memoria di programma, le decodifica, cerca nìi nnor:ndi lo pcpnrrp p nrndrrrp doi risultati che memorizza. Questo è il tipico lavoro necessario per processaro rrn'i<trr rzinnp noraì : rho crnnnT l'nhiottivo fin:lc p nrrollO di COntrollare una serie di dispositìvi esterni che
PROCESSORE
configurano il sistema che dobbiamo
nn\/orn:ro lìrrocti di<nnqitivi rho chiameremo periferrche, certe volte hanno il compito di introdurre dati nel microprocessore e quindi vengono chiamati di "rngresso" Altre volte ricevono i risultati dell'elaborazione YvrJL'
delle istruzioni, sono dati che vengono conferiti alle periferiche per regolarne rl funzionamento, questo tipo
di
periferiche viene chiamato di
" uscita "
lp
:-Le periferiche sono dispositivi esterni
che introducono e ricevono rnformazioni da o per il mondo esterno
.
neriferiche si classrficano
in
due
grandi gruppi: digitali e analogiche. I e nrimp ricevono e/o inviano informazioni digitali attraverso un insieme di linee digitali il cui numero è uguale a quello dei bits contenuti in ogri parola di informazione trasferita. Le
periferiche analogiche inviano e/o ricevono informazioni analogiche, ossia segnali che variano il loro valore da un minimo ad un massimo, passando per infiniti valori intermedi. All'interno delle periferiche digii:li
Io nir'r <omnliri <nnn nrralìo rho
generano o si governano con una sola linea digitale, di modo che, se
La
peiferica di rngresso digitale
piit comune è l'interruttore, che puo assumere diverse forme
lri r',1
| . .:
":.".
l\:;::1:r::::ti:,,i,,,4,?41@útt9$||"/aaaa*att
:
valore
di un bit, in modo che
quando il programma che sta eseguendo 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 scrivere il valore di un bit sopra questa linea, se è un 'l il LED si illuminerà, 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 strato nella figura.
LED,
è illu-
Può capitare, in alcuni sistemi,
che i livelli logici delle periferiche
I diodi LED sono le periferiche digitali di uscita più semplici e utilizzate
sono periferiche di ingresso introducono il valore di un bit su di una linea, mentre se si tratta di periferiche di uscita il loro funzionamento necessita solo di un bit. La periferica di ingresso digitale più comune e più utilizzata è l'interruttore, che assume diverse forme come pulsante, commutatore ecc. La periferica di uscita più semplice, ma non
siano al contrario rispetto a quelli indicati nella figura; per esempio,
se l'interruttore e aperto, viene introdotto uno 0 nella linea di l/O, e se è chiuso un 1 Inoltre, può succedere che si desideri accendere il LED quando la linea di uscita digitale sia a 0 e spegnerla quando sia a 'l . Nella figura si vedono le modifiche al
!,
.
i l
i l
per questo la meno usata, e il diodo LED. ll primo tipo di questi
+Voo
interruttorr, a seconda dello stato, introduce un 'l o uno 0. ll secondo tino se riceve rn 1 normalmente si illumina, mentre se riceve uno 0 si
INTERRUTTORE
LINEA DIGITALE DI INGRESSO
spegne. : .. .. :':.,,,. i Ji i'-.rt-: i: t.' .ij :ìi I: . :1 ,L Ì, i:..". r r_,ri Dei 18 piedini che dispone il nostro PlC, 13 sono destinati a linee di l/O digitali. Ognuna di esse puo intro-
drrrre al nro.esqorè il valore di un bit o essere incaricato di prendere dal processore il valore di un bit per il mondo esterno. Sc rrn: di nrrp<to 13 linee di l/O v' YULJTL
e À
'.
programmara come In9resso, nrnarrmmr*r
sara possibile collegare ad essa un
dispositivo esterno che introduca
il
LINEA DIGITALE DI USCITA -ìì!
tÍr: 7t;'
É,.,,
ll processore conosce lo stato dell'interruttore, se e aperto o chiuso, questo perché leggendo la linea di ingresso esso riceve un 1 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
;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!
,
INTERRUTTORE
'o+v;i
LINEA DIGITALE DI INGRESSO
l
processore ìa leqqe. Ooni reoistro nel ouale si collocano le informazioni da trasferire ha associato un altro regiqtrn rho <or\/o nar COnfigUfafe
-."-'-
ognr ilnea come Ingresso o ,,--i+A na assocrato ^^"+- A uscrta. l-La poria il registro TRISA e la porta B il registro TRISB. ll procedimento I
Voo
+5V LINEA DIGITALE DI USCITA
\p I infarn trfnre e ànprtÒ intfOduCe un bit Per accendere
per configurare le linee è molto
semnlrce Se desiderramo che la linea 2 del registro PORTAA (RA2) funzìoni come una linea di rngresso dobbiamo scrivere nel bit 2 del registro TRISA un 1. Se al bit 3 di TRISA si memorizza uno 0, la linea RA3 del
0.
il LED dobbiamo scrivere un bit 0 sulla ltnea digitale a cui e collegato
circuito di adattamento delle due periferrche per operare con livelli logici opposti
BANCO
O
BANCO
1
Normalmente si dice che il PIC'l6FB4 e povero perche ha solo 13linee di l/O, scarse risorse e poca capacità
di memoria. Le linee di l/O si insiemi che sono chramate
raggruppano in due "porte". La porta A rag-
05H 06H
gruppa 5linee di l/O, mentre la porta B raggruppa le R roqt:nti lo nnrto di l/O onor:nÒ .Òmo roni<tri rhp oossono essere letti e scritti dall'esterno e dall'interno dol nrorpssnre C)rrpsti reoistri si chiamano PORTA A e ,r. vvLJLl PORTAB. In realtà lo scambio dr informazioni ìo realizInî ^^r+r manlra lo l: iltt nrnro<<nro <rririO^À L, JLrrvúl IUU )UPIO Ulld ' Vt PUI Ld lllclltlE l: lanno l. nariforin :l rnntr:rin ò pclllcllLo c)tEl llq lo ltryyr/ v ur lvr rLr urrv, L rq PElrrErr^^ri+^ri.1òc+Òrnì
z: /u
ca esterna che colloca l'informazione nella porta e
BUS TNTERNO DEt
DAT|
nel rizzì r'lal la nnrta p rlci relsritti roni<f.i di l nnfiottrs-innc doll'srca I
ì
q,FR
della RAM
il
registro PORTAA rimane confinrrretn rnmc linp,a r-li uscita. registri PORTAA e PORTAB, insieme ai loro associati TRISA e TRISB, occupano gli indirizzi 5 e 6 di entrambi i banchi della
I
8t
I
memoria, come si vede nella F---F ÈoNrO
FFF-FFFF \CÈOàQN-O
figura.
LINEE O PIEDINI DI I/O
Prima Ogni registro dr scambio d'informaztone, PORTA A, e PORTA B, ha associato un registro dt configurazione TRIS A e TRIS B, rispettivamente.
Íf lllllllti:srzrììlìiìì:ì:ìll.:
Iennprp
o
scrìvere
Ie
informazionì in una periferica, dobbiamo confi gurare adegua-
I:l
g***rrrllÍf
di
P t8 rytzlzv,{tlM&}M,llrrlrf *w.
t
MIGROCONTROLTER
*i\\\ìss{.wj,
r, r*./.,.g*i-r..!.j:irilririr.itt
Porfe per il trersferinrento d'inforrnozioni con il mondo esleÍno
tTt%r#
5i desidera configurare come ingressi le linee RA4, RA3, RA2, e RAI della PORTAA, mentre la linea corrispondente.
RAO
deve funzionare come usrita. Realizzare il programma
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.
TRISA.,.
EQU.
..0x05..
......;fetichetta
5T4T0.,.
..,.EQU.
..0x03,.
......;lletichettaSIAT0corrispondeall'indirizzo3H
8f...,,.
,,..5TAT0,5
Movlw...
....0x1e.
Movwf...
.,..TR|SA.
,....
...;Bit5diSTAT0=1{RP0='t}.5iacredealbarco! ....,;SicaricaWconlEH
.,,.;ll
Al momento dell'atcensione del PlC, o in caso di reset, tutti i bits de' registro di configurazione rimangono inizialmente configurate come ingressi,
Preparare
uî
TRl5Acorrisponde all'indirizzo 5H
valoreWsi caricainTRlSA
TR|S
vengono posti a t, il che signifita che tutte le linee delle porte
programma per configurare tutte le linee della porta A come ingressi e le linee della porta
Dovremo scrivere nei 5 bits meno siqnificativi di TRISA un I e in
tutti
I
come uscite,
i bits di TRISB uno 0.
Bsf,.......,...5TAT0,5
.,..
i RPO= 1, peractedereal banco
Movwf...,.....TRlSA.
.......;ll valoredi
Movlw...,...,.0x00.
.. ,...,;Wsi
l^
1
Wsi sciveinTRl5A
carira con 0
^^ I-^rianle lp o.,,t r\/tutrr\ )l i"t.'eI ,L llvu |r si I Cr ! scono le ,.nresci nfo.rr.rzinn dinilali dcf'npnnn nli e le uSCite.
tr:qfor ro Por lonnoro I COntenUtO df Una pofta Cl'lnrl^rÒ /Llle hÒ l. nro<<Ò rnni cno- .l . drure ld Uel , llel lLcl CO" SpO'^^.'{^.i.. ,,- .- rho
Realizzata la conf gurazione delle inee l/O scrivendo net
dente vi ha deposrtato, si utiiizza l'istruzione " movf PORTAA,\/", con la quale r dato presente nelia porta passa a reg stro w. Per spostare un dato verso una porta d'uscita, prma s ca';ca qL,est'- I ro rel reg slro W e dopo s esegue 'rstruz one "rnov\r/f PORTAA" ll valore contenuto n W viene spostato sui a PORTAA e le linee d uscita corrispondenti portano verso rl mondo esterno i bits corri-
l-r
r
Ll
lr
:^
llrr
'pcist' TRIS nèr nÒ'tzrp :l nrnreccnro''in'Oranazione .^^ a."i',1 Llltr c'lvo
r.1
aar'{6t1,1 2 d'innreccn Ud r'nî U ld Pcll,!.'!u J I yr ^î
rnl on., Lqdld
d i-rlrl
rr-: nnr+: dnhhiàmo cO'o lenOprp I r-nrler_tO v ,LvYri
del
ranicrrn rY,JLr v rli arroctr ^^"1a, OSSia, PORTAA O PORTAB. A contrario, se si deside'a po'tare da processo.e il va ore dell'rnformazione digrtaie ad una penfer ca di usc ra coi egata al oin d -na porra, conI gurata co-e uscita, basta scrvere il suddetto registro con lva ore da
spondenti
Caratteristiche
detteporteAeB i
,r1
1::1.;iilgi .'i
'i.,È r.i,i'r
-i' Él Í;.r
ri' i liT ;i {" :'ì 11 il i: i'ì :{ il
È'+
5
Le ìinee RAO-RA3 accettano livelli di rngresso TTL e CMOS. Nella figura della pagina seguente è mostrato rl circuito elettrico di adattamento di questt pin con le linee di controllo e con quelle del bus dei dati del pro-
Questa porta ha solo 5 linee digitalì che st collegano con l'esterno mediante cinque pìedini denominati RA0, RA1, RA2, RA3 e RA4. Essi occupano le posizioni superiori delle due file di cui è composto il contenitore del PlC16FB4, come mostrato nella figura. Le informazioni che entrano ed escono da questi piedini passano temporaneamente nel registro PORTAA, che occupa I'indtrizzo 5 del banco 0 dell'area dei registri specifici SFR della RAM. Inoltre per configurare come ingresso o uscita ognuna delle linee di questa porta disponiamo di un registro chiamato TRISA, che occuoa la posizione 5 del banco 1 . Come ricorderete. se in un bit del regrstro TRISA si scrive un 1, la linea della porta A corrispondente f unzionerà come ingresso, e se si scrive uno O funzionerà come uscita. Ogni linea della porta si configura in modo indipendente, per cui nella stessa porta potremo avere contemporaneamente llnee
cessore, Leggere una linea della porta A significa catturare il livello logico che essa ha in quel momento, e que-
sto viene fatto ogni volta che si esegue l'istruzione "movfw PORTAA". Al contrario, quando le linee della porta A lavorano come uscite, lo fanno tramite il latch interno, che mantiene stabìle nel tempo l'ultimo valore caricato in PORTAA.
Come sì puo vedere dalla figura, per portare un livello logico su una linea della porta A, prima vlene scritto nella linea corrìspondente del bus interno dei dati e viene attivato il segnale di WRìTE, il quale permette la scrittura di questo livello sul flip-flop dei dati.
questa situazione il flip-flop di configurazione dovrebbe contenere un livello 0, ìn modo che si comporti come un'uscita. Con questivalori Ia porta OR avrà uno 0 alla sua uscita e la stessa cosa succederà alla porta AND. Questi valorì ortgineranno la conduzione 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à
ln
di ingresso e di uscita. ll piedino RA4 è speciale, dato che oltre a comportarsi come una trpica I nea di l/O, si puo programmare perche serva come ingresso di impulsi esterni per il controllo del timer TMR0, che studieremo più avanti.
livello alto.
Dato che la linea dt uscita è "lecciata" (cioè e comandata da un latch) conserverà il
R/42na*r J?
suo valore logico sino a che non scrlveremo nuovamente sul flip-flop D.
g
ìr
RA4/TOCKI$
s I
Se una linea funziona come ingresso, 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 transistor 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 quel momento, e non deve essere memoriz-
Posizione dei piedini della porta A
l
;rliìì,11ì,ììì,ìììrì1rìuuuuuuuttììììrìùrrr:
:
$ii{Ft:Èe.l .rrl
-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
INGRESSO
VssE RD LETTURA TRIS
TTL
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
zato nel flip-flop dei dati. f informazione presente nella linea d'ingresso, deve già essere presente al momento d'rnizio del ciclo di istruzione, e deve mantenersi stabile durante tutta la sua esecuzione.
formata da otto linee che comunicano con l,esterno mediante i piedini RB0-R87. ll registro di l/O contiene le informazioni che si scamÈ
biano con le periferiche, sr chiama PORTAB, e occupa l,induizzo 6 del banco O. I bits del registro associato TRISB
servono per configurare le linee di questa porta come rngressi o come uscite (1: ingressi e 0: uscite) ed e situato ali'indirizzo 6 del banco 1 dell'area SFR della RAM. Come succedeva con ia porta A, anche la poria B lra una linea speciale che ha multiplexate nel tempo due funzioni possibili. Si tratta della iinea RB0/tNT che oltre a funzionare come linea dr l/O normale, puo funzionare come linea di ingresso dr interrupt esterno per l'hardware. Se si programrna questo piedino per funzionare come inqresso di interrupt, oqni voita che lc si
i,
RBO/INT
RBI
-) <-;
*í,,,
-RB7 <-* RBó
,Llììì1.
l',]ììì
*rtl ..:t
j:rf
RB2
-r
-*tt
RB3
-i" Drstrtbuzione dei ptedini della porta
B
t,,
Le quattro linee piu significative della porta B (RB4-
attiverà tramite un livello alto, verrà generato un interrupt.
RB7) insieme. possono svolgere un compito molto interessante 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
delle resìstenze di pull-up di valore elevato. collegate a loro volta al positivo della tensione di alimentazione. Se si vuole realizzare questa connessione dobbiamo mettere a zero il bit RBPU# che c'è nel registro specifico OPTION della RAM. Quando si produce un Reset ven-
gono scollegate tutte le resistenze di pull-up, e tuttì piedinì della porta B vengono configurati come ingresi
si, come succedeva con la Porta A.
confrgurazione di quattro file per quattro colonne. Per rilevare l'attivazione di un pulsante e individuare quale sia questo pulsante, si collegano le quattro file della tastiera ai oiedini RB4-R87. Le quattro colonne si collegano agli altri quattro piedini della porta B (RBO-RB3), in modo da introdurre un lìvello logico alto in modo sequenziale, uno dietro l'altro. L'attivazione di un pulsante permette ìa comunicazione di una fila con una colonna, pertanto si avra un
P (pull-up)
BUs DEI DATI (RB7:RB4)
WR SCRITTURA PORTA A
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 srruato 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 cambia il suo stato logico viene generato un interrupt. Quando si attiva un pulsante, cambia il livello logico di un piedino e si genera un interrupt, la cui routine individua il pulsante premuto conoscendo la fila e ta cotonna che sono passate a livello alto. ll circuito elettrico di adattamento dei piedini RB4-
microcontrollori, dispongono di l6 tasti, numerati da 0 a F e disposti in matrice di quattro file per quarrro colonne. Ogni volta che si attiva un pulsante il processore deve riconoscere jmmediatamente quale sia stato pigrato La possibilità di generare un interrupt quando varia lo stato logico di una delle quattro linee più signi-
ficative della porta B, semplifica la rivelazione della tastiera, per questo si collegano, come rndica la figura, le quattro linee meno significative della porta B con le quattro colonne, e le quattro file con le linee RB4-RB7 della porta B. Le lrnee meno significatrve della porta B vengono messe a uno in modo sequenziale, in modo che in ogni momento ci sia una linea a livello logico alto. Se non ci sono pulsanti premuti le file sono scoltegate dalle colonne e il livello logico alto inviato alle file non puo passare alle colonne, di conseguenza non cambierà lo stato di RB4-R87. Premendo un pulsante, ogni volta che la colonna corrispondente a questo pulsante invra un Iivello logico alto, questo passerà alla fila associata e cambierà
RB7 e abbastanza complesso, ed e mostrato nella figura.
I predini
RB6 e RB7 inoltre hanno una funztone speciale, durante la funzione di scrittura del program, ma nella memoria FLASH. La scrittura in memorra sr
realizza inviando le informazioni in modo seriale tramite il PC, per cui sono necessari il segnale di clock e ilvalore binario di ogni impulso, ossia dei dati in serie. ll piedino RB6 riceve il segnale di clock e RB7 l,ingresso dei dati. I , :'
,"',I
Ogni linea d'ingresso puo erogare una corrente il cui valore massimo arriva a 20 mA, mentre un,uscita puo assorbire fino a 25 mA. Dato che esiste una limitazione nella dissipaztone massima della potenza del chip, l,assorbimento massimo di corrente della porta B e limitato a 150 mA, mentre l'erogazione massima è limitata a 100 mA. La porta A, con meno linee, raggiunge la corrente massima di assorbimento di B0 mA e 'l 50 di ero-
stato uno dei quattro piedini piu significativi della porta B, gene.ando un inte'rupt. La routine dell'interrupt verifica ia f ila da cui arriva il livello logico aito e la colonna da cui e partito, per determinare il pulsante che è stato premuto, in pratica quello che si trova all'incrocio fra ia fila e la colonna.
gazione.
RA2 +Vcc 'nqs
^
-
RBo
ffi
1
2
6
RB2
8
RB3
9
Ptc r óF84
IASTIERA MATRICIAIE 4x4
Circuito per gestire una tastiera con
le
linee della porta
B
P2l
Paro [a
di confi gura zion e
e identifi cazione I
istruzioni - che è l'unìca cosa che sa fare - e necessaria la presenza di un clock, il cui
impulso determina la velocità di lavoro. L'oscillatore che genera questi impulsi è implementato dentro il circuito integrato, pero, per regolare, selezionare e stabilizzare la frequenza di ', ,'
Secondo il tipo di componenti esternì che monteremo, si configurano quattro tipi di oscillatori: Tipo RC: è un oscillatore di basso costo poco stabile. Necessita solo di una resistenza e di un condensatore esterno.
lavoro, dobbiamo montare esternamente alcuni componenti, 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
Fotografia di un cristallo di quarzo e parte di un circuito nel quale è montato
b.tr *}H
,#.
2l
CRISTAL
Schema generale dell'interfaccia del cristallo di quarzo e dei condensatori esterni. La resistenza RS si utrltzza solo nella versione spectale ad alta frequenza
TIPO HS: e un oscillatore ad alta velocità molto stabile. Funziona a fren rcnTP .nmnroqo rra 4 e 20 MhZ. Utilizza un cristallo di quarzo o un risonatore ceramico, collegato a due condensatori di disaccoppiamento. TIPO XT: impiega anch'esso un cristallo al quarzo o un risonatore cerami-
.o
colleoato ad rrn condensatore. L:vor.: in frpnrronzo modio .^mnrp<a tra '100 KHz e 4 MHz. TIPO LP: lmpiegato in applicazioni a basso consumo, quindi per basse fre-
quenze - infatti a maggiore velocità si ha maggiore consumo -, usa cristalli o risonatori e le frenrenze di lavoro oscillano tra 35 e 200 KHz
Nella figura si mostra
lo
schema
degli oscillatori HS, XT e LP che usano un cristallo di quarzo e due condensatori di dìsaccoppiamento, il cui valore è specificato dal fabbricante in f unzione eloll: fronrronz:
g *3 *.{" àj g,lE é3, *=s$j, -**StEtLeè==*#E lmpiegando alcune porte logiche TTL molto spmnlici si nnssono costruire
Schema elettrico dell'oscillatore di cristallo a risonanza parallela
+F
+
:,ìÈ
E €i4
+:$
$
.€
e+ *.t :*,
$'#
t*É ÈH
+ÉÉj+
iÈ'*
*+É
MIGROGONÍROLtER Ripaero dei, concelti sullei frequenzc di ut
AGII
ALTRI ETEMENTI
330ko
330ko
'
74ASO4
74ASO4 XTAL '.n,
"t
il i,
:i+irit+;;:;:'..-:.r+î:::Ì:;ti::::iiìl.iljiia:i::ai;ii1:,Ì:tii!r'r:':*;
Schema elettrico dell'osctllatore di cristallo a risonanza seriale.
oscillatori che hanno
un otttmo comportamento
nella generazione della frequenza, che e determinata
e
un'ampia gamma di frequenza. Ci sono due tipi di oscillatori al quarzo: a risonanza parallela e a rtsonanza in serie.
lì circuito oscillatore con risonanza parallela illustrato nella figura oscilla aìla frequenza deì cristallo che incorpora. La porta invertente 74A504 realizza un'in' versione di fase di 180' ll circuito oscillatore a risonanza in serie - il modello nportato nelia figura - permette un'elevata precisione
Oar crlStallO
0r QUafZO.
I
: : , , . :
,.
:., ir'=li'i.ii.r:; i-:,i 1;i,1,;{!ii:-jÈi+ j;1.{r-ririli
Risiede all'indirizzo 2007N della memoria FLASH, che è r,serva'la pe' un compito speciale, infatti e accessibi e
solamente durante il processo di scrittura del programma nel PlC16FB4. OLresta reoistro di 14 bits riceve la denominazione di "Parola di configurazione". Quando viene scritto il pro-
PAROLA DI CONFIGURAZIONE
13-
PROTEZIONE DELTA MEMORIA 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 memoria EEPROM dei dati. Se si prova a modificare i bits CP passando da 0 a 'l si provoca la cancellazione completa della EEpROM.
alcune caratteristiche fondamentali del funzionamento del microcontrollore. La parola di configurazione ha 14 bits che si dividono in 4 campi. ognuno dei quali controlla una caratteristica del comportamento del PIC: '1. Campo dei bits che selezionano il tipo dì oscillatore. 2. Campo dei bits che controllano il Watchdog. 3. Campo dei bits che controllano il temporizzatore di "POWER-UP".
4. Campo dei bits che controllano la protezione della memofla.
i.
i'.!.,1,"i')ì,i;;
i, 1 ;
I
i-1
i.
i
,-rrr i
:"
i:t:
iti '
!,::
ll WTD o Watchdog Timer, è un temporizzatore che serve per controllare che il corretto sviluppo del processo di elaborazione delle istruzioni avvenga secondo una determinata cadenza. Se per esempio, il programma entra in un ciclo chiuso da cui non riesce più ad uscire, il Watchdog si attiva e resetta il programma.
Quando sr memorizza un programma df applicazione in un PlC, bisogna scrivere la parola di configurazione, e in uno der suoi campi dobbiamo specificare il tipo di oscillatore fra i quattro possibili, con cui funzionerà il microcontrollore. A questo scopo sono riservati i due bits meno signi-
La parola di configurazione dispone di un bit chiamato WTDE che controlla il Watchdog. Se WTDE = i il Watchdog è attivato e controlla l'elaborazione delle istruzioni, Se WTDE = 0 il Watchdoq è disattivato.
ficativi di questa parola, che si chramano FOSC'1 e FOSC0, nei quali bisogna scrivere i codici indicati nella
ll lemporizzatore Power-Up controlla un tempo fisso dt 72 ms e serve ad evitare problemi durante il collegamento iniziale della tensione di alimenTazrone al
tabella per specificare l'oscillatore utilizzato.
m
icrocontrollore. A volte la tensione di alimentazione, nel momen-
to RC
XT
,|
0
immediatamente successivo all'accensione, è instabile e conviene ritardare la sua applicazione alla circuiteria interna del PIC sino alla sua comoleta sta-
I
bilizzazione. Nella parola di configurazione il bit pWRTE# si usa per attivare o disattivare il temporizzatore Power-Up, che ritarda la connessione dell'alimentazione esterna alla circuiteria interna.
I
.
':
- :, :
:
Similmente a quello che succede con la parola di confi-
In molte situazioni, il fabbricante o
i progettisti di
un
prodotto governato da un microcontrollore, non vogliono che si conosca il programma e i dati presenti nella memoria. In altri casi questo non è importante, quindi sia il programma che i dati possono essere letti. | 10 bits di maggior peso della parola di configurazione sono denominati CP (Code Protection) e0 nanno il compito di proteggere o meno l'accesso alla memoria dei codicì. Se si scrive un 1 nei bits CB la memoria sarà sprotetta, e si potrà leggere liberamente. Nel caso che i bits CP siano a 0, il programma non si potrà leggere, evi-
gurazione, a cui è riservato I'indirizzo 2007H della memoria di programma, esistono altre quattro posizioni che sono riservate per le parole di identificazione e che occupano gli indirizzi dal 2000H al 2003H. Non sono accessibili durante il funzionamento normale del PlC, e possono solo essere letti o scritti durante il processo di memorizzazione del programma. Nelle parole di identificazione sono solo validi i 4 bits meno significativi di ogni posizione da 14 bits. Esse sono utilizzate per immagazzinare codici di identificazione, numeri di serie, chiavi segrete, dati di fabbricazrone, numerì sequenziali eccetera.
It temporizzatore TMRO ella maggior parte delìe applicazioni in _ iii? "{" cui intervengono dei microcontroller troviamo dei procedimenti e dei compiti in L.r " =- cui .'-'.-e necessario controllare il temno Per - lar fronte a questa esigenza si puo istrui-
lÉÉd,
Coricore un registro con un volore
re il nronrio nro.essore mediante un semnlire oroY' "Y"' gramma, che inizi caricando un valore in un registro, e noi lo derrementi sino ad arrivare a zero. Se con un c^ <olo rpni<lrn nnn )lci VLL,!,,L ottipno il tpmnn dpqidorî+^ lq9l)LlV llVll )VlV v!J,vúrOLV, )E llE ^^ possono concatenare diversi, in modo che quando uno arriva a zero, decrementi di una unita il successrvo e ripeta il ciclo. Questo procedimento è molto
De*emenfore il registro
semplice e molto preciso, perche conoscendo il numero di istruzioni da eseguire, si deduce il tempo +^+-l^ -! pspnrrirp ^^-^^'-'r^ lultru I rrt r))dt tu du E)qvuI E il il ricln LtLtu rnmnlglg. LUI tP L'inconveniente principale nel dedicare il processore a compiti di cronometro, è che vengono ipote' r rta lo cr ro ricnrca nor roalizzzro allro tlpefazlonl, Ldre re 5ue r5ur5u,-, inoltre non potrebbero essere gestiti gli interrupt, perche significherebbe fermare il conteggio del tcmnn I lomnorizzatori sonn disnositivi hafdware ausiliari integrati nel microprocessore, e sono dedicatr alla misura del tempo, scaricando da questo i:irnrn il nrnrpccnrp i
.
r-:
'."
:-
i" Àì; r
aj
:.
I
r;
::fl ilí
fl+4-:
iii.+";Lllè"i"{"t f.; L'
Registro=Q
FINE
':u
È un contatore di n bit che si incrementa o decrementa ognì volta che riceve un impulso di clock In caso di
per il controllo del tempo medrante tl decremento di un regrstro
-:
i:
ru
IMPULSI DI CTOCK
SEGNALATORE
I temporizzatoil sono contatori che si incrementano o detremenlans 1sn gli impul>i dr clock. dispongono di ,,tn bit di seqnalazione che va
a I al termine del conteggio
$eeep+r€.*#*Eru#
d##
Èeeeep+r'$Hm#*.wsE
CARICO DEt VATORE INIZIATE
"8 j-1_ft__[a INGRESSO DEGLI IMPUTSI
TMRO
SEGNALAZIONE DI OVERFTOW
Schema e funzionamento del temporizzatore TMR0.
dpcrpmento orando il valore del contatore arriva a zero, viene attivato un bit ausiliario che funziona come segnalatore, o "f lag", e va a 1 avvisando dell'accaduto. In caso che il contatore incrementi il suo
valore con gli impulsi del clock, quando supera il valore massimo e arriva I'impulso che fa passare bits del valore di conteggio, da tutti uno a tutti zero, il segnalatore va a 1 come indicato nel disegno. ll grande vantaggio di utilizzare temporizzatori, è scarica're il processore dai compiti di controllo del tempo. Se rl processore vuole sapere quando il timer ha terminato il suo conteggio, deve vigilare sulla messa a uno del segnalatore o flag. Questa continua esplorazione del flag sottrae tempo di esecuzione al processore, per questo esiste un'altra possibilità più immediata e chiara, che consiste nel produrre un interrupt ogni volta che il contatore finisce il suo ciclo. i
t.r,,, ',',t:'.: :.i: '',1 ,:.r.'.,, ' .,.,,',,,..i,;.-, Questo modello di microcontroller dispone di vari temporizzatori integrati nel chip. Un paio di questi dispositivi sono utilizzati per ritardare di un tempo costante la messa in marcia del PlC, durante la prima accensione o in caso di reset. Quelli che ci interessano sono quelli programmabili, e che sono dedicati alla misura del tempo all'interno dei compiti a cui è dedicato il microcontroller. Per ouesta finalità il PlC16F84 dispone di due temporizzatori da 8 bits: il TMR0 che è di utiìizzo generale e il WDT, Watchdog Timer che vigila sul corretto tempo di elaborazione delle istruzioni del programma, resettando il processore in caso di anomalia.
t;.,tt
;,';,,;,
it
t:,.::
...' ì. 1;..',,.'-1',;n,:.,,
È
formato da un contatore ascendente a 8 bits che puo
essere caricato inizialmente con oualsiasi valore e suc-
cessivamente si incrementa ad ogni impulso di clock, sino a superare il valore massimo, cioè il passaggio dal
maggior valore di conteggio (tutti uno) al minore (tutti zero). Quando ìl contatore passa dal valore FFH al valore 00H si attiva il flag. ll temporizzatore TMR0 può realizzare due funzioni principali: 1u. Temporizzatore o controllore del tempo. Ha il compito di misurare il tempo fra il carìco di un valore iniziale, e i successivi incrementi ad ogni ciclo di rstru-
zione (Fosc/4) sino al superamento del valore massimo, o overflow, che puo essere rivelato mediante ìl flag o producendo un interrupt. 2". Contatore di eventi. In questo caso ogni evento che deve essere contato, è rappresentato dall'impulso diclock che siapplica tramite il pin RA4/TOCKl. Se va in overflow, il contatore mette il flag a 1 oppure produce un interruot. Per fare in modo che il TMR0 funzioni come contatore di eventi esterni, dobbiamo programmare il piedino RA4/TOCKl come ingresso, e caricare alcuni bits del registro specifico OPTION con determinati valori. ll registro con il valore del contatore TMR0 occuoa l'indirizzo 'l del banco O della RAM, mentre il registro OPTION di -
cui alcuni bits programmano il funzionamento
TMRO
-
occupa l'tndinzzo 1 del banco 1 dell'area
del SFR
della RAN/. Come vedremo in segurto, il registro OPTION dispone di due bits che determinano il comportamento del temporizzatore come contatore di impulsi. Uno di que-
nnÉ
: BANCO
BANCO I
O
to al pin RA4/TOCKl, con il quale si determina l'incremento del contatore. 5e TOSE = 1 il f
orrello cli cliscesa e ronte attivo sarà v, Yvr"v
_:-_
TOSE
00
= .
l
^. O
se
sarà quello di salita.
,,',, .
ln molte
.
occasioni, sia
il
TMR0 che
il
Watchdog devono gestire lunghi intervalli di +^m^^ rrsus>:rroì'ìo di aumentare il tempo Lc'pu, c^ ^^-^--'+^ che intercorre fra ogni impulso di clock, per
0l
rlaroare ilncremenlo,
02
' 03
,
:
e 0r conseguenza
aumentare la durata dell'rntervallo. Per far fronte a questa necessità, si dispone di un nlivicnro di {ronranZa pfogfammabile, Che divide la frequenza di clock per i diversi valofl 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. Se PSA = 0 il divisore di frequenza è applicato al TMR0, con il quale funziona come Predivrsore, o Prescaler. In questo modo gli impulsi del clock passano prima attraverso ìl
ll contatore TMR) occupa l'indiilzzo 1 del banco 0 e il registro OPTION, di cui alcuni bits programmano il funzionamento del TMR), occupa l'indirizzo 1 del banco 1.
sti bits si chiama TOCS, e se vale 1 il IMR0 funziona come contatore di impulsi, se vale 0 come temporizzatore di ulilizzo generale. L'altro bit chiamato TOSE, sceglie il fronte attivo per il conteggio del segnale applica-
;:11
divisore di frequenza, vengono divisi per il valore scelto e sono poi applicati al contatore TMR0 per ottenere l'incremento di valore. Gli impulsi del clock possono pro-
venire dal proprio oscillatore interno, con una frequen-
tffisf-* )%F**FW:^ffi*n, PSA
oPTtoN
sErEzroNE RANGE
Schema interno del TMRj con i bits di programmazione del registro OPTION.
24
za di Foscl4, o da impulsi esterni applicati al piedino RA4/TOCKl. Questi impulsi passano al Prescaler che li divide per un valore impostato dai tre bits meno significativi di OPTION (PS2, PS1, PSO). Per calcolare il tempo che controlla il temporizzato-
vernano il comportamento dei temporizzatori TMR0 e WDT; inoltre il bit RBPU# serve per collegare o meno
re TMR0, dobbiamo tener presente il valore caricato inizialmente e il fattore di divisione del Presca er, in accordo ron la spnrrpntc formula:
RB0/lNT. Nella figura è indicata Ia distribuzione e la nomenclatura dei bits del registro OPTION così come l: f r rnzinnp rhp nnnrrnn di esqi romnip a seconda del
lo rp<iqton zo dr nrrll-r rn doll: nnrt: R I In :ltrn hit rnn+n dLLIVU r1-ii,in nor INITFDG doridp 611;lp ll fllUlrLC pcl l,intar_ )dld il llllLClyuurL crrì lInt rupL
a<tornn sJrsr rrv
rho !rrE
nni.. d c))crc vwLt
rnlJnar+n LUtìtr9dtu
rllr dtd
narlr PUtLd
|||/|!9J!t
valore. che Ouo essere 'l o 0.
Temporizzazione = 4 . Tosc Valore caricato in TMRO . Fattore di divisione del
.
OPTION
Prescaler
Valore da caricare in TMR0 = Temporizzazione I (4 . Tosc . Fattore di
divisione del Prescaler)
In qualsiasi momento
P52:P50 Vqlori con i quoli funziono il divisore difrequenzo PS2
P5I
P50
0 0 0 0
0 0 I I 0 0
0
si
il va lorc n rtr\en p in TMRO senza influenzare il rnnteooin ner rrri si utilizza l'istruzione "movfTVlR0, W" che eariea ncl renistro di lavoro il vàlore del contatore nel momento in cui sr esegue l'iqtrrrzinno l\loll: frrVUlO inr r". dall. UEIIO Jrru4rvr,L. nr
ro
lpc c e re
n:nin: ru yuyil
I
nrororlonlo rL!
p llPwlLoLw ! rinnrl-:fn
lo schema interno del TMR0, e si ouo notare l'esistenza di un
circuito che ritarda di due cicli i rontpooio/ Y9npr sinrrontzzare r"'L'
rl
I I
I I
I
I
no. Quando si scrive il TN/R0 si ritarda di 2 cicli il suo reincremento e si pone a 0 il divisore di f "cnr tFnTà o Prpsr:ler. i.
ln ron i< t rn naar rLVrJLrv lC nac pU)lvLLupdtnl lr
i
É -+
È g"++i+ e";=a++ +r
:.it,gs
+S
r.+.*
É
È1+resc 5+
I 0 I 0 I 0
l:4 l:8
l:2
l:32 l:64
l:ló
I
l:256
I:ló l :128
lz4
l:8
l:32 l:64 l:128
Tipo di fronfe in TOCKI l= Incremento di TMRO con fronte di disceso 0= Incremento di TMRO con fronte di solito Tipo di clock per il TMR0 l= lmpulso irì inqresso dq TOCKI (contotore) 0= lmbulso di clóck interno Fosc/4 (temporizzotore)
TOCS:
INTEDG:
RBPU#:
zione ldel banco l nell'area SFR della RAM, che ha il comnitn di rontroll:re le risorse del
microcontroller. I bits di OPIION, principalmente go-
l:l
1:2
TOSE:
t, ;1i';, rj-j,;j"Ti? r-i ij i'' 1'? i.,l i4
Ò r ro< \{uLrLv
Divisione del WDT
Asseqnozione del divisore di frequenze l= lllivisore di frequenze si ossèqno o WDT 0= ll divisore di fre{uenze si osseéno q TMRO
nrndnttn el:l <onn:lo r I(, Jqvrrors crrrr ^c+^rh^ PrwuvLLv uor
il quale si producono gli impulsi del clock rnter-
TMRO
PSA:
momento dell'incremento
TOCKI con
Divisione del
o_:::'
!
i i1:
i+ rÈ :ÈiH
:?'
ÉÉ
*+È
Frole ottivo per interrupt esterno
l= Fronte di lolito 0= Fronte di disceso
Resistenze di pull-up Porto I = Scolleoote 0= Colleg"ote
ly' a, ? :' !::^ l :-'
{i' lil
b',!:
:n'':
l
B
j rt4tsf!!.rrrì1l11lrr1rrìr1ì1ìì1ìììììììììììììrì:rr....tt........:aN\t\ttttnt4\
MICROCONTROLLER
{r|-ràF-,',,..r:ìrì jì!i*.:r:;,
ll Ytfcrfchdog
Un cane che morde #
È-
.{..,,:
3.t:
;:':.. ::.::
:
ì.,, ìr'
=.!: .,
Arbo, un cane mtcrorobat castruita dalla Sony, che sa anche morclere. E una mascotte dtsegnata che 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 Qcre-sto e
D-or coloTo
(Watchdog Timer) è un contatore ascendente a B bits che ha Ia proprietà di mandare il micro+ controller in reset ogni volta che va in overflow. . n differenza del TMR0, il Watchdog non dispone di segnalatori, ne genera interrupt alla fine del ciclo, l'unica cosa che fa e provocare il reset del microprocessore, il quale ricomincia ad eseguire il programma principale dalla prima istruzione 0000H della memoria dei codici (Vector Reset). L'obiettivo del Watchdog è verificare la corretta elaborazione delle istruzioni del orooramma. Se tutto va
lNtzlAlrzzAztoNE
bene, prima che il Watchdog termini ìa sua temporizzaztone, il programma gli fornisce un'istruzione che lo cancella e reinizia ìl conteggio, in altre parole effettua un "refresh". Se il programma si è "piantato", e non sono state eseguite le istruzioni secondo le previsioni, il programma non fornirà l'istruzione di refresh, di conseguenza il WTD andrà in overflow e verrà generato un reset. Con quest'azione si ottiene che il microcontroller inizi nuovamente il programma, ed eviti la causa del
blocco. Un programma si puo bloccare perche, ad esempio, entra in un ciclo infinito, o perché necessita di un segnale per uscirne che non arriva, ecc.
Nell'organigramma (RESET)
INIZIO TEMPORIZZAZIONE WDT
ESECUZIONE DELLE ISTRUZIONI
di
attuazione
de
Watchdog si osserva che alla fine della temporizzazione del WDR si esegue l'istruzione "clrwdt", si cancella il te'nporizzatore e ricomincia il conteggio. Se non si esegue questa 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 vigit^-^ . ^^| \-1uE)Ld ^, ,^-+î i-*.,,:ione r)u uz il contatore torna tdtE. LUt 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
b
FINE
TEMPORIZZAZIONE WDT
il reset del sistema, come nmedio per superare l'anomalia. ll refresh o reinizio del conteggio del WDl, si puo produrre anche quando si esegue I'istrr rzione "sleen" che serve ner norre il PIC in J|!!y, 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 ESECUZIONE CTRWDT
{cANCErrO WDT)
tlO
che non venga fatto da programma.
:, ,,,".' .
' '' :
,
ll Watchdog si attiva e si disattiva con il valore
del bit WDTE della Parola di Configurazione. come abbiamo visto in precedenza. La frequenza di lavoro di questo temporizzatore e sempre interna e indipendente, origi-
nata da un oscillatore RC proprio. Quando Organigramma sull'attuazione del Watchdog. Se il programma si eseErue normalmente riceverà in tempo l'istruzrone clrwdt e non deborderà. Se qualcosa va male, o questa istruzione non arriva in tempo, verrà generato un reset.
si
assegna il Divisore di frequenza al Watchdog,
questo lavora come postdivisore, al contrario di come lavora con il TN/RO. In questo modo
ilTICROCONÍROLLER
IMPUTSI DI CLOCK PER TMRO
TOSC
8ArrrvATo/
/l
Ps2.Pso7ffiK
DISATTIVATO
At TMRO
WDTE (PAROLA Dr CONFTGURAZTONE)
ffi
PsA
OVERFTOW WDT (RESET)
Schema interno del funzionamento del Watchdog.
gli impulsi che genera il WDT passano al Divisore di frequenza, che li divide per ilvalore che selezioneremo con i tre bits meno significativi del registro OPTION. Se il bit PSA neì registro OPTION e a 1, il Divisore di froatanza si annlir,a al WDT. E curioso notare che il Watchdog non dispone di nessun registro nell'area SFR della RAM. La ragione si deve al fatto che non si carica con alcun valore iniziale, iniziando sempre da zero sino all'overflow. Ogni volta che clrwdt produce un refresh torna a zero e inizta a contare nuovamente. Nel registro STATO esiste un bit chiamato TO# che passa a valore 0 quando il WDT va in overflow, così discrimina il motivo per cui e avvenuto il reset.
frequenza si puo fare in modo che questo tempo si elevì fino ad un massimo di 2,3 secondi.
ll temporizzatore WDT è preprogrammato per controllare un tempo di 'lB ms, pero regolando il Divisore dr
rtca )/d ciz JUlJcldLU .t t^Òra+^ llil Lcl famnn t tPtcva t tPw rha rt tc uimniaaa Ld)u ro o<aattitn 1îtît rrnlfo?
ESEMPIO ln un programma si desidera controllare che un deter-
^;^^+^ Ilil IA LV
I
-;-t^ lvt-^^^^sto lPV da 200 istruztoni normali
ttllWt
r
senza nessuna di salto, sia eseguifo esattamente 100 volte. Si lavora con un PlCl6FB4 con un crtstallo di quarzo a 4 Mhz e si utilizza il Watchdog per controllare questo tempo, che può essere critrco nell'applìcaztone.
ll controllo del tempo del ciclo, richiede di postzionare davanti allo stesso un'istruzione "clrwdt", che
il Watchdog e inrzializza la sua temporizzazioAl termine del processo di 100 ciclr, collocheremo nel programma princrpale un'altra istruzione di refresh del Watchdog. Con quale temporizzazione si deve programmare il Watchdog, per ottenere un reset nel resetta ne.
1A cJ)c//il rirl^ L/!ru ou ^..^
P26
CLOCK PER TMRO
PSA
PS2:PSO
ATTIVAZIONE DEt WDT
At
TMRO
wDrE) P5A OVERFTOW DEL WDT Bits del
registro OPTION che intervengono
nel
comportamento del Watchdog.
SOLUZIONE
Dato che il ciclo consta di 200 istruzioni normali, iltempo che dura ogni istruzione sarà: Ciclo lstruzione=
4.
Tempo dì Ciclo =
200
TempoTotale =
100
Tosc =
4.250ns = 1.000
ns
=
1
!s
Ciclo lfruzione = 200 . 1 ps = 200 ps
Tempo di
Ciclo= 100. 200 ;rs=20.000
ps = 20 ms
ll WDT deve essere programmato per andare in overflow 20 ms dopo il refresh. Gli impulsi per il WDT sono generati dail'oscillatore RC interno, proprio e indipendente dal orincioale.
Con l'obiettivo di precisare tutte le caratteristiche principali di cui bisogna tenere conto per gestire correttamente il Watchdog, forniamo un riassunto di quelle piu importanti e una figura che mostra grafica-
mente
i
bits dì controllo che intervengono nel suo
comportamento. RIASSU NTO DELLE SPECIFICH E
* ll
WDT è un contatore che genera
un reset ogni
volta che va in overflow.
"
È controllato da un oscrllatore RC interno ed
indipendente dall'oscillatore prrncipale del sistema. - La temporizzazione nominale e di I B ms, anche se puo essere aumentato con il valore che si sceglie nel Divisore di frequenza fra 1:2, 1 :4, .....1 :128, ottenendo con quest'ultimo caso una temporizzazione massima di 2,3 secondt. " Per stabilire il range di divisioni del Divisore di Frequenza si utilizzano i tre bits meno significativi di OPTION (P52, PSl e PS)). * Per prevenire l'overflow e i/ reset bisogna cancellare il WDT prima del termine della temporizzazione con I'istruzione "clrwdt" o "sleep". * ll WDT si attiva o drsattiva con un bit della Parola di Configurazione (WDTE). * Se il bit PSA è a 1 nel registro OPTION, tl Divtsore rli freottenza P assp.,nato al WDT. * Quando si esegue I'istrulone "sleep" si entra in modo basso consumo e si ferma tl srstema e l'elaborazione delle istruzioni. ll WDT si cancella, pero non si ferma e continua rl conteggio. * Nel modo basso consumo st entra con lo s/eep e termina con I'azione del reset esterno tramite MCLR#, o anche all'overflow del WDT. * Uscendo dal modo basso consumo si ricomincia o<onttanrla l'i<frr tzinna rho <oat ra nt talls r'li -,-"eP. ,-,,,-, <l'
La memoria det programma farchitettura Harvard dei PIC, divide la memoria in due zone indipendenti, una destinata a contenere le istruzioni e l'altra
MEMORIA DI PROGRAMMA FIASH
/,o
/,
ISTRUZIONE
DATO I
/"
/,0
deriva dall'architettura Harvard e che nermette l'accesso simul-
taneo ad entrambe le memorie, in modo che il processore possa leggere un'istruzione di
I
I
BANcoolanNco
diversi modelli della gamma media. Per questo il bus degli tndirizzi, ovvero l'insieme di linee che trasportano il valore dell'indirizzo al quale si deve accedere nella memoria - che
MEMORIA DEI DATI
tNDtRtzzo
e DATO
programma, e nel medesìmo tempo scrivere un dato. Così, il processore attende a due istruzioni alla volta, conseguendo un parallelismo implicito chiamato segmentazione. che migliora notevolmente il rendimento del sistema; fatto che in pratica si traduce nella possibilità di eseguire un elevato numero di istruzioni al
secondo. Se guardiamo il progetto costruttivo del PlC16FB4, notiamo che la memoria dì programma ha una capacità di 1 K byte da '14 bits ognuno, mentre la memoria RAN/ è costituita da due banchi da '128 byte ciascuno, lasciando gli altri banchi non implementati. ,
':'l
MICROCHIP non
"i
ha realtzzalo un progetto specifico
per il PIC16FB4,l'architettura utilizzala è la stessa per
generato
dal
Program
- non ha solo dieci linpp rhe s:rphhprn nrtelle ,r sufJe,LUvL'v Yr firienti ner oestire la ! memoria YLr YrJ!'r 'v ' Counter
PC
da 1 K, ma 13 con le quali è possibìle induizzare capacità
L'architettura Harvard del PIC rende indipendente la memoria del programma da quella dei dati.
.'
r
Un progetto esclusivo per il PlC|6FB4.
PROCESSORE
:,
I
','iXtl"
i
dati. Il primo vantaggio che
,:
I
tNDtRtzzo
tNDtRrzzo
MEMORIA DI
PROGMMMA
tNDtRlzzo ,13 ISfRUZIONE
'14
l..-
14 BITS
+l
, ,orr)uo," il ,**rirlru'"
i
t*,
ttu, a"g i ,:,iiri;i nunì,o t s con i quali si può indirizzare uno spazio di B K posizioni di memoria. ll PlCl6FA ha solo implementate le prime 1 024 posizioni.
fino a 8 K posizìoni di memoria del programma tipo FLASH. Nel caso del PlCl6FB4 è stato fisicamente implementato solo il primo K, sarebbe a dire, dall'indirizzo 0000 H al 03FF H
i..j :j r:'irí. I ::i :- I Nei PIC di gamma media abbiamo due indirizzi della memoria di programma che sono riservati per espletare due funzioni principali. Un indirizzo riservato è lo 0000 H, che è il primo della mappa. ln esso è ubicato Vettore di Reset o Reinizializzazione. ll suo compito è ;'y,:;
;';:1:!;
, '
ll fatto che il programma principale cominci all'indìrizzo 0000 H e la routine di interrupt al 0004 H non
cinnifir: rhp lo rpstanti istruzioni continrrino seouen-
, ,
j,1:.
, ' ; : , :
zialmente, altrimenti il programma principale intaccherebbe la routine di interrupt che inizia quattro posrzroni dopo. Normalmente all'indirizzo del vettore si colloca un'struzione di salto incondrzionato al vero indirizzo dove inizia il programma. Per esempio, se il programma principale - con l'obiett vo di salvare il Vettore di Interrupt - si decide di farlo iniziare all'indirizzo 0005 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
Goto
inizio
;Salto all'istruzione con etichetta inizio
tk
F un renistro da 13 hits rhe ronlienc nli indirizzi dell'istruzione successiva che deve eseguire ii processore.
O3FF H
Dato che i registri della RAM sono di 8 bits, il valore del PC si i'nnlempnta qnnra drre di essi ll rcnistro PCL delI due indirizzi riservati nella memoria di programma. La 0000 H per il Vettore dl Reset e la 0004 H per il Vettore di lnterrupt.
l'area SFR della RAM contiene gli 8 bits meno significatirrr dpl PC !
o acr^trn,a le nosizione 2 dei drre banchi. | L vLluvu,u PvJ,L,vl
supportare la prima istruzione del programma principale, che e quella rho o<anrro il,, nrnroccr r.,_-,_-Jre oopo cne è stato effettuato un reset. T-- ì^ -i+.^ --.,-^
duce con l'accensione del microcontroller nel momento in cui si applica la tensìone di alimentazione, il programma che esegue il microcontroller rnizia all'indirizzo 0000 H. L'altro indirizzo riservalo è lo 0004 H, in cui alloggia il Vettore di lntorrr rni (o nol nrnnr -y,amma e previsto un interrupt, la routine che lo riguarda ha la sua prima istruzione all'indkizzo 0004 H.
íÉ
;l,r
:;e
+
i:' i.
*tu
*11 a1;
CONTATORE DI PROGRAMMA
il -^-^+ -l ^-^
I
i
+
12
432rO
{s
87
PCLATH
Íi Gli
i.# $i-l tr;l ;i:, i; n:+ i;-i,j
B
bits meno significatiu
a" iìiìr,eaono
ntel registro PCL e
i 5 più significativi
nel PCLATH.
5
frilc cano dalle Iinee del bus dei dati
interno al processore. | 5 bits piu significativi, invece, si ricevono tramite i bits <4:0> del
CONTATORE DI PROGRAMMA
'll
-2
CODICE OP ISTRUZIONE < | 0:0>
registro PCLATH. Nell'istruzione di salto GOTO o CALL I'induizzo del salto che si carica nel PC arriva dagli 11 bits meno significativi del codice OP dell'istruzione, e dai bits <4:3> del PCLATH.
PCTATH
4 3
Lo stack è un insieme di registri che contengono le informazio-
ni in una forma particolare,
Nell'istruzione di salto il PC vrene caricato con gli 11 bits meno stgnificativi del codice OP e i bits <4;3> del reqistro 7CLATH
bits piu significativi del PC risiedono nei 5 bits meno signifrcativr del registro PCLATH, che occupa l'induizzo 0A H nei due banchi della memoria dei dati. Il registro PCL si può leggere e scrivere direttamente, mentre il PCH è accessibile in scrittura attraverso i 5 bits meno significativi di PCTATH In quelle istruzjoni in cui la destinazione è il PC, gli 8 bits meno significativi si cari-
cARrco
dato che, sia il carico che
Se precedentemente avevamo un'informazione al livello 1, questa viene spostata al livello 2 e quella del
SCARTCO
\13 STACK
STACK
1
\I3
T.INFORMMIONE 5I SPOSTA At
stSPosTA
HVELTO SUCCESSTVO
At
Caricando lo stack al livello l'informazione di ogni livello trasla al successivo
lo
scarico è speciale. Nel caso del PIC'16F84 lo stack è formato da B registri da 13 bits ognuno, ed è dotato di una struttura di carico e scarico tipo LIFO, acronimo inglese che significa "ultimo ad entrare primo ad uscire". Quando si carica un'informazione nello stack, si introduce sempre al livello 'l
I-'INFORMAZIONE LIVELLO PRECEDENTE
Anche lo scarico dello stack si realizza al livello spostando l'informazione al livello precedente
,-!, i,
1,
NfiICROCONTROTTER
livello 2 al livello 3 e così di seguito; in aìtre parole, quando si carica l'rnformazione aì ìivello 1, quello che c'era memorizzato in ogni livello si sposta al seguente livello. Se lo stack e nieno e contiene informazioni in tutti
qli otto livelli,
rl
carico di un nuovo dato produce lo spo-
stamento dell'informazione di ogni livello al seguente, quindi si perderà quella che esisteva al livello B. Per recuperare le informazìoni dallo stack, lo spo-
stamento delle informazioni si realizza al rovescio; esce quella che sta occupando il livello 1, e ìn esso 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.
rì-- cARrco (cArr
E TNTERRUPT)
': .l' ' ' '''',,, Lo stack del PIC funzlona automaticamente, ed e direttamente relazionato con il contenuto del PC. Lo stack si carica sul livello 1 con il conte-
nuto del PC Quando lo stack scarica l'informazione del livello 1, la passa al PC. Ogni volta rhp ci pconrro l'istrr rzinne CALL
o che si produce un interrupt, necessario salvare il contenuto del PC per sapere successivamente ritornare al punto dove avevamo lasciato il programma princrpale. L'esecuzione di un'istruzione CALL o di un interrupt, produce lo spostamento auto-
è
l3
L'istruzione CALL o I'interrupt, provocano il caricamento automatico del contenuto del PIC nello stack
matico del contenuto del
/ '13
PC
al livello 1 dello stack.
scARlco srAcK
rs\
(RETURN, RETTW,RETFIE)
fultima istruzione di una subroutine o di una routine d'interrupt è di RITORNO, quando questa è eseguita produce lo scarico automatico del livello 1 dello stack sopra il
PC, restituendo
il
f
lusso di
controllo al programma principale, nel punto in cui era stato abbandonato. ll programmatore deve te-
nere conto che non esistono
segnalazioni
di RITORNO della subroutine o dell'interrupt scaricano immediatamente il contenuto del livello 1 dello stack sopra il PC Le istruzioni
;:;,::iii :r,, 11l,il:;.+
4i,i
;r1111;i
che
indicano quando lo stack è pieno, ed è sua responsabilrtà evitare il debordamento e la perdita di informazioni.
Reset
e circuiteria fissa Per entrare in funzione
il
PlC16FB4 ha bisogno di tre
risorse:
- Tensione di alimentazrone
- Freorenza di rifprimpnto. - Reinizializzazione o Reset. La tensione di alimentazione e indispensabile per il funzionamento di tutti i componenti elettronici, e il suo valore può essere compreso fra +2 e +6 VDC, essendo
!,,0, àoscr/crKrN T ._------------l-cR|sTAt MCtR#/Vpp
-+'
MASSA:Vss
-:I
-osc2/crKouT E-.---l
À-' S+Voo=+SVDC
$lml' | T
27ot
+
Quando si preme il pulsante di Reset il piedino MCLR# passa a livello logtco basso
lnfine, un microcontroller deve disporre di diverse forme di inizializzazione de programma di lavoro. Per nro\/oràre rrn Rpspt esterno si rrtilizza il oiedino 4 (MCLR#l/pp), che ha anche la funzione di introdurre la ioncinno \/nn rlr 1) ) 14 VDC di CUi il miCfOCOntrOller necessita durante il processo di scrittura del programma. Nella figura si mostrano i 5 piedini del PlC16FB4 che supportano le tre risorse principali.
Questi sono i 5 pin del PlCl6FB4 che supportano le tre funzioni
principali. alimentaztone, frequenza di riferimento e Reset.
+5 V la tensione tipica, compatibile con il resto della circuiteria del sistema. Questa tensione si applica ai piedini '1 5 p 5 risncttiv:mcntp nositivo e massà ll ronsumo di
corrente dipende dalla frequenza di funzionamento e dalla tensione di alimentazione, che non supera 10 mA. La frequenza di riferimento serve per stabilizzare e fissare la frequenza dell'oscillatore interno, che determina quella di lavoro del orocessore. Si ottiene da un cristallo di quarzo collegato ai piedini 16 (OSCl/CLKIN) e 15 (OSC2/CLKOUT). Nei nostri sviluppi utilizzeremo un crrstallo di quarzo a 4 MNz, per formare un oscillatore tipo XT. In ognuno di questi piedini si monta un condensato-
ro di nnchi nirofered nor dic,rrrnnni:ro lo fronttonza spurie.
Voo=+5VDC
î rok=
f
rN4148+ PULSANTE
At--M I rooo
r'-rrq; I
I.: ll rlinrln imnpdisr c r he e íre6li corrente dall'rnterno del microcontroller al positivo ,,,,P!vrr!L
n^+^ -A^ quan0o ^,,-^,]^ uaro cne 5l imnieoa rrn PIC 16F84 ""r'-vnal nrnnoffn di rrn':nnlir:zinno a qomnro
necessaria una circui+^";^.+^"^^ ',."ì^ Ito, E vot tELCtto c)Lct r:nnn <nln irnlipn:-
menti delle linee di l/O rnn lo norifari16,a rho
dovremo controllare esrstono sul mercato schede di circuiti stam-
pati che dispongono di rrnn znrrnln dci
nar Y-, il,, Pll',-, rollcn,amonti nc; rv,,rYU,,,L,,Ll
l'alimentazione,
del
cristallo di quarzo e del Rocoi o r rn: znn: lihor: rlnrio nnq(nnó èqqéYvrJv' ro m^nf:to lo nori{oriY-.,,-,,
lmmagine di una scheda di prototipi commerciahzzata da Microsystem Engineeilng
Quando si applica un livello basso per un tempo suffinrodrrrp rrnà rcinizializzarientp al niedino N/al R#, JIsi yIvvuLL zione che comporta l'esecuzione di due azioni impor-
che che si collegheranno alle linee di l/O. Nr^ll{i^,,",..J^ll- pagrna ^. successlva sl puo veoere lo r\eila rgurd oeild schema elettrico della scheda per i prototipi che è molto ulile per la presentazione e la messa a punto dei proto-
tanîr:
tL.i
'1
". La messa a zero
del Prnnr:m Cor rntor
-r r^ri.i---.Ò il ruil r4zor! la pd>>d du prima istruzione del pro-
rhe
cosl
o uLr doi nrnnoffi L ||JrvgLLLrr
d:t: uuru
l.ld {..ili+à À'".^ U U)U, lld rr^ir:+; ldPìultd ldLlllLd
conomia che comporta.
gramma.
2". Pone in uno
stato
p"edeterminato la maggìor narte dei bit dei reoistri di controllo del processore. Nella figura della pagina
nro.p.ltrnto sr mnstr:\/a
Un
semplice schema a base di un pulsante, che provoca il Reset esterno.
Un altro schema comune per il pulsante di Reset
include una resistenza di assorbimento da 10 K, un dindn rho imnpdisre la circolazione di corrente al piedino 4 e un'altra piccola resistenza da 100 Q come sivede nella figura.
utìììììriifl
lffi
fr ùrÌrÌ|rrrrrrr:t:lr:rrrnr{rf
*Mffi
irul
Scheda dei prototipi con un'applicazione che controlla diverse periferiche
l/^
^ lcE
succedere sìa nel modo funzio-
namento normale del PIC e nel suo stato di riposo.
sia
ln qualunque delle cinque possibili cause del Reset, il PC si carica con zero, eccetto quando il WDT va in overflow con
rl
Pll- in <t:fn di rinncn in nrro<tn caso il PC si incrementa di una
unita ner eseorrire l'istruzione -^^,,^^+^ - ^,,^ll-tqueila cne seguente a
mandato nello stato
lo na di basso
consumo. Nella tabella sono rino.fati Ii v:lori r-ho nrendOnO vu,v,, r,L vl bit del registro SFR dopo ognu-
i
Schema elettrico della scheda dei prototipi
na delle possibili cause di Reset.
ll Reset rnette a zero il PC e colloca in uno stato predeterminato la maggior parte dei hit dei reoistri di controllo. Esistono tre cause principali che originano i Reset: 1". Connessione dell'alimentazione (POR: Power On Reset) Si produce al passaggio della tensione dì alimentazione da
1,2a1,7Y. 2'. Attivazione del piedino N/CLR#. C)rrpsto nrn sr rrcpdpre sia mentre il PIC YULJLV funziona normalmente, sia che si trovi in
CONSENSO PWRÍ (Porolo di configurozione)
stato di rìposo. 3'" Overflow del Watchdog (WDT). Puo
Schema elettrico di controllo interno dell'attivazione del Reset
:,,
OVERFLOW OVERFIOW MCLR# DEII.A ì WATCHDOG WATCHDOG MODO . aUMENTAZIONE ìmoDo NoRMAIE r MODO RIPOSO . NORI AtE: XXXX XXXX UUUU UIUU UUUU IUUU UUUU UUUU CONNESSIONE
REGISIRO
tNDtRtzzl
MCLR# IAODO RIPOSO
00h
h o?h 03h 04 h 05L Oé h 01
0000h
lxs
góh sl h : 08 h 09 h
j,, r.'
h ;i:,oah ìììr oal es ge h
PC+ I uuu0 0uuu
tlil lill 1111l',] t1
xxxx xxxx xxxx xxxx ,.. o oooo
0000 OOOu
h
0000
UUUU UUUU UUUU UUUU UUUU UUU! UUUU UUUU
UUUU !UUU
---r l]1t llll llil ll]t lltl
UUUU UUUU
UUUU
11111111
illr
I11r
---oúooo
---00000 000O 0O0u
x=lndelerminoto
i valori che assumono i bit dei registri
uuuu
--- = Non ufìlizzoto
SFR
UUUU UUUU UUUU
-.-r llil llll llll il| 1t1r
UUUU UUUU
UUUU
0?000 .--0?000
---o?ooo
oo00 Òoox
h
uuuu 0001 0uuu
UUUU
---11111
i U=Noncombio Tabella con
0000 h 0000 I uuu
xxxx xxxx xxxx xxxx xxxx xxxx
85 lr
1-;,'1',_
i,
i
i:.
;.: ; ;,;'?' -
'i ii i i. i:' 1' 1; ir
i j 1 il: 11,
|Lq i^,,"- ff^.+,a - fil9UIO rV lttUJttC l^
SChema
elettrico che controlla l'attiva-
xxxx xxxx OOOI
i:,'.
uuuu
00000 ---00000 0000000u 00000000
? = Dipende do olke condizioni.
durante i possibili Reset
zione del Reset. Sono messr In evidenza i temporizzatori OST e PWRT.
ll temnnrizTz,tore PWRT (Power-up-Timer) aggiunge 72 millisecondi che mantengono rl microcontroller nella situazione di Reset, per dare tempo alla tensione di alimentazione di stabilizzarsi. .i Per il suo funzionamento dobbiamo mettere a basso
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 uscita sr attrva:
.
All'attivarsi del piedino MCLR#.
. Quando va in overflow il WDT. . Se si rileva un fronte di salita nel pie-
I bit TO# e PD# del Registro di Stato determinano la causa che ha originato
dino VDD (POR).
f ingresso Reset del flip-flop sr attiva quando, tramite la AND4, arriva un livello alto; questo richiede che agli ingressidella porta cisiano livellialti, e quindisignifica che: . Non ci sono richieste di Reset e l'uscita di OR2 ha livello basso. . Se PWRT e attivo è terminato il ritardo di72 ms. . Concluso rl ritardo di PWRT è terminato il ritardo
il
Reset
conoscere la causa stessa. Per questo sì utilizzano due bit del registro di STATO o STATUS, che occupano l'in-
duizzo 3 dei due banchi della RAM. Si tratta del bit TO# (T mer Out), che si attiva con l'overflow del WDT, e del bit PD# (Power Down) che si attiva quando il PIC e in stato di riposo. La tabella in alto decodifica glistati
di ouestr due bit.
di osT. Nel cronogramma della figura possiamo vedere gli stati ehe assumono i diversi segnali che sono coinvolti nel Reset, quando questo viene prodotto alla rilevazione di un fronte di salita sull'ingresso della tensrone di alimentazione. 5 il=5F ÉÍ'*l.i S'èFi I{F l'É il i"rili" i'iií€F{;;,iFj F. l}t
.
i, ilÈF=È*,E
Dati i differenti effetti che provoca il Reset a seconda della causa che lo ha originato, è molto importante
È
È
Ouando la tensione di alimentazione scende al di sotto del valore di tensione del diodo zeneq Vz = 0,7 V, si produce un Reset per I'attivazione del aiedino MCLR#. ..':.
:
...
: l
.
+-ì{:-S*"il È:È:È * {i {i} *È,{+:f+i;3.q"} *.é E. A volte è molto importante reinizializzare il
POR
oiERFtovrf
processore
OVERFLOW
quando si produce un buco di tensione e/o la tensione scende sotto un valore determinato, senza arrivare azero,
**i-t fu
Ci sono modelli del PIC che incoroorano nel silicio i circui-
PI,vnÍ
osr
risalendo subito dopo.
Cronogramma dei segnali che partecipano a/ Reset all'arrivo dr un fronte di salita nella tensione di alimentazione.
#+È*É.eÈs$Eea*=$+$È+
necessari per provocare il Reset a fronte di un buco di tensione. Questo non è il caso del PlC16F84, quindi per
ti
# R*s+*
ottenere cio bisogna costruire un circuito ausiliario come mostrato nella figura.
ecessità di m emo rizzare dati non volatiti N
, ,,,
i r,.
pesso, nelle applicazioni più comuni con i microcontroller, è necessario poter disporre di intormazioni ditipo permanente. ln deter-
minati momenti vengono introdotti
nel
sistema alcuni dati che devono essere mantenuti anche dopo aver scollegato l'alimentazione.
Supponiamo un sistema di controllo di accesso ad un luogo, che controlla il relé la cui attivazione chiude contatti che permettono l'apertura della porta. Le principali periferiche saranno una tastiera, un display di visualizzazione dei messaggi, e un relé di uscita. Ogni utilizzatore introduce la sua chiave segreta mediante la tastiera e i messaggi che appaiono nel video guidano le operazioni del medesimo. Nell'applicazione descritta, ogni utilizzatore ha un suo codice, e l'insieme di questi deve essere memorizzato in modo permanente, per essere utilizzato quando 'è necessario. Inoltre sarà possibile cambiarli in qualunque momento.
scritto e cancellato; pero deve essere mantenuto anche quando viene scollegata l'alimentazione. Con l'obiettivo di supportare questo tipo di dati e applicazioni, il P|C16F84 dispone di una memoria EEPROM da 64 bytes.
i
tini di drri ò nara , ,,---554|a una ^tro<ti memoria non volatile, perchè il contenuto possa essere Por momnrizT)ro
Le memorie EEPROM nascono per superare gli inconve-
nienti delle EPRON/, che si potevano scrivere e poi cancellare sottoponendole per alcuni minuti ai raggi ultravroletti, per cui disponevano di un cristallo sulla superficre. La scrittura della EPROM è di tipo elettrico, però per cancellarla, bisogna estrarla dallo zoccolo e posizionarla sul "cancellatore" a raggi ultravioletti. Questo processo è lungo e complicato. Nelle memorie EEPROM sia la scrittura sia la cancellazione delle informazioni, sono realizzate mediante segnali elettrici, per cui non è necessario estrarre il circuito integrato dallo zoccolo. 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 potenziale, che rimane memorizzata anche se viene tolta l'alimentazione. Per distruggere questa carica basta applicare la stessa tensione inversa. Nella EEPROM si possono scrivere e cancellare singole 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 elevato.
Terminali programmabrli della OMRON, che hanno funztone dr nterfaccia uom o-macch i n a.
i
La memoria FLASH ulilizza la stessa tecnologia pero riducendo lo spessore della iamina di ossido, il che permette un funzionamento simile alle EEPROM, con maggiore densita di integrazione, minor costo e maggior velocità di accesso. Per questo motivo useremo la memoria di programma FLASH nel PlC16FB4.
P3l
Altre caratteristiche interessanti per la scnttura dei dati nella EEPROM del PlC16F84 sono:
Per le operazioni di scrittura e cancellazione, la 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.
ll microcontroller che usiamo come cervello di Monty, dispone di una zona di memoria dei dati implementata con tecnologia EEPROM, con una capacità di 64 posizroni da 8 bit cadauna. ll suo principale inconveniente è che la durata del ciclo dr scrittura o cancellazione di una cella è molto lento, comparato con la velocità del processore, infatti sono necessari 10 milllisecondì, tempo in cui un PIC 16F84 lavorando a '10 Mhz, esegue più istruzioni delle 1024 che può contenere nella sua memoria di programma. Inoltre questo tempo è critico e bisogna aspettare che termini completamente ogni
Anche se la EEPROM è una parte della memoria dei dati, i suoi induizzi non sono mappati insieme ai registri SFR e GPR della RAM, che è volatile. Occupa uno spazio di memoria indipendente, così come mostrato nella figura.
INDIRIZZI EEPROM HEX
00
0r
singola operazione per iniziarne una nuova.
02
64 POSTZTONI
1._
8 BtrS
_l
Lo spazio nella memorra EEPROM e indipendente
Per gestire lo spazio proprio della EEPROM bisogna uLilizzare due registri di controllo dell'area SFR. Si tratta dei registri EEADR ed EEDATA. ll regtstro EEADR occu0a la posizione 9 del banco 0 della RAM, mentre I
quello EEDATA si trova ubicato alì'indirizzo B
del
banco 0, come riportato graficamente. Nella posizione uguale a EEDATA, nel banco 1, La te:ntsione di 13j B VòC nec:e:ssaria per la scrittura/cancellazione di un indirizzo della EEPROM, si applica tramite il pin 4 del PlCl6FB4.
si
trova il reoistro di controllo della EEPRON/, EECONl. In modo simile il registro di controllo EECON2 occu'1 0a una posizione correlata a EEADR, neì banco .
RAM
Dato che questo tempo è molto critico, la fine delle operazioni è controllata da un flag che può essere complementato con un interrupt alla fine della scrittura di un induizzo. Per accedere ad una posizione della EEPROM dobbiamo caricare nel registro EEADR I'indirizzo della medesima, mentre in EEDATA si carica il dato da scrivere, o nel caso della lettura, si deposita il dato letto. Dato che iregistri EEADR ed EEDATA sono di B blt, i due bit più significativi del registro EEADR valgono sempre zero, perche il valore maggiore che si può caricare è 3 FH.
EEADR (09 BANCO 0)
EEDATA (08 BANCO
0l
;
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 nella gestione dell'area di memoria EEPROM, sono riportati anche i registri di controllo EECONI ed EECON2
.,
,;.
il
,; ',",i' i,;,t, i'.:,, .',. ' ',,,";1,1 1', I 1 " , t ,.', i;',': All'indirizzo OB relativo al banco 1 della zona SFR della RAM è situato il registro EECONl i cui bit hanno rl compito di controllare le operazione della EEPROM.
cicli di lettura e scrittura della EEPROM sono realizzati <rrnli ind,irizti di rrn hrito
ll ciclo di scrittura comoorta la orecedente cancellazione in automatìco delle informazioni che conteneva la posizione a cui sie fatto accesso. lltempo diciclo di scrittura è controllato da un temoorizzatore integrato nel chip. ll problema maggiore e che questo tempo non solo è lungo, '10 millisecondi come massimo, ma è variabile a seconda della temperatura e delra rensrone aoolicata.
I tre bit meno significativi di questo registro non hanno alcuna funzione. Di seguito descriveremo il compito di ognuno dei bit del registro EECONl: RD: Lettura
Quando questo bit è messo
zione
a 1, si realizza un'opera-
di lettura all'induizzo contenuto nel
registro
EEADR. ll contenuto di questo indirizzo viene caricato nel registro EEDATA. Terminata l'operazione di lettura RD torna automaticamente a 0.
hj'i,++=++;l'l'È+u #+u*i'.U+uil"t rtljdri+rli'[st.::r í
fr
j
P32
FLAG
EECON
r (Oe BANCO | )
Struttura e nomenclatura dei bit del registro EECONl
WR: Scrittura
a 1 nrrpsto hit sì realizza rrn'nnerazione di scrittura dell'indirizzo indicato da EEADR, con il dato N.4pttendo
caricato in EEDATA. Completato il ciclo di scrittura il WR torna a zero automaticamente.
WREN: Consenso alla scrittura Questo bil realizza una funzione di sicurezza, se è a normtrtttr l: srrittr rr: qe e a 0 no indinondentemente dal valore del blt WR. 1
WRERR: Flag di errore di scrittura Viene posto automaticamente a 'l quando un'operazione di scrittura termina prematuramente. Segnala che si e verificato un errore di scrittura, attivandosi quando si interrompe l'operazione di scrittura, a causa di un reset prodotto da MCLR# o per overflow del WDT. Dopo il Reset l'utilizzatore deve verif icare questo hit e se vale rinetere l'onerazione oi scrittura.
'l
EEIF: Flag di termine dell'operazione di scrittura Data l'importanza dell'operazione di scrittura, e rl rischio di comoromettere il sistema se non termina cor-
rettamente, questo bit è dedicato a segnalare il termine dell'operazione, prendendo il valore L ln seorrito dovremo norre ollesto l-ti| a zero tramite r"ii '" software, altrimenti resterà a 'l .
i::i.;.:l:' In realtà questo registro non è fisicamente ìmplementa-
to nella RAM. È utilizzato come un drsposirivo di sicurezza, per convalldare l'operazrone dr scrittura della EEPROM, ed
evitare disturbi che potrebbero prodursi durante il lungo irtervallo di tempo prodotto dalla durata di quect: nnor:zinno Se viene letto tutti ì suoi bit valgono 0.
EECON2 (09 BANCO I
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
l
'