Microrobotica Monty Peruzzo Editore - 06 A - Microcontroller
-
Upload
monty-microrobot -
Category
Documents
-
view
249 -
download
10
description
Transcript of Microrobotica Monty Peruzzo Editore - 06 A - Microcontroller
che governano it mondo.Computers: [e macchine
ttualmente è imoossrbile conceoire il mondonel 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 inter-romperebbero i collegamenti telefonici, fax, e Internet.
GIi spostamenti su terra, mare e cielo sarebbero seria-mpnto ncnalizzati lp induStrie fermerebberO i loro nro--^--t ^-^.r,,++;,,i ^ ,- _rmmerCializZaZiOne lgi lnrn nro_LC))l VfUUULLIVI C ld LUI lllllEILlOll4LOLIVttC UCr rvrv lJrv
dotti. Gli ospedali non potrebbero eseguire determinatiinterventi. Persino a casa nostra avremmo dei problemi
con l'ascensore, l'antifurto, ecc. ll caos sarebbe totale.ll computer è uno degli strumenti più importanti
fabbricati dall'uomo ed e da questo strumento che
dipende il suo progresso.
Per poter seguire con profitto questi fascìcoìi, dedicati
all'affascinante tecnica dello sviluppo, costruzione, pro-
grammazione ed applicazione dei Robots intelligenti,
fNICROCONTROLTERPresenlcrzione Generole
ll aersonal computer o PC
sarà uno strumento indispensabile per operare con i microrobot
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 informazionisulle caratteristiche, prezzi, punti d'incontro e corsi di Microrobots.
Risolvere i dubbi ed i problemi che nasceranno durante lo sviluppo
dell'opera attraverso il supporto elettronico.
Tutti i computer, dal PC a quelli molto più potenti che
controllano un insieme di celle robotizzate oer l'assem-
blaggio d'automobili, o comequelli piccoli di un Microrobot,hanno la stessa architettura fon-damentale, composta dai se-nrronfi tro olomonti'
MEMORIAIn questo elemento del compu-tar \/onfl^nn <rritti i r,.., programmlche si vogliono utilizzare, assie-
me ai dati necessari ed ai risulta-
ti che vengono generati.
PROCESSORE
E' la parte più importante della
macchina, esso deve interpreta-ra lo i<trr rzinn i dol nr,r,39ramna,ed eseorrire le onerazioni che
competono ad ognuna. All'in-tprno dpl nrncpqqorp l'Unita di
Controllo è quella che rnterpreta
o traduce le istruzioni, quindi il
P Ol
Memorialstruzioni e dati
ProcessoreInterpreta ed
esegue le istruzioni
PerifericheStampante
Un computer è composto da tre parti principali: memoria, processore e periferiche
percorso dei dati esegue le operazioni impartite da
ogni istruzione.
PERIFERICHE
Sono i dispositivi che utilizzano gli utenti, nei quali ven-gono caricate le informazioni e vengono raccolti i risul-tati ottenuti dall'analisi dei programmi e dei dati.
Le periferiche classiche sono la tastiera, il mouse,la stampante, il monitot il modem, gli altoparlanti e
la telecamera digitale, ma possono anche essere un
PC motori, un display a sette segmenti, sensori diprossimità, ecc.
E un computer costruito all'interno di un circurro InTe-
grato. I progressi tecnologici dell'elettronica hanno per-
messo di implementare tutti i componenti di un compu-ter dentro un chip di silicio in un solo circuito integrato.
Ad esempio, il Microcontroller della fotografia che
viene evidenziato sul dito è un PlC12C5O9, ed è conte-nuto in un "case", o contenitore, di otto piedini, occu-pa un superficie di 12 mm. di lunghezza per 6 mm. dilarghezza, pesa poco piu di 3 gr., il prezzo puo essere
inferiore a 1 Euro, a seconda del numero di pezzi acqui-stati. Con le caratteristiche segnalate precedentemente
è 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.
I Microcontroller sono computer di dimensioni moltoridotte che possono essere situati nella stessa applica-zione che gestiscono. La tastiera è un esempio di pro-
Un tipico Microcontroller sulla punta del dito.
dotto molto conosciuto, che ha al suo ìnterno unMicrocontroller, il quale individua il tasto scelto,genera icodici che lo identificano e lo invia al pro-cessore. Lo stesso succede con il mouse, al suo inter-no esiste un Microcontroller che conta, registra e tra-smette al processore i segnali che vengono prodottidai due encoders che controllano il movimento dellapallina in X e Y inoltre riconosce, codifica e trasmet-te i comandi dei tasti.
u ,
TWGROGONTROLLERPresenleizione Generole
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 con-
trolla, sa eseguire solamente un compito, motivo per il
quale esegue sempre lo stesso programma: controlladati che si assomigliano e controlla sempre le stesse
periferiche. Un computer di ulilizzo generaìe come un
PC, possiamo utilizzarlo per disegnare un circuito elet-
tronico, oppure per grocare.
ll microcontroller permette d'impiegare un compu-ter per far funzionare tutti i prodotti, piccoli o econo-
mìci che siano.
Le oossibilità d'utllizzo dei microcontroller sono ltmitatesolo 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ì posso-
no memorizzare le stazioni desiderate, programmarle in
modo casuale, realizzare l'accensione in data ed oraprefissate 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 pro-
dotti e sistemi che abbiamo, è in costante crescita, e
PANNELLO DEGLICONTROLLO DELLA VELOCITACONTROLLO DELLA CLI MATIZZMIONESISTEMA DI NAVIGMIONEMULTIPLEXING DEL CABLAGGIO
AIRBAG
ll numero di Microcontroller che vengono incorporatrnell'automobile è sempre maggiore
durante il secolo XXI assisteremo ad un'invasione gene-
ralizzala. La dìstribuzione percentuale della applicazio-
ne dei microcontrollori nei diversi settori alla fine del
secolo XIX è la seguente:
COMUNICAZIONE: 3O%Telefoni fissi e mobili. Sistemi di comunicazione. Navigazione.
CONTROLLODEL MOTORE
PRODOTTI Dl LARGO CONSUMO:27YoElettrodonrestici. 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: 1O7oStrumentazione. Elettromedicina. Automazione. Robotica. Telecamere.
Applicazioni militari. Domotica (automazione delle abitazioni civili).
MICROCONTROLLERPresentcrzione Generole
Controllo illuminazione .,....1
SCALAAscensoreControllo illuminazione.Antincendio
(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? Faccia-
mo un piccolo bilancioln breve aumenteranno 1e quan-
tita a ca:sa del a rni-e-re nasct-
ta del nostro microrobot Monty.
L'invasione dei mrcrocontroller e
appena inizìata. Ogni annoapparono sul nostro mercatomndo li n I n.ìtont .-^--i ,1, .^-
V u VvLLr L r LoVoL ul lcd-
lizza'e corrnlessi iavor con l'obret-tivo dl automatrzzare prodottimportantr Pero uno dei più
appassronanti e con ptu futurocommerciale e sociale e quellorelativo ai microrobots Questenirr-oie rn.errhino diventerarno.^mn:nnó n<or:r:hil de l'uomop n.è(to oqpcr.ir:nnn COn veloCiia
ed e'{rcienza "nolri avori quotidia-r- rhp.rdpsso s'rnlni,lrno noi.
COMPUTER E PERIFERICHEPC e periferiche associate .....".. ...... ... 6
TOTALE:37
Oltre ad aiutarci con i nostri lavori domestici, nei
nostro lavoro e nei nostri viaggi, divideranno e parteci-peranno ai nostri momenti di relax e lotteranno per
diventare i "migliori amici dell'uomo".
,t:.:'
Pratotipo del srstema PALMA di atuto alla mobilità per bambtni con paralisi cerebralelstituta di Automazione lndustriale (C5lC).
Classifi ca zior€, mercatoe costruttori di microprocessori
ll microrobot della Husqvarna taglia conttnuamente l'erba del grardtno alimentandost con energia solare
ll microprocessore e un computer in un chip, pero le sue
risorse e le sue capacità sono molto limitate. Si utilizzanel controllo di aoolicazíoni concrete e di solito e inse-rrîo nel medesimn nrodOttO Che COntrOila. A SeCondadollc,annlir:zinni lp 6pr:r+aric*irh^ .h^
^^,,^ nnq(onoroucilc oPPillqzrvr il, rE Lor o LLqr ')UL'ic Lt tc ucvc
i mirrnnrnroqqnrp (nnr'r d'fforonti Orrinn nar n^\/arn:-,,,.,"|"rp . rn rohot '.drrstriale si deve nossedpre r,na memoriavvJJ!vU I ur ru
coc ufa grande capacita, perche dovra contenere tuttii programmi e i dati, i vari temporizzalori per controlla-re r terrpi, i convertitori AD per il trattamento derle
^r--À^.-^ '^.1^^;-h^ i rirrttiti <nori:li di intorf :rri: nar9tóttUÍ//t dlldlUVlLl lC, | !ilLurLr )VLLruil ur .rrLLrldLLld i_,el
i motori e comunicazione seriale ad alta velocrta per tra-
smeltere nformazioni e nrragini delle telecarnere che
ulilizza. Un microrobot della prestigiosa azienda HUSQ-
VARNA taglia continuamente l'erba del giardino. ll
microprocessore che lo governa deve disporre di circui-ti per il controllo dei suoi motori, interfacce con jser-sori che limitano la superficie dr taglio e sistemi di cari-ca delle batterie mediante energia solare.
Per pilotare un distributore automatico di iattine, il
microprocessore deve solo contare le monete che ven-gono ntrodotte, gestire r pursaf ri di selezrone, rl pan-nello 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
*# *ffi il*rT=I-H*T
),tt,' "'
enorme varietà di microprocessori: dai più semplici edeconomici, destinati a prodotti comuni, sino a quelli più
completi capaci di controllare sistemi avanzati.
,'.'i,, t t,':t.1.!, í::',:. !.'. " i: ! i..i i,i i,: i.1 ii :,.,; ì; li. 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 deidati. ll bus dei dati è l'insieme delle linee mediante lequali vengono trasferite le informazioni all'interno delprocessore. Ne esistono di quattro tipi:
Microprocessori a 4 bit
Microprocessori a 16 bit
Quelli a 4 bit sono i più semplici e si utilizzano inpiccoli automatismi e giocattoli. Vengono fabbricati ingrandi quantità e risultano molto economici da instal-lare nei prodotti di largo consumo. Quelli a B bit, sonoi piu utilizzati per la loro grande varietà e versatilità.
Quelli a 16 brt sono impiegati in applicazioni più esi-genti e, infine, quelli a 32 bit dominano il settore dei
progettr piu avanzati, come le applicazioni nell'intelli-genza artificiale, oppure le applicazioni militari e dispo-sitivi 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 buonprogettista deve scegliere il microprocessore che soddr-sfi tutte le specifiche del suo progetto, incluse le preve-
dibilr espansioni future I microprocessori a B bit sonocaratterizzati dall'avere il bus dei dati da B linee, questocomporta che tutti ì trasferimenti di informazioni all'in-terno della struttura del chip saranno realizzaÍi a byte di
8 bit didimensione, e la memoria dei datiavra anch'es-
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 istruzio-ni nr rn pssere differtrntp e si ad:tter: :l fnfmato del
m icroprocessore.
La struttura generale del microprocessore e compostarl r ^, , r++"^ ^-"+iuo 9uoLLr u Poru.
Memoria di programma
r OTP: la memoria viene scritta dall'utente finale tra-mite uno scrittore di memorie e un PC. 5i possono soloprogrammare una volta e non si possono cancellare.Adatte ner serie medio niccole delo il lorn h:sqo nrez-
zo.. EPROM: mediante uno scrittore e un programma
di comunicazione con il PC si memorizzano i program-mi 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 realizza-
ta sottoponendo il chip a luce ultravroletta, per il perio-
do indicato dal costruttore.. EEPROM: si scrivono e cancellano elettricamente
qén7: no.p<<it: di r:nni rrltr:vinlofti"' '"vY'. FLASH: simili alle EEPRON/. Le puo scrivere e can-
cellare l'utente finale tramite un 0roorammatore colle-gato a un PC
Fotografia di un programmatore per microprocessoricon memoria di programma OTP EPROM, EEPROM e FLASH(Micro' PIC Progymmer di Microslstem: Engineering)
Archivia le variabili di processo e i risultatr temporanei.DOrio nOrmettoro lottr 1rt a crr''t+' .^-nnr.l: nlall:yLvL VL,rrruLLLrL rL!Luld C )Ll ltLUld (:/ d )t:LUllUd UClld
tecnologia di fabbricazione, si divide in due categoriefondamentali:
o RAIV: Memoria di iettura e scrittura molto rapidae volatile.
. EEPRON/: Memoria di lettura e scrittura lenta, ma
non volatile.
; ' ';' :,' :1" . , ' l,'ll,
È la narlp dpl romnrrtpr inrarirata di intprnretare ed''|,"..'''eseguire le istruzioni del programma E formata da due
Processore
: "ispositivi ausiliari
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'ap-plicazione a cui è destinato il microprocessore. Datorhp devc osonrrirp somnre lo slesso comnilo deve esse-!v, ,,v, Lv, r
re una memoria non volatile, che non perda le infor-mazioni memorizzate quando si scollega l'alimentazio-ne. Esistono diversi tipi di memoria di programma:
. ROM mascherate: le istruzioni vengono scritteall'interno della memoria dal costruttore e non posso-
no essere cancellate. Sono consigliabili per le grandiserie.
à.|r
I ^t
t)frr^ hlnrrhì tinìri Aì tt-. -n mtcroprocessore
sezioni, l'Unità Centrale che traduce le istruzioni e la
ALU (Unita Logico Aritmetica) che le esegue.
, : ':
': l ;l': ! l::
Questa parte del microprocessore contribuisce, insiemealla capacità della memoria, a determinare la potenza ela complessità del dispositivo. Alcune delle perifericheniir imnnrt:nti <nnn'
o Porte di inoresso e di uscita.r Temporizzatori.. Comparatori e campionatori di segnale.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 incre-mento nella vendita dei microprocessori a B bit, men-tre 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
La vendita in miltoni di dollari dei mrcroprocessori a B bit superaampiamente la somma di uttigli alLri.
anno del secolo scorso, arriva a moìte centinaia di
milioni. ll maggior consumo, circa la terza parte, si everificato nel settore dei compu'ter e relative periferi-che.
La quarta parte e stata assorbita da prodotti di largoconsumo, come elettrodomestici, giochi, TV, eccetera. ll
settore delle telecomunicazioni, l'area industriale e l'au-tomazione completano il resto.
I maggiori costruttori di circuiti integrati dispongono di
una linea di microprocessori, date le enormi aspettatrvedi mprc:lo che si nrevedono. INTEL è considerato comeil padre dei microprocessori, perche fu il pioniere nella
fabbricazione di questi componenti, con il modello8048 negli anni 70 poco dopo aver commerctalizzalo,nel1971, il primo microprocessore del mondo. In segui-to 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 mondia-le negli anni 90. ll modello a B bit 6BHC'11, costruitocon tecnologia HCMOS, e capace di interpretare il
repertorio completo di istruzioni del microprocessorem6800 piu 91 nuove. f azienda americana N/ICROCHIBproduttrice del microprocessore PlC, che utilizzeremo inquesta opera per costruire il nostro robot, ha scalato la
classifica in modo vertiginoso, passando dal 20" al 2"nosto in rn àr.o di temno rhe va dal '1 990 al 2000.
Orresta ascesa e hasata sulle sue eccellent nresta-
zioni, che sono le stesse che ci hanno ìndotti a sceqlier-lo per la nostra macchina.
1990
RÀilKtil0
lloloro|a
Mihubishi
NEC
Intel
Hitachi
Philips
tulatsushik
National
Siemens
Ti
Sharp
0ki
Toshiba
sGs
Zilog
l\4atra I\4HS
Sony
Fujitsu
AI\40
l\4icrochip
I 994
FIt|KIT{G
l\4otofola
l\4itsubishi
NEC
Ph lips
Intel
lllicrochip
JUù
lllatsushita
Hitachi
Toshiba
National
Ti
Htc0n
Fijitsu
Zilog
Siemens
Sharp
0ki
Sony
Temic
{001
MilKtilG
l\4otorola
ll4itsubishi
NÉC
Philips
Èl\4icrochipI cnc
Inlel
Hitachi
Toshiba
Fìjilsu
Hicoh
Matsushila
Ti
National
Siemens
Zilog
SonY
0ki
Sanyo
tem c
1,
2.
3.
4,
c,
6.
1.
8,
10,
11,
12,
13,
15,
t!,
17,
t0,
19,
20.
1991 1992 1993
RAIIKIIIG RATIKIIIG RAI{KIIIG
l\4otorola Motorola l,lolorola
l\lilsubishi lllilsubishi NEC
NEC lntel lllitsubishi
lntel NEC Hitachi
Hitachi Phìlips Philìps
Philips Hilachi lntel
l\rlatsushik l\4ahushila SGS
SGS SGS f Microchip
Slemens Nalional I i\4atsu$ita
Ti Ti I Toshiba
Nalional Z1 og I Nationa
Toshiba Toshiba I Zilog
Sony Siemens I Ti
Sharp Èl/licrochip J Siemens
Oki I Sharp Sharp
Zilog I Sanyo Oki
fulicrochip J ltlatra||4HS Sony
Itlatra [4HS Sony Sanyo
Fujitsu Oki Fujitsu
Sanyo Fuiitsu AI\4D
t000
RAIIKIIIG
lloloro|a
tulicrochip
\npt tsrnlsrp s<ep<s doll'e-iendaMICROCHIe produttrice del mrcroprocessore PIC
Perché PIC?it
€'É
Presso i lvenditori
che dlstribuiscono MICROCHIP in tutto il mondo,
"';.,i ll'interno dell'ampio panorama di modelli e
.F:1" fabbricanti di microprocessori, qual è la
,;l' ',t?i regrone che cr ha indotto a scegliere il ptC
tenere conto che per ogni applicazione con-creta esiste un microprocessore ottimale, pero a secon-da def le circostanze o delle prospettive per il futuro, il
modello o il fabbricante possono cambiare. euestosignifica che non esiste un microprocessore migliore intermini assoluti, dato che ogni caso risulta differente.
MICROCHIP ha scalato la classifica mondiale di ven- t
dita dei microprocessori a B bit, infatti dai 20. posto del ,
1990, è arrivata al 2" posto ai giorni nostri. euesta fan- ì
tastica accoglienza da parte di industrie, professionisti e
appassionati,edovutaalfattocheiPlChannounadote 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
tyoviamo una straordinarla offera di prodotti relatwi ai plC
gio, e molte università e centri di formazione specializ-
' zaIt, hanno scelto questo fabbricante per dare suppor-: to allo sviluppo dei loro programmi formativi. Nellatabella che segue elenchiamo gli aspetti piu rilevanti del
, PIC::
Semplicità di utilizo
Preao molto conveniente
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 merca-
to con i suoi microprocessori, che con gli
strumenti ausiliari di cui questo compo-npntp nereqqita In ortesto modo molti,rrrJJ,Lv. "' Ye
strumenti software si lrovano liberamen-
te disponibili attraverso i loro distributo-
ri nel mondo, o possono essere trovatinei siti Internet. Le risorse hardware che
sono utilizzate nella sua applicazione
hanno fatto sì che molti fabbricanti s'in-
teressassero alla loro costruzione, quindi
attualmente si hanno modelli di tutti i
tipi e prezzi.
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
Comparazione della velocità di esecuztone di un insteme
di programmi di prova del PlCl 6C5X a 20 MHz, rispetto ai principali concorrenti
o,6
o,9
o,8
o,7
0,5
o,4
o,3
o,2
o,r
STó2@8MHz
THOMSOM
80c5 l@rMHz
INTEL
X8óCXX@l2MHz
ZITOG
Mcó8HC05@4,2MNz
MOIOROLA
coP800@20MHz
NATIONAL
Ptct óc5x@20MHz
MICROCHIP
."_#
I!
I
III
I
I
I
I
G :ffi elS ffi
-#-!
Ia
a-JI*ill
ia
competitori. Sono facili da utrlizzare, perché nella gamma
media - che è la più popolare - la gamma di istruzioni è
di 35 che è quella più semplice ed efficiente. ll basso con-
sumo e l'ampio range di voltaggio che permette la sua
i alimentazione è molto apprezzato. Come si puo vedere
j dai grafici sia la dimensione dei codici che genera il suollI programma, come la velocità di esecuzione lo avvantag-
I giano notevolmente rispetto ai suoi concorrenti.
!lÍ ,rE , , i12,5
2
'1,5
I
o,5
oPtcl óc5x@20MHz
MICROCHIP
coP800@20MHz
NATIONAL
MCó8HC05@4,2MHz
MOTOROTA
78óCXX@12MHz
ZITOG
80c5r@l I MHz
INTEL
STó2@8MHz
THOMSONi!
1ì-.,",.,.-=,".-.'+"". +,*'*r+,*'
l' t
"."-.,,:..",i
La dimensione del codtce per l'insieme dei programmi di provaper il PlCl6C5X è molto pitt piccola di quella dei suoi prrncipali concorrentl
s#frge*++fr1..1$p.g'
* MICROCONTROTTERlei 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
Come succede di solito con 1e grandi imprese amerrca-ne, tJtto in,zia da qua cosa o, motto oicco o, che g"azieallo sforzo, alla qualtta tecnica e alla vrsione commer-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 versto-ne OTP, ad rn costo molto basso. Due anni dopo, svi-
iuppo il s stema di emulazione integra e per i suoi PIC
PICN/4ASTER sotto Windows Nel '1992 rntrodusse sul
mercato r1 plmo mrcroconÌroller con converttore ADrntegrato st trattava dei modello PlC16C71. Attorno a
1994 commercialjzzo ì primi prodottr con memolaFLASH e rl PIC 16C84 con fnemor a di programma
EEPROIVl, che fu presto sostituita con la memolaFLASH, tecnrcamente piu eff iciente. Nel 1996 presento
modelli PlC12C508/9, in contenitore con solo B pin,
che ebbero un successo senza precedenti. Alla fìnedegli anni '90 presentò la gamma alta, migliorata conuna poderosa architettura che risiede nella famigliaPICl BCXXX, riducendo i prezzi dei microprocessori, finoad arrrvare a 0,50 $ per unita. Nel 1999 aveva vendutoun miliardo d mtcroprocessorì a B bit rn tutto rl mondo.
I model i di PIC superano abbondaniemente tl centi-naro, e sr possono raggtuppare rn cinque categorie, chesr presentano secondo le loro principali caratteristiche,nella seguente tabe la.
Plcl6csx FAsclA BASE 2oo ns t zo NtHz 33 istr. da t2 bit
PIC16CXXX FASCIA MEDIA 2OO ns | 2O MHz 35 istr. da f 4 bit
PlclTcxxx FAsctA ALTA 120 ns / 33 MHz 58 istr. da 16 bit
( etcrecxxx * FAsctA MTGLToRATA 10 Mrps | 4o rrlrHz 77 istr. da i6 bit -)
PIC12C5O8 512 x 12 25 x 8 NESSUNO 6 4 MHz I
Alcuni modelli di PIC sono molto semplici ed econo-
mì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 riportatasopra, sono messi in comparazione questr due tipi di
PIC.
' 'l I '';',' , : t' .'l'.' .'
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 dimen-sione 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-
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
'-.:,
72 modelli differenti. Si trovano in commercio con con-
tenitori da'18 a 68 pin e sono dotati di un set di 35
istruzioni da 14 bit ognuna. ll loro stack arriva ad 8 livel-
li orrpsto nprmpttp sino a B annidamenti di subroutinecome massimo. ln questa fascia e compresa la famigliadei P|C14C000, specializzati per i progetti dei carica-
batterie intelligenti, gruppi di continuità, acquisizione
ed elaborazione der segnali, che richredono ìa gestione
dell'energia di alimentazione.
' , , ,. 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 pre-
cedenti, data la loro dimensione e il loro prezzo. Alcunieli nrro<ti mnIellr rnrric^^^.1^^^ îllî {ac.;î hrca :l+ri :ur vuE)Lr r rvucilr !urrJPUllut-rl lu dlld ld)Lld ud)cr olLl I o
quella media.
Hanno un'architettura aperta, che permette l'amplia-
mento esterno delle periferiche del microprocessore,
tramite il bus dei dati, quello degli indirizzi e dei con-
trolli. ll set di istruzioni arriva stno a 58 e la loro dimen-
sione e di 16 bit. Dispone di un sistema molto potente
di gestione vettorializzata degli inter-rupt, e vengono utiìizzati in applica-
zioni di grande complessità.
l l ' ,',':, ';1 ' .,',r lt,'lll I'1.;
MICROCHIP ha prodotto nell'anno2000 la serie PIClBCXXX, caratte-rizzala da uno straordinario rendi-mento, dell'ordine dei '10 MIPS ad
una frequenza di 40 MHz. Sonodotat; di ln notentissimo set di 77
istruzionì da '1 6 bìt ognuna, e ven-nnnn rommereializzali in conteni-tori da 28 f ino a B0 pin Sono destì-
nati a lavorare con compilatorimolto efficienti in linguaggio C, e la
loro memoria arriva a capacita di
16 KWord da 16 bìt.
Selezione e presenta zionedel "PICI6F8 4"
na volta deciso di utiiizzare un mrcroproces-sore PIC di N/ICROCHIP, il passo seguente e
scegliere il modello adeguato pe' il nostroprogetto, all'interno de '116 possibili Per
poter fare questa scelta, dovremo st;diaremolto attentamente le caratteristiche dell'applicazioneche il chin dovra oestire. Nel lavoro che abbiamo intra-preso vogliamo costruire un robot mobile che sra capa--^ ^t ^.^^,,t"^ Ài,,^"-, -LL ur lrLVurs urvq: uOl'lìpt{L
Un robot come il famoso R2D2 di "Guerre stellari" necessitarli ttn mirrnnrnlp\\nrp rhe np<li<es i<ttni moforr p qi2 rt^ trn -tì, , rru LolJoLq ur
ricevere ed elaborare le informazioni inviateqli dai sensort.
, 1,,, , :. r,.,':, ..,;ir1.r, tl,l,.:i;:r; 11'
Per governare un robot mobile, il microprocessoredovr: renol:rp drre motori che muoverannO le fuotemotrici, e dovrà ricevere ed elaborare le informazronrche gli rnvieranno alcuni tipi di sensori, come quelli diprossimita, di contatto, di temperatura, a ultrasuonieccetera. ll corretto trattamento delle informazioni for-nite dai sensori, determinerà il movimento delle ruote.
'1,,,.,' , I r l.
I compiti che desideriamo rnstallare nel nostro anima-letto 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 moltogrande. Quello che risulta indispensabile e che la
memoria del programma possa essere scritta e cancel-l:i: n' rìn+ó \i^r+^ . . noroc<:rin narrho il nrrdLd qudrìLe v(JrLe s'd r--,---,,-, r,-,-,,- ., f.,'Ogfammad'oendera dal lavoro che dovra eseguire rl .obot D'altran:rtp il mirronroro<.qoro <rpltn sorvir,r npr far, _, ct tmpara-
'e la programnazione prima di costruire I robot; que-
sto 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 circa1000 istruzioni
Memoria dei dati di almeno due dozzinedi indirizzi, e non volatile
-.1,".,, il:,.,,1,::,:,: i:',,::;l
ii
' .-"" -''-'..'.' .' .',.,".'..fr ,ò7;ll' MICROCONTROLLER
Sceltei del PIC
tt-t*!{g
a5.!ja:-'91
S'"
s:îS:u
*
4
i;-
r$:
robot, le potremo riassumere nella tabella" Caratteristiche che deve avere il PlC ".
Conoscendo le esigenze che deve avere il micropro-cessore, potremo trovare nel catalogo del fabbricanteun 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 funzio-nare 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 14hits e nonrrna di orreste nrro ronlenere rrn'istrUzione.
Inoltre, è di tipo flash, il che permette di registrarlae cancellarla irn mioiiaio di volte in tutta sicurezza. lamemoria dei dati contiene una zona RAN/ volat le da 68bytes, e un'altra EEPROM non volatile, da 64 bytes,adeottata alle nostrp esinonzp Disnone r^li 1? l,nee di l/Odioitali 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
Memoria dei dati Eprom: 64 Bytes
L!""Ilt'g!3Set tJi istruzioni: 35 da14 Bits
Tempo di esecuzione delle istruzioni normali: 4 X Tosc
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 ilwatch-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
lmmagine del PlCl6FB4sopra uno zoccolo per proteggere i suoi piedini.
massima di funzionamento è di 10 Mhz, che risultasovrabbondante, dato che le istruzioni si eseguono a
400 ns, tempo inferiore a quello di cui noi abbiamobisogno nella nostra applicazione. Pensate che il pro-gramma più lungo è di 1 .024 istruzioni e a questa fre-quenza ci sara un ritardo nell'esecuzione di 0,5 ms, che
vengono accettati come tempo massimo di risposta del
robot.
4ltttl\|lllti/|M
Assieme al PIC'l 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 solo512 oarole. Ci sono modelli le cui lettere intermediesono CR, il che significa che la memoria dr programma
è RON/; questi sono interessanti solo quando il pro-gramma e sempre lo stesso, è gia stabilizzato, e vienemontato 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 trovaincapsulato in un contenitore plastico con 1B piedini,
come si può osservare nella figura. Secondo le loro fun-zioni, i piedini si classificano in 4 grandi gruppi.
. AlimentazionePerché tutti r componenti elettronici del microprocesso-re possano f unzionare, è necessaria una tensione di ali-mentazione a corrente continua, che deve essere appli-cata nel seguente modo: il positivo al piedino VDD e la
terra a VSS. ll voltaggio di alimentazione è compreso tra2e6VDC.
èi;c[rPtcr6c84 Prcr6F84
to lolk
TMRO+WDT TMRO+WDT
2.0'6.0 2.0-6.0
18 pin l8 pinDrB SO|C DrB SO|C
Ptc!6cR84 PlCr6F84 PrCr6CR84
68
64
4
t3
tk
36
64
4
t3RAilGE DI tl
Varianti del PlCl6FB4
RA4/TOCKI *MCLR *Vss '-*
RBO/INT €RBI *
RB2 {-*
RB3 *
PD|P, SOIC
€ R/qI
* R/AO
* oscl /cLKlN** osc2lctKouT
** VOO
* RB7
4-È RBó
"* RBs
* RB4
L'altro compito del piedino 4p nttolln rho ci rifaric.o -lr yuLr rilLrrrLC dl
VPP cioe nermette la scrittu-ra e la cancellazione della
memoria FLASH e EEPROM
del PIC 1 6F84 Per ouestoY
lavoro si deve fornire al pie-
dino 4 una tensione a cor-rente continrra comnresa tra12 e 14Y.
. Linee di l/O digitalìI tredici piedini rimanenti, di
cui non abbiamo ancora^-.1-+^ -i ,,+il;---^^lJdllcì LU, 5l ULllll./dll(-) pef
introdurre e ottenere infor-*--;^^: !i^i+-l !- ^ ,:fSO
tltt taLtwt I ut9tLoti, uo u vr
nrocessore Orresti niediniH
sono dislrihrriti sl 2 oorte.la
^^.ta A rnnc+r,-J tr l,^^^LO VWr LO H lV|)tO U J lttCE
che corrispondono ai piedini
denominati RAO-RA4 La
nnrt: R o r1icnnct: qr rR linaoJU U llllrc
di l/O rhp corrisnnndono ai
pìedini RBO-RB7. Ci sono un
Contenitore del PlCl 6F84, cosi come di tutte le sue vanantt.
. Frequenza di lavoroLa velocità di funzionamento del PlC16FB4, e determi-n:+: r{:ll: {ran"on-:.ho ci nonor: intornan-^^+^ -1.^llOLq UOI|O llEVUE|l4O 1,,! rru'rlclltc/ LllE
deve essere stabilizzata dall'esterno mediante un cri--+-il^ ..Ji -^ilîoato ai nredini oSC 1/cLKlN e)LCllU ul 9uol4w LUlltrVuLv ur p'Luil il vJL
OSC2/CLKOUT.
. Reset e programmazionell piedino 4 denominato N/CLR#/VPP, supporta due fun-zioni rhe si mrrltinlpxano nel tpmnn ll PIC lavora nor-m: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 microprocesso-re n{testo sicrnifica che i cr rni rpni<,tri intprni aSSUmono
un valore determinato e che il contatore di programmapunta la direzione 0, da dove incominciare il program-
:^i-r-ri-'-'r^ ^ 4CLR: lVaster Clear Reset.I lld pul I rLtorLLót tu. tv
NOîA !À'IPOn!AHTE
n.ein di nipdini r.hp nl+.^ -.^-r,---"^r^ + ^-ioni di l/Ovqlu ul PlEuil il l|E/ vrLrE a uo|LLQt E rE turrl
digitali, hanno un alrro compito multiplexato, corne si.^i^^L^"À ^;,, -,,-^+i)prcgr rcrd pru dvdr 1Lr.
ll PlCl6FB4 è un circuito integrato con doppia fila di
piedini. Ha 9 piedini metallici su ogni lato del conteni-tore che sono abbastanza flessibili.
Questo circuito integrato, a volte, deve essere scrit-+a rnl nraarr*-. -h^ .,,^^^r+î il 1.,,^"^ ^^.ro cor p"ogramma cne supporLd il dvoro, per por essere
inserito nella scheda di applicazione ed e abbastanzafrporrentp dnverlo inserire sullo zoccolo dello scrittoreper poi toglierlo e reinserirlo nuovamente su quellodcll: crhcd,a di :nnlirazione Orrpsta onerazione eY vrJ Lu vvL
molto delicata perche se si forzano e si piegano i piedi-ni rinetute volte notrebbero staccarsi rendendo irrecu-perabile il circuito integrato. Raccomandiamo di collo-care il PIC'16F84 sopra uno zoccolo normale, perche
srano i piedini di quest'ultimo a subire la pressione, omenlio sosîiîrrire lo zoccolo dello scrittore o della sche-"'_v"'r- 'Ji ^^^ri---i^^^ -^î uno zoccolo a f orza di inserzio-uo ur oPPilLo4rurc, LUI
ne nrrll: n|esto nnssip;^ ,,^- l^,,- -^^ ^^"^ ' fOf i dOVeI rc I uilo, 9uc)LU PU))rEuE ur rc rcvo lr rE oPtE I
si introducono i piedini, cio aiuta enormemente a pre-servare l'insieme dei oiedini.
ll simbolo # che si antepone a certi segnali indica che imedesimi 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:,
La frequenza di funzionamentodel, microprocessore.--r.i l cervello del nostro robot sarà un mtcroproces-
, :r.:
;" sore. ll modello scelto è il P|C16F84, che è unt:::--
,':_ piccolo computer la cui missrone è eseguire leistruzioni che noi scriveremo nella sua memoria
i.i ,' .''. '' di programma. Attraverso queste, decodificherài dati che gli invieranno i sensori per riconoscere le
caratteristiche dell'ambiente, stabilendo con esse lastrategia 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, con-verte le istruzioni in operazioni elementari. Ognuna diqueste cperazioni elementari necessita per essere ese-guita sempre dello stesso tempo, che è stabilito da un
clock molto preciso che indica I'inizio e la fine di ognu-na.
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 inquesto tempo si realizzerà un'operazione elementare di
una istruzione. Pertanto, un'istruzione verrà eseguita invari cicli di clock.
Tanto maggiore è la frequenza di lavoro del PIC
tanto più rapidamente si eseguono le istruzioni e prima
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
si realizzano i programmi, pero ci sarà maggiore consu-mo di energia, cosa molto importante nei sistemi ali-mentati da batterie.
; i ,;:,, ' l',.i,;,,:t,r;,
ll ciclo di istruzioni è il tempo impiegato ad eseguireun'istruzione. Non deve essere confuso con il ciclo di
clock, che è il tempo con cui si realizza un'operazioneelementare.
Un'istruzione si esegue in due fasi:o Fase di ricerca: nella quale si cerca il codice bina-
rio dell'istruzione nella memoria del programma.. Fase di esecuzione: nella quale si interpreta il
codice, si cercano gli operandi e si eseguono le opera-zioni 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 processo-
re molto moderno, nel quale si utilizza la tecnicadella segmentazione per eseguire le istruzioni.Questa tecnica si usa anche nelìa fabbricazione dellemacchine, e nelle catene robotizzate delle grandi
FASE DI RICERCA FASE DI ESECUZIONE
t.:"
Velocitù dl, e inizicrlizzeizione*3I : r- " @i
,,: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'automobi-le, e fermare la produzione fino a che non sia stata
terminata la prima, si divide il lavoro in stadi succes-
siv, in modo che iveicoli passrno da uno stadio all'al-trn ( nn n{toqt: tprnir- Àol l-',^.n n:r:llaln,y-*-.- -,-, ra oel lavoro pdldllel(J, Sl rleSce
a dividere il tempo impiegato in tante parti quanti-^^^ ^li -+--li ,,+ili---+sono gll slaor uuillrdLl.
ll nrorcssore del PIC e
costruito con stadi diffe-renziati, o stadi chegenerano una segmen-
tazione di secondo ordi-
ne Uno stadio realizza la
fase di rìcerca e l'altro la
fase di esecuzione Gli
stadi sono indipendentifra di loro, quindi posso-
no lavorare in parallelo;
mentre il prtmo sta
effettuando la fase d
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 ottienel'acorr rzinno di nnni i<trr rzinnp npl temnn Ii "^a +r.òI c)ELu4tvttE ur w9rrr r)rru4,vrrL rrur rur Ulld lo)C,
<:rphhe : dirc nrr:ttrn cicli di clock.e v,,L YvuLL,v
Al sovrappors' dei due stadi d'istruzione, il tempo che
imnipne rrn rrrln di istrr rzionr e di orratiro cicli di clock.
FASE DI RICERCA5AISTRUZIONE
FASE DI RICERCAf tslRUztoNE
FASE DI RICEBCA2" ISTRUZIONE
FASE DI RICERCA3" ISTRUZIONE
Dato che la fase di ricerca e quella di esecuzionesi realizza in parallelo, il ciclo di istruzione dura quattro cicli di clock
Un P!C16F84, che funziona ad una velocitàdi 10 Mha esegue un programma di 100 istruzioni,delle quali 30 sono di salto. Calcolareil tempo che impiega ad eseguire il programma,
Calcolare il tempo di ritardonell'esecuzione del programma anteriorein un P!C16F84che funziona ad una frequenza di 4 Mhz.
TEMPO Dl CLOCK = I s/ f0 Mhz = 100 ns TEMPO Dl CTOCK = 1s I 4 Mhz = 250 ns
TEMPO Dl CICLO ISTRUZIONE SALTO =8 x T. CLOCK = 800 ns
x 8ffÌ=S
,.;i :;, -:,; ;riy ,i;l;:ji,yt ,;. !; ,;1
,itùr j!tlrr,r!N:]*!i,::]i#lHì.ìlrr:rìrr}rrrrrl
TEMPO Dl CICLO ISTRUZIONE Dl SALTO =8 x T. CLOCK = 2.000 ns = 2 ys
:5l
FASE DI ESECUZIO}IE,f ISIBUZIONE
;,:. :1,1,:-:': :+:,: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
doppio del tempo, cioè otto cìcli di clock.l,a r:niono di nrrpsto ritardo si deve al{r++n rha ^, '.ndn :rrirrr :l nrnao<<^roIdLLU Ll lc vuoriuv qrrrvo or PrvLsJJvls
un'istruzione di salto non si puo comin-.i-r^ la {-.^.li r''rarra rjoll> (afl1AntoLldlc ld l6)c ul I lLqlLú uLilu JLVULTTLL,
nerrhe non si sa orrale sia. Le istruzioni
normali sono ordinate in indirtzzi succes-
sivi nero nel caso di un'istruzione di
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 determinala f requenza degli impulsi di clock Cristaili ar quarzo di uso correnteSonz: drrhhio nor rontrollare il valo-re della frequenza e stabilizzarla, e
St r*tlt.sNeE{ÍS c:o
necessario aggiungere alcuni elementi esterni ai pie-
dini 15 e 16 (OSCl/CLKIN e OSC2/CLKOUT).Secondo il tipo di cìrcuito esterno, gli oscillatori si
dividono in quattro tipi
Fosc Rexr
625 kHz 10 ko80 kHz 10 kfi80Hz 10 kO
Cexr
20pF220pF
o,1pF
I valori della resistenza R esterna e del condensatare C esterno
determinano la frequenza nell'oscillatore RC Questl dati sono forniti dal fabbrrcante
Uno dei dat, di inizializzazione necessa-
ri al microprocessore riguarda il tipo di
oscrllatore che si utilizza. Der questo esi-
stono due bits FOSCl e FOSC2 in una
posizione della memoria di programma,
chiamata Parola di Configurazione, che
dobbiamo scrivere con la combinazionecorrispondente.
':,,,:l
ln nrro<tn r:<n <i rnllon:nn :l nior^linn 16,L' VULJ(v
del PIC 1 6FB4 (OSC 1/CLKIN) una resistenza
e un condensatore, i cui valori sono forni-ti dal costrutlore nella scheda tecnica, e
cne sono funzione del valore della rre-
flron7: C)rresto nroredimento e molto
economico, pero la stabirita della f'equen-
za è mediocre e sono adattr solo in sistemi
in cui il tempo non sia un fattore critico, e
il risparmio sia un obieltivo prioritario. Dal
p edino 15 (OSC2/CLKOUT) esce la quarta
parte della f requenza di clock (Fosc/4) che
e iì tempo di ciclo di istruzione normale
. Oscillatore RC
. Oscillatore LP
. Oscillatore XT
. Oscillatore HS
I
+Voo
ffi OSC2/CLKOUTw->fl Fosc/4
';: 't:;:;;tj tt,
OSCl/CLKIN
Questo tipo di oscillatore si usa perlrrinrrro ran fraartar rze supefloI a
4Mhz.Ulilizza un cristallo di quarzo e un
risonatore ceramico tra i piedini '15 e
1 6 collegato ai condensatori di disac-coppiamento. Non tutti i modelli di
PIC ammettono questo tipo di oscil-lr+arn Flr+r l-.,,- .l+- +.^^,,^^-- :llo LU E. UAtA tA )Ud drLd il trquct tzdr tl
consumo è molto elevato.
.-:;trLi'.i,1,
iiit+.*,.,,"=,*=,".,."",.*,.,.,",=,-, =_,.._,.,_,,,.,.,_,j
Per le f requenze comprese tra 4 e 1 0 Mhz i condensatori CI e C2 hanno una capacità
i-tfiq-"ii"L+ {-}+:iF: i"::r' i di alimentazione al chip, e si chiama "Power onTra i piedini 15 e 16 del microprocessore si monta un Reset" Le due azioni principali del processo di rernr-
cristallo di quarzo della frequenza corrispondente a zializzazione o reset, sono mettere a zero il Programquella'con cui si vuole lavorare. È possibrle instaliare al Counter con il quale si inizia l'esecuzione dell'istru-posto del cristallo di quarzo un risonatore ceramico A zione situata nella prima posizione della memoria di
ognuno di questi piedini si collega un condensatore dr , programma, e porre ad uno stato conosciuto tutti i
disaccoppiamento ilcuivalore è fornito dalfabbricante. ' bits dei orincioali reqistri di controllo del PlC.A,,^r+n +;^^ ^li ^.-ill-+^"^ ^ --l -++^ ^^"vuE)Lw LIPU Ur V)LilrOLUrE E CUCttu pcl
lavorare con basse frequenze, compresetra 35 e 250 Khz. ll principale vantaggiodato dalla bassa f requenza e il consumorli onerni: ridnttn ràc ^^-^--t'^ ^l nr-u, LrrLryru rruvLLv Lr rC IICLtj>)ILd dl TIL
per funzionare, dalo molto importantenei sistemi che si alimentano a batterie.
#SflEil€-.éè€q}-qtr SsiT
Orroctn o ìl tinn di n<rill:+nra .^^ "c^r^VuLrLv L ,r Lrl.,v ur vrlllloLUlC Ll lC U)ClC-
mo ner ron'trollarp rl PIC del nostro,,," Y-,
robot, perche e predisposto per lavoraretra 100 Khz e 4 Mhz, la frequenza di
lavoro selezionata per il nostro N/onty.
lVonteremo un cristallo di quarzo o un
risonatore ceramico tra i piedini 1 5 e 16,
rnllenato ,ai risnettivi condensatofi di
disaccoppiamento, i cui valori sono indi-cati nella documentazione tecnica e
dipendono dalla frequenza selezionata.
i;t i:5li:ìF; it +l ia'j
l_r 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 programmadall'inizio nonendo à uno Stato nototutti isuoi registri interni, Questoprocesso avviene anche quando si
collega per la prima volta la tensione
Quando si attiva il pulsante di RESEI si resetta il microprocessore,cosi come quando si applica la tensrone di alimentazione per la prima volta
€*€**$*'efu #* $ww*s* * $s&€H$*E$eemeÈ**e*
t,
"ti.!;
-r,- t, 't'
-,:,,
MEMORIAPRINCIPALE
BUS DEGLItNDtRtzzl
BUS DEI DATIE DELLE
ISTRUZIONI
BUS DICONTROLLO
fintuizionedi un sognatore
el 1945 Von Neumann stabilì le
basi per la costruzione dei com-puter che oggi hanno invaso il
mondo. Disegno una macchina in
cui vi era un blocco - unità di con-rrnlln Ài ininp5laf;ra rrn inciomo .liLrvllv - LovoLE ul ll rLEi Pr sLors uÌ | il rJrEr I rE ul
ictrr rzinni nonor:\/: i qonn:li nore<q:ri nor l:"' v!' '!'
realizzazìone delle operazioni che coinvolge-vano le varie sezioni del blocco di elaborazio-ne dei dati.
I ln nr:ndo arrhtt,tn coniirir nór .^ntanóra
lp istrrrzioni del nrnnramma insieme ai datiche esso oestiva. infine un ultimo blocco.J.'""-'
-hi---+^,,^i+- ^lì l^^"^..^/,,.-i+- ^^"'-^++^Lr ildilrdt\J urrLd ur il19rc))u/u)LtLd, pc||ctLc-
va il trasferimento delle informazioni da e
nor lo noriforirho a<tprno Orroct'inciomo diYsLJ\ rl
olomonti ò r^rrrpllo rhe e conosciuto comecomputer.
MEMORIAPRINCIPALE
BUS
PROCESSORE
ffiffiffiI bus sono un Ìnsieme di linee digÌtali, trasportanotulte le informazioni che gestisce il computer.
t,,,',t,:;,'t; 1 ,, ,1, I ,:,.1',,
ll computer di Von Neumann è una macchi-na digitale. Tutte le informazioni vengonoarchiviate in formato binario, ed essendo
una macchina elettronica, impiega per rap-presentare i due bit di questo sistema, il
livello logico alto e il livello logico basso,
che generalmente corrispondono alla ten-sione di alimentazione +VDD e massa o VSS
rispettiva mente.
Un'istruzione del computer è formatadall'insieme di bit che la codificano, e la
stessa cosa awiene per i dati. La memoria è.^mn^<+: d:nli indi--r,, ,,,-,|zzt necessaI per
PROCESSORE
:1 ,.:,. tr,,,.,,, r.
Architettura base del computer di Von Neumann.
':1.1 1,,.i,:','i:i;"l
immagazztnare le istruzioni e idati brnarr.
L'unità di controllo riceve le istruzioni che manmano 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 realtzzarele onerazioni oener:te dalle istruzioni racco-
gliendo gli operandi dalla memoria e dagli l/O,
inviando irisultali a questi blocchi secondo^,,-^+^ .^^-i{i--+^ ^l -VuorrLv rpsLrr!oLv uo OQI-ìl lStfUZlOne.
Pero tutto il movimento delle informazioniall'interno del computer è realizzato da treinsiemi di linee digitali, denominate bus ll bus
der dati e istruzioni ha il compito di trasferireoreqte inform:zioni fra i vari blocchi del com-puter. ll bus degli induizzi e caricato dal proces-qÒro .nn ali ind rizzi dollp istrr rzioni d: pspnrrire
o degli operandi da cercare. Infine, il bus di con-trollo supporta nelle sue linee differenti segnali,rome orrelli del clock che sincronizzano il lavo-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 pro-
cessore che si chiama Puntatore, o Program Counter(PC). È situato nell'unità di controllo e contiene l'indi-rizzo dell'istruzione da eseguire.
Di solito 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 unprogramma, si trovano ordinate in sequenza nella
memoria, e all'indirizzo successivo all'istruzione in corsod'esecuzrone, si trova quella da eseguire successiva-
mente. Questa regola non vale per Ie istruzioni di salto,
BUS DEI DATI EDELLE
ISTRUZIONI
MEMORIA(DATr)
tlo(PERTFERTCHE)
Nella fase di esecuzione, la ALU del bloccodi elaborazione dati esegue le operazioni indrcate dal codice dell'istruzione
in cui si include I'induizzo dell'istruzione che deve esse-
re eseguita al passo successivo.
ll contenuto del Puntatore arriva tramite il bus degliindutzzi sino alla memoria, dove seleziona una delleoosizioni 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 Puntatoreviene caricato sul bus deì dati e istruzioni e portato al
processore, dove passa su di un registro specifico chia-mato registro delle istruzioni.
Tr rttn il nro.oqqo r'li localizzazione delle istruzioni eil caricamento sul registro delle istruzioni stesse pren-de il nome di fase di ricerca e si rioete oer tutte le
istruzion i.
Dono rhp il rodiro bìnario delle ìstruzionr èci:tn r:rirr+n cr 'll'rnq6citn ronictrn inizi: ì.)LoLU LollLcLU )Ull dl.JPvJ'rv ttttLtu tó
fase di esecuzione. L'unità di controllo interpre-ta o traduce il codice delle istruzioni e genera
una serie di segnali che invia al blocco di ela-borazione dati, il quale è formato da una UnitàLogico-Aritmetica o ALU, che sarà incaricata di
effettuare le operazioni logiche o aritmeticheche comporta l'istruzione.
Sia gli operandi che partecipano all'opera-zione sia irisultati generati dalla ALU sonoposti negli indiizzi di memoria specificati dall'i-slruzrone stessa.
BUS DEGLIrNDtRtzzl
PROCESSORE
MEMORIA PROGESSORE
Fase di ricerca di un'istruzione
MEMORIA DIPROGRAMMA
BUS DEGLI INDIRIZZIDELLE ISTRUZIONI
14,
BUS DELLEISTRUZIONI
Architettura Harvard nel PlCl6FB4
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 di un
' dogma di fede.I e nprpssita dpoli utilizzatori richìedevano nerò sem-
pre maggiorr valori di rendimento, sarebbe a dìre sem-pre maggior numero di istruzioni eseguite per unità di
tempo (MIPS: Milioni di lstruzioni Per Secondo).
Per migliorare questo parametro furono implemen-tate 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 lunghez-za dei datì è molto differente da quella delle istruzio-ni.
Rìassumendo, l'inconveniente dell'architettura di
Von Neumann era localizzaLo nella memoria unica di
cui disponeva il processore, che da un lato impedival'accesso contemporaneo ad istruzioni e dati, e dall'al-
MEMORIADEI DATI
BUS DEGLI INDIRIZZIDEI DATI
8,I
BUS DEIDATI
PROCESSORE
l-- a uir __________*l
tro la dimensrone delle sue celle dovevano adattarsi ad
entrambi i tipi di informazioni.
,,''tl',
I mrcronrocessori PIC si basano su di una nuova archi-tettura chiamata Harvard. Essa è basata su due memo-
rie indipendenti, una dedicata alle istruzioni e l'altra ai
dati. Questa indipendenza permette di realizzare acces-
si simultanei ad entrambe le memorie, e trovare un'i-struzione mentre si sta scrivendo un dato. lnoltre larrnrri+r
^i ^^^i -^mnri: nl^ o<<ora 2611++r+r rllrLdPdLILO Ut UVIt rrCilrWrrq puw c))qrq qucLLata ara
necessita snecifira dell'informazione che si deve npstirp
in ouesto modo la caoacità della memoria delle istru-zioni puo essere molto piu grande di quella dei dati,come conviene che sia nela maggior parte delle appli-
cazioni con i microprocessori. Inoltre si puo differenzia-re 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 tecnologiaFLASH, 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 tipoRAM, ed a complemento ha una piccola memoria ausi-
liaria non volatile di tipo EEPROM, per contenere i datidi 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 dellamemoria dei dati ha meno linee, perche questa memo-ria ha minore capacità. ll bus sul quale circolano idatiha 8 linee per supportare i bit di ogni posizione.
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
di rrn,a qpnronz: di isfruzioni su un insieme di dati. llJLYv!'
flusso di istruzioni e la sequenza sopra la quale operaun processore, e il flusso di dati comprende la sequen-'- J^i À.+i i^ i^^"^..^ ^ l- .^^' '^^-- ,l^i ^l-+i ^."-i-li ^4d ucr uoLr il r il r9rc))u c ro )Er]ucr4d ucr udLI Pdtztdil cfnf:li rho <i nonor:nn
Le architetture dei computer sr caratterizzano per
l'hardware che utilizzano per gestire il flusso dei dati.
Flynn propose quattro categorie:
', , i'Corrispondono ai monoprocessori convenzronali, tipoVon 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'u-nità di controllo ed eseguite nel blocco di elaborazione
dati, con gli operandi che arrrvano dalla memoria der
dati, archiviando poi in quest'ultima irisultati.
'''''': :.'".I'
Snno romnosli d,a 'n' unita di controllo che ricevonoognuna un flusso dr istruzioni differente.
Le istruzioni codificate sono inviate a 'n' unita dr
processo, ognuna delle quali riceve il medesimo flussodei dati o onerandi Orresîo slonif ica che differenti- -'J' " '
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 datimultiplo. Esiste una sola unità dì controllo. che governa
differenti processori. Tutti i processori ricevono la stessa
istruzione da eseguire, ma dato che ricevono differentiflussi di dati, questa istruzione ottiene differenti risulta-ti Ppr nntor rondirridors i dati intermedi e i risultati cheproducono i processori, e necessario che esista una
intercomunicazione fra i microprocessori. Ci sono duemodi di ottenerla:
ln questo caso tutti i processori utilizzano una memoria comune,e quando uno vuole inviare un dato ad un altro, prima lo scive in unaposizione che l'altro conorce, e 5uc(essivamentel'altro legge questa posizione. Secondo l'accesso permesso allamemoria, abbiamo quattro categorie:
. CREW: Lettura Concomitante - Scrittura lsclusiva. Vari processori
possono leggere una locazione di memoria. però solo uno può scriverla,
r CRCW: Lettura Concomitante - Scrittura Concomitante. Vari orocessori
possono leggere e scrivere simultaneamente una locazione.
Negli ultimi due tipi si origina il problema dello scrivere
nella stessa locazione da parte dì vari processori. Questosi risolve applicando una dr queste tre alternative:
2, 5e tutti vogliono scrivere la stessa cosa, si può scrivere, in caso
contrario. non scrive nessuno.
In quela topologia la memoria è ripartita fra tuttii procesori, i quali sono uniti da linee bidirezionali di comunicazione.
Ci sono diverse varianti,a seconda della rete di interconnessione che si utilizza.
,L ; i 1""r ;'I .i 'i
1;r :'i y' It ; ,1 i:;,i,..;;
È un gruppo di monoprocessori convenzionali, ognunocon la sua unità di controllo e il suo blocco di elabora-zione dati, associato ad una memoria locale. Lavorano inparallelo 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.
t
;i'i;;;:;i:|::.:ii-i::;":Í;.iil]:Ì,.il:;]:j|!:i!!;||ii:,!,'i!111',1;;ij'..,,...|11ii|i.|1:||.N
||
MTGROGONTROLLERll PtC | óF84 denlro
banco dei registri
\*,,,*,
It
PIC fanno un uso intensivo dei registri per realiz-
zare le ooerazioni necessarie alle istruzioni che si
stanno eseguendo. Questo significa che normal-mente la ALU del blocco di elaborazione dati,ulilizza come operando il contenuto di un regi-
stro e il risrrhafo lo nrro archiviare rn un altro reoistro
In realtà La ALU necessita didue operandifonte per rea-
lizzare 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
OPERANDOINTERMEDIO
-1 llREGISTRODI LAVOROmffi
8--- 8-'--
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 bancodci rpnicf ri :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 dellediverse risorse del microprocessore. Svolgono il compi-to di registri di controllo del funzionamento del PlC.
- Registri di utilizzo generale (GPR): sono le 6B
celle restanti della RAM, le quali sono a disposizionedell'utilizzatore per archiviare idati. Nella figura si
mostra la ALU che riceve gli operandi tramite il regi-stro di lavoro W, oppure dalla propria istruzione o dal
banco dei registri, a seconda di come è
selezionato l'ingresso del multiplexer. ll
risultato della ALU si ouò deoositare in Wo in uno dei registri implementati nella
memoria RAM.
Tutto il contenuto del PlC16F84, sarebbe a
dire, tutte le risorse di cur dispone insiemeai collegamenti delle medesime, è mostratonella figura, che presenta l'architettura det-tagliata di questo microprocessore. Si puo
riassumere tutta la sua potenza descriven-do i prrncìpali elementi di cui è costituito ele 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
dìviso in 22 specifici (SFR) e 68 di utilizzogenerale (GPR).
. Memoria EEPRON/ di dati da 64 bytes.
. ALU da 8 bits per realizzare operazionilogiche e aritmetiche. Un operando provie-
RAM
BANCODEI REGISTRI
Nelle operazioni della ALU intervengono i registri della RAM.
ilIICROCONTROLLER. tl!
l:L',',,
i\l
t,,:,
,ta.
t:, i.1! t t! : I ;'j'lt
MEMORIA DEI DATI
13
DIREZIONE
-\ ,|3
fficoNsrGLl
MICROCONTROLLORI-- 14
INDIRIZZAMENTO DIRETTO
PORTE I/O
7'--DIREZIONE
5
ffi
W
m îà3^,
ffi naoffi nar:s
m RA2
lRÈ nae
ffi neo
ffi ner
ffi nezffi nesffi ne+ffi nesffi neoffiG nez
ffitrffiffiffiMCLR# VDD VSS
Quando un processore esegue un'istruzione lo fa in due
fasi diverse. ll PlC16FB4 procede in questo modo, e chivnrrì rnmnrandoro , fOndO il fUnZiOnamentO di Una
macchina programmata, deve conoscere queste duei:nna fnnr'l:moni:li nartanta\ incictoromn <t t nttectnLqVVq lwl luql I lEl lLqll, VLr rur r!v
' rv ru 9uLrLv
+nmr l-\nlln ^"^
{aci l. nrim: À rnmrrno : tt 1f+a la ic+rr rLfllld. UUIIC UUC ld)l ld Vrilrru L lvrrrurrL u LULLC lC l)tlU-
zioni e realizza sempre ìa medesima operazione, si chia-
ma fase di ricerca. La seconda e specifica per ogni istru-
zione e si chiama fase di esecuzìone.
FASE DI RICERCA
ll contenuto del puntatore viene caricato nel bus degliindilzzi della memoria di programma e contiene l'indi-rizzo in cui si trova il codice binario dell'istruzione che
bisogna eseguire. ll PC contiene solo indirizzi di istru-
.i. ';i i'i 'i
*ffi-\8ffi
TEMPORIZZATORE
#ffifu'ffiffir OSCI/CLKIN osca] CLKOUT
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 istru-
zione o dal banco dei registri.o Drrp norte di l/O dioi*^ri r^ ^^"+^ A -^^ trrinee e la B- yuL Vvr Lu ur r/ v uryrLoll. LO VWI LO n LVll J I
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 codicilnnr+n r rrna c+trlz. ^itn lirrolli dnrro <i ronictrrnn tnmlegdLU d ullu )LdLN d urLv ilvsilr, uvvs Jr rs9rJUdru lcilr-
poralmente gli indrizzi di ritorno delle chiamate di
subroutrne e degli interrupt.. Un sistema per l'indirizzamenlo diretto e indirettodella memoria RAM.. Circuitì di Reset e temporizzatore legato al medesi-
mo.. Possibilrtà di lavoro in condizioni di basso consumo.
iL! t''1.rì!i;'ii tr'; t
IMIGROGONIROTLER :I'Lll PlCf óF84 dentro =--=;
-b**l
zioni, mai valori relativi a dati. Nel caso del PlC16F84lamemoria di programma ha una capacità di '1 K posizro-
ne di '14 bits.
Dato che la longitudine di ogni istruzione è semprer-li 1 /. hitc nr ro<.t: ;-1-lpppnri : h: l: nnccihili+r n,,,-,rlOlld lld lcì p{J5slUllltd Ol COnîene-
re programmi con un massimo di 1.024 istruzioni; rnol-
tre è di tipo FLASH il che significa che si puo scrivere e
cancellare elettricamente con l'aiuto di un programma-tore e un PC.
ll bus delle istruzioni sposta icodici brnari dell'istru-zinne nrrnt:ta d,al PC f no all'unita di controllo del nro-vrrv uLr P' v
cessore, dove si trova un registro speciale denominatoRegistro delle lstruzioni, che viene caricato con questi
valori, terminando così la prima fase dell'istruzione.
Questa fase di ricerca del codice dell'istruzione da ese-
ottire e ttnttale ner tlrl'p lo iqtrr rzinni riol ronqr{gri6.
FASE DI ESECUZIONE
Con il codice dell'istruzione collocato nel Registrodelle lstruzioni, l'unità di controllo procede a deco-dific,arlo c,a intcrnrclare a Che istrUziOne Si riferisce.
Terminata l'interpretazjone, viene generata unaserie di segnali di controllo che si applicano al restodegli elenenti, dando via all'esecuzione La maggiorparte delle istruzioni implica il realizzarsi di un'istru-ziano laaiez n:ritmotir: tinn <nmma cr,,,,,,, -Jttrazronr,AND, OR, rotazione eccetera.
Per effettuare le operazioni esiste all'interno delblocco di elaborazione dati una unità denominataALU. La ALU del PIC 1 6FB4 riceve due operandi, unoarriva dal registro di lavoro accumulatore W e l'altropuo provenire dalla propria istruzione, se si tratta di
operando immediato, oppure da uno dei registri delh:nrn rha a imnlallppf2'to nplle nosiziOni dellaPvrr4l
memoria RAM dei dati.A volte bisogna estrarre o introdurre informazio-
ni nel micronrocessore ner otreslo ahhiamo due,,,,-,-F,-lY-,
porte, la A e la B, che dispongono di linee collegatecon ipiedini di uscita dell'integrato, attraverso i
nrrali entrano ed escono i bitsCome aiuto alle operazioni del blocco elabora-
zione dati, il PIC 1 6FB4 dispone di un temporizzato-re, TMR0, che è incaricato di contare il tempo, e un
altro, chiamato Watch-Dog, che vigila sulla correttaelaborazione delle istruzioni del programma.
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
ciascuna. La memoria FLASH ammette fino a 'l 000cicli di scrittura e cancellazione con la massima sicu-rezza.
Per leggere una memoria da 'l K posizìoni abbia-mo bisogno di indvizzi a 1 O bits, dato che 2'o = 1 .024.ll program counter, PC, del nostro PlC, ha 13 bits cont quali puo indirizzare 2 = B K posizioni diverse. I bitsin più di cui dispone il program counter sono dovutialfatto che l'architettura ditutti imodelli deì PIC dellagamma media PICl6CXX e la stessa; pero, in ognimodello, il costruttore ha implementato differenticapacita di memoria, per cu, l'utjlizzatore selezronerala 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,
oilesto sionifica che r-,,^il- ; r- ^^-i-r^^^ I cui va ilLr r! 9uEllo E lo l.JU)l4lUllC c
puntatore ogni volta che si effettua un reset. Per que-sto motivo il programma di lavoro del microcontrollerdeve iniziare obbligatoriamente all'indirizzo 0000H,dato che l'istruzione che cortiene e la prima che siese-gue dopo il Reset.
Se vogliamo iniziare il programma all'indirizzo0005H, dobbiamo mettere un'istruzione di salto in
questo indirizzo nel Vettore di Reset, sarebbe a dire,go to 5.
MEMORIA DIPROGRAMMA
Nella memoria di programma del PlCl 6FB4 sonostate implementate solo le prtme 1 024 posizioni della mappall program counter ha una longitudine di 13 bitse lo stack può contenere fino a B indirtzzi di ritorno.
l3\
11,.; ;L r,.tt it, ::, t..
MICROCONfROTLERll 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 memorizza-t: in nrroct: nncizinno
Di conseguenza la prima istruzione della parte di
programma relativo ad un interrupt deve essere collo-cata in questo indirizzo della memoria di programma.
ll puntatore è un registro da 13 bits, dei quali, nel
PlC16F84 se ne utìlizzano solo i '10 meno significativiper indtrizzare le 1 .024 parole della memoria FLASH in
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
' '+ li---^^ | '^^t'+'t -^rositi della zona SFR della RAM.utrLLót ru I 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 i
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 dupli-cato all'indirizzo relativo 0AH dei due banchi.
Associato al puntatore esiste una memorta ttpo LIFO a
R nosizinni 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
I bits del puntatore si scrivono nei regrstri PCL e PCLATH,
secondo la distrtbuzione rndrcata.
'rllr
lil
:8
ffi
MEMORIA RAM
I registri PCL e PCLATH sono dupltcati rtspettivamente nelleposizioni 02H e aAH dei due banchi della RAM.
puntatore, ir modo che durarte la fase di carica ilvalo-re passa oa puntatore al livello 1, e gri altri valori scen-
dono di un livello. Quando lo stack si scarica, il conte-^.,+^ i^r ri,.^,r^ r ^---a al pC e lrrtti nii altrr ValOfi Sal_ItuLU Utrt ilVCIU I pd))u -,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 indi-
rizzt delle istruzioni, e si usa sempre automaticamentese 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 ter-mìnata la subroutine o il programma legato all'inter-rupt, s ritorna a programma principale.
A volîe oossono esserci situazioni di annidamenti: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^ -+--1, -+- -l ^"-uElv )LcLN, )!o o p,ùgrammatore tenefe conto degliannrdamenti ner evrtarp rhp srrneri nlr R v,alori e debor-di nordpndo informazront.
A differpnza deoli .rltri nroressori lo stack del
PIC 1 6FB4 non e accessibrle da parte dell'utilizzatore e
nnn <i nr ta r-zriTara n cr:rir:ro Orrpctp drroL. YvLJLL --- operazlonl
si realizzano automaticamente quando si esegue l'ope-razione CALL o avviene un interrupt.
BANCOO I BANCOl
t2 CONTATORE Dl PROGRAMMA (PC) O
La memoria dei dati RAM
on la finalità di semplificare l'indirizzamentodella memorra RAM e diminuire i bits degliinduizzi, i progettisti della gamma PICl6CXXhanno organizzalo in 4 banchi da 128 posi-zioni da B bits cadauna. f indirizzamento
implica la selezione del banco e la posizione relativa inesso. Per determinare Ìl banco a cui si desidera accede-re esistono due bits denominati RPO e RP1, che si tro-vano ubicati nel regrstro specifico della stessa RAM, che
si chiama Registro di Stato. Scelto il banco sono neces-sari altri 7 hits ner indirarp rrn: dollo t 7R nosizioni delr 4v vr
medesimo, come si vede nella fiqura.
? FEGISTRO DI STATO OW,, ,y'
SELEZIONE ooHDEL BANCO
124 :
POSIZIONI i
i;-r:
-t
I PIC della gamma media hanno la memoia organizzatain 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
1 Z tti.t;_
i i È r;,É i.; l i'.lr +,i j, r=.! il {j i.: i1; L !-..,.ri :ii É ir;l'; ij l" rrif- :l i;.F;ri+
ll microcontroller che useremo per il controllo del nostrorobot ha una memoria RAM piccola. Non sono statiimplementati fisicamente i quattro banchi possibili, cheforniscono la capacità massima di 4 x 1 28 = 512 bytes.Alcuni modelli più potentì della gamma media, dispon-gono di questa capacità. ll PlC16FB4 ha implementatosolo 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 =160bytes, sono stati implementati. Le prime posizioni deidue banchi sono riservate per i registri specifici e lerest:nti npr r-rrrplli eli riilízza nonor.eio
Le prime 12 posizioni dei due banchi, i cui indirizzivanno dalla O0H alla 0BH, sono riservarti ai valori dei reqi-
INDIRIZZIDEL BANCO
7
BANCO O BANCO 1 BANCO 2 BANCO 3
t_.=.
4FH
7FH
BANCOO BANCO BANCO 2 BANCO 3
ll PIC 16F84 ha implementato fisicamente solo le prime B0posizioni dei primi due banchi
stri snecificr (SFR) i cui bits controllano il funzionamentodelle risorse interne del microcontroller. Funzionanocome registi di controllo programmabili. In questa zona
SFR abbiamo due posizioni non implementate, che occu-pano gli induizzi 07H di ogni banco, pertanto il numerototale dei registri specifici SFR del PlC16F84 è 22.
Le 68 posizioni finali di ogni banco con indirizzi com-presi fra 0CH e 4FH, sono usate come registri di utilizzogenerale, GPR, destinati a contenere dati e risultati par-
ziali dei programmi. Le 68 posizioni GPR del banco 1 sonomappate nel banco 0. Questo significa che anche facen-do riferimento ad una posizione GPR del banco 1, si acce-
de 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 68del banco 1 funzionano su quelli del banco 0.
ii :-a: : :iTÈ,i :i Ìrri:.i"î ir.ii"i. 1i ij!ill nostro PIC dispone di 22 registri specifici SFR; attraversoi bits di questi registri si programma il funzionamento e
I'utllizzo delle risorse del microcontroller. Ci sono 1'1 regi-
stri SFR nel banco 0 e altrettanti nel banco 1 . ll registro che
occupa la posizione 07H in ogni banco non è implemen-tato. Nella figura si mostra la nomenclatura di questi regi-stri, possiamo notare che alcuni dì questi sono ripetuti in
entrambi i banchi. Per esempio il Registro di Stato occupal'indirizzo 03H del banco 0 e il corrispondente indirizzo del
banco 1. Questo succede con tutti i registri fondamentalidel microcontroller; per poter accedere ad essi indipen-
$ fu+=cÈ+fuÈ #+$$* ffi&SsÈ
dentemente dal banco che è stato
definito con i bits RPO e RP1.
lntegrano un insieme di 68 posizioni
di ogni banco. compresi tra gli indiriz-
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
mappati sopra quelli del banco 0.
Come è stato precedentemente spie-
gato, questo significa che quando si
accede a un registro GPR del banco 1,
in realtà si realizza l'accesso al corri-
spondente del banco 0. Sono validi
solo i 68 registri GPR del banco 0.
,, 1-; ,' t; tt l "'".,; : ;'t.
Dato che il PlC16FB4 ha operativi
solo i primi due banchi della RAM,
non sono necessari due bits per spe-
cificare il banco selezionato. Dei due
bits RPO e RP1 del Registro di Stato
che servono per determinare il
banco, al nostro PIC basterà pro-
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, datoche, 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-
diizzo 03H dei due banchi dell'area
SFR. Ci sono due istruzioni nel reper-
torio del PIC che facilitano enorme-
mente il controllo di RPO. La prima è
l'istruzione bsf, che ha il compito di
mettere a 1 il bit specificato del regi-
stro che si indica. Se troviamo ìn un
ii i+t:ttnilrL+hi. ,'cÈ+;i glr* lrt r*-:{ifé
Memoria dei dati RAM
"È:EE
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 momen-
to, 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 = 0e lascia puntato il banco 0 della RAM.
.r r ,.r,.' :::; l.t t,t,; t:1.:i r,..'rl
I registri specifici SFR si classificano in due grup-pi. Il primo include tutti i registri incaricati di
controllare le funzioni vitali del nucleo oet
microcontroller, tra i quali citiamo STAfO,
OPTION, INTCON, eccetera. Nel secondo grup-po sono compresi i registri incaricati del con-
trollo 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 detta-
gliato. In essa sono indicati i nomì di ogni registro
specifico, l'rndirizzo che occupano in ogni banco
e rl nome di ognuno dei bits. ìnfine si indica il
valore che avrà ognuno di questi bits dopo aver
effettuato un Reset normale o uno speciale.
&8lla2
83
84
ss", '.,
s&8A'8B
8C
i BANCO 0 SANCO 1
i..,. ., .., .," ,
Distribuztone e nomenclaturadei registri SFR e GPR dellamemoria RAM del PIC 16F84.
T T T T 1' '{ T 'é' ISSSIPO'O VALOFIALTRI
t sodet cobt€Ntó dt FsRps idlriffi ti ffih (mn è h cgli!ÈlÈiol t;
Clad( / CoIidoG tn tetlEo €le r I btts xxxx xxxx qsuu úsqu I
BtÉemèFrìgnmqfiwdetPc O0OO oOOC O0O0 OOOO l
fFP lRPt RPo îo# Po* Z DC G oool txrr oooQ quuulndùí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ùsuilgtr implèmtrio 3i hgge (om'o'isgfuBod€ida$fEPÈofrt xxxr xxxx uuuu uuuui€glrtodaglilntiddÈEPnola xxxx xxxx suuù uuuu
- SísiemitbftsdiP€rl ---O OO00 -..ù 0OOO i
GtE EÈlE TolE tNlE HBIE TolF lNfF RBIF ooÓo ooox ooÓo oooo
BIf BIT BtT BIT 8tT BIT BIT BIÎ?6543210
tho e @rúedsb di fsR gq lndirÌaÉ lq reddià (@r è s rtgiÉtn firt€)
ftOFU* INIDG TOCS TOSE P{tA FSz P51 PSO
Èy$ nm rlgntticttuo d€l PC
IBP NPT RPO TO* Pb* Z DC C
lndtnEsrunto díetto @ lrtDf
. conft$ruloÉ lortr A
confiEHrfsG por& B
t{on lnFlenènqÉo 5l Lggè ffi '0". EEIF WHEÉE WREN WÉ fiD
ièglelo tlt .o[tnlto :EPfotil (mn è sn Egùfs fitko]
- CttfEwdm?cttAGIE EEIE ?OfE INIE RBIE 'ÍOIF INTF RBIF
VALORI DOPO VALORI ALTRIIL RESET FÉSET
lttl tlll îf11 l11l0000 oooo ooo0 0000
OúOl txxx 000q quuq
xxxx xxxr uquú uuuu---l {tl't ---l l1l't1!r1 tltl 1111 1t',ll
---ó x0o0 ---- q00O
".'O 00OO '.-0 0Oo0
O00O oóOx Oo00 000u
t
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 dopoun ,îeset normale o speciale.
ICROCONTROLTER
ffitr8-:
Gli operandi fonte della ALU arrivano o dal registro Wo dal multiplexer ll risultato finisce o in W o in una posizionedella RAM
La memoria dei dati RAM del PIC della gamma media e
organizzala in quattro banchi da 128 posizionj con 8bits 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 inun PIC bisogna specificare, in primo luogo, il banco incui si trova, e dopo, I'induizzo relativo al medesimo. per
selezionare il banco ci sono due bits nel Registro diStato dell'area SFR della RAM, che si chiamano RpO eRP1, e occupano le posizionr 5 e 6 delsuddetto registro.Per determinare la posizione relativa in un banco, biso-gna specificare 7 bits per poter formare 27 = 128 indi-rlzzi possibili.
Esistono due modi per indirizzare la RAM: l'indiriz-zamento diretto e quello indiretto.
' 'r
Questo modo per definire la posizione nella memoriaRAM, dove si trova il dato ricercato, inizia scrivendo nei
due bits RPO e RP1 del registro di STATO il codice corri-spondente al banco. tindirizzo all'interno del banco è
incluso nel codice della propria istruzione, dato che dei
T6jSTATOoffirsELEztoNE DEL BANco "2
oo ol 'toooH
DIREZIONE(coDrcE oPTSTRUZTONE)
7
07t
Nell'indirizzamento diretto i bits Rp0 e Rpl del Registro di Statoselezionano il banco, e i 7 bitsmeno significativi dei codici dell'istruzione, la posizione relativa.
MEMORIADEI DATIéilffire;niúiul-ffErcrcrcffiffire-rc*ryre:reryrcrcffiG
ffi
ÌrercrcgH$Effiffi
ruru8.r
Operondi gestiri dalle istruzioni
Indirizzamentodelta memoria dei dati RAM
,,',1;,.,1.,, dati gestiti dalle istruzioni prima dell'esecuzio-
dotto dall'esecuzione dell'istruzione è il risul-tato. Nel PlC16F84 i dati, in generale, occupa-no indirizzi della memor a dei dati RAM,
sarebbe a dire, registri. Esistono dati speciali il cuivalore non deve essere perso quando si toglie tensio-ne al srstema, per questo vengono scrrtti in una zonadi memoria EEPROM, che studieremo successivamen-te. ll dato puo anche essere contenuto nel codicebinario dell'istruzione, nel qual caso si chiama ope-rando immediato.
Normalmente tutte le istruzioni sono realizzatecon un'operazione elementare logica o aritmeticanella ALU, la quale riceve uno dei due operandi fontedal registro dr lavoro W, che è stato precedentemen-te caricato in modo adeguato. L'altro operando, senon è 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 regi-stri della RAM.
BANCO O BANCO I BANCO 2 BANCO 3
STATO
] 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 qua-
lunque 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-
ce dato che la memoria RAM è solo implementata nei
prmi due banchi, il banco 0 e il banco 1. Questo sup-
pone che con un solo bit si scegtie il banco, in realta e
usato solo il bit RP0, essendo indifferente lo stato che
ha il bit RPl 5e RPO = O, si accede al banco 0 e se RPO
= 1, si accede al banco 1 . Rimangono gli altri 7 bits
necessari per indirizzare una delle B0 possrbili posizioni
che ci sono all'interno di ciascun banco.
' , I i, '
Quando si utilizzano tecniche avanzate d programma-
zì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 codi-
ce 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:. :: . :.. ..:::: .. . .. . . . :. .. .........
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 duplrca-
to, 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 usava-
no i bits RPO e RP1 per scegliere il banco, nel modo indi-
retto si usa il bit 7 - il più significativo - del regrstro di
STATO, che si chiama IRB e il bit 7, il più significativo,del registro FSR (ricordiamo che i 7 bits meno significa-
tivi contengono gl indirizzi re ativi). Dato che nel
PlC16FB4 abbiamo solo disponibili i banchi 0 e 1, il bit
IRP der registro di stato varra sempre 0.
Se, per esempio, vorremo selezionare in forma indi-
retta la direzione 12H del banco 1 in un PlC16FB4,
: STATO offiIóFSRoilffi
sELEzroNE oeL enNco *ttt
00H
{ OBH0cH
4FH50H
00 0l
Nell' indirizzamento indiretto il banco si sceglie con il bitpiit significativo del Registro di Stato e quello pru sgnificativodi FSR. L'indirizzo relativoè contenuto nei 7 bits meno significativi di FSR
cominceremo caricando in FSR il valore '12H (0x'12), per
I 7 bits di minor peso, e metteremo a '1 il bit 7 dt mag-ninr no<n dal ronictrn nor <ronlipro il h,anco 1
MOVIW 0x12 ; 5i carka W con 12 H
mowvf tSR ; ll valore di W si carica in F5R
SAl.lCO O gAl'KO I BAN{Ò 2 SANCO 3
iortecon Íl ,
Le portedi ingress o/uscita
lprocessore che contiene ila - -t .--^ ^.---^^lt^l'lL lbfó4 tnat|7za e Íaccogile
icodici delle istruzioni resi-
denti nella memoria di pro-
gramma, le decodifica, cercanìi nnor:ndi lo pcpnrrp p nrndrrrp doi
risultati che memorizza. Questo è il
tipico lavoro necessario per processa-ro rrn'i<trr rzinnp noraì : rho crnnnT
l'nhiottivo fin:lc p nrrollO di COntrolla-
re una serie di dispositìvi esterni che
configurano il sistema che dobbiamonn\/orn:ro lìrrocti di<nnqitivi rho
YvrJL'
chiameremo periferrche, certe volte
hanno il compito di introdurre dati
nel microprocessore e quindi vengo-
no chiamati di "rngresso" Altre voltericevono i risultati dell'elaborazionedelle istruzioni, sono dati che vengo-
no conferiti alle periferiche per rego-
larne rl funzionamento, questo tipodi periferiche viene chiamato di" uscita " .
lp neriferiche si classrficano in duegrandi gruppi: digitali e analogiche.I e nrimp ricevono e/o inviano infor-mazioni digitali attraverso un insieme
di linee digitali il cui numero è ugua-
le a quello dei bits contenuti in ogriparola di informazione trasferita. Le
periferiche analogiche inviano e/o
ricevono informazioni analogiche,ossia segnali che variano il loro valo-
re da un minimo ad un massimo,
passando per infiniti valori intermedi.
All'interno delle periferiche digi-i:li Io nir'r <omnliri <nnn nrralìo rho
generano o si governano con una
sola linea digitale, di modo che, se
:--
Le periferiche sono dispositivi esterniche introducono e ricevono rnformazioni da o per il mondo esterno
PROCESSORE
La peiferica di rngresso digitalepiit comune è l'interruttore, che puo assumere diverse forme
lri r',1 | . .: ":.". :
l\:;::1:r::::ti:,,i,,,4,?41@útt9$||"/aaaa*att
sono periferiche di ingresso introducono il valore di un !,
bit su di una linea, mentre se si tratta di periferiche di i
uscita il loro funzionamento necessita solo di un bit. La l
periferica di ingresso digitale più comune e più utilizza- i
ta è l'interruttore, che assume diverse forme come pul- l
valore di un bit, in modo chequando il programma che sta ese-guendo il microprocesso.e leggequesta linea, riconosce se c'è un 1
o uno 0. Programmando una di
queste linee di l/O come uscita,potremo collegare ad essa unaperiferica di uscita, come un LED
e quando il programma va a scri-
vere il valore di un bit sopra que-
sta linea, se è un 'l il LED si illumi-nerà, e se è uno 0 il LED si spe-gnerà. ll collegamento di unaneriferir: d'innrpcsn in nrrpcto}."''."'caso un interruttore, e di unaperiferica di uscita, un LED, è illu-strato nella figura.
Può capitare, in alcuni sistemi,
che i livelli logici delle periferiche
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 spegner-la quando sia a 'l . Nella figura si vedono le modifiche al
sante, commutatore ecc. La perife-
rica di uscita più semplice, ma nonper questo la meno usata, e il
diodo LED. ll primo tipo di questi
interruttorr, a seconda dello stato,introduce un 'l o uno 0. ll secondotino se riceve rn 1 normalmente si
illumina, mentre se riceve uno 0 si
spegne.
: .. ':.,,,. i i .rt-:.. : J i'-
:ì : :1 Ì, ". i: t.'.ij i I . ,L i:.. r r_,ri
Dei 18 piedini che dispone il nostroPlC, 13 sono destinati a linee di l/Odigitali. 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/Ov' YULJTL '.
À nrnarrmmr*re programmara come In9resso,sara possibile collegare ad essa un
dispositivo esterno che introduca il
,É,.,,
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 uscitae controlldto dal processore perche lo accende scrivendo 1 e lo spegne scrivendo 0
I diodi LED sono le periferiche digitali di uscita più semplici e utilizzate
+Voo
INTERRUTTORE
LINEA DIGITALE DI INGRESSO
LINEA DIGITALE DI USCITA-ìì!
tÍr:7t;'
;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
processore ìa leqqe.
Ooni reoistro nel ouale si collo-
cano le informazioni da trasfe-l
rire ha associato un altro regi-qtrn rho <or\/o nar COnfigUfafe-."-'-ognr ilnea come Ingresso o,,--i+- l- ^^"+- A Iuscrta. La poria A na assocrato
il registro TRISA e la porta B il
registro TRISB. ll procedimentoper configurare le linee è moltosemnlrce 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 memo-
rizza uno 0, la linea RA3 del
'o+v;i
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 raggruppano in due
insiemi che sono chramate "porte". La porta A rag-gruppa 5linee di l/O, mentre la porta B raggruppa leR roqt:nti lo nnrto di l/O onor:nÒ .Òmo roni<tri rhp
oossono essere letti e scritti dall'esterno e dall'internodol nrorpssnre C)rrpsti reoistri si chiamano PORTA A e,r. vvLJLl
PORTAB. In realtà lo scambio dr informazioni ìo realiz-z: il nrnro<<nro <rririO^À ' Inî ^^r+r manlra l:/u tt Vt L, JLrrvúl IUU )UPIO Ulld PUI Ld lllclltlE lo
^^ri+^ri.1òc+Òrnì l: lanno n :l rnntr:rin ò l. narifori-pclllcllLo c)tEl llq lo ltryyr/ v ur lvr rLr urrv, L rq PElrrErr-ca esterna che colloca l'informazione nella porta e il
LINEA DIGITALE DI INGRESSO
\p I infarn trfnre e ànprtÒ intfOduCe un bit 0.
Per accendere il LED dobbiamo scrivere un bit 0 sulla ltnea digitale a cui e collegato
circuito di adattamento delle due periferrche per opera-re con livelli logici opposti
Voo+5V
05H06H
I nel ì rizzì r'lal la nnrtap rlci relsritti roni<f.i di l nnfiottrs-innc doll'srca q,FR della RAM
registro PORTAA rimane confi-nrrretn rnmc linp,a r-li uscita. I
registri PORTAA e PORTAB,
insieme ai loro associati TRISA
e TRISB, occupano gli indirizzi 5e 6 di entrambi i banchi della
memoria, come si vede nella
figura.
Prima di Iennprp o scrìvere Ie
informazionì in una periferica,
dobbiamo confi gurare adegua-
I:l
BUS TNTERNO DEt DAT| 8tI
F---F FFF-FFFFÈoNrO \CÈOàQN-O
LINEE O PIEDINI DI I/O
Ogni registro dr scambio d'informaztone, PORTA A, e PORTA B, ha associato un registro dt
configurazione TRIS A e TRIS B, rispettivamente.
LINEA DIGITALE DI USCITA
BANCO O BANCO 1
g***rrrllÍf Íf lllllllti:srzrììlìiìì:ì:ìll.:
P t8rytzlzv,{tlM&}M,llrrlrf *i\\\ìss{.wj,
*w. t r, r*./.,.g*i-r..!.j:irilririr.itt tTt%r# Porfecon il
MIGROCONTROLTERper il trersferinrento d'inforrnozionimondo esleÍno
5i desidera configurare come ingressi le linee RA4, RA3, RA2, e RAI della PORTAA, mentre la linea RAO deve funzionare come usrita. Realizzare il programmacorrispondente.
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 TRl5Acorrisponde all'indirizzo 5H
5T4T0.,. ..,.EQU. ..0x03,. ......;lletichettaSIAT0corrispondeall'indirizzo3H
8f...,,. ,,..5TAT0,5 ...;Bit5diSTAT0=1{RP0='t}.5iacredealbarco!
Movlw... ....0x1e. ....,;SicaricaWconlEH
Movwf... .,..TR|SA. .,,.;ll valoreWsi caricainTRlSA
Al momento dell'atcensione del PlC, o in caso di reset, tutti i bits de' registro di configurazione TR|S vengono posti a t, il che signifita che tutte le linee delle porte
rimangono inizialmente configurate come ingressi,
Preparare uî programma per configurare tutte le linee della porta A come ingressi e le linee della porta I come uscite,
Dovremo scrivere nei 5 bits meno siqnificativi di TRISA un I e in tutti i bits di TRISB uno 0.
Bsf,.......,...5TAT0,5 .,.. i RPO= 1, peractedereal banco 1
Movwf...,.....TRlSA. .......;ll valoredi Wsi sciveinTRl5A
Movlw...,...,.0x00. .. ,...,;Wsi carira con 0
l^ :^ ^^ -^rianle lp o.,,t r si i"t.'eI scono lel-r r Ll lr llrr I r\/tutrr\ ,L llvu | )l I Cr !
nfo.rr.rzinn dinilali dcf'npnnn nli ,.nresci e le uSCite.
Realizzata la conf gurazione delle inee l/O scrivendo net
'pcist' TRIS nèr nÒ'tzrp :l nrnreccnro''in'Oranazione.^^ a."i',1
^î r'nî aar'{6t1,1 2 d'innreccn rnl on.,Llltr c'lvo Ud U ld Pcll,!.'!u J I yr Lqdld d i-rlrl
r.1 rr-: nnr+: dnhhiàmo cO'o lenOprp I r-nrler_tO delv ,LvYri
ranicrrn rli arroctr ^^"1a, OSSia, PORTAA O PORTAB.rY,JLr v
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-euscita, basta scrvere il suddetto registro con lva ore da
tr:qfor ro Por lonnoro I COntenUtO df Una pofta Cl'ln-nro<<Ò rho rnni cno .l rl^rÒ / hÒ l. ^^.'{^.i..,,- .- , - . drure Llle ld Uel llel lLcl CO" SpO'-dente vi ha deposrtato, si utiiizza l'istruzione " movfPORTAA,\/", 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 Wviene spostato sui a PORTAA e le linee d uscita corri-spondenti portano verso rl mondo esterno i bits corri-spondenti
CaratteristichedetteporteAeBi ,r1 1::1.;iilgi .'i
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 supe-
riori 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 POR-
TAA, 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
di ingresso e di uscita.
ll piedino RA4 è speciale, dato che oltre a compor-
tarsi come una trpica I nea di l/O, si puo programmare
perche serva come ingresso di impulsi esterni per il con-
trollo del timer TMR0, che studieremo più avanti.
'i.,È r.i,i'r -i'
Él Í;.r i liT ;i {" :'ì 11 ri' 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-
cessore, Leggere una linea della porta A significa cattu-
rare 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 per-
mette la scrittura di questo livello sul flip-flop dei dati.
ln questa situazione il flip-flop di configurazione
dovrebbe contenere un livello 0, ìn modo che si com-
porti 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
R/42-
NMOS inferiore. In queste condizìoni il pin
di l/O resterà collegato a VDD e quindi avrà
livello alto.
Dato che la linea dt uscita è "lecciata"
(cioè e comandata da un latch) conserverà il
suo valore logico sino a che non scrlveremo
nuovamente sul flip-flop D.
Se una linea funziona come ingresso,
quando si attiva il segnaie READ il livello
logico depositato ìn essa dall'esterno, passa
alla linea corrispondente del bus interno der
dati, e il dispositivo ad alta impedenza che li
unisce diventa conduttore, Dato che il pin è
programmato come ingresso, i due transi-
stor MOS rimangono bloccati, e la linea di
uscìta passa ad alta impedenza. Quando si
legge un piedino, si rileva il valore che ha in
quel momento, e non deve essere memoriz-
na*r J?gìr
sRA4/TOCKI$ I
ff'
Posizione dei piedini della porta A
$ii{Ft:Èe.l;rliìì,11ì,ììì,ìììrì1rìuuuuuuuttììììrìùrrr: : .rrl -lrlrìlììuììì.ìiirllr'llllllllllìììììì:llrlllllilrllrlìlìì
.-{ÉEl
l
í C*l ,tÉi.s:i +eli ì
'l
LINEA DEtBUS DEI DATI
WRSCRITTURA
PORTA A
WRSCRITTURA
TRIS A
zato nel flip-flop dei dati. f informazione presente nellalinea d'ingresso, deve già essere presente al momentod'rnizio del ciclo di istruzione, e deve mantenersi stabi-le durante tutta la sua esecuzione.
È formata da otto linee che comunicano con l,esternomediante 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,in-duizzo 6 del banco O. I bits del registro associato TRISB
servono per configurare le linee di questa porta comerngressi o come uscite (1: ingressi e 0: uscite) ed e situa-to 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 tempodue funzioni possibili. Si tratta della iinea RB0/tNT cheoltre a funzionare come linea dr l/O normale, puo fun-zionare come linea di ingresso dr interrupt esterno perl'hardware. Se si programrna questo piedino per fun-zionare come inqresso di interrupt, oqni voita che lc si
RB2
-rRB3
-i"
{RA3:RAO)
BUFFERINGRESSO
TTLVssE
RDLETTURA TRIS A
RDLETTURAPORTA A
Circuiteria interna che collega i piedini RA?-RA3 con le linee di controllo e il bus dei dati interno al processore
i,*í,,,
,Llììì1.
l',]ììì
*rtl..:tj:rf
RBO/INT
-)RBI <-; -RB7<-* RBó
-*tt
Voo
Drstrtbuzione dei ptedini della porta B
t,,
attiverà tramite un livello alto, verrà generato un inter-
rupt.
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 met-
tere 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ì i
piedinì della porta B vengono configurati come ingres-
si, come succedeva con la Porta A.
BUs DEI DATI
WRSCRITTURA
PORTA A
RDTETTURA PORTA B
DAGLIALTRIPINRB7:R84
Le quattro linee piu significative della porta B (RB4-
RB7) insieme. possono svolgere un compito molto inte-
ressante e pratico, orientato alla gestione delle tastiere.
Le tastiere matriciali hanno i loro pulsanti dispostì nella
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 pie-
dini della porta B (RBO-RB3), in modo da introdurre un
lìvello logico alto in modo sequenziale, uno dietro l'al-
tro. L'attivazione di un pulsante permette ìa comunica-
zione di una fila con una colonna, pertanto si avra un
P (pull-up)
(RB7:RB4)
Colleqamenti clei piedini RB4-RB7 can le lrnee di cantrollo e quelle del bus dei aati rnierno al processore
livello alto, sia sulla fila che sulla colonna dove e srrua-to il pulsante premuto.
Si possono programmare i quattro piedini piu signi-ficativi della porta B, in modo che se uno di questi cam-bia il suo stato logico viene generato un interrupt.Quando si attiva un pulsante, cambia il livello logico diun piedino e si genera un interrupt, la cui routine indi-vidua il pulsante premuto conoscendo la fila e ta coton-na che sono passate a livello alto.
ll circuito elettrico di adattamento dei piedini RB4-RB7 e abbastanza complesso, ed e mostrato nella figura.
I predini RB6 e RB7 inoltre hanno una funztonespeciale, durante la funzione di scrittura del program,ma nella memoria FLASH. La scrittura in memorra sr
realizza inviando le informazioni in modo seriale tra-mite il PC, per cui sono necessari il segnale di clock eilvalore binario di ogni impulso, ossia dei dati in serie.ll piedino RB6 riceve il segnale di clock e RB7 l,ingres-so dei dati.
I , :' ,"',I
Ogni linea d'ingresso puo erogare una corrente il cuivalore massimo arriva a 20 mA, mentre un,uscita puoassorbire fino a 25 mA. Dato che esiste una limitazionenella dissipaztone massima della potenza del chip, l,as-sorbimento massimo di corrente della porta B e limita-to a 150 mA, mentre l'erogazione massima è limitata a
100 mA. La porta A, con meno linee, raggiunge la cor-rente massima di assorbimento di B0 mA e 'l 50 di ero-gazione.
Le tastiere piu comuni, impiegate nelle applicazioni conmicrocontrollori, dispongono di l6 tasti, numerati da 0a F e disposti in matrice di quattro file per quarrrocolonne. Ogni volta che si attiva un pulsante il proces-sore deve riconoscere jmmediatamente quale sia statopigrato La possibilità di generare un interrupt quandovaria lo stato logico di una delle quattro linee più signi-ficative della porta B, semplifica la rivelazione dellatastiera, per questo si collegano, come rndica la figura,le quattro linee meno significative della porta B con lequattro colonne, e le quattro file con le linee RB4-RB7della porta B.
Le lrnee meno significatrve della porta B vengonomesse a uno in modo sequenziale, in modo che inogni momento ci sia una linea a livello logico alto.
Se non ci sono pulsanti premuti le file sono scolte-gate dalle colonne e il livello logico alto inviato alle filenon puo passare alle colonne, di conseguenza noncambierà lo stato di RB4-R87.
Premendo un pulsante, ogni volta che la colonnacorrispondente a questo pulsante invra un Iivello logi-co alto, questo passerà alla fila associata e cambieràstato uno dei quattro piedini piu significativi dellaporta 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, perdeterminare il pulsante che è stato premuto, in praticaquello che si trova all'incrocio fra ia fila e la colonna.
:
RBo 6
ffiRB2 8
RB3 9
RA2 1
-
+Vcc 'nqs 2
^
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
lavoro, dobbiamo montare esternamente alcuni com-ponenti, fra i piedini OSC'l/CLKIN e OSC2/CLKOUT,
che corrispondono rispettivamente ai piedini 15 e 16
del contenitore.Un'istruzione impiega normalmente 4 periodi di
clock ad essere eseguita, e se sitratta di un'istruzione di
salto, impiega il doppio.
Secondo il tipo di componenti esternì che montere-mo, si configurano quattro tipi di oscillatori:
Tipo RC: è un oscillatore di basso costo poco stabi-
le. Necessita solo di una resistenza e di un condensato-
re esterno.
b.tr*}H
4t
Fotografia di un cristallo di quarzo e parte di un circuito nel quale è montato
,#.2l
CRISTAL
Schema generale dell'interfaccia del cristallo di quarzoe dei condensatori esterni. La resistenza RS si utrltzza solo nella versione spectale ad alta frequenza
TIPO HS: e un oscillatore ad altavelocità molto stabile. Funziona a fre-n rcnTP .nmnroqo rra 4 e 20 MhZ.Utilizza un cristallo di quarzo o un riso-
natore ceramico, collegato a due con-densatori di disaccoppiamento.
TIPO XT: impiega anch'esso un cri-stallo 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 orisonatori e le frenrenze di lavoro oscil-
lano 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 condensa-tori di dìsaccoppiamento, il cui valore è
specificato dal fabbricante in f unzioneeloll: fronrronz:
é3, *=s$j, g *3 *.{" àj g,lE
-**StEtLeè==*#E
lmpiegando alcune porte logiche TTL
molto spmnlici si nnssono costruireSchema elettrico dell'oscillatore di cristallo a risonanza parallela
+F + :,ìÈ E €i4 +:$ $ .€ e+ *.t :*, $'# t*É ÈH +ÉÉj+ iÈ'* *+É
MIGROGONÍROLtERRipaero dei, concelti sullei frequenzc di
ut '
330ko AGII ALTRIETEMENTI
74ASO4 74ASO4
XTAL
"t'. iln, 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 e
un'ampia gamma di frequenza. Ci sono due tipi di oscil-
latori al quarzo: a risonanza parallela e a rtsonanza in
serie.
lì circuito oscillatore con risonanza parallela illustra-
to 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
nella generazione della frequenza, che e determinata
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 program-
, ma nel PlC16FB4.. OLresta reoistro di 14 bits riceve la denominazione di: "Parola di configurazione". Quando viene scritto il pro-
13-
PAROLA DI CONFIGURAZIONE
330ko
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 inessa un determinato valore binario che andrà a definirealcune caratteristiche fondamentali del funzionamentodel microcontrollore.
La parola di configurazione ha 14 bits che si divido-no in 4 campi. ognuno dei quali controlla una caratte-ristica 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 dellamemofla.
Quando sr memorizza un programma df applicazione inun PlC, bisogna scrivere la parola di configurazione, e inuno der suoi campi dobbiamo specificare il tipo di oscil-latore fra i quattro possibili, con cui funzionerà il micro-controllore.
A questo scopo sono riservati i due bits meno signi-ficativi di questa parola, che si chramano FOSC'1 e
FOSC0, nei quali bisogna scrivere i codici indicati nellatabella per specificare l'oscillatore utilizzato.
In molte situazioni, il fabbricante o i progettisti di unprodotto governato da un microcontrollore, non voglio-no che si conosca il programma e i dati presenti nellamemoria. In altri casi questo non è importante, quindisia il programma che i dati possono essere letti.
| 10 bits di maggior peso della parola di configura-zione sono denominati CP (Code Protection) e0 nannoil compito di proteggere o meno l'accesso alla memoriadei codicì.
Se si scrive un 1 nei bits CB la memoria sarà spro-tetta, e si potrà leggere liberamente. Nel caso che i bitsCP siano a 0, il programma non si potrà leggere, evi-
tando le copie. Owiamente il programma non si potrànemmeno sovrascrivere, né sarà permesso l'accesso allamemoria EEPROM dei dati.
Se si prova a modificare i bits CP passando da 0 a 'l
si provoca la cancellazione completa della EEpROM.
i. i'.!.,1,"i')ì,i;; i, 1 ; I i-1 i. i ,-rrr i :" i:t: iti ' !,::
ll WTD o Watchdog Timer, è un temporizzatore cheserve per controllare che il corretto sviluppo del pro-cesso di elaborazione delle istruzioni avvenga secon-do una determinata cadenza. Se per esempio, il pro-gramma entra in un ciclo chiuso da cui non riesce piùad uscire, il Watchdog si attiva e resetta il program-ma.
La parola di configurazione dispone di un bit chia-mato WTDE che controlla il Watchdog. Se WTDE = iil Watchdog è attivato e controlla l'elaborazione delleistruzioni, Se WTDE = 0 il Watchdoq è disattivato.
ll lemporizzatore Power-Up controlla un tempo fissodt 72 ms e serve ad evitare problemi durante il colle-gamento iniziale della tensione di alimenTazrone alm icrocontrollore.
A volte la tensione di alimentazione, nel momen-to immediatamente successivo all'accensione, è
instabile e conviene ritardare la sua applicazione allacircuiteria interna del PIC sino alla sua comoleta sta-bilizzazione.
Nella parola di configurazione il bit pWRTE# si usaper attivare o disattivare il temporizzatore Power-Up,che ritarda la connessione dell'alimentazione esternaalla circuiteria interna.
. ': - : , : :
Similmente a quello che succede con la parola di confi-gurazione, a cui è riservato I'indirizzo 2007H dellamemoria di programma, esistono altre quattro posizio-ni che sono riservate per le parole di identificazione e
che occupano gli indirizzi dal 2000H al 2003H. Nonsono accessibili durante il funzionamento normale delPlC, e possono solo essere letti o scritti durante il pro-cesso di memorizzazione del programma.
Nelle parole di identificazione sono solo validi i 4bits meno significativi di ogni posizione da 14 bits.Esse sono utilizzate per immagazzinare codici di iden-tificazione, numeri di serie, chiavi segrete, dati di fab-bricazrone, numerì sequenziali eccetera.
RC,| I
XT 0 I
It temporizzatore TMRO
_ { ella maggior parte delìe applicazioni inlÉÉd, iii?
- " " cui intervengono dei microcontroller tro-
L.r - viamo dei procedimenti e dei compiti in" = cui e necessario controllare il temno Per.'-'.-- lar fronte a questa esigenza si puo istrui-re il nronrio nro.essore mediante un semnlire oro-"Y"' Y'gramma, che inizi caricando un valore in un registro,e noi lo derrementi sino ad arrivare a zero. Se con un<olo rpni<lrn nnn ci ottipno il tpmnn dpqidorî+^ c^ ^^)VlV lq9l)LlV llVll )l VLL,!,,L v!J,vúrOLV, )E llE
possono concatenare diversi, in modo che quandouno arriva a zero, decrementi di una unita il successr-
vo e ripeta il ciclo. Questo procedimento è moltosemplice e molto preciso, perche conoscendo il
numero di istruzioni da eseguire, si deduce il tempo+^+-l^ ^^-^^'-'r^ -! pspnrrirp il ricln rnmnlglg.lultru I rrt r))dt tu du E)qvuI E il LtLtu LUI tP
L'inconveniente principale nel dedicare il proces-
sore a compiti di cronometro, è che vengono ipote-' r rta lo cr ro ricnrca nor roalizzzro allro tLdre re 5ue r5ur5u,-, lpefazlonl,
inoltre non potrebbero essere gestiti gli interrupt,perche significherebbe fermare il conteggio deltcmnn I lomnorizzatori sonn disnositivi hafdwareausiliari integrati nel microprocessore, e sono dedi-catr alla misura del tempo, scaricando da questoi:irnrn il nrnrpccnrp
i . r-: '." :- i" Àì; r aj :. I r; ::fl ilí fl+4-: iii.+";Lllè"i"{"t f.; L'
':u
È un contatore di n bit che si incrementa o decrementaognì volta che riceve un impulso di clock In caso di
Coricore un registro con un volore
De*emenfore il registro
Registro=Q
per il controllo del tempo medrante tl decremento di un regrstro
FINE
i:
ruIMPULSI DI CTOCK
-:
SEGNALATORE
I temporizzatoil sono contatori che si incrementanoo 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
j-1_ft__[aINGRESSO DEGLI IMPUTSI
Schema e funzionamento del temporizzatore TMR0.
dpcrpmento orando il valore del contatore arriva a
zero, viene attivato un bit ausiliario che funzionacome segnalatore, o "f lag", e va a 1 avvisando del-l'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 i
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 timerha terminato il suo conteggio, deve vigilare sulla
messa a uno del segnalatore o flag. Questa conti-nua esplorazione del flag sottrae tempo di esecu-
zione al processore, per questo esiste un'altra possi-
bilità più immediata e chiara, che consiste nel pro-
durre un interrupt ogni volta che il contatore finisceil suo ciclo.
' .,.,,',,,..i,;.-, t.r,,, ',',t:'.: :.i: '',1 ,:.r.'.,,
Questo modello di microcontroller dispone di vari
temporizzatori integrati nel chip. Un paio di questidispositivi sono utilizzati per ritardare di un tempocostante la messa in marcia del PlC, durante la prima
accensione o in caso di reset. Quelli che ci interessa-
no sono quelli programmabili, e che sono dedicati alla
misura del tempo all'interno dei compiti a cui è dedi-cato 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 chevigila sul corretto tempo di elaborazione delle istru-zioni del programma, resettando il processore in caso
di anomalia.
t;.,tt ;,';,,;, it t:,.:: ...' ì. 1;..',,.'-1',;n,:.,,
"8
TMRO SEGNALAZIONEDI OVERFTOW
È 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 valo-
re 00H si attiva il flag.
ll temporizzatore TMR0 può realizzare due funzioniprincipali:
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 oproducendo un interrupt.
2". Contatore di eventi. In questo caso ogni evento
che deve essere contato, è rappresentato dall'impulsodiclock 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 conta-
tore di eventi esterni, dobbiamo programmare il piedi-no RA4/TOCKl come ingresso, e caricare alcuni bits del
registro specifico OPTION con determinati valori. ll regi-
stro 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 del
TMRO - occupa l'tndinzzo 1 del banco 1 dell'area SFR
della RAN/.
Come vedremo in segurto, il registro OPTION dispo-ne di due bits che determinano il comportamento del
temporizzatore come contatore di impulsi. Uno di que-
nnÉ
BANCO O BANCO I
00
0l
02
03
ll contatore TMR) occupa l'indiilzzo 1 del banco 0e il registro OPTION, di cui alcuni bits programmano il funzionamentodel TMR), occupa l'indirizzo 1 del banco 1.
sti bits si chiama TOCS, e se vale 1 il IMR0 funzionacome contatore di impulsi, se vale 0 come temporizza-tore di ulilizzo generale. L'altro bit chiamato TOSE, sce-
glie il fronte attivo per il conteggio del segnale applica-
: to al pin RA4/TOCKl, con il quale si determinal'incremento del contatore. 5e TOSE = 1 il
f ronte attivo sarà orrello cli cliscesa e se_:-_ ^.
v, Yvr"v
TOSE = O sarà quello di salita.
. ,,',, . .
l
ln molte occasioni, sia il TMR0 che il
Watchdog devono gestire lunghi intervalli di+^m^^ ^ ^^-^--'+^Lc'pu, c rrsus>:rroì'ìo di aumentare il tempoche intercorre fra ogni impulso di clock, per
rlaroare ilncremenlo, 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 valo-:, fl possr0rlr.
Abbiamo un solo divisore di frequenza, cre' -J^..^ ----agndto al TMR0 o alucvc E))ct c d))r
, Watchdog; per fare questa scelta disponiamodi un bit nel regLstro OPTION, chiamato PSA.
Se PSA = 0 il divisore di frequenza è applica-
to al TMR0, con il quale funziona come
Predivrsore, o Prescaler. In questo modo gli
impulsi del clock passano prima attraverso ìl
divisore di frequenza, vengono divisi per il valore scelto
e sono poi applicati al contatore TMR0 per ottenere l'in-cremento di valore. Gli impulsi del clock possono pro-
venire dal proprio oscillatore interno, con una frequen-
;:11 )%F- tffisf-***FW:^ffi*n,oPTtoN sErEzroNE RANGE
Schema interno del TMRj con
PSA
i bits di programmazione del registro OPTION.
24
za di Foscl4, o da impulsi esterni applicati al piedinoRA4/TOCKl. Questi impulsi passano al Prescaler che li
divide per un valore impostato dai tre bits meno signifi-cativi di OPTION (PS2, PS1, PSO).
Per calcolare il tempo che controlla il temporizzato-re TMR0, dobbiamo tener presente il valore caricato ini-zialmente e il fattore di divisione del Presca er, in accor-do ron la spnrrpntc formula:
vernano il comportamento dei temporizzatori TMR0 e
WDT; inoltre il bit RBPU# serve per collegare o menolo rp<iqton zo dr nrrll-r rn doll: nnrt: R I In :ltrn hit
INITFDG doridp 611;lp crrì il f rnn+n r1-ii,in nor l,intar_yuurL )dld ll llUlrLC dLLIVU pcl llllLCl-lInt a<tornn rho nni.. rnlJnar+n rllr narlrrupL sJrsr rrv !rrE vwLt d c))crc LUtìtr9dtu dtd PUtLdRB0/lNT. Nella figura è indicata Ia distribuzione e lanomenclatura dei bits del registro OPTION così comel: f r rnzinnp rhp nnnrrnn di esqi romnip a seconda del|||/|!9J!t
valore. che Ouo essere 'l o 0.
Temporizzazione = 4 . Tosc .
Valore caricato in TMRO .
Fattore di divisione delPrescaler
Valore da caricare in TMR0 =Temporizzazione I
(4 . Tosc . Fattore didivisione del Prescaler)
In qualsiasi momento si
nr ro lpc c e re il va lorc n rtr\en I p
in TMRO senza influenzare il
rnnteooin ner rrri si utilizzal'istruzione "movfTVlR0, W"che eariea ncl renistro di lavo-ro il vàlore del contatore nel
momento in cui sr esegue l'i-qtrrrzinno l\loll: f inr r". dall.Jrru4rvr,L. rrVUlO UEIIO
n:nin: nrororlonlo p rinnrl-:fnyuyil ru rL! ! llPwlLoLw
lo schema interno del TMR0, e
si ouo notare l'esistenza di un
circuito che ritarda di due ciclii rontpooio npr sinrrontzzare/ Y9 r"'L'
rl momento dell'incrementonrndnttn el:l <onn:lo ^c+^rh^PrwuvLLv uor Jqvrrors crrrr r I(,
TOCKI con il quale si produco-no gli impulsi del clock rnter-no. Quando si scrive il TN/R0 si
ritarda di 2 cicli il suo reincre-mento e si pone a 0 il divisoredi f "cnr tFnTà o Prpsr:ler.
i. t, ;1i';, rj-j,;j"Ti? r-i ij i'' 1'? i.,l i4
Ò r ro< ln ron i< t rn naar tnl lr nac i\{uLrLv rLVrJLrv vLLupd lC pU)l-
zione ldel banco l nell'areaSFR della RAM, che ha il com-nitn di rontroll:re le risorse del
microcontroller. I bits di
OPIION, principalmente go-
P50
0I0I0I0I
OPTION
Divisione delTMRO
1:2l:4l:8I:lól:32l:64l :128l:256
Divisione delWDT
l:ll:2lz4l:8l:lól:32l:64l:128
o_:::' ! i 1
i : :?' ly' a, ? :' ! ::^ l :-' b',!: :n'': l
P52:P50 Vqlori con i quoli funziono il divisore difrequenzo
PS2
0000IIII
PSA:
TOSE:
TOCS:
INTEDG:
RBPU#:
P5I
00II00II
Asseqnozione del divisore dil= lllivisore di frequenze si
0= ll divisore di fre{uenze si
Tipo di fronfe in TOCKIl= Incremento di TMRO con fronte di disceso0= Incremento di TMRO con fronte di solito
Tipo di clock per il TMR0l= lmpulso irì inqresso dq TOCKI0= lmbulso di clóck interno Fosc/4
Frole ottivo per interrupt esternol= Fronte di lolito0= Fronte di disceso
Resistenze di pull-up Porto B
I = Scolleoote0= Colleg"ote
frequenzeossèqno o WDTosseéno q TMRO
(contotore)(temporizzotore)
É -+ È g"++i+ e";=a++ +r :.it,gs +S r.+.* É È1+resc 5+ i+ rÈ :ÈiH ÉÉ *+È {i' lil
j
MICROCONTROLLERll Ytfcrfchdog
Un caneche morde
Qcre-sto e Arbo, un cane mtcrorobat castruita dalla Sony, che sa anche morclere. E una mascotte dtsegnata
D-or coloTo 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 tlWatcltcloq cite contiene rl PIC e che dev-. solo resettare rl mrcrocontroller, quando ll programma di lavoro non è eseguita normalmente
.{..,,:3.t:;:':..::.:: :
ì.,,ìr'
=.!: .,
rt4tsf!!.rrrì1l11lrr1rrìr1ì1ìì1ìììììììììììììrì:rr....tt........:aN\t\ttttnt4\
{r|-ràF-,',,..r:ìrì jì!i*.:r:;,
#È-
(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 dispo-
ne di segnalatori, ne genera interrupt alla fine del ciclo,
l'unica cosa che fa e provocare il reset del microproces-
sore, il quale ricomincia ad eseguire il programma prin-
cipale dalla prima istruzione 0000H della memoria dei
codici (Vector Reset).
L'obiettivo del Watchdog è verificare la corretta ela-
borazione delle istruzioni del orooramma. Se tutto va
lNtzlAlrzzAztoNE (RESET)
INIZIO TEMPORIZZAZIONE WDT
ESECUZIONE DELLE ISTRUZIONI
FINETEMPORIZZAZIONE
WDT
ESECUZIONECTRWDT
{cANCErrO WDT)
bene, prima che il Watchdog termini ìa sua temporiz-zaztone, il programma gli fornisce un'istruzione che locancella e reinizia ìl conteggio, in altre parole effettuaun "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 con-
seguenza il WTD andrà in overflow e verrà generato un
reset. Con quest'azione si ottiene che il microcontrollerinizi 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 di attuazione de
Watchdog si osserva che alla fine della tem-porizzazione del WDR si esegue l'istruzione"clrwdt", si cancella il te'nporizzatore e rico-
mincia il conteggio. Se non si esegue questa
istruzione, qualcosa non ha funzionato, quin-di si npnpra rn reset. Per controllare il
Watchdog si aggiunge l'istruzione "clrwdt" in
certi punti del programma su cui si vuole vigi-t^-^ . ^^ ^, ,^-+î i-*.,,:ione il contatore tornatdtE. LUt | \-1uE)Ld r)u uz
a 0 e inizia il conteggio, evitando l'overflowSe il programma non è eseguito normalmen-te, l'istruzione "cìrwdt" non arriverà in
tempo, il WDT andrà in overflow provocandoil reset del sistema, come nmedio per supera-
re l'anomalia.ll refresh o reinizio del conteggio del WDl,
si puo produrre anche quando si esegue I'i-strr rzione "sleen" che serve ner norre il PIC inJ|!!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
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 temporiz-zatore e sempre interna e indipendente, origi-nata da un oscillatore RC proprio. Quando si
assegna il Divisore di frequenza al Watchdog,questo lavora come postdivisore, al contrariodi come lavora con il TN/RO. In questo modo
b
tlO
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.
ilTICROCONÍROLLER
IMPUTSI DI CLOCKPER TMRO
TOSC
ArrrvATo/DISATTIVATO
WDTE(PAROLA Dr CONFTGURAZTONE)
Schema interno del funzionamento del Watchdog.
gli impulsi che genera il WDT passano al Divisore di fre-quenza, 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 difroatanza 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 al-
l'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.
ll temporizzatore WDT è preprogrammato per control-lare un tempo di 'lB ms, pero regolando il Divisore dr
8-
Ps2.Pso7ffiKAt TMRO
ffi PsA
/l
OVERFTOW WDT(RESET)
frequenza si puo fare in modo che questo tempo si elevì
fino ad un massimo di 2,3 secondi.
ESEMPIOln un programma si desidera controllare che un deter-^;^^+^ -;-t^ -^^^^sto da 200 istruztoni normaliI Ilil IA LV ttllWt lvt r lPV
senza nessuna di salto, sia eseguifo esattamente 100
volte. Si lavora con un PlCl6FB4 con un crtstallo diquarzo a 4 Mhz e si utilizza il Watchdog per controlla-re questo tempo, che può essere critrco nell'applìca-ztone.
ll controllo del tempo del ciclo, richiede di postzio-
nare davanti allo stesso un'istruzione "clrwdt", che
resetta il Watchdog e inrzializza la sua temporizzazio-ne. Al termine del processo di 100 ciclr, collocheremonel programma princrpale un'altra istruzione di refre-sh del Watchdog. Con quale temporizzazione si deveprogrammare il Watchdog, per ottenere un reset nelrtca ciz .t t^Òra+^ il famnn rha imniaaa il rirl^ 1A ^..^Ld)u )/d JUlJcldLU ll Lcl t tPw rt tc u t tPtcva // L/!ru ou cJ)c-
ro o<aattitn 1îtît rrnlfo?
P26
CLOCK PER TMRO
PSAATTIVAZIONE
DEt WDTwDrE)
OVERFTOWDEL WDT
Bits del registro OPTION che intervengono nel comportamento del Watchdog.
SOLUZIONE
Dato che il ciclo consta di 200 istruzioninormali, iltempo che dura ogni istruzione sarà:
Ciclo lstruzione= 4. Tosc = 4.250ns = 1.000 ns = 1 !sTempo dì Ciclo = 200 Ciclo lfruzione = 200 . 1 ps = 200 ps
TempoTotale = 100 Tempo di Ciclo= 100. 200 ;rs=20.000 ps = 20 ms
ll WDT deve essere programmato per andare in over-flow 20 ms dopo il refresh. Gli impulsi per il WDT sonogenerati dail'oscillatore RC interno, proprio e indipen-dente dal orincioale.
Con l'obiettivo di precisare tutte le caratteristicheprincipali di cui bisogna tenere conto per gestire cor-rettamente il Watchdog, forniamo un riassunto di
quelle piu importanti e una figura che mostra grafica-mente i bits dì controllo che intervengono nel suocomportamento.
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
PS2:PSO
At TMRO
P5A
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 nelDivisore di frequenza fra 1:2, 1 :4, .....1 :128, ottenendocon quest'ultimo caso una temporizzazione massima di2,3 secondt.
" Per stabilire il range di divisioni del Divisore diFrequenza si utilizzano i tre bits meno significativi diOPTION (P52, PSl e PS)).
* Per prevenire l'overflow e i/ reset bisogna cancel-lare 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'elabora-zione 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 <l',-,,,- -, -,-"eP.
La memoriadet programma
farchitettura Harvard dei PIC,
divide la memoria in due zone
indipendenti, una destinata a
contenere le istruzioni e l'altra i
dati. Il primo vantaggio che
deriva dall'architettura Harvard
e che nermette l'accesso simul-
taneo ad entrambe le memo-rie, in modo che il processore
possa leggere un'istruzione diUn progetto esclusivo per il PlC|6FB4.
MEMORIADEI DATI
tNDtRtzzo
DATO
L'architettura Harvard del PIC rende indipendente la memoria del programma da quella dei dati.
MEMORIA DIPROGMMMA
tNDtRlzzo,13
ISfRUZIONE
'14
, ,orr)uo," il ,**rirlru'" i ttu, a"g i ,:,iiri;i nunì,o t s t*,con i quali si può indirizzare uno spazio di B K posizioni di memoria.ll PlCl6FA ha solo implementate le prime 1 024 posizioni.
diversi modelli della gamma
media. Per questo il bus deglitndirizzi, ovvero l'insieme di
linee che trasportano il valore
dell'indirizzo al quale si deve
accedere nella memoria - che
e generato dal Program
Counter PC - non ha solo diecilinpp rhe s:rphhprn nrtelle suf-,r Je,LUvL'v Yr
firienti ner oestire la memoriaYLr YrJ!'r ! 'v '
da 1 K, ma 13 con le quali è
possibìle induizzare capacità
MEMORIA DIPROGRAMMA FIASH
tNDtRrzzo
/,o
ISTRUZIONE
/,0
tNDtRtzzo
/,I
I
','iXtl"I
I
I
DATO
/"
BANcoolanNco r
PROCESSORE
programma, e nel medesìmo tempo scrivere un dato.
Così, il processore attende a due istruzioni alla volta,
conseguendo un parallelismo implicito chiamato seg-
mentazione. che migliora notevolmente il rendimentodel sistema; fatto che in pratica si traduce nella possi-
bilità 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 "i
MICROCHIP non ha realtzzalo un progetto specificoper il PIC16FB4,l'architettura utilizzala è la stessa per
l..- 14 BITS +l
fino a 8 K posizìoni di memoria del programma tipoFLASH. Nel caso del PlCl6FB4 è stato fisicamente
implementato solo il primo K, sarebbe a dire, dall'indi-rizzo 0000 H al 03FF H
;'y,:; ;';:1:!; j,1:. i..j :j r:'irí. I ::i :- I
Nei PIC di gamma media abbiamo due indirizzi della
memoria di programma che sono riservati per espleta-
re due funzioni principali. Un indirizzo riservato è lo0000 H, che è il primo della mappa. ln esso è ubicato
Vettore di Reset o Reinizializzazione. ll suo compito è
MEMORIA DIPROGR/AM^tu4
0000 H
O3FF H
I due indirizzi riservati nella memoria di programma. La 0000 Hper il Vettore dl Reset e la 0004 H per il Vettore di lnterrupt.
, 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-
, zialmente, altrimenti il programma principale intacche-
, rebbe la routine di interrupt che inizia quattro posrzro-
ni dopo. Normalmente all'indirizzo del vettore si collo-
, ca un'struzione di salto incondrzionato al vero indiriz-
' zo dove inizia il programma. Per esempio, se il pro-
; gramma 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:
RADIX HEX ;l valori si rappresentano in esadecimale
Goto inizio ;Salto all'istruzione con etichetta inizio
F un renistro da 13 hits rhe ronlienc nli indirizzi dell'i-struzione successiva che deve eseguire ii processore.
Dato che i registri della RAM sono di 8 bits, il valore delPC si i'nnlempnta qnnra drre di essi ll rcnistro PCL del-
l'area SFR della RAM contiene gli 8 bits meno significa-tirrr dpl PC o acr^trn,a le nosizione 2 dei drre banchi. | 5! L vLluvu,u PvJ,L,vl
tk
supportare la prima istruzione del
programma principale, che e quellarho o<anrro il nrnroccr,, r.,_-,_-Jre oopo cne
è stato effettuato un reset.T-- ì^ -i+.^ --.,-^ il -^-^+ -l ^-^
duce con l'accensione del micro-
controller nel momento in cui si
applica la tensìone di alimentazio-ne, il programma che esegue il
microcontroller rnizia all'indirizzo0000 H.
L'altro indirizzo riservalo è lo
0004 H, in cui alloggia il Vettore dilntorrr rni (o nol nrnnr-y,amma e pre-
visto un interrupt, la routine che loriguarda ha la sua prima istruzione
all'indkizzo 0004 H.
12 87{s
PCLATH
ÍiGli B bits meno significatiu a" iìiìr,eaono ntel registro PCL e i 5 più significativi nel PCLATH.
íÉ ;l,r :;e + i:' i. *tu *11 a1; I i + i.# $i-l tr;l ;i:, i; n:+ i;-i,j
CONTATORE DI PROGRAMMA
432rO
frilc
-2
CONTATORE DI PROGRAMMA
< | 0:0>
cano dalle Iinee del bus dei datiinterno al processore. | 5 bitspiu significativi, invece, si rice-vono tramite i bits <4:0> delregistro PCLATH.
Nell'istruzione di salto GOTOo CALL I'induizzo del salto chesi carica nel PC arriva dagli 11
bits meno significativi del codi-ce OP dell'istruzione, e dai bits<4:3> del PCLATH.
Lo stack è un insieme di registriche contengono le informazio-ni in una forma particolare,
dato che, sia il carico che loscarico è speciale. Nel caso del
PIC'16F84 lo stack è formato da B registri da 13 bitsognuno, ed è dotato di una struttura di carico e scari-co tipo LIFO, acronimo inglese che significa "ultimo adentrare primo ad uscire". Quando si carica un'informa-zione nello stack, si introduce sempre al livello 'l
Se precedentemente avevamo un'informazione allivello 1, questa viene spostata al livello 2 e quella del
SCARTCO
STACK \I3
I-'INFORMAZIONEstSPosTAAt LIVELLO
PRECEDENTE
Anche lo scarico dello stack si realizza al livello 1,
spostando l'informazione al livello precedente
,-!, i,
'll
CODICE OP ISTRUZIONE
PCTATH
Nell'istruzione di salto il PC vrene caricatocon 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 menosignifrcativr del registro PCLATH, che occupa l'induizzo0A H nei due banchi della memoria dei dati. Il registroPCL si può leggere e scrivere direttamente, mentre il
PCH è accessibile in scrittura attraverso i 5 bits menosignificativi di PCTATH In quelle istruzjoni in cui la
destinazione è il PC, gli 8 bits meno significativi si cari-
cARrco\13
STACK
34
T.INFORMMIONE5I SPOSTA AtHVELTO SUCCESSTVO
Caricando lo stack al livello 1
l'informazione di ogni livello trasla al successivo
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-
l3
L'istruzione CALL o I'interrupt,provocano il caricamento automatico del contenuto del PIC nello stack
Le istruzioni di RITORNO della subroutineo dell'interrupt scaricano immediatamente il contenuto del livello 1 dello stack sopra il PC
rì-- cARrco(cArr E TNTERRUPT)
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
RETTW,RETFIE)
spostano al livello precedente
e il dato che esce dal livello 1
sarà l'ultimo che è stato inse-
rrto.
' ' '''',,, ': .l'
Lo stack del PIC funzlonaautomaticamente, ed e diret-tamente 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 livel-
lo 1, la passa al PC. Ogni voltarhp ci pconrro l'istrr rzinne CALL
o che si produce un interrupt,è necessario salvare il conte-nuto del PC per sapere succes-
sivamente ritornare al punto
dove avevamo lasciato il pro-
gramma princrpale.
L'esecuzione di un'istruzio-ne CALL o di un interrupt,produce lo spostamento auto-matico del contenuto del PC
al livello 1 dello stack.
fultima istruzione di una
subroutine o di una routined'interrupt è di RITORNO,
quando questa è eseguitaproduce lo scarico automaticodel livello 1 dello stack sopra il
PC, restituendo il f lusso di
controllo al programma prin-
cipale, nel punto in cui era
stato abbandonato.ll programmatore deve te-
nere conto che non esistono
segnalazioni che indicanoquando lo stack è pieno, ed èsua responsabilrtà evitare il
debordamento e la perdita di
informazioni.
t,,
/'13
scARlco
srAcK rs\ (RETURN,
;:;,::iii :r,, 11l,il:;.+ 4i,i ;r1111;i
Resete circuiteria fissa
Per entrare in funzione il PlC16FB4 ha bisogno di trerisorse:
- 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 suovalore può essere compreso fra +2 e +6 VDC, essendo
!,,0,
MCtR#/Vpp
-+'
Questi sono i 5 pin del PlCl6FB4 che supportano le tre funzioniprincipali. alimentaztone, frequenza di riferimento e Reset.
+5 V la tensione tipica, compatibile con il resto della cir-cuiteria 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 fissa-re la frequenza dell'oscillatore interno, che determinaquella di lavoro del orocessore. Si ottiene da un cristallodi quarzo collegato ai piedini 16 (OSCl/CLKIN) e 15(OSC2/CLKOUT). Nei nostri sviluppi utilizzeremo un crr-
stallo di quarzo a 4 MNz, per formare un oscillatore tipoXT. In ognuno di questi piedini si monta un condensato-ro di nnchi nirofered nor dic,rrrnnni:ro lo fronttonza
spurie.
Quando si preme il pulsantedi 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 program-ma. Nella figura si mostrano i 5 piedini del PlC16FB4
che supportano le tre risorse principali.
ll rlinrln imnpdisr c r he e íre6li,,,,P!vrr!L
corrente dall'rnterno del microcontroller al positivo
àoscr/crKrN T._------------l-cR|sTAt
-osc2/crKouT $lml'E-.---l| 27otÀ-'
S+Voo=+SVDC T+
MASSA:Vss
I-:-
Voo=+5VDC
îrok=f
rN4148+
t--M A-I rooo
PULSANTE Ir'-rrq;
I.:
n^+^ -A^ ^,,-^,]^uaro cne quan0o 5l
imnieoa rrn PIC 16F84""r'-v-nal nrnnoffn di rrn':n-
nlir:zinno a qomnro
necessaria una circui-+^";- ^.+^"^- ^ ',."ì^LCtto c)Lct Ito, E vot tE-
r:nnn <nln irnlipn:-
menti delle linee di l/Ornn lo norifari16,a rho
dovremo controllareesrstono sul mercatoschede di circuiti stam-pati che dispongono dirrnn znrrnln nar il Pll-Y-, ,, ',-,dci rollcn,amonti nc;rv,,rYU,,,L,,Ll
l'alimentazione, del
cristallo di quarzo e delRocoi o r rn: znn: liho-
r: rlnrio nnq(nnó èqqé-YvrJv'
ro m^nf:to lo nori{ori-Y-.,,-,,che che si collegheranno alle linee di l/O.
Nr^ll- {i^,,"- ,..J^ll- ^.r\eila rgurd oeild pagrna successlva sl puo veoere lo
schema elettrico della scheda per i prototipi che è molto
ulile per la presentazione e la messa a punto dei proto-t o doi nrnnoffi d:t: l. {..ili+à À'".^ l- rr^ir:+; ^ l/^L.i L uLr ||JrvgLLLrr uuru ld ldLlllLd U U)U, ld ldPìultd E lc-
conomia che comporta.
lmmagine di una scheda di prototipi commerciahzzata da Microsystem Engineeilng
Quando si applica un livello basso per un tempo suffi-rientp al niedino N/al R# si nrodrrrp rrnà rcinizializza-, JI yIvvuLL
zione che comporta l'esecuzione di due azioni impor-tanîr:
'1 ". La messa a zero del-r r^ri.i---.Ò lapd>>d du il ruil r4zor!
prima istruzione del pro-
gramma.
2". Pone in uno statop"edeterminato la maggìornarte dei bit dei reoistri di
controllo del processore.
Nella figura della paginanro.p.ltrnto sr mnstr:\/a Un
semplice schema a base di
un pulsante, che provoca il
Reset esterno.
Un altro schema comu-ne per il pulsante di Reset
include una resistenza di
assorbimento da 10 K, undindn rho imnpdisre la cir-
colazione di corrente al pie-
dino 4 e un'altra piccola
resistenza da 100 Q come
sivede nella figura.
Prnnr:m Cor rntor rhe cosl
Scheda dei prototipi con un'applicazione che controlla diverse periferiche
utìììììriifl lffi fr ùrÌrÌ|rrrrrrr:t:lr:rrrnr{rf *Mffi irul
succedere sìa nel modo funzio-namento normale del PIC e sia
nel suo stato di riposo.ln qualunque delle cinque
possibili cause del Reset, il PC si
carica con zero, eccetto quan-
do 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- -t-seguente a queila cne lo na
mandato nello stato di basso
consumo. Nella tabella sonorino.fati i v:lori r-ho nrendOnO iI vu,v,, r,L vl
Schema elettrico della scheda dei prototipi
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 pas-
saggio della tensione dì alimentazione da
1,2a1,7Y.2'. Attivazione del piedino N/CLR#.
C)rrpsto nrn sr rrcpdpre sia mentre il PICYULJLV
funziona normalmente, sia che si trovi in
stato di rìposo.
3'" Overflow del Watchdog (WDT). Puo
bit del registro SFR dopo ognu-na delle possibili cause di Reset.
Schema elettrico di controllo interno dell'attivazione del Reset
tNDtRtzzl
00h
CONNESSIONE OVERFLOW OVERFIOW MCLR# MCLR#DEII.A ì WATCHDOG WATCHDOG MODO . IAODO
aUMENTAZIONE ìmoDo NoRMAIE r MODO RIPOSO . NORI AtE: RIPOSO
XXXX XXXX UUUU UIUU UUUU IUUU UUUU UUUU
:,, i:,'. 1-;,'1',_ i,
i i:. ;.: ; - ;,;'?' i 11, j 1 il:
ii i i. i:' 1' 1; ir 'i
| - f i^,,"- ff^.+,a l^ SChemaLq il9UIO lttUJttC rV
elettrico che controlla l'attiva-zione del Reset. Sono messr In
evidenza i temporizzatori OST e
PWRT.
ll temnnrizTz,tore PWRT(Power-up-Timer) aggiunge72 millisecondi che manten-gono rl microcontroller nella
situazione di Reset, per dare
tempo alla tensione di ali-mentazione di stabilizzarsi.Per il suo funzionamentodobbiamo mettere a basso
01 h xxxx xxxxo?h 0000h03h OOOI lxs04 h xxxx xxxx05L xxxx xxxxOé h xxxx xxxx85 lrgóh tlil lillsl h 1111l',] t1
: 08 h xxxx xxxx09 h xxxx xxxx
j,, es h ,.. o oooor.' ge h;i:,oah ---oúoooìììr oal oo00 Òoox
i U=Noncombio x=lndelerminoto
0000 h 0000 h
OOOu uuuu 0001 0uuu
UUUU UUUU UUUU UUUU
UUUU UUUU UUUU UUUU
UUU! UUUU UUUU UUUU
---r l]1t -.-r llilllll llil llll llllll]t lltl il| 1t1rUUUU UUUU UUUU UUUU
0000 h
0000 I uuu
---1111111111111illr I11r
---o?ooo
---00000000O 0O0u
PC+ I
uuu0 0uuu
UUUU !UUU
UUUU UUUU
0?000 .--0?000
00000 ---00000uuuu uuuu 0000000u 00000000
--- = Non ufìlizzoto ? = Dipende do olke condizioni.
.i
CONSENSO PWRÍ(Porolo di configurozione)
REGISIRO
Tabella con i valori che assumono i bit dei registri SFR durante i possibili Reset
livello il bit di accesso PWRTE#, cherisiede nella parola di configurazione.Laltro temporizzalore, OST, fornisce un
ritardo di 1 .024 Tosc e ha il compito di
assicurare che l'oscillatore principale delprocessore slabilizzi la sua frequenza.OST inizia a funzionare quando terminala temporizzazione di PWRI, dovuta al
collegamento della porta OR7 con la
AND5. L'ingresso Set del flip-flop di usci-
ta sr attrva:. All'attivarsi del piedino MCLR#.. Quando va in overflow il WDT.. Se si rileva un fronte di salita nel pie-
dino VDD (POR).
I bit TO# e PD# del Registro di Stato determinano la causa che ha originato il Reset
conoscere la causa stessa. Per questo sì utilizzano duebit del registro di STATO o STATUS, che occupano l'in-duizzo 3 dei due banchi della RAM. Si tratta del bitTO# (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 glistatidi ouestr due bit.
È
È
Ouando la tensione di alimentazione scende al di sotto delvalore di tensione del diodo zeneq Vz = 0,7 V, si produce unReset per I'attivazione del aiedino MCLR#.
+-ì{:-S*"il È:È:È * {i {i} *È,{+:f+i;3.q"} *.é E.
A volte è molto importante reinizializzare il processore
quando si produce un buco di tensione e/o la tensione
scende sotto un valore determinato, senza arrivare azero,risalendo subito dopo.Ci sono modelli del PIC che incoroorano nel silicio i circui-
ti necessari per provocare il Reset a fronte di un buco di
tensione. Questo non è il caso del PlC16F84, quindi per
ottenere cio bisogna costruire un circuito ausiliario comemostrato nella figura.
f ingresso Reset del flip-flop sr attiva quando, trami-te la AND4, arriva un livello alto; questo richiede che
agli ingressidella porta cisiano livellialti, e quindisigni-fica 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
di osT.Nel cronogramma della figura possiamo vedere gli
stati ehe assumono i diversi segnali che sono coinvoltinel Reset, quando questo viene prodotto alla rilevazio-ne di un fronte di salita sull'ingresso della tensrone di
alimentazione.
5 il=5F ÉÍ'*l.i S'èFi I{F l'É ili"rili" i'iií€F{;;,iFj F. l}t i, ilÈF=È*,E
Dati i differenti effetti che provoca il Reset a secondadella causa che lo ha originato, è molto importante
..':. : ... : l .
POR
oiERFtovrfPI,vnÍ
OVERFLOWosr
**i-t fuCronogramma dei segnali che partecipano a/ Reset all'arrivo dr
un fronte di salita nella tensione di alimentazione.
.
#+È*É.eÈs$Eea*=$+$È+ # R*s+*
N ecessità di m emo rizzaredati non volatiti
, ,,, i r,. pesso, nelle applicazioni più comuni con i
microcontroller, è necessario poter disporredi intormazioni ditipo permanente. ln deter-minati momenti vengono introdotti nelsistema alcuni dati che devono essere man-
tenuti anche dopo aver scollegato l'alimentazione.Supponiamo un sistema di controllo di accesso ad
un luogo, che controlla il relé la cui attivazione chiude i
contatti che permettono l'apertura della porta. Le prin-cipali periferiche saranno una tastiera, un display di
visualizzazione dei messaggi, e un relé di uscita. Ogniutilizzatore 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 memoriz-zato in modo permanente, per essere utilizzato quando'è necessario. Inoltre sarà possibile cambiarli in qualun-que momento.
Por momnrizT)ro ^tro<ti
tini di drri ò nara, ,,---554|a unamemoria non volatile, perchè il contenuto possa essere
Terminali programmabrli della OMRON, che hanno funztone dri nterfaccia uom o-macch i n a.
scritto e cancellato; pero deve essere mantenuto anchequando viene scollegata l'alimentazione. Con l'obietti-vo di supportare questo tipo di dati e applicazioni, il
P|C16F84 dispone di una memoria EEPROM da 64bytes.
Le memorie EEPROM nascono per superare gli inconve-nienti delle EPRON/, che si potevano scrivere e poi can-cellare sottoponendole per alcuni minuti ai raggi ultra-vroletti, per cui disponevano di un cristallo sulla superfi-cre. La scrittura della EPROM è di tipo elettrico, però percancellarla, bisogna estrarla dallo zoccolo e posizionar-la sul "cancellatore" a raggi ultravioletti. Questo pro-cesso è lungo e complicato.
Nelle memorie EEPROM sia la scrittura sia la cancel-lazione delle informazioni, sono realizzate mediantesegnali elettrici, per cui non è necessario estrarre il cir-cuito integrato dallo zoccolo.
Nella costruzione della cella N/OSFET delle memorieEEPROM, si introduce una sottile lamina di ossido soprail drain, che permette la cancellazione elettrica. Quandosi applica una elevata tensione fra il gate e il source delMOSFET si introduce una carica nella barriera di poten-ziale, che rimane memorizzata anche se viene tolta l'a-limentazione. Per distruggere questa carica basta appli-care la stessa tensione inversa.
Nella EEPROM si possono scrivere e cancellare sin-gole celle. Le operazioni di scrittura e cancellazione di
solito durano pochi millisecondi. Linconveniente è chela superficie che occupa questa cella e grande e perquesto la densità di integrazione è bassa e il costo ele-vato.
La memoria FLASH ulilizza la stessa tecnologia peroriducendo lo spessore della iamina di ossido, il che per-mette un funzionamento simile alle EEPROM, con mag-giore densita di integrazione, minor costo e maggiorvelocità di accesso.
Per questo motivo useremo la memoria di program-ma FLASH nel PlC16FB4.
P3l
Altre caratteristiche interessanti per la scnttura dei
dati nella EEPROM del PlC16F84 sono:
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 posi-
zroni 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
singola operazione per iniziarne una nuova.
I
La te:ntsione di 13j B VòC nec:e:ssaria
per la scrittura/cancellazione di un indirizzo della
si applica tramite il pin 4 del PlCl6FB4.EEPROM,
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 tramiteil pin MCLR#l/pp, come si puo vedere dalla figura.
Anche se la EEPROM è una parte della memoria dei
dati, i suoi induizzi non sono mappati insieme ai regi-
stri SFR e GPR della RAM, che è volatile. Occupa uno
spazio di memoria indipendente, così come mostratonella figura.
INDIRIZZI
EEPROM HEX
64POSTZTONI
000r02
1._ 8 BtrS _l
Lo spazio nella memorra EEPROM e indipendente
Per gestire lo spazio proprio della EEPROM biso-
gna 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, mentrequello EEDATA si trova ubicato alì'indirizzo B del
banco 0, come riportato graficamente.Nella posizione uguale a EEDATA, nel banco 1, si
trova il reoistro di controllo della EEPRON/, EECONl.
In modo simile il registro di controllo EECON2 occu-
0a una posizione correlata a EEADR, neì banco '1 .
RAM
BANCO O BANCO I
Ubicazione dei registri EEADR ed EEDATA, che si utilizzanonella gestione dell'area di memoria EEPROM,
sono riportati anche i registri di controllo EECONI ed EECON2
., ,;. il
cicli di lettura e scrittura della EEPROM sono realizza-ti <rrnli ind,irizti di rrn hrito
ll ciclo di scrittura comoorta la orecedente cancel-lazione in automatìco delle informazioni che contene-va la posizione a cui sie fatto accesso. lltempo diciclodi scrittura è controllato da un temoorizzatore inte-grato nel chip.
ll problema maggiore e che questo tempo nonsolo è lungo, '10 millisecondi come massimo, ma è
variabile a seconda della temperatura e delra rensro-ne aoolicata.
Dato che questo tempo è molto critico, la fine delleoperazioni è controllata da un flag che può essere
complementato con un interrupt alla fine della scrittu-ra di un induizzo.
Per accedere ad una posizione della EEPROM
dobbiamo caricare nel registro EEADR I'indirizzodella medesima, mentre in EEDATA si carica il datoda 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 valgonosempre zero, perche il valore maggiore che si può cari-care è 3 FH.
EEADR (09 BANCO 0)
EEDATA (08 BANCO 0l ;
Nel rcaistrn FFADR * eari16 | inj111776
a cui accedere, e in EEDATA, il dato da scrivere o quello letto
,; ',",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 bithanno rl compito di controllare le operazione dellaEEPROM.
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: LetturaQuando questo bit è messo a 1, si realizza un'opera-zione di lettura all'induizzo contenuto nel registroEEADR. ll contenuto di questo indirizzo viene caricatonel 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: ScritturaN.4pttendo a 1 nrrpsto hit sì realizza rrn'nnerazione di
scrittura dell'indirizzo indicato da EEADR, con il datocaricato in EEDATA. Completato il ciclo di scrittura il WR
torna a zero automaticamente.
WREN: Consenso alla scritturaQuesto bil realizza una funzione di sicurezza, se è a 1
normtrtttr l: srrittr rr: qe e a 0 no indinondentemente
dal valore del blt WR.
WRERR: Flag di errore di scritturaViene posto automaticamente a 'l quando un'operazio-ne di scrittura termina prematuramente.
Segnala che si e verificato un errore di scrittura, atti-vandosi quando si interrompe l'operazione di scrittura,a causa di un reset prodotto da MCLR# o per overflowdel WDT. Dopo il Reset l'utilizzatore deve verif icare que-sto hit e se vale 'l rinetere l'onerazione oi scrittura.
EEIF: Flag di terminedell'operazione di scritturaData l'importanza dell'operazione di scrittura, e rl
rischio di comoromettere il sistema se non termina cor-rettamente, questo bit è dedicato a segnalare il terminedell'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 que-ct: nnor:zinno
Se viene letto tutti ì suoi bit valgono 0.
EECON2 (09 BANCO I l '
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