microrobotica monty peruzzo editore - 06 a - micro controller
DESCRIPTION
Tutta la raccolta in versione torrent qui:http://www.tntvillage.scambioetico.org/index.php?act=showrelease&id=192104Raccolta a fascicoli "Robots - Costruisci il tuo Microrobot ed impara l'Elettronica Digitale" pubblicata da Peruzzo Editore dal 2001 al 2003.Su Scribd c'è tutta la raccolta suddivisa nei seguenti file:Microrobotica Peruzzo Editore - 00 A - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 B - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 C - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 - Errata CorrigeMicrorobotica Peruzzo Editore - 00 - Leggimi.txtMicrorobotica Peruzzo Editore - 00 - IndiceMicrorobotica Peruzzo Editore - 01 - Fondamenti di ElettronicaMicrorobotica Peruzzo Editore - 02 - MicroprocessoriMicrorobotica Peruzzo Editore - 03 - Sensori e AttuatoriMicrorobotica Peruzzo Editore - 04 - ComunicazioniMicrorobotica Peruzzo Editore - 05 - MotoriMicrorobotica Peruzzo Editore - 06 A - MicrocontrollerMicrorobotica Peruzzo Editore - 06 B - MicrocontrollerMicrorobotica Peruzzo Editore - 07 - Modelli di MicrorobotsMicrorobotica Peruzzo Editore - 08 - Robotica Industriale e Intelligenza ArtificialeMicrorobotica Peruzzo Editore - 09 - ProgrammazioneMicrorobotica Peruzzo Editore - 10 - ApplicazioniMicrorobotica Peruzzo Editore - 11 A - Modulo di ControlloMicrorobotica Peruzzo Editore - 11 B - Modulo di ControlloMicrorobotica Peruzzo Editore - 11 C - Modulo di ControlloTRANSCRIPT
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
MICROCO
Registri dedicatialla EEPROM
er gestire in lettura e scrittura le 64 posizio-
ni della EEPROM del PlC16FB4, si utilizzanoouattro reoistri dell'area SFR:
EEDATA: Contiene il dato da scrivere o il dato letlo,
EEC0N2: Si utilizza come dispositivo di sicurezza durante la scrittura.
EÈADR (09 BANCO O}
\"
EEDATA (08 BANCO 0)
EECONT {08 BANCO r)
EECON2 {09 BANCO r)
Registri incaricati di realtzzarele operazioni con la memoria EEPROM
La lettura di una posizione della EEPROM inizia carican-do in EEADR l'induizzo a cui accedere, Successivamente
si pone a 1 il bit RD del registro EECONl. Nel cicloseguente il dato letto è disponibile in EEDATA. Questodato permane nel registro sino al realizzo di un'altraoperazione di lettura o scrittura nella EEPROM.
slufus
eesdr
eedoh
eeconl
bd
movlw
movwf
btbsf
bcf
movf
Creore un progrommo per leggere l'indirizzo 0C Hdello EEPROM e deposiiorlo nel regislro W.
;rd = 0 per ocedere ol bonco 0
lv=0cP = eeodr
;rp0 = | per occedere ol bonco I
;rd= I perleggere
,'rp0 = 0 per oaedere ol bEnco 0
;eedoh = w
Per scrivere un dato in un indirizzo della EEPROM, dob-biamo seguire una sequenza di istruzioni in cui parteci-pa in modo speciale il registro EECON2. Questo regi-stro, che in realtà non è implementato fisicamente,
assume solo una funzione di sicurezza, caricandosi con
ivalori 55 H e AA H in sequenza. Questo evita interfe-renze durante la lunga operazìone di scrittura, che a
volte dura fino a 10 ms.
ll ciclo inizia caricando in EEADR l'indirizzo dellacella e in EEDATA il byte da scrivere. Se decidiamo chedurante il processo di scrittura non si possono accet-tare interrupt, si deve mettere il bit di enable globalGIF - O In nrrpctn modo si evita che durante l'onera-,, I YvLJLv 'LL
I vVL' u
zione di scrittura, la CPU venga sviata verso un'altraroutine al verificarsi dell'interrupt. In seguito dobbia-mo autorizzare la scrittura, mettendo il bit WREN = 1
nel registro EECON'1;poi dobbiamo includere nel pro-gramma una sequenza di istruzioni che caricano in
primo luogo il valore 55 H in EECON2, in seguito AAH nel medesimo registro. Terminata questa sequenza,si pone il bit WR = 1 in EECONl e si inizia la lungaoperazione di scrittura.
0x03
0x09
0x08
0x08
Euquequ
equ
shfus,rpO
0x0r
eeodr
shfus,rpO
eecon!,rd
shfus,rp0
eedofo,w
MICROCONTROLLERMemorier dei deiri EEPROilI [lII
Quando termina la scrittura, nel registro EECONl il
bit WR sarà uguale a zero, e I flag EEIF a 1. Questo flagsi pone a 1 automaticamente, al termine del ciclo di
scrittura e, leggendolo, possiamo quindi sapere se il
processo è terminato. ll flag EEIF dovrà essere poi reset-
tato dal programma.
Dopo ogni ciclo di scrittura è raccomandabile verifi-care l'indirizzo della EEPROM, per vedere se e stata
scritta correttamente.
Creore un progrommo per scrivere il volore Oxff
oll'indirizzo dellq EEPROM 0x32.
Si suppone che primo del progrommo si siono specificoie
le direftive che ossegnono oi
regislri di controllo impiegoti gli indirizzi corrispondenfi
{eeodr, eedolo, slolus, inlcon, eeconl, eecon2}.
Tabella con i valori che assumono i registri che gestisconola EEPROM dopo un Reset.
(x: sconosciuto, u; non cambia, q: dipende dalla condizione).
sempre valore zero in caso di lettura. Infine i bit RD, WR,
WREN, ed EEIF del registro EECONl, prendono un valo-
re casuaìe dopo un POR oppure un valore che dipende
dalla condizione precedente (q) se il Reset dipende da
altra causa. Nella tabella riportata qui sopra si riassumo-
no i valori di questi registri dopo i vari tipi dr Reset.
I principali fabbricanti di circuiti integrati e di memorie,
offrono EEPRON/ con differenti capacità. Microchipdispone di tre grandi famiglie di memorie EEPROM:
tamiglia 24xxxx: Memorie EEPROM per bus I2C a due linee.
5CA
5CL
Adattamento delle memorte EEPROM 24xxxx per bus 12C
alle linee di l/O dì un microcontroller.
Gt2c
&.egisfre
EEDATA
Vc!*ea dapoRest*f FOR
xxx xxxxxx xxx---O xO(Xt
lfclore de:peshr? Rese9
UUUU UUUU
UUUU UUUU
---O qOOO
. EEADR
;EÈCONI
bcf
movlw
movwf
movlw
movwf
bsf
bcf
bsf
Sequenzo di scritturq
;rp0 = 0 per occedere ol bonco 0
iw = 0x32
P, = eeodr
iw = 0xff
ry = eedoto
ppO = | per occedere ol bonco I
;gie = 0 per proibire inlenupf
ryren ' I per permellere lo scrilfuro
nello EEPR0M
,n* = 0x55
ff = eecon2
iw = Oxoo
;w = eecon2
ryr = I inizio ilciclo di scrilluro
movlw
movwf
movlw
mowvf
bsf
shfus,rpO
0x32
eeodr
uxIT
eedqta
slofus,rpO
inlcon,gie
eeconl,wren
uxcl
eecon2
Oxo
eeeon2
eeconl,wr
I bit dei quattro registri che partecipano alle operazioni
della EEPROM, prendono dei valori predeterminati
dopo il Reset. Questi valori possono essere diversi se il
Reset è dovuto al colleqamento dell'alimentazìone(POR) o ad altra causa.
Dopo un Reset provocato da POR (Power On Reset)
i bit dei registri di EEDATA e EEADR prendono un valo-
re casuale (x) oero se il Reset è dovuto ad un'altracausa, i bit non cambiano valore (u). ll registro EECON2
non è implementato fisicamente, e i suoi bit hanno
Voo
TNICROCOlllemoriei dcrl CCPROfrfi
R
Collpoamcnh rlplle memnrie LIPROM 93r<xralle linee di l/a del microcontroller.
In queste famiglie è sufficiente riservare due o tre filiner realizzare l'interscambio d'informazioni con la
memoria EEPRON/. Questo aspetto e molto importantequando si collega uno di questi dispositivi ad un micro-
controller con un numero limitato di linee di l/O, per
ampliare la sua memoria. ll trasferimento si realizza in
sprip spnrrpndo rrnn dei nrntnrnlli :hitrr:lj deil'indu-'stria, come illustrato nella figura.
Nella famiglia24xxxx predisposta per il bus l2C esi-
stono dispositivi come la 24C00, che ha una capacita
di soli 128 bits, raggruppati in bytes, con una ve'ocitadr scrittura di 4 ms e una frequenza di 400 KHz, ed
altre come la 24\C64SC che dispongono di 64 K bitscon rn tcmno di srrittrypS di 5 ms e 400 KHz. Entrambii modelli supportano '1.000.000 di cicli di
scrittu ralca nce I latu ra.
Della famiglia 93xxxx rlcordiamo il modello 93AA86,--^--;+- ^ri 1É Khits rrn temno di srrittura di 5LUI I Ul lo LovoLlto ul I u r\urLr, uil LLr I rpv ur rLl
ms p lna f reouenza di 2 MHz. La tensione di alimen-tazione puo essere compresa fra'l,B e 5,5 VDC, e il
numero di cìcli dr scrittura/cancellazione garantito è di
1 .000.000.Della famiglia 25xxxx, progettata per supportare il
protocollo SPl, sprcca il modello 25LC640, con 64 Kbits
di capacita, una velocità di scrittura dì 5 ms e 2 MHz di
Collegamenti di otto memorieEEPROM 241C64 per ottenere una capacita di 51 2 K bits.
frequenza, tensione di lavoro fra 2,5 e 5,5 VDC con
1 000.000 di cicli di scrittura/cancellazione.
In alcuni casi sono necessari grandr quantità di
EEPRON/, e per queste situazioni si possono configura-re insiemi di dispositivi controllati in modo indipenden-te da diverse linee di indirizzamento, che utilizzano gli
stessi l/O del microcontroller. Nella figura e mostrato un
circuito formato da otto memorie da 64 Kbits ognuna,per ottenere un totale di 512 Kbits.
DO/DI
CLK
c5
ffii:.ÉllSilllllEL Algzlrtrurffi ^^]ilffi, Az
I:* DIREZIONEsr*ah
-7:
VDD
t2c
G'*,.,
Gi'sPl
Collegamenti della memoriaEEPROM 25xxxx per il bus SPl, ad un mtcrocontroller PIC
'i ;:, ;, r,':,,,.'',,',i,,1 ::,t:rr].: .,'.'rr.,.:::.,
Ppr nntpr d:rp rrn'ìde,e delle immense nossihilità di uti-vvJJr u
lizzo che hanno le memorie EEPRON/, presentiamo un
caso pratico. Abbiamo scelto un gioco sviluppato conun PIC 1 6FB4 che controlla una tastiera e un vtdeo LCD.
ll Lingo Numerico è un gioco nel quale bisognaindovinare un numero di 5 cifre generato in modocasuale dal gioco stesso. Con questo scopo, il micro-controller comunica al giocatore, tramite l'LCD i digitche sono stati indovinati, e che occupano la posizione
corretta, e quelli che sono stati indovinati, ma che nonoccu0ano la oosizione corretta.
Esistono due livelli di difficoltà che si differenzianoner il temno tnf,rlp di rrri si disnonp npr indovinare il
numero giusto. Se si indovina il numero prima che il
tempo sia scaduto, sul display LCD appare la scritta"HAl V|NTO", seguita dal punteggio, che equivale al
numero dei secondi che mancano allo scadere del
tempo massimo.
Schcma elefrrtr o dell annltcaz,one.
ln ouesta annlicazione si utilizza la EEPROM moltofrenttentemente ad esemnio qerve npr memorizzare siail nnme di ri:srr rn niocatore sia il nome del crrocaîore
che ha preso piu punti, pero noi abbiamo pensato ditiilizzarlz nor <rrirroro ìn nnni n:r+it: il nrrma"^ .a."îl^u-rtLLut ru pLr rLr rv!.L I w9ril PorLtLo il f tuItctu Ld)udtcnanar2t^ el;l ninrn
Lo schema elettrico e molto semplice. Le B linee della
Porta B supportano la tastiera matriciale 4 x 4, RB0-RB3
le frle e RB4-RB7 le colonne; inoltre queste linee servo-
no, in forma multiplexata, per trasferire informazioni al
di<.nl:v ICD lremrtp i cr rni innrocqr DO-D7 RAO RA1 o
RA2 nestisrnrn ispnn,rli di controllo del LCD.
Routine per colcoloreil numerb cosuole.Ogni volta che inìzia una partita, il Lingo Numericogenera un numero casuale di cinque cifre che deveessere temporaneamente memorizzato negli indi-rizzi della EEPROM che vanno da 10H a 14H. Ognicifra viene memorizzata con il suo codice ASCll, eIa routine fa uso del Timer 0. situato all'indirizzo00H della EEPROM, e delle variabili DATO_A e
DATO_B della memoria RAM"La formula oer calcolare il numero casuale uti-
lizza il valore del Timer 0, che cambia continua-mente, inoltre utrlizza un " numero base" chedipende dal vaìore orecedentemente calcolato.
Questa formula è Ia seguente:
Numero cssuqle = (Numero bose' I73 + 49 + Timer 0) %10
Di seguito riportiamo Ia routine corrispondente in
cui sono presenti molti commenti.
RAND dÍ EIADR ;Punlotore oll'indkizo del "numero hse" nello EEPROM
P34 NilICROCONTROttER
r ît.I f-------------- i.: I !"*--*-::;\_t_t_t_r*l*t&ta1
ro '1P "1f "lf :1 .-.
fo etfo clÉ ùtfo +t,.
=-r=T=T=TapqpqpqFq, l, ,! t' ,!i-
f*!o"P*P*.'.
TASIIERA MAIRICIALE 4X4
.!,,
-:::Èi6if-ffi"ilFffiI | <'!.J'j,{:
In*, f IJ*--
movlw h'10
movwf fSR
bí $Alus,s
bsf ÍEDATA,RD
M SIATUS,s
movf EEDAIA,W
movwf DAIO-A
R_8UC movlw h'lfsubvrf FSR,\{
btfrc STAIUSF
golo l+lN
mov{w d'173'
movwf DAÍ0-B
R-À{U oddwf DAT0-A,W
decfsz DAIO-8,F
goto R-MUI
oddh d'49'
oddwf TMR0,W
movwf DAI0-A
R-DIG oddlw' d'10'
btfis SIAIUS,ÍC
goto R_DIG
oddhv h'39
movwf lNtr
iid' t$Rl
oolo R BUC
R tlN movf DAI0 A,W
l,lovwf IEDAIA
Coll GÎAI.E
flefurn
;Selezioniomo il Bonro I
Éomondo di leturo
;Selezioniomo ilhnco 0
f,orliomo il numero bore in DAIO-A
,'Vedfichiqmo seà sbto kminob ilnumero
;['hrminob?
;5i
fork{iomo DATO-B on ilvolqe 173
;Sommo di DAIO-A con W
f,'sloio somrnob 173 Yolh DAIO-A?
;lS
;Si; Sommo 149 ol numero
;Sommo il volqe del Timer 0
;Si stobilisre il nuovo numero bose
;5i sommo I 0 o W sino o che non genero riporlo
Suesto fo sì che il numero sio do 0 o 9
;5i converle in ASCII il numero
;5i conhollo lo posizione oll'inlemo del numero
;Si intremenh lo psizione del numerorl,
;)r npeE srno 0 J volle
;Scritluro del nuovo numero bose nello EIPR0M
;5i coriro il nuovo numero bose in W
;Porliomo il nuovo numero nello EEPR0M
inrrm J',.r', r;nai'r"' oorllJn irp*ol.l
MICROCONTROtLERUtilizzo e progrclmmclzione deller EEPROIiI
I m pa ri a m o ad uti tizzarele EEPROM
computer e i sìstemi informatici attualmente uti-lizzano le memorie come elemento base per
supportare le loro applicazioni. f importanza diquesti dispositivi è enorme, e imparare il loroutilizzo è fondamentale a tutti i livelli. Fino ad
ora abbiamo studiato la struttura e i registri che con-trollano la memoria EEPROM del PlC16FB4. Si tratta di
fare un passo in piu, e imparare ad utilizzarla mediantei programmi adeguati.
Anche se la programmazione del PIC e ancora infase di apprendimento, dato che abbiamo solo iniziatoad utilizzare le istruzioni principali del microcontroller,crediamo che sia di notevole aiuto, una volta studrato a
fondo un dispositivo, provare ad assimilare le routinesche lo devono governare. Non importa se non capiremo
tutte le parti del progetto, quello che intendiamo fare èmostrare pezzi dedicati a leggere e scrivere la EEPROM.
Concentriamoci su queste parti.
lllustreremo ora un progetto che ha una vasta applica-zione negli stabilimenti, per gestire gli ingressi del per-
sonale. Lo svilupperemo sopra un potente ed economr-co sistema di sviluppo chiamato "Micro'PlC Trainer",che è stato progettato e commercializzalo dalla ditta di
lngegneria di Microsistemas Programados S.L.
Un sistema di sviluppo è uno strumento fondamen-tale per la realizzazione di progetti, che in questo caso è
stato dedicato ai microcontroller PIC della qamma
P35
Le memorie sono un chiaro esempro di circuiti ad alta scala di integrazione
,il..,,,,,,,,,,,,,"',",,''.,,.,,,.,,'," *t :@*.-:ì.ìì:rrtr,r:rir:i:l:.,:,:2lR,,t,tî*F*tr,.3 NilICROCONTROTlER
tuffi4lwffidw# Utilizzo e progrdmnrcrzione dello EEPROll,t
:Il:;:
$
J
Fotografia del sistema di sviluppo Micro'PlC Trainer.
media. Sostanzialmente è formato da tre elementi:
1) uno scrittore/cancellatore di programma del PlC,
2) un insieme di periferiche utilizzate nelle applicazioni
con microcontroller, 3) circuiteria ausilraria che com-nrondp :limpnt:tnrc rircuito di Reset e crìstalìn di nrrar-vrL I rvL
zo. La scheda Micro'PlC Trainer e collegata alla porta
parallela del PC e si controlla facilmente dal computercon il software che la correda.
Data l'efficacia e le possibilità che off re questo stru-
mento, dedicheremo più avanti una sezione completanpr dpscriverne le caratteristiche e l'utilizzo.
Si vuole emulare il funzionamento delle note macchine"ELIN/INACODE" che sono usate in molti esercizi com-
merciali per ordinare le file dei clienti. Nel nostro caso,
come video informativo utilizzeremo un display a sette
segmenti. Sarebbe stato meglio ulilizzare il display
LCD, di cui dispone anche il Micro'PlC Trainer, pero
data la sua complessita, ne parleremo più avanti. Sopra
il display sara mostrato il numero corrispondente al
turno attuale.
^ LL:--^ - 'J:-^^-i-inne lrn nrrlsante rhe una voltaHUUldlllu d ul)Pu)lzrvr rE ur I purJcr rLc Ll rq/
premuto, incrementa iì turno e prepara al seguente.
Questo pulsante chiamato RAO e collegato alla linea 0
della porta A.
In questa applicazione dovremo risolvere il proble-mà .hp qnrflp npl rasn 6j; Una mancanZa momentanea
di energia elettrica, o allo scollegamento involontario
deila nacchina. Con questafinalira sr imnrpo: la'rremo-ria EEPROM del PIC 16F84,
che memonzza l'ultimon u me'o visu a liz,,a ro, in
modo che in caso di man-
canza di al,mentazione, per-merto eli rinrandere î^..^++1tttc{Lq ut rPtcttuctc LUrrrrrc-
mpnlp il rnnlpnnin con:lritnrno dell'enerai: Comenllnîn di n)rton7) roncida-PUrrtv ur vq LErrzq !vr Jiug-
ri:mn rho nrr:ndn <i inizi: l:rrurrrv Lr rr, vuurruv Jr il ll4lo lo
^.i--,,^l+- l- ----l^,,p|md vorLd, td mdccn na Inl-
zi: il rnntennìn d: O
N r^l - -^^, ,^^_- r^rle iStrUZiO_t\cilo )cquErrzo uclni, prima di iniziare rl pro-
gramma prìncipale, esistono
una serie di blocchi e di soubroutines che descriviamo
dr seguito:
1o. Intestazionelnrlr rflo lo dirottirio 661 l'-..^-hlar l: lihrari: doi ranictriilrLruuL rL uilLLLrvL VLr lO))Cl llUlEf, lo llUlEllo uLr rLyrJLl I
interni del PIC e le relazioni delle etichette utilizzate.
2o. Subroutine EE_WriteÈ una ruotine incaricata d scrivere un byte caricato ini-
zialmente nel registro EEDATA nella posizione ountatada EEADR
3o. Subroutine EE_Read
I eooe il dato ountato dal contenuto di EEADR e lodeposita in EEDATA.
4". Tabella di decodifica TabellaÈ una ruotine che converte il codice BCD, presente sui
4 bits meno significativi del registro W, nel codìce adat-
to per essere visualizzato sul dispìay a sette segmenti.
5o. Subroutine di ritardo Delay_20_msRaslizza rrnr iomn^r'pzaztano rli 7O m< 56p nliminrrnI\EOlfZZq Utlq LEtttvwttLLoLlvllE ul 4v lll) Pql EllllìllldlE
l'effetto di rimbaìzo tipico dei componenti elettromec-canici, come il pulsante RAO.
6o. Programma principaleln questo programma si gestiscono i blocchi precedenti
per risoìvere l'applicazione.
EE Write
Tobello
p=lóF84
"Plóf84.lNC',
0x0c
sTAruS,RPO
EECONI,WREN
b'0l0t0t0l'EECON2
b't0!0l0l0l'EECON2
EfcoNl,wR
EECONI,WREN
EECONI,EEF
Woit
IECONI,EEIF
STATUS,RPO
STATUS,RPO
EECONI,RD
STATUS,RPO
Conhtore
;EE-WRITE: E uno routine che scrive un byle nello memorio EEPROM. lindirizzo sqrù contenuto nel registso;EEADR e il doto è stotro precedentemente introdotto in EEDAIA
list
lntlude
0x00
inizio
0x05
org
gob
or9
;Tipo di processore
;librerh con definizioni dei regiski inlerni
;Definisce lo voriobile conlqlore
;Vector Reset
Solto per solvore il veffore di inlenupf
;Seleziono il boncol
;Permesso di scri*uro nello EEPROM
;Sequenzo di sicurezzo, si coriro 55 e oo in EECON2
;Ordine di inizio dello scritluro
/mpedisce nuove scritlure
;Testo il flog per vedere se lo scrifuro è terminoh
;Lo scrilfurq non è lerminolo
;Lo scrilfuro è lerminoh e si resetto il flog
;selezione del bonco 0
;Seleziono il boncol
;Ordine di lefiuro
;Selezione del bonco 0
;Disposizione sullo tobello in bose ol PCI e W
;Digit 0
;Digit I
;Digit 2
;Digit 3
;Digit 4
;Digit 5
;Digii ó
;Digit 7
;Digit I;Digit 9
Woit
bs{
bs{
movlw
mowvf
movlw
movwf
bsf
kfbtfss
golo
kfbcf
relurn
oddwf
redw
refiw
reilw
reilw
reilw
retlw
retlw
retlw
retlw
retlw
PCt F
b'00llltit'b'000001 l0'yor0r r0r Ib'0t00t I I I'b'01 I00l l0'b'01 l0l t0t'b'0lllll0t'b'000001 I I'b'olillilt'b'0t l00t I I'
;EE-Reod: Rouline che legge un byte nello EEPROM. Nel registro EEADR si corico |'indirizzo dove ondqre o;leggere, e in EEDATA si corico il dotro letto.
EE Reod btbsf
bcf
refum
;Tobello: questo routine converb il codice BCD presente nei 4 bit meno significotivi del registro W nel formoto;qdqtto od essere roppresenhto nel disploy o 7 segmenli. ll codice di 7 segmenti, riiorno onche nel regisho W;con l'isfuzione retlw.
1qi1l]!1!1]!1!!]*R!t!{lul!utiutSili;!]ii::].]::]g: ìrlillìììììì;ìiìììì;:i:*Nrìt::::1,ura::]:]:*stsuìrì:uutììt:u1tffi r:9u,rrrl
,,,,,fl,,,****o*PI TNICROCONTROTTER
Utilizzo e progrermmqzione dellcl EEPROM$iÌi
ItÌ
.,111Ì
,,j.::t
1:11i'
Deloy_2O_ms: Si lrotlo di uno routine che lemporizzo 20 ms per eliminore l'effetto rimbqlzo. doi dispositivi elet-tromlcconici. Se il PIC lovorq o 20 MHz, il TMRO si increménh ogni microsecondo, quindi contondo 20.000microsecondi otterremo un lempo equivolenle q 20 ms. Se sceqliomb il volore di 128 per il divisore di frequen-zo, il TMRO dovrà contqre l5ó impulii che equivolgono o Ox9cin esodecimole, e dolo èhe il TMRO è oscendente,dovrò essere coricoto con il suo complemento o l, cioè 0xó3 in esodecimole.
Deloy_20-ms
Deloy-20_ms_l
lnizio
Woil_O
Woil I
INTCON,TOIT
0xó3
TMRO
INTCON,TOIF
Deloy_20_ms_l
IMCON,TOIF
PORTB
STATUS,RPO
TRISB
b'0001 1 'il 1'
TRISA
b'000001 t0'OPTION-REG
STATUS,RPO
EEADR
EE_Reod
0x09
EEDATA,W
STATUS,C
Ini_0
lni_l
Contotore
!oop
EEDATA,W
Contolore
Contolore,W
Tobello
PORTB
PORTA,O
Woit_O
Deoly_20_ms
PORTA,O
Woit_l
Deoly-20_ms
Conlolore,F
,10
Conhtore,W
sTAÎU5,2
Contofore
Contotore,W
EEDATA
EE_Write
Loop
Ini_0
Ini_l
Loop
bcf
movlw
movwf
clrwdt
btfss
goto
bcf
return
chf
bsf
clrf
movlw
movwf
movlw
movwf
bcf
chf
coll
movlw
sub#btfsc
golo
goto
clrf
golo
movf
movwf
movf
coll
movwf
clrwdt
btfss
goto
coll
clrwdt
btfss
goto
coll
incf
movlw
sub#btfsc
clrf
movf
mowvf
coll
golo
end
;Metle o zero il flog di overflow del TMRO
;Complemenlo o I di 15ó {0x9d
;Corico il IMR0
;Refresh delWokhdog
;Verifico se il TMRO ho finito
;Non ho finilo
;|l TMR0 ho finito, si reseth il flog
Jnizio del progrommo principole
;Concello il lotch di uscito dello Porto B
;Accesso ol bonco I
;Configuro lo Porto B come uscito
;Configuro lo Porto A come ingresso
/mposto il divisore di frequenzo del TMR0 o ,|28
;Seleziono il bonco 0
;Corico l'indirizzo 00 in EEADR
;Legge il byte dello EEPROM
i
;E moggiore di 9?
;E moggiore di 9 e si pone o 0 il contolore
;Non è moggiore di 9
;Metle o zero il conlotore
;
;lniziolizzo il contotore
;€onverte il contotore in codice o 7 segmenti
;Visuolizzo sul disploy
;Refresh del Wotchdog
;RAO = l?
;Nonèo l,ofiendere
;Temporizzozione per eliminore il rimbolzo
;Refresh del Wotchdog
;RA0 = 0?
;Nonèo0,ottendere
;Eliminore il rimbolzo. C'è stoto un impulso
Jncremento il conhlore
;
;ll contotore è moggiore di 9?
;5i è moggiore di 9. 5i pone o 00
;
;Memorizzo il nuovo volore del conlotore nello EEPROM
;Fine del progrommo
Le risorse ausiliarie
I PIC 1 6F84 ha il soprannome di "f ratellopovero" della famiglia. Ha poco di tutto, ma
nonostante questo, e molto piu utilizzatodei suoi fratelli, che hanno più risorse. Ha
avuto grande successo e la spiegazione arri-va dalla sua semplicità, economia e media delleca ratteristiche.
Prima di passare a studiare gli interrupt, così vitalinelle applicazroni del mondo industrrale, abbiamo con-siderato molto interessante fare un piccolo ripasso dellerisorse ausiliarie e comolementari che circondano il
Rlpasso
+Voo
Circuito base per generare un Reset premendo un pulsante
nostro m icrocontrollerMonty. Queste risorse
che funzìona come cervello di
sono:
-I
{POR), per attivazione del piedino MCIR # e per overflow del WDT.
38 La parola di configurazione.
ll Reset inizializza il sistema, e
il processore inizia ad eseguireil programma dalla primaistruzione, partendo da unostato noto di tutti i registri. È
un avvenimento vitale a cui si
arriva nelle seguenti situazio-ni:
1'. Quando si desidera provo-
carlo esternamente.2o. Quando si collega l'ali-monfrzinna nar lr pImavolta.
3". Quando il programmasr e "piantato" e voglia-mo che ricominci dal prin-c rp ro.
4". Quando trascorre un certotempo in stato di riposo.
L'applicazione deì livello logi-co basso al piedino 4 del PIC
genera un Reset. ll circuito più<omnliro rho normotto ì: c":JLr I rPilLL Lr rL PLr I r rL LLg lo )uo
attuazione è mostrato nella
figura.
îlt1#.|||24;waa.aa/ataaaaiait.aaa
REGISTRO DI STATO
IRP RPI RPO TO# PD#
in stato di "riposo", oppure stia funzionando in
modo normale, quindi eseguendo delle istruzioni. Nel
primo caso il bit PD# del registro dì Stato si pone a 0eil bitTO#a1
Quando l'attivazione del l'MCLR# si origina col pro-
cessore funzionante in modo normale i tre bit meno
significativi del registro di Stato passano a 0 e i rìmanen-
ti non cambiano, così come è rappresentato nella figura
IRP RPI RPO TO# PD# DC
x: Indeterminoto
ir"", ,,n, ì*,r'ior," o r' 0,",
u: Non cqmbio
Quando si produce un Reset per I'attivazione del pin MCLR#, il bit PD# del registro di Stato si pone a 0
REGISTRO DI STATO
IRP RPI RPO TO#
u: Non combiq
PD#
Valore che prendono i bit del registro di Stato quando si attiva MCLR# durante il normale funzionamento del microcontroller
Premendo il pulsante e originando tl Reset, puo
succedere che in quel momento il processore si trovì :,', ,,. ,
ln questo caso la reitiztalizzazione del processore si pro-
duce quando si collega per la prima volta l'alimentazio-ne. E chiamato Reset per POR (Power On Reset).
Questo Reset è generato con un leggero ritardorisnptln :l momentn doll'ennlir:zinnp doll'alimenla-I rrvL LLv
zione, con il f ine di permettere che la tensione dell'a-limentazione stessa sì stabilizzi al suo valore nomina-le. È un ritardo di 72 ms qenerato dal temporizzatore
REGISTRO DI STATO
.aa-.t*ffi |ffial*,ia1tt:aLttiltlltLa
PWRT (Power-up Timer) Inoltre con l'obiettivo di
ottenere la slabilizzazione della frequenza del funzio-namento del sistema, si aggiunge un altro ritardo di
1.024 impulsi del segnale applicato in OSCl. Lo pro-
duce il temporizzatore OST (Oscillator Start-up Timer).
Cosi quando si inizia l'esecuzione delle istruzioni, la
f requenza di lavoro e stabile. Come si vede nella figu-ra, dopo che si e prodotto questo tipo di Reset, ibitPD# e TO# restano disattivati, sarebbe a dire a 1, nel
registro di Stato.
.l , ,. :: .,:, l:: , ri. l',,; .
Come ricorderemo il Watchdog (WDT) è un contatoreche si incrementa al ritmo della frequenza dell'oscrllato-
re principale, e quando va in overflow origrna un Reset.
ll WDT viene caricato con un valore, ed entra ìn funzio-ne all'inizio del programma. Prima che vada in over-
flow, lo si deve resettare mettendolo a 0. Se il flusso di
controllo entra in un ciclo infinito, o rimane in attesa di
un segnale che non riceve, il Reset del WDT non arriva
in tempo e l'overflow reinizzializza il processore.
lloverflow del Watchdog si puo originare quando il
processore f unziona normalmente o quando si trova in/,.+.^/.Jt\!,t' ;^ .+-t^ ^1,,5Ldruuy , IrsLdL(J ur Iposo.
ll bit TO# del registro di Stato va a 0 quando il
Respt e stato nrovocato dall'overflow del WDT. Nelle
figure annesse possiamo apprezzare la differenza dei
valori che prendono i bit del registro di Stato, in
accordo con lo stato del processore quando il WDT va
in overflow.
Molte volte r sistemi basati su microcontroller devono
rimanere inattivi per molto tempo, aspettando che^,,-r-,,^^ ri f ---;- r-,,^.Àre c)|es,tn e il r:so delle mac_\-.luolLullu ll loLLlo lovvrorL. vuL)rv L il Lqrv \
chine distributrici di prodotti vari come caffe, bibite,
srgarette, ecc. Durante lunghi perrodi di tempo queste
macchine non fanno nulla, fino a quando un cliente sì
avvicina, introduce una moneta e chiede qualcosa. Con
lo scopo di ridurre al minrmo il consumo di energia, si
induce il microcontroller ad un sonno profondo, nel
^"^r^ r- -"- -++;"r+r À 'idotta notevolmente. ll PIC che èrludrc rd )ud d LUVTLd ( |
in questo stato di riposo o di basso consumo, si suole
dire che sta dormendo
IRP RPI RPO TO# PD# DC
u: Non combio
,otrl', ,, ruì* reg s;tro di stato i,r,uro:o *0,,
IRP RPI RPO TO# PD# Z DC
u: Non cqmbio:li
Registro di Stato dopo il debordamento del Watchdog quando il processore e in stato di "riposo".
c
REGISTRO DI STATO
REGISTRO DI STATO
PAROTA DI CONFIGURAZIONE
Struttura interna della parola di configurazione.
Per produrre questo stato di relax, basta eseguire ì'i-
struzione SLEEP Pertanto si ottiene che l'oscillatoreprincipale e le linee di l/O si congelano mantenendo il
<rr^ (f:tn nrororlonto
Per togliere il processore dallo stato di riposo esisto-
no due alternative: attivare esternamente il piedino
MCLR#, o fare in modo che il Watchdog vada in over-
flow, se è rimasto attivo quando si entra nello stato di
riposo, visto che non si eseguono istruzioni e non rice-
ve refresh. Un'altra possibilita per togliere il processore
dallo stato di riposo, consiste nell'annullare l'alimenta-zione per ricollegarla nuovamente, producendo un
Reset POR.
' r : ' ', ' '
La parola di configurazione occupa una posizione spe-
ciale della memoria di programma FLASH, la direzione
2007 ll, icui '14 bit regolano le funzioni vitali del pro-
.pssore l'oroanizzazinno di nrrpstn indirizzo della
memoria è presentato nella figura.| 10 bit meno significativi, denominati tutti CP
(Codrce di Protezione), sono incaricati di proteggere
l'accesso alla memoria dei codici. Se CP è 0le rstru-
PAROTA DI IDENTIFICAZIONE
zioni del programma non possono essere lette, al
contrario. se CP è '1 il programma memorizzato nella
FLASH si puo leggere. Con i due bit meno significa-tivi, FOSC0 e FOSC 1 , si determìna il tipo di oscillato-re che ulilizza il processore, secondo la seguentecod if rca:
ll bit WDTE abilita o disabilita il funzionamento del
Watchdog. 5e il WDTE è a 1, il Watchdog entra in
f unzione. In ultimo il bit PWRTE# abilita il temporiz-zalore PWRI che ritarda di 12 ms il Reset per POR,
per dare il tempo alla tensione di alimentazione di
stabilizzarsi. Se PWRET# è a 0, lavora come tempo-rizzalore.
ro
Sono quattro posizioni della memoriaFLASH che occupa n o induizzi compresi f ra
la 2000 H e la 2003 H. Sono solo accessi-
bili in lettura e scrittura durante rl proces-
so di memorizzaztone del programma.
Dei '14 bit della parola di identificazione,sono validi solo i 4 meno significativi, e rn
essi, il programmatore puo scrivere codici
di identificazione, numeri di serie, dati
sulla fabbricazione, modelli, ecc. Nella
figura si possono notare i bit validi per
ogni posizìone.
2000H2001H2002H2003H
RC1 I
XT0
Nelle parole di identificazione sono validi solo i 4 bit meno srgnificativi
P39
:
PROGRAMMA PRINCIPALE
CALL SUBROUTI
Operatività di una chiamata a subroutine
i:!i
PROGRAMMA PRINCIPALE
ROUTINE DI INTERRUPT
Un interrupt è un awenimento asincrono che si produce in modo imprevedibile.
RETURN
Che cos'èun interrupt?
'-r't
una fermata del programma in
" f:<o fli o<err lzinnn nar ..1+.r^roJE ur LJLLU4lul lc, Pcl )oltdlc,+ÉrA=É,i:i' '" " a realtzzare una routrne spe-;ft,
crale che riguarda la causa che
ha prodotto l'interrupt. Una,,^r+- -^*^r^+-+- r- rOutine dediCatavutLc LUt I tPtE tc Lq ro
all'interrupt si rìtorna al punto di par-
tenza del programma principale. Si puo
dire che l'interrupt ha le stesse conse-nrpnTp d, rrna "rhi:mata a subrouti-ne". Quando in un programma trovia-mo un'istruzione con CALL SUBROUTI-
NE 1, iniziano una serie di azioni, che in
forma riassunta si riducono ad un salto
all'inizio della subroutine e quando sara
stata eseguita la sua ultima istruzione,
che è quella di RETURN o ritorno, si
torna all'istruzione che segue a CALL
SUBROUTINE 1. Nella figura si puovodoro nr:fir:monto il componameîrodella chiamata a subroutine.
l'imnieoo delle srrbroutine evita di
ripetere nei programmi alcuni procedi-
menti di uso frequente. Invece di ripe-
terli tante volte quanto serve, si scrivo-no una volta sola in forma di subrouti-
,i .i ^--^^^ î++rî,,^,-^ ,,^- -A:-I tc, d Lur )r dLLcuc oLU ovcr)u ur ro Lrro-
mata (CALL).
,r, .lli. liiit:i-r.l r'.i tt,,:,, j,l:,i,t.j
Una chiamata a subroutine e una rottu-ra del flusso del controllo delle istruzio-
ni del programma principale, di formasincrona. 5i sa quando viene prodottanorrhp psnliritampntp invocata con l'i-struzione CALL.
Un rnterrupt è una rottura "asincro-
na" del flusso di controllo. Non si sa
quando avviene perche le cause dell'o-rigine sono dovute a circostanze non
'?;i:{:1:1r1 ,t"l
previste nelle istruzioni del pro-
gramma. Ad esempio, una
causa che provoca un Interrupt:l nrnressnre e l'ettivazione
mediante un livello logico alto,
di un piedino del microcon-
troller.Orrpstn livplln altn ootrebbeYULJLV
essere prodotto da un compa-ratore, che riceve come ingres-
so il segnale analogico di un
sensore di temperatura; il vaio-"^ ...l^l .^^^-l^ h- .,,^^"-+^ l-tc uct )c9trdrE Id )uPcrdru rd
tersione di riferimento, perche
la temperatura a sua volta ha
superato la soglia prefissata. llvalore della temperatura varia
in modo imprevedibile A seconda dell'antenna che ha rtlevato l'ostacolo si produce un interrupt differente,con le corrispondenti strategie.
Gli interrupt costituiscono il procedimento più rapido
Prendiamo ad esempio il microrobot a sei gambe
che cammina, mostrato nella figura, con una coppia di
antenne frontali che funzionano come sensori e che
rilevano gli ostacoli sulla traiettoria.ll microrobot a sei gambe e controllato da un micro-
rnnirnllor rho o<on1o 1n nrnnr:mm: nrinrin>la inr:riJn programma pflnclpàte, ilìLd|-cato del movimento degli arti meccanici, per seguire
ed efficace del microcontroller per il trattamento degl
eventi del mondo esterno
Se oualche oarametro o circostanza ha influenza
sullo sviluppo del programma, l'rnterrupt è il mezzo con
cui il microcontroller lo qestisce immediatamente. La
parte di programma dedicata alla gestione di questo una trarettona.Se ad un certoevento si chiama "routine di interrupt" punto del cammino, l'antenna di
sinistra tocca un ostacolo,viene aoolicato un livello logi-rn :lin :À rrnn Àai niorlini nlolLU OtLV OU UItV UEt PtEUil il Ugl
microcontroller, e viene gene-
. rato un interrupt.A quel punto viene abban-
donato il programma princi-^-r^ ^ -; --r+- -! Una fOUtinePO|E, s Jr )Orrq ou
, che si chiama RUT_SX, che
contiene una procedura perraaltzz=ra lr c+rarógia di fetfO_
marcra e aggrramento, per, evitare l'ostacolo. Nel caso il
. contatto fosse avvenuto sul-
'l'antenna destra, il livellolooico sarebl-re stato applica-to ad un altro piedino, e--"^l-.L.^ a+-+r l-n:i -+- l- .^,,)dtcuuc )tdLd tdilLtdLd td tuu-
tine RUT DX con un'altraL? antenn:, o flli, front3li
lel microrobot, funzionano come sensori per la rilevazione degli ostacolr strategia per aggirare l,osta_
PROGRAMMA PRINCIPATE
RUT SX
1
i
:
RETURN i
RETURN
RILEVATORE DESTRO f_
RUT DX
' -,':
colo sul lato destro, come si può vedere nella figura. In
questo esempio si producono due interrupt differenti,perché ogni antenna del microrobot fa riferimento ad
un piedino diverso del microcontroller, questo permettei salti a due routine distinte.
dalla subroutine, o dalla routine di interrupt, comeespresso graficamente nella figura.
Lo Stack è il luogo dove si depositano tempo-ralmente gli indirizzi di ritorno al programma prin-c ipa le.
,;,1''it 1" ,:,1i ',.;''' ''.n'i,ir,,i;,
Per rendere possrbile il corretto funzionamento degliinterrupt, è imprescindibile l'utilizzo dello Stack. Comericorderete, è un insieme di 8 registri, dal livello 'l al
livello B, che funzionano con una struttura LIFO (ultimo
ad entrare, primo ad uscire) associata al PC.
ldati in arrivo dal PC sono caricati nel livello 1, e
quelli scaricati in uscita verso il PC sono ancora quelli
del livello 1, come si vede nella figura.ll carico del valore del PC nello Stack avviene in
*^,.1^ r,,+nm r+irn ^r r>nrin ci oconr ro r rn' j5{pg7 jgpgItuuu duLUrroLrLU,9ucruv )r sJE9uE url
CALL, o quando si origina un interrupt. Anche lo scari-
co del livello 'l dello Stack sul PC avv ene in modo auto-matìco, quando si esegue l'ultima istruzione di ritorno
scARrco
STACK
Lo Stack ha una struttura LIFO.
L'ultimo dato cartcato nel livello 1 sarà il primo che uscira
ll carico dello Stack si realizza in modo autamattco con. I'Btruzione CALL o con un interrupt. Anche lo scarico awtene
in modo automattca,con I'istruzione di ritorno dalla subroutine o dall'interrupt.
Dato che dispone di otto livelli, dobbiamo fare
attenzione affinché non debordi quando si producono
annidamenti, ed e necessar o memorizzare piu indiizzi, di ritorno.
Non si possono scrivere piu di otto indirizzi di ri-, torno., N/olti Stack con un numero di livelli limitato, dispon-
' gono di un flag che ci awisa quando sono pieni, pero
li;#rr1rr,+:tir*,i, ,É :i::;:.È.rlr.:i,î4'i +..iìÉ+ lÉ:-s.{-+l*f iii;f:irj-"q';t;*rÉ+i:r
tl,
t
LIFO
Gonceffi e:I!O ilTICROCONÍROLIER
opernlivitù degli interruplììììirìl\iqs:wilgf rlslùiiiMtrilì:sì*úessiiÌÌùiìiwr*ir;
questa risorsa non e disponibile nel PIC 16F84, restaquindi responsabilità del programmatore vigilare sunr ro<tn f:ttn
14, 5i origina I'intenupt e viene acquisito dal processore.
34. ll PC si carica ron il valore del Vector di lnterrupt, che punta la prima
istruzione della routine dedicata all'intenuot,
54. Quando si esegue I'ultima istruzione della routine, che è
RETFIE (R|TORNO), il valore del livello 1 dello Stack viene caricato nel PC,
si ritorna al programma principale nel punto dove lo si è abbandonato.
Nel PIC 16F84 il Vector di interrupt contiene l'indiriz-zo 0004H della mappa di memoria del programma,invece il Vector di reset contiene l'induizzo 0000H.
Orro<tn imnlir: rhe l'inizin dol nrnnr:n,,,,r,,__ r,_y,_,,lma pfln_cipale avvenga all'indirizzo 0000H, e che quattrorndirizzi dopo, inizi la routine dedicata all'inter-ru pt.
E chiaro che il programma principale "coprirebbe"
le istruzioni della routine di interrupt, per evitare que-
sto si colloca in entrambi i vettori un'istruzione di saltoincondizionato GOTO, che trasla l'inizro del program-ma principale e della routine di interrupt ai punti cor-retti.
In generale, all'rndirizzo 0000H, si colloca un saltoall'indirizzo 0005H, salvando ìl Vector di interrupt.Normalmente i'inizio di un programma per il PIC è fattocome rl seguente:
goto inizio; All'indirizzo 0 c'è un'isfuzione di salto a "inizio"
tntzt0 bsf 5TATU5,5; Prima istruzione del programmaprincipale
Negli altri modelli di processori, ad esempio quelli dalla
ditta INTEL, gli interrupt dispongono di diversi Vector di
interrupt, non solo di uno come nel PlC.
Essi gestiscono una tabella di 256 Vector di
Interrupt, come mostrato dalla figura.ll vantaggio di disporre di tanti vettori, sta nel fatto
TABELLA DEI VECTORDI INTERRUPT
Tabella con 256 vettori differentidi interrupt, propna di alcuni processor; di INTEL.
che si possono trattare in forma differenziata le distin-fo a2rrca rho nonar:nn nli iniarrr rnl
Nel PIC 16F84, esiste un solo Vector di interrupt per
ìe drverse cause che li provocano, quindi le routinededicate ad essi iniziano in modo uguale per tutti.
La prima cosa da fare sarà verificare quale sia statal: r:tt<: doll'intorrr rnt nar derri:ro il flrrccn nli_, program-ma alla routine dedicata a quella determinata causa;per questo ogni diversa causa di interrupt dispone dirrn fl:n dodir:fn
iu!u1aìììììììììììììììììtùltrtuìtaiuiu:nt!t
Utilità delf interrupt
.i,'ll'T ._- ossiamo montare su Monty un finecorsa
. -.ostacoli sul suo cammino, come si puo vede-
fi re dalla figura. Uideale sarebbe che quandoil sensore chiude i suoi contatti, il processo-
re abbandoni il programma principale in esecuzione perentrare in una routine specralizzata, che ad esempio lofaccia retrocedere di un centimetro, girare di 90', avan-
zare di qualche centimetro, girare nuovamente di 90" econtinuare il suo percorso.
ll tempo che deve trascorrere fra l'attivazione delsensore e l'esecuzione del programma specializzatonella manovra anti-ostacolo, deve essere minimo. La
cosa migliore è utilizzare un interrupt, per questo ènecessario progettare un circuito per fare in modo chesubito dopo che ilcontatto difinecorsa siè chiuso, arri-
ffi
" ::: i ;:;::.: .,:. :, : :.,:: ì
.
,.:*Í:!211Hi$i*1]*i$llliiì"lfill;;a,
ll finecorsa anteriore serve per rilevare qli ostacoli
" l
, '' t
'
euando si chiude I'interruttore di finecorsa, si genera un fronte di discesa che si appltca al piedino INT e causa un tnterrupt
':*._.,,r,
vi un livello logico basso al piedino RB0/lNT del
PIC 16F84 che è quelìo dedicato alla richiesta esterna di
interrupt. ll fronte di dtscesa che si produce collegando
a massa il piedino quando si chiudono i contatti del
sensòre, produce l'interrupt, come sì puo vedere nella
fìgura.Utilizzando un interrupt, nello stesso momento che
il f inecorsa rileva un ostacolo, si attiva l'interrupt con la
routine associata ad esso. L altro modo consiste nel col-
legare il livello Iogico prodotto dai contatti del sensore,
ad una linea di ingresso normale che il processore
dovrebbe testare in continuazione, per conoscerne lo
staro.
Questo suppone, oltre alla perdita di tempo dovuta
all'esecuzione del test durante il programma principa-
le, un'attenzione non immediata alla situazione visto
che la CPU nel programma principale realizza anche
altri compiti oltre all'ispezione della linea di ingresso
che fa riferimento al sensore.
Uinterrupt è il metodo più sicuro, rapido ed effica-
ce, per reagire agli eventi esterni che influenzano l'ela-
borazione del programma princìpale.
Dooo aver completato l'istruzione in corso di esecuzio-
ne, se il PIC accetta un interrupt, sviluppa i seguenti
oassi ooeratìvi:
2o) Nel PC viene caricato il valore del Vector di intenupt che è all'indirizzo
00M H, dove inizia la routine dedicata all'interrupt.
4o) [a routine dedicata all'interrupt inizia tealizzando due compiti
importanti:
a) lndaga sulla causa che ha generato l'interrupt, e per fare questo
controlla i flags
b) Scrive nella memoria dei dati RAM, area GPR i valori di alcuni
reqistri del processore, con i valori relativi al programma principale.
Nel caso in i:ui questi registri fossero utilizzati dalla routine di inter-
rupt, i loro contenuti subirebbero delle modifiche, e al momento di
toinare al programma principale non si disponebbe più delle stesse
informazioni di quando lo si era lasciato.
RETF;EPC-<-UVELLO| (STACK)
i,,,,,.,,..",..,,.,.... ".,..".,..,..",..".",..,,..,,iOrganigramma del trattamento di un interrupt nel PlCl 6F84.
l. ii.j:i,ir í::! j. :.:i'; Í I i;:iii,r ì.r :i
Ci sono quattro cause che possono generare un inter-rupt nel PlC16F84;
FINE
:J:
lnlerrupt
PC+-UVELLO I TSTACK)
PC <- O4 (Vertor Reser)
ROUTINE DI INTERRUPTle Indogo sullo cquso2e Sqlvo i vqlori dei registri3e Risolve lo cquso
il.rîr;:itr,î r overflow iltemporizzatore TMR0. tlsuo contenuto pasu
4a. Quando termina il ciclo di scrittura di un bpe in un indirizzo deÌlamemoria EEPROM dei dati.
Una delle difficolta intziali che presentano questefr rnzinni ò rho nrr:lrrn^"^ "i. l. --".- -L^ l^y--,-, ìque std ta causa cne na oflgtna-to l'interrupt, la routine dedicata inizia sempre all'indi-rizzo del Vector dr interrupt che è lo 0004 H. Altri pro-cessori dispongono di un Vector di interrupt per ognlcausa che li produce, con il PIC 16F84 non c'è altrasoluzione che inrziare indagando quale sia stata la
causa dell'interrupt, testando i flags corrispondenti, e
indirizzando il processore alla routine corretta.
i i . l tl''i : : í t;i i' ; :,.'i i'1 1..1 i:, 1. :,'i. irj i i:.i:i'il:,X, i í: t:'
A volte molti programmi non necessitano di interrupt,e quindi non li usano.
Per oresto mnf ivn deve esistere Una Chiavp ncnpr;-le che permetta o proibisca gli interrupt nel loro insie-me.
Nel PIC 16F84, esiste un registro di controllo dell'a-rea SFR della RAM, chiamato INTCON, che regola il
funzionamento degli interrupt. ll bit più significativo di
INTCON
t-,".-"--"----.-"="- "ill bit piit significativo del registro INTCON è quello che permette o proibisce globalmente le quattro cause di interrupt
ffiH$ fi**É*trH+sÈFÉ d*E tr.ff E SF,ffi,gè
.-l-Inlerrupf
p€+_ STACKGIE=0
PC= 0004{Vecfor di inferrupt)
Rouline di serviziodell'interrupt (RSI)
5i memorizzo iregistri do modificqre
5i determino lq csusodell'inlerrupt
Solto ollo routine diservizio corrispondente
Si recuperono i vqloridei registri memorizzqti
Siconcello ilflogdi inierrupt
Ritorno (RETFIE)
PC+ STACKGie= I
Organigramma dello sviluppodr un interrupt tenln!1 co,nt1 dell funzion.e di GIE_
INTCON è chìamato GIE (Permesso Globale di
Interrupt).Se si scrive questo bit e si pone GIE = 0 tutti gli inter-
rupt saranno disabilitati, e il processore non ne accet-
tera nessuno.
Al contrarìo se scriviamo GIE = 1 il processore accet-
terà qualsìasi interrupt che si genererà, e ll programma-
tore potrà lavorare con essi.
Ogni interrupt dispone di un bit partrcolare di abili-
;,:t i' ::i;,.,:t1
tazione, che deve essere attivato se si desidera che al
prodursi dell'interrupt, il processore lanci le fasi del suo
sviluppo. Nell'organigramma della figura, si approfon-
discono le operazioni dello svìluppo di un interrupt,
tenendo conto della funzione del bit GlE.
Nella figura possiamo osservare che quando si
accetta un rnterrupt, il processore pone automatica-
mente GIE = 0, per evitare che durante l'elaborazione
della routine dedicata a questo interrupt, se ne produ-
cano altri nuovì.
Compìetata la routine dt interrupt ed eseguita
l'ultima istruzione RETFIE, che è quella di ritorno al
programma principale, iì bit GIE riprende il vaìore 1,
dato che ritornando al prìncipale, bisogna fare in
modo che gli interrupt possano nuovamente essere
accettatt.
iu
=ir.iil
5i cqncellqilflog
di interrupt
finterrupt esterno
elle quattro possibili cause dr interrupt che
ammette il PlC16F84 ce n'è una che gli per-
"nette di restare in contatto permanente con
glì avvenimenti che succedono nel mondoesterno.
Orrpctn intprrr rnt c sunnortato dal nipdinO 6 delYvLJ(v
microcontrolìer, e si chiama RBO/INT. Si tratta dr un pie-
Per fare in modo che il piedino RB)/INTsupporti richieste di interrupt esterni, i bit GIE e INTE devono valere 1
dino multifunzione, che puo essere utilizzato in duemodi differenti. In primo luogo puo funzionare come
linea di ingresso/uscita digitale (RBO), nel qual caso si
comporterà come ingresso se nel bit O del registro di
configurazione TRISB avremo caricato un 1, mentre
sara un'uscita se nel suddetto bit avremo scritto uno 0.
lnoltre può f unzionare come linea di
richiesta di interrupt esterno (lNT).
Per fare in modo che questo pie-
dino possa ricevere la richiesta ester-na di intprrr rnt dpvp pssere abilitatoper questo lavoro, per questo scopo
è necessarìo mettere a 1 il bit di
Permesso Globale di lnterrupt, GlE.
Inoltre bisogna abilitare anche il per-
messo particolare di questo inter-rr rnt mettendo a 1 il bit INTE.'-F', "
Sia GIE che INTE si trovano nel
registro INTCON che occupa l'indi-rizzo 0B H del banco 0 e il correlati-vo del banco 1, come illustrato nella
figura.
ll piedino RB0/lNT puo generare un interrupt quandoad esso viene aoolicato un fronte di salita o di discesa.
Un f ronte di salita consiste nella transazione di tensio-ne dal basso verso l'alto, mentre un fronte di discesa ela transazione inversa.
Per selezionare il tipo di f ronte, il
PIC'16F84 dispone del bit INTDEG,
situato nel registro OPTION, che
^(^.ttrlA I'inriirizza R1 h del banco 1.vLL u vu
Quando INTDEG = 1 il fronte attivosarà quello di salita, mentre quandoINTDEG = 0 il fronte attivo sarà quel-
lo di discesa, come indicato nella
fig u ra.
Lo schema elettrrco riportato nella
figura della pagina seguente, corri-
sponde ad un generatore di fronti per
attivare il piedìno RB0/lNT.
Ulilizza due porte invertenti 74L504 che, grazie al
particolare collegamento, costituiscono un filtro anti-rimbalzo per il pulsante del circuito. La rete R-C con-
trolla la durata dell'impulso che contiene i due tipi di
f ronti.
tat
\-INTDEG= I '| . _-!
INTDEG= 0 l-
07
INTCO N
OPTION
ll bit INTDEG del registro OPTION determina il fronte attivo sul pin RB)/INT.
,.:'.1:
p 43
Voo--+5VD€
rok
I N4r48
Circuito che genera l'impulso di una durata determinata, per provocareinterrupt in modo ciclico.
Onni vnlfa rhp ci nenera Un fronte attivo srrl ninJvr vrr I
RBO/INT programmato per ricevere interrupt, e questoyiono nonor:tn rrn fl:^ inrrrir:in Ài cannrllyp n1o(t:vr!rrL VLrrLruLv, urrrruV lllLollLoLv ul )EVIlOlols Vuq)Losituazione si oone automaticamente a 1 .
Si tratta del flag INTF del registro INTCON comemostrato nella figura.
Da quanto esposto sinora deduciamo che per farein modo che si produca un interrupt esterno, e neces-
sario che il bit GIE = 1, che il bit INTE = 'l e che il pin
RBO/INT riceva un fronte attivo. Tutto questo fa sì che il
bit INTF = 1 . Nella figura è mostrata la logi-ca di controllo che è dedicata alla genera-
zione di questo tipo di interrupt nel
PIC'I6FB4.In sporrito desrriviamo con alcuni com-
menti un piccolo programma per gestire
l'interrupt esterno impostando il fronte di
discesa come fronte attivo.
INTERRUPT INTFESIERNI INTE
INTERRUPT
Logica di controllo corrispondente al circuitodi generazione degli interrupt esterni.
I Dentro la ruotine di interrupt e prima di
ritornare al programma principale, il pro-grammatore deve necessariamente riportareil flag INTF = 0, altrimenti subito dopo l'i-struzione di ritorno RETFIE, torneremo a
bcf OPT|0N, intdeg INTDEG = 0, fronte di discesa
bd |NTCON, gie ;GlÈ = 1, Permesso Globale di Interrupt
bcf |NTCON, intf ;INTF = 0. Ci assicuriamo che il flag sia a 0
SEGNAIATORE
PUI.SANTE
DI RESET
4I
47
ll bit INTF è un flag che viene messo automaticdmente a 1 quando si produce l'interrupt esterno
INTCON
ripetere il processo di interrupt, quindi il flag INTF sarà
ancora a 1.
:,,l;:.,.,,,, i .t,:,;r",rt.l.',t I
ll meccanismo di interrupt ricopre un aspetto vitale nei
sistemi di controllo industriali. L'interrupt è il metodopiù rapido ed eff icace per porre in comunicazione I pro-
cessore con il mondo esterno.
Ogni volta che si produce un evento fisico nell'am-biente reale da controllare, ad esempio l'innalzarsi dellatpmnor:trrra di rrn forno oltre ad una determinatasoglia, un sensore trasduce il parametro temperatura in
una grandezza elettrica proporzionale, convertendolain una tensione capace di attivare uno dei piedini di
interrupt che ha il microprocessore, awisandolo dell'e-vento che si sta verrficando.
La risposta della CPU e immediata: sospende l'ese-
cuzione delle ìstruzioni del programma in corso, salva in
una zona della memoria chiamata STACK l'rndirizzo di
abbandono del programma e carica nel PC un indirizzo
determinato a cui salta per eseguire una routine che
sarà incaricata del trattamento e risoluzione del proble-
ma che ha generato l'rnterrupt. Nell'esempio che abbia-
mo commentato, la routine che fa riferimento all'inter-rupt, potrebbe ridurre l'ingresso del combustibile al
forno rn modo che questo si raffreddi e la temperaturatorni a valori adeguati
Nel momento in cui si abbandona questa routine, si
ricarica I'indirizzo di ritorno dallo STACK, e si torna ad
eseguire le istruzioni del programma principale dalnrrntn in rrri lo si e :hbandOnatO
| - ,.^.- i-^^.+-^-r dpnli inip"rrrnt ri<,iede nella lOfOLd vEto riltvwt torr4o uE9il ilitE ruPL rr)rquc.-^;,1 . -^-,,^;-.-i^^^ ,.li ^,,.1. ..i .^^--li. +'.,-. ^.+^"'dp,ud LUlllul llLdzlul lc ui 9udl)rd)l ol iul lldllc l)lLo E)tq -
na che succede nel mondo reale al processore, in modoche ouesto oassr al loro trattamento. La rilevazione di
qualsiasi anomalia quando sr usa un interrupt, provoca
ii trattamento immediato delJ'anomalia stessa, medran-
ie 'esecuzione d ;r'a rout ne preposta peryisolvere la
srtuaztone.
' ,,. ':
INTEL, rl pion,ere dei rrrc'oprocessori e fabbricante deiPantirrm rho onrrin:nni:nn i nn<trr nor<nn:l anmnrtAr
ha implementato in essi un meccanismo di trattamentodegli interrupt eccezionale, la cui flessibìlità e varietà lr
rendono i oiù ootenti del mercato.
INTEL fabbrica anche microprocessori che gestisco-
no dati a otto bit. così come il PlC. Si tratta del model-
ll processore INTEL
dispone di uno straordinario meccanismo di interrupt.
lo 8085, che è stato commercializzato dal 1976 e anco-
ra oggi è uno standard industriale.
Dato che il fabbricante oriento l'8085 al settore dei
sistemi industriali dedico un insieme di cinque piedini
per supportare le richieste di interrupt per I'hardwareesterno. Questì piedinr sono:
RST 7.5
R5T5.5
Alcuni dei piedini di interrupt dell'8085 si attivanomediante ifrontie altri con livelli. Inoltre ognuno ha un
propr,o grado di prio.ta. la orio'ita oiu ai[a e del TRAP
a cui seg.rono, in ordine decresce.îe, la RST 7 5, RS'
6.5, RST 5.5 e INTR.
Questr interrupt si classificano in due gruppimascherabilì e non mascherabili. Quelli che sono
mascherabili hanno la proprieta d essere gnorati dalla
CPU quando vengoîo attivati, nel caso che un bit spe-r:le sitrr:to in rrn reoistro di controllo sia stato messo
a zero.
Questa caratteristica permette al programmatore,
scrivendo e cancellando questo bit, di accettare o igno-
rare l'interrupt in parti vitali del programma.
Gli interrupt dell'8085 sono vettorializzati, il che
suppone che quando sono accettati ognuno carichi sul
PC un indirizzo specifico della memorìa, origrnando un
ooÉ^€ó{ó*-ooóA€ol4ò-nóófió-nróqn&1À&^NÀNtu
IY'tó
o*N-tooÀ€ooetó€s9À@
LJ U LI L' U U U IJ U UU U U U U U U U U U
<{d <
Diagramma dei piedini dell'8085
salto del flusso di controllo a quella oosizione dove si
suppone inizi la routine che riguarda detto interrupt.Nell'8085 ogni piedino di interrupt dispone di un suoproprio induizzo vettorializzato, così si differenziano le
diverse cause che provocano gli interrupt e si assegnaad ognuna una routìne indipendente.
Nel microcontroller PIC esiste solo un Vettore diinterrupt, che ha assegnato I'induizzo 4 della memoriadi codice, per tutte le cause di interrupt. Qualunqueinterrupt che si produca nel PlC16F84, fa sì che il PC
passia puntare I'indirizzo 4 e ad eseguire il programma
che inizia in questa posizione. Generalmente nell'indi-lzzo 4 si usa mettere un "goto" all'induizzo vero di ini-zio della routine di interrupt.
Dato che le cause che provocano gli rnterrupt pos-
sono essere diverse, il loro trattamento deve essere
fatto in modo individuale, per questo all'inizio dellaroutine di interrupt in un PIC inizia la verifica di cosa ha
originato l'evento in modo da poter scegliere la routinecorrispondente.
{:i *. * i. {ìÌ H i: E * t+ g, ;s 5 t s: E J {+ *|,{ {.i I'd,.x l4 il hl "i i.l
ii *. + i"i i' +li:È: ft 5t È..{ PF *É'iF- H i'j f l,} ii L L $i*;Ìr i:TRAP
Si tratta di un interrupt non mascherabile, quindi la CPU
lo accetta sempre indipendentemente dallo stato del bitdi maschera. A questo corrisponde un vector che indi-rizza il f lusso di controllo alla posizione di memoria 24Hex. È sensibile sia sul fianco sia al livello.
F otiello di maocrior nriorira di ronsenrrpnza se arri-vano diverse richieste di interrupt contemporaneamen-te, il TRAP e il primo che vrere gestito Generalmente e
impiegato per far fronte a situazioni estreme, come la
mancanza di alimentazione. che 0ermette l'entrata in
servizio della fonte di alimentazione alternativa o dellebatterre di sicurezza.
RST 7.5ll piedino che attiva questo interrupt è sensibile al f ron-te e gli corrisponde un vector il cui indirizzo e 3C H. È
un interrupt mascherabile, che puo essere ignoratoquando il bit di maschera situato in un registro di con-trollo e messo a zero. Ha una priorità inferiore a quelladel TRAP
RST 5.5 e RST 5.5Entrambi i piedini si attivano quando viene applicatoun livello logico alto, che deve essere mantenuto fino a
alla RST 7.5 e i vector che hanno assegnatr sono al 34H e 2C H, rispettivamente.
i .: ,l 'l r: - - :-. :r
i1 Ì ir.r il f it i:.. í j l_+ ì, Íri
INTEL, non soddisfatta dalle precedenti richieste diIntérn rnt oqtorn: no ILrLL,,,qr ,,= ,la introdotta una speciale, il cuimeccanismo viene solo impiegato da questo fabbrican-te, che permette di saltare fino ad otto routires diffe-renti con il solo piedino INTR.
Inizialmente INTEL ha rntrodotto nel repertorio diistruzioni la chiamata RESTAR n, il cui mnemonico eRST n. Dato che n puo valere otto valori da 0 a 7, daorioino : otto rodiri ,^l; istruzioni corrispondenti a RST0,
1,2,3,4,5,6 e 7, ognuno dei quali e composto daisnli otto hit Fspnrrprdn nrpctp ictrr rzioni ci nrodUce Un
salto agli indirizzi n x B, ossia, alla 0, B, 16,32, ecc. Dal
programma, e in forma sincrona, si puo saltare a que-sti indirizzi di memorra, in ognuno dei quali si puo dare
inizio ad una routine differente.INTR è il piedino di richiesta di interrupt maschera-
bile di priorita minima. Quando la CPU genera due ciclidel bus di lettura, iquali sono attrvati indicando il pie-dino INTA (Riconoscimento di Interrupt). Nel secondodei cicli, la CPU legge gli otto bit presenti nel bus dei
dati (DO-D7) e li interpreta come il codice dell'istruzio-no (orr ronto rho dovo1 ,L JLyuL, ,LL !, ,L ucvc e Se QUI[e .
Se il codice che introduce tramite il bus dei dati il
richiedente corrisponde con uno degli otto dell'istru-zione RST n, si produrrà un salto agli otto indirizzi pos-sibili ln x B).
Questo fa sì che il PC si carichi con uno degli ottoinduizzi e inizi l'esecuzione della routine applicata a
partire da esso.
:rz^ - oi* >^
'-: à;l# X E ú e 6 N -A c J JIw ú
^ -lolq t ^ ->fIUlccYoÌCil<;<<<dd
- RF O O d ú o ú dt< O - N ó e 6 6 È ox x :) O; { - o o *l> ó O ó ó ó O O O -oO 6 -'c( - > p ZIZ664-'
i che la CPU non lo accetta. La loro priorità e inferiore
à.;ii:,,{eÈÈ?:f=s=c?+;rtgEE+aet+È r**+eÈ:,t:,-rr,lr+;rii]4F +;!Ír;':'+"ii!fÈ::,
finterrupt per overflowdet TMRO
':' :.'i
' :,i.1 i
La misura del tempo è unodei lavori piu comuni nelle-^^ri---i^^i i^r,,-+fiali.cl.rpilLo4rur il il ruu)t
Nella fotografia è mostratoun robot scalatore a sei
^-*L-^ ^^. l- --l^l-+,,qam0e, per ra saroaTura 1n
verticale nelle costruzioninavali (REST) dell'lstitutodelle Automazioni Indu-striali del CSIC, nel quale la
lemporizzazione nel movi-mento delle sue articola-zioni è fondamentale per'l'esecuzione dei suoi com-prtr.
In una sequenza dr
tempi all'interno di un pro-
cesso chimico si puoapprezzare l'importanza e
ìa necessita dei temnoriz-zatori. Durante 3 ms si
dorio :nriro 1162 pl6ff16r,rluLvL uVrilL urru LrLLrrUVdl-
vola per aggiungere un
determinato prodotto ad
una miscela in preparazio-no Alln (toqq.\ tomnrl''rJ Pefun periodo di 2,6 ms,
un'altra elettrovalvola:^.,-\ ^--^-^ -++i.,-+-uuvrd essere druvdLd per
inserire una certa quantitàdr un determinato liquidonella miscela. Dopo 20 ms.li :ttoq..a noro<<:ri"------,, per
miscelare entrambi i pro-
dotti, si procede allo scuo-timont^ nor 1) 6q n; rnc+rLilrrLrrLv VLr r- rrrJ. VUtr)LO
c urd )tr\-1ucr rzd ourLUdrc
:,,::
::i
Robot scalatore a sei gambe per la saldatura Ìn verticale nelle costruztoni navali (REST)
(lstituto dell'Automazione lndustriale del CSIC).
Temporizzqlore
Coriro ilvolore nel registro
Decremenlo
Èoa
Fine
Organigramma tipicoche presenta la strategia che segue la CPU quando si dedicaalla misura del tempo.
nello sviluppo di un processo industriale, e in essa i
tempi sono un fattore fondamentale. ll processore può
misurare facilmente il tempo; il controllo è effettuato in
base alla frequenza dì funzionamento e al tempo cheimpiega ogni istruzione ad essere eseguita. Così, ad
esempio, un PlC16FB4 lavorando con un cristallo di
quarzo da 4 Mhz e un oscillatore XT, ha un periodoT = 250 ns. Per eseguire un'istruzione normale servonoquattro periodi, ossia. 4 x 250 = 'l .000 ns.
Le istruzioni di salto impiegano il doppio. Quando la
CPU si dedica a contare il temoo oeneralmente lo fa
I tempoilzzatori sono contatoriascendenti o discendenti che funzionano in modo autonomo,e che dispongono di flag che awisanoquando arrivano al massimo o attraversano lo zero
caricando prima il registro con un determinato valore,
dopodiche lo decrementa e verifica se è arrivato a zerc,ìn caso contrario torna a decrementarlo e a ripetere la
verif ica.
Quando arriva a zero significa che e passato il tempoche doveva contare. Nell'organigramma della figura si
puo vedere la strategìa impiegata dalla CPU nel con-tonnin dal tomnn
Anche se la CPU ouò realizzare il comoito di misura-
re il tempo senza alcuna difficoìtà, mentre esegue que-
sto lavoro non può fare altre cose.
Di conseguenza, destinare il processore alla misura
del tempo significa privare di supervisione e di attenzio-
ne il programma principale.
I temporizzatori sono contatori che si caricano con
un determinato valore all'inizio del conteggio, e auto-maticamente si incrementano o decrementano fino ad
arrivare al massimo valore o arrivare a zero, momentonel quale comunicano l'accaduto al processore, che nel
frattempo in parallelo può eseguire altre istruzioni del
programma principale.
ll temoorizzatore TMR0 è un contatore ascendente a B
bit che oassa a 00 H ouando arriva al massimo valore dirnntenoio FF H Orrpsta tranSiziOne è chiamata Over-
" ,,. YUL-
flow.Nel caso del TMRO il suo valore si incrementa al
ritmo degli impulsi di clock che sono applìcati al piedi-
no RA4/T0CKl o tramite I'oscillatore orincioale ìnternocon la frequenza Fosd4.
Quando il valore del TMRO passa da FF H a 00 H il
flag T0lF, che è il bit 2 di INTCON, si pone a 1 automa-ticamente.
TEMPORIZZATORE
FIAG
MICROCONTROLTERfer misurrr del tempo
IMPUTSI ESTERNI
TOCKI
T.
l', IMPUI.SI INTERNI
FOSC/4
lngressi degli impulsi at TMR7 e situazione del flag al suo overflow.
Per fare in modo che il processore sappia quando il
TMR0 va in overflow, deve testare frequentemente lostato delfìag T0lF. ll check di questo bit suppone un'at-tenzione costante, quindi una perdita di rendimento.Per sapere immediatamente quando awiene l'overflowdel TMR0 è molto più efficace generare un interrupt al
momento ìn cui awiene.Per fare questo e necessario abilitare I'interrupt del
temporizzatore, il quale implica di porre il bit GIE = 1,
che è il permesso Globale degli Interrupt. e dopo atti-vare il bit di permesso dell'interrupt del TMR0, ossia,
scrivere un 1 in T0lE, così come si vede nella fiqura dellan:nin; <onron+a
,, , ,;. , ,.t . , li ,
Per calcolare il tempo che misura il TMRO, bisognaconoscere il valore che si carica inizialmente in esso,
dato che e ttn reoistro che ncrr na l'indiriTTo '1 del
banco 0 dell'area SFR della memoria dei dati RAM.
Questo valore espresso in decimale, lo chiameremo N;
bisogna anche tener conto della frequenza di funziona-mento de1 processore così come del range programma-to per il Divisore di Frequenza, in caso di un suo utiliz-zo. La formula che determina ouesto temoo è:
Tempo = 4. Tosc . (256 - N) .
. Range del Divisore di Frequenza
EsercizioConsideriamo un PIC'16F84 funzionante con cristallo diquarzo da 4 Mhz. Supponiamo di caricare il TMR0 con
INTC O N
il valore decimale 56, il Divisore di Frequenza sarà asse-
gnato alTN/R0 e sarà programmato con range di '1:32.
Calcoleremo il tempo di misura del TMR0 sino al suo
overflow:
Tempo = 4 .250 ns . (256 - 56) . 32 = 6,4 ms
I , : : t: : : 'l :
La famiglia x86 di INTEL, alla quale appartengono i
moderni Pentium, dispone di un meccanismo di altaqualità e versatilità per supportare gli ìnterrupt esterni.È interessante analtzzare le alternative esistenti nei pro-
cessori più utilizzati e verificarli con quelli dei PlC.
Per gli interrupt esterni la famiglia x86 utilizza duepiedini: NMle INTR. Ognivolta che uno di essi e attiva-to con livello logico appropriato, la CPU ferma il flussodi controllo, sospende l'esecuzione delle istruzioni nelprogramma principale in corso, salva nello Stack l'indi-rizzo di ritorno, e salta ad eseguire una routine incari-cata del trattamento della causa che ha oriqinato l'in-rerru pI.
Esjstono 256 vettori di interrupt che danno accessoa 256 routines differenti. Ouesti vettori sono indicatinella tabella degli ingressi che si chiama IDT (Tabella di
Descrizione degli Interrupt).
Questa caratteristica determina una differenza fon-damentale con i PIC che dispongono di un solo vettoredi interrupt per tutte le cause che possono originareuna richiesta di interrupt.
Nel PlC16F84 il vettore di interrupt occupa l'indi-rizzo 4 della memoria di programma e dato che è
comune a tutte le cause, il primo lavoro che realizza
TMRO
["+ ft'+ È €-,.i.É;r.rlg ;14+at iir".+;:'Èe;{: J,"É; j:
INTERRUPT
Quando il TMR) va rn overflow il segnalatore T)lF si pone a 1 automaticamente e st
genera un interrupt sempre che i bit GIE e T)lE valgano 1.
la rouiine è verificare ouale di essa ha oenerato larich iesta.
Nelle 256 routines di rnterrupt possibili nel proces-
sore x86 a cui si fa riferimento mediante gli ingressi
della tabella lDT, ce ne sono alcune che sono destinate
a risolvere sempre la stessa causa di interruptAd esempio, l'ingresso 0 della IDT è riservato per
rìsolvere una routine che riguarda gli errori che si pro-
ducono nel compiere le operazioni di divisione con le
istruzioni DIV e lDlV.
i rrn,r,rì oi-;;";,::;: t;t;r;; :; : ;irr;;n;r;r*:: ;r',;piedini riservati agli interrupt esterni NMI e INTR.
.,;
!
Si tratta di un interrupt esterno che
si produce attivando il livello logicoapplicato al piedino NMl.
Si rhi:m: infprrrrnt "non masche-r:hilo" nar16,ó o <om^r^ î..^++î+^rouilE PsrLr rE c )qrrlPlg oLLELLo LU
-^,, ; r'oaila LHU. r or pflorla arla, e quan-do avviene ha accesso tramìte il
\/o.tAr n innrocqn ? dall: +:haìl:vg!Lvr v ilryrsJJv z uEllo LouEìlo
IDT.
È un interrupt asincrono perché
non si conosce il momento in cui si
origrna, dato che dipende dalle con-,.Ji-;^^i ^ r-; ^-"-"-^tri del mOndOut4tvtil E uor PorqrrrEl
esterno.
,', I 'r I I ',', | '
ln un caoitolo orecedente abbiamo analizzalo il com-portamento dell'interrupt INTR del microprocessore a
otto bit 8085. Era capace di accedere fino a otto routi-nes differenti. Nella famiglia x86 il piedino INTR puo
dare accesso a qualsiasi deìle 256 routines che si sele-
zionano agli ingressi della lDT. Quando la CPU accetta
la richiesta INTR genera due cicli di bus dì lettura, il
secondo dei quali realizza la lettura del valore binario
depositato neglì otto bit meno significativi del bus dei
dati (D0-D7). Questo valore e interpretato dalla CPU
come ingresso della IDT con la quale risolvere la richie-
sta che arriva da INTR. ln questo modo, con un solopiedino, si possono utilizzare tutte le 256 routines di
interrupt possibili.
L interrupt INTR è "mascherabile", questo significa
che viene ignorata la richiesta quando il flag di masche-
ra lF vale zero. Questo flag lF è indicato nel Registro di
stato insieme ad altri flag deì sistema.
Questa caratteristica ha la sua importanza nella
costruzìone dei programmi. Generalmente medrante il
piedino INTR la CPU si dedica alle periferiche e alle
risorse secondarie. Se in un pezzo di programma prin-cipale si risolvono azioni fondamentali per il buon fun-zionamento del sistema, non conviene che questo
oezzo interromoa la sua esecuzione a causa di una
richiesta a bassa priorità. Per evitare tali richieste si
pone a zero il flag lF all'inizio di questa parte di istru-
zioni, proibendo gli interrupt in arrivo da INTR. Dopo
aver completato la zona pericolosa del programma, si
torna a mettere a 1 il flag lF con il quale si accettano
nuovamente gli ingressi degli elementi secondari attra-verso INTR.
ès&acÈ9eùatog6qv9ú ctg ra rrt a!{ tlt lE *rr a4 rlr il' lat rt? t:t&l'$s990ó*${rsso{}l.gg rt l'. {tú lta ygt Vat $a x.3t Att at* Àat lll ?{Co6*€óltó*60(}('óo
,,! ,,* ** *f rl* v3s vfg trr vg5 r*, *l* lfi vst 0t*ètu
va5 1{{ 3?t9lrg
09t Etr *8{co9
6!t Fft Ytrtt9('s
vec Yef tltg&a
vE ti* \.f;o(}g
stú 9t1 tr*e{o
vtt *n Dltó{t{,gtt *!* lta
t'90*f r*c ltsó3
Y{d l|*t vgggs*
vlt r{ x€99?
Yff ,mf Hc
oaaMi XrÀ FrAE{ló{rc
Ygi 8a,s?f,i€rfYóó{l
1.rc s6f locff{'69
ert* Yflt Ytlag9e9g{lt*€ll9ó9l./r,* r.i ve c Íe* @{e.Ílr €t &{ v*t 0? Ycf ù1Ù *1, $l{E*ù0c{*cotsltocc
t(:$lfta**lrf titt l* rf rratrlgl v* *t ot v* 3lr 0Íloago<t{tG{rltr}o{'l}ty[e vt!||$a{&rre4}v*| ltt à! 9t t{ t{ t{.sral at*
Superficie
metollicq
Interrupt per cambiodi stato in RB7:RB4
na delle quattro cause che generano l'inter-rupt del PlC16F84. è il cambio di stato logi-co in uno dei quattro ingressi più significati-vi della Porta B (RB7:RB4).
Se ad un determinato momento in una diqueste quattro linee, configurate come ingressi, cambia
INÎERRUPT RBIF
RB7:RM RBIE
ATIR,E
CAUSE DI
INIERRUPT
Quando cambia Io stato logico di una delle linee RB7:RB4
della Porta B, se i bit GIE e RBIE
sono uguali a 1 si produce un interrupt.
lo stato logico, il flag RBIF passa a 1,
e se il bit di permesso di questo inter-rupt è attivo (RBIE =1) si genera un
interrupt. Come per le altre cause di
interrupt, per fare in modo che l'e-vento sia accettato, è necessario che
il bit di Permesso Globale di Interrupt,GlE. sia a 1.
Lo schema logico della f iguraesprime in modo graf ico quantodescritto.
Questa strana causa di interrupt è
stata sviluppata per gestire al megliole tastiere matriciali, molto diffusenelle applicazioni con i microcontrol-ler. La tastiera è un disoositivo oer
IECIADORBO RBI RB2 /Ir
IUSCITEDAt PIC
, COLONNE FI1I' (uscrTE) (TNGRESST)
.
:
Struttura e collegamento della tastiera matriciale ai piedini della Porta B del PIC
inserire informazioni, facile da gestire. di ridotte dimen-sioni ed economico.
Una tastiera molto comune è quella a 16 pulsanti,configurata in una struttura matriciale composta da 4linee per 4 colonne.
I pulsanti sono situati sull'incrocio delle linee con lecolonne, quando si preme uno di essi si chiude il con-tatto fra la linea e la colonna che formano l'incrociocontrollato dal suddetto pulsante. Quando non ci sonopulsanti premuti, le linee sono elettricamente isolatedalle colonne.
In pratica queste tastiere dispongono di 8 terminalidi collegamento, 4 corrispondono alle file e si collega-no con le linee RB7:RB4 della Porta B, che devono esse-
re configurate come ingressi digitali.Gli altri 4 terminali corrispondono alle colonne della
tastiera, e si collegano ai piedini RB3:RB0 della porta B,
che devono essere configurati come uscite digitali diinformazioni dal microcontroller. Nella figura si mostra-no i collegamenti delle file e delle colonne della tastie-ra con le linee della Porta B.
INGRESSIVERSO It PIC
R84
RB5
:RBó
INTERRUPÍ
: t jtl.rtt'f:.i:,a t::;tjl;,':t!,4+llli,;r;':rlt
Per esplorare la tastiera e rilevare il pulsante premu-
to si applica il seguente metodo: il microcontrollerdeposita nelle 4 linee di uscita digitali (colonne) un codi-
ce formato da tre livelli logìci alti (1)e un livello basso(0). Ad ogni scansione il codice sposta la posizrone del
livello logico basso in modo sequenziale, su ognunadelle 4 colonne collegate a RB3:R80. Quando non c'è
nessun pulsante premuto, le file essendo isolate dalle
colonne, sono "in aria" e introducono un livello logico
alto, dovuto ad una caratteristìca costruttiva pro-
pria della tecnologia TTL. In questa situazione,quando si leggono gìi ingressi digitali, che sono lefile della tastiera, avremo quattro uno. Nel caso
venga premuto un pulsante, quando il livello
basso che esce dalle colonne, coincide con l'in-crocio fila-colonna del pulsante premuto, per la
fila corrispondente entrerà un livello logico basso,
grazie al quale si potrà localizzare immediata-mente il pulsante che è stato premuto, perché si
orodurrà un interruot.
: !;i.:,1, t,iii;: ;,,
lì metodo usato per la rivelazione del pulsante
premuto, ulilizza il livello basso come livello atti-vo, mentre quello alto è considerato inattivo.
Dalle quattro colonne collegate alle uscite
RB3:RBO escono quattro livellì logici, uno attivo,
o basso, e tre inattivi, o altr. Se c'è un pulsante
premuto nella colonna che ha il livello logico
basso, la fila di incrocio riceve questo livello, che
arriverà su una delle linee RB7:R84. Se non ci
sono pulsanti premuti, le file restano isolate dalle
naa fnas fRBó +nez f
TASTIERA
IAI
RBI
Quando dalle colonne esce il codice 1 1 10,
se il pul.sa.nte premuto è E sulle file si ryceve il codyce 01 1 1
q,..F+ 3rt::È+::r;.i:.,+,ÉlÌi1Í +Èirt*rE+.ÌÉ !ÍlriìrÈ+.ÈÉ+;t+-4:,ilrri,r*/l
colonne, ed essendo sospese in aria, si comportanocome se su tutte arrivasse un Iivello logico alto. ll livel-
lo basso in uscita da una delle colonne, viene spostato
in modo sequenziale da una all'altra, e quando arriva
alla fine il ciclo si ripete da capo. Dato che si conosce
sempre da quale colonna si sta facendo uscìre il livello
basso, basterà conoscere la fila da cui detto livello viene
ricevuto per riconoscere il pulsante di incrocio fra fila ecolonna, come illustrato nella frgura.
.:
RBO
I
o
I
I
o
I
I
o
I
I
o
I
t
I
I
I
xB4
t
o
o
o
I
I
I
I
I
I
I
I
I
I
I
o
COLONNI{usclrE)
R33 RB2 RBI
tIotttrrorotltl
rtolotttllrororltl
lorotloìtolrort
CODICE HEX
7D
EE
ED
EB
DE
DD
DB
BE
BD
BB
7E
7B
77
87
D7
E7
lotîRB2 RB3
I
tRBO
Tabella dei codici per verificare rl pulsante premutoin funzione della presenza del livello logico basso nella fila e nella colonna.
li programma di scansione metterà ciclicamente
nelle colonne i quattro codici che possiedono un solo
livello basso: 0111, 101 1,1 101,'1 1 10.
Per ognuno di questi codici in uscita viene verifica-to ouello rhe si rireve dalle file che f unzionano come
ingressi digitali.Se tutti gli ingressi sono a livello logico alto, signifi-
ca che nessun pulsante della fila da cui sta uscendo lozorn à <t.rfrr nrtrmrrtn Nel momento in CUi vrene nre-
muto un pulsante, nell'ingresso corrispondente all'in-crocio fra la fila di questo pulsante e la colonna da cui
sta uscendo lo zero, apparirà un lìvello logico basso.
Si puo facilmente compilare una tabella che stabili-
sca il oulsante oremuto in funzione della fila e della
colonna che hanno il livello logico basso, come propo-
sto dalla fiqura.
ijiili#iiili o ' I
ijliilt'*É ' ' I
iilli* ' ' I
iiÍlì:*#' ' r
i:iiir${ijji r r o:iili:i$#' ' o
i.$ii.,* r r o
,.jr1.;r* r o I
{;,.,.1*-1.i-. r o I
ril::*: r o I
:,,iì:+=:l.i o t t
.*a:.'" o r t
,,1frÈ.-:l. o r r
:.:.1l.;,,O1 :. I O I
lì,'..1',1:€È,: r r o
1ì11$ r r I
Per sfruttare i beneficr dell'interrupt, si collegano le{ir^,.J^rr- +--+i^.- -: ^;.dini RB7:R84, che saranno con_| ilc uEilo Ld)ucr o d I prc
figurati come ingressi. I terminali delle colonne si colle-gano ai piedini RB3:R80, che saranno confìgurati comeuscite. Sr pone GIE = 1 per abilitare gli interrupt ingenerale, e anche RBIE =1 per abilitare l'interrupt per
cambio di stato logico nelle linee RB7:RB4. Un sempli-ce programma inserirà in modo sequenziale i codici con
un livello basso sulle uscrte RB3:R80, che sono colleqa-te alle colonne Tutto qui.
Quando si premera un pulsante cambierà lo statologico su di una delle linee RB7:RB4 e si generera un
interrupt. Quindi si salterà ad una routine che inizia dal-l'induizzo 004 della memoria di programma, e comeprima cosa si verifica quale delle linee RB7:RB4 ha un
livello basso. Con l'informazione della fila che ha rice-
Cntlonsmpntn rli t tn Dla l6FB4 ad una taSttera.
Le linee RB3.RB) sono uscite dalle quali esce rl codice binario,e RB7 R84 sono ingressì da; qudlisi riceverà un livello basso se c'è un pulsante premuto
vuto un livello basso, e della colonna che in quelmomento aveva in uscita detto ltvello, consulteremo la
tabella mostrata in precedenza, per dedurre il pulsantepremuto.
ln commercio si puo trovare una scheda commer-ciale per prototipi, chiamata PIC 18-ME, progettata
dalla ditta Ingegneria de Microsistemas ProgrammadosS.L. per realizzare prototipi in modo sicuro, rapido e
economico. Nella parte superiore contiene la circuiteriaausiliaria, insieme ad uno zoccolo a 1B pin, adatto a
ricevere il PIC'16F84 con il programma memorizzalo. La
parte inferiore e una zona libera con fori prestagnati ed^^-*^ri--^+^ <r r rr ri À rnllon:f: rrn: trctinrrd Pd>>U ttUttlldllLLdtU L LvilLyu(u urld Ld)LlCld
matriciale e un display a 7 segmenti. I collegamentidella tastiera seguono lo schema della tastiera mostra-to in precedenza.
Schema del circuito descritto nell'enunciato del oroqramma.
,l '
. ; , , ' ,",, , "' a't.
Per fare in modo che il lettore si abitui ad utilizzarenella pratica gli interrupt, proponiamo un programma
che utilizza quello prodotto dal TMRO quando va ìn
overflow. ln questo esempio, il TMR0 serve per con-trollare un tempo esatto di 1 secondo, momento in cuiqi opnpr: l'intprrr r.Jf p i: CPI I nrnrodorà ;\ (oll'a-1r^ l'1
-,- Y,zinno rnrri<nnndonte
Per ottenere la temporizzazione di 1 secondo, si
carica il TMR0, con il valore iniziale di '12; in questo
modo l'overflow si produrrà alla fine di (256-12) = 244impulsi applicati al timer.
Questi impulsi arrivano dall'oscíllatore interno del
PlC, che funziona ad una frequenza di 4 MHz, pero
divisi per 256 grazie al divisore di frequenza, rl che sup-pone una lemporizzazione dì:
Temporizzazione = 4 . 250 ns .2M.256 = 62,4 millisecondi
'+i:ti,.t i:,i;iti l:;ì;.t1.,.,,.i41ii.{--.,r,ali:*iÍi,É r-lti#,f'1{i4r]:q,iurì"Lglt?a;,NN{s{r lllirlwsiliriilw
Ptctóx84
MICROCONIROTTERUn interrupt molto particolcre
Listato del programma con commenti
tlST P=15F84
RADIX HEX
;Dhettive per Assembler
;Vector reset
;Salto al vettore di interrupt
;Vettore di interrupt
;Salto all'inizio della routine di interrupt
;Selezione del banco 'l
;Porta B uscita
;Configura M0 e RAI come ingressi
;Configura il registro 0PTl0N
;Seleziona il banco 0
;Abilitazione globale per gli interrupt e per il TMR0
;Grico C0NTA con il valote 16 in decimale
;Carico TMR0 con 12 in decimale
;5e M: 0 salto la prossima istruzione
;SeM0=0,R80=0;lest ru M1
;Se RAO = I si porta RBO = 1
;5eMl=0salto;Saha se RAf = 1
;5eRAl=0,R8=l
;5e RAI = I,RBI = I
;Ciclo infinito dal quale si esce per interrupt
;Decrementa C0t'lTA e salta se vale 0
;5e (ONTA = 0 si carica con 16
;5e RB7 = 0, salta
;5e RB7 = 0 si inverte il valore
;Se RB7 = 1 si inverte il valore
;Si dpristina ll.lTCON, interrupt disabilitati
;Si ricarica TMR0 con f 2 in decimale
;Ritorno dall'interrupt
W EQU 0 ;Etichette
FEQUlTMR_OPT EQU 0x0l
STAT0 EQU 0x03
P0RTAA EQU 0x05
P0RTAB EQU 0x06
INTC0N EQU 0x0B
CONTA EQU 0xl0 ;Contatore ausiliario
ORG O
goto inizio
ORG 4
goto inter
ORG 5
inizio bsf STAT0,5
clrf PORTAB
movlw b'00000011'
mowvf PORTM
movlw b'00000111'
movwf TMR_OPT
bcf STAT0,5
movlw b'10f00000'
mowvf INTC0N
movlw 0xl0. movlw C0NTA
movlw 0x0c
mowvf TMR_0PT
ciclo btfx P0RTM,0
goto ra0_1
bcf P0RTAB,0
goto ralx
ra0_'f bsf PORTAB,0
ralx btfsc PORTAA, Igoto ra1_l
bcf P0RTAB, Igoto ciclo2
ral_'l bsf PORTA8,'|
ciclo2 goto ciclo
inter decfsz CONTA,I
goto continua
conta_0 movlw 0x10
mowrrf CONTA
btfsc P0RTA8.7
goto rb7_1
bsf PORÎAB,7
goto continua
rb7_1 bcf P0RTAB, icontinua movlw b"10f00000'
movrvf INTCON
movlw 0x0C
movwf TMR OPT
retfie
end
Dato che non si arrivaancora ad 1 secondo,si imnipna rnr^onfa-tore ausiìiario CONTA.
che deve essere inizia-lizzalo con valore 'l 6
e si decrementa ad
ogni interrupt delTN/R0, cioè ogni 62,4ms. Arriverà a zero in
16x62,4ms-1secondo (approssima-
tiva mente).
Comporre un program-
ma in linguaggioAssembler per il
PIC 1 6F84, il cui oscilla-
tore rnterno sra contror-lato da un cristallo di
,.1-,4 À,,tLJ-9Uqr4U UO A rVil rZ.
Alle linee RAO e RA1
della Porta A saranno
collegati due interrut-tori AeB,iquali devo-no essere testati conti-n ua m ente, e il lo ro
stato (aperto o chiuso)
riportato su due diodiLED A' e B' collegati
alle linee RBO e RB 1
della Porta B.
lnoltre, un altrodiodo LED sulla linea
RB7 deve lampeggiarein continuazione conun tempo programma-
to di un secondo, cioè
restera acceso unsecondo e snento il
SCCONdO SUCCCSSiVO.
Questo serve per con-trollare il tempo in cui
awiene l'interrupt del
TMR0 che è stato spie-gato in precedenza.