Sei sulla pagina 1di 98

fNICROCONTROLTER

Presenlcrzione Generole

Computers: [e macchine
che governano it mondo.
ttualmente è imoossrbile conceoire il mondo avrete bisogno di un PC. ll computer vi permetterà di
nel quale viviamo senza computer. Se questi eseguire interessanti lavori, ad esempio:
smettessero di funzionare la Terra girerebbe
comunque, pero gran parte delle cose che
esistono su dr essa si fermerebbero. Si inter- Poter vedere Microrobots commerciali con il CD.

romperebbero i collegamenti telefonici, fax, e Internet.


Seguire lo sviluppo costruttivo del Microrobots,
GIi spostamenti su terra, mare e cielo sarebbero seria-
mpnto ncnalizzati lp induStrie fermerebberO i loro nro- Constatare il comportamento del Microrobot eseguendo i programmi
-^--t ^-^.r,,++;,,i
LC))l VfUUULLIVI
^ ,-
C ld
_rmmerCializZaZiOne
LUI lllllEILlOll4LOLIVttC lgi
UCr lnrn
rvrv nro_
lJrv
che riceverete.

dotti. Gli ospedali non potrebbero eseguire determinati Produrre voi stessi i programmi per pilotare il vostro nuovo "animale
interventi. Persino a casa nostra avremmo dei problemi domestico",

con l'ascensore, l'antifurto, ecc. ll caos sarebbe totale.


Poter visitare siti Internet da noi consigliati per ottenere informazioni
ll computer è uno degli strumenti più importanti sulle caratteristiche, prezzi, punti d'incontro e corsi di Microrobots.
fabbricati dall'uomo ed e da questo strumento che
dipende il suo progresso. Risolvere i dubbi ed i problemi che nasceranno durante lo sviluppo
dell'opera attraverso il supporto elettronico.

Per poter seguire con profitto questi fascìcoìi, dedicati


all'affascinante tecnica dello sviluppo, costruzione, pro- Tutti i computer, dal PC a quelli molto più potenti che
grammazione ed applicazione dei Robots intelligenti, controllano un insieme di celle robotizzate oer l'assem-
blaggio d'automobili, o come
quelli piccoli di un Microrobot,
hanno la stessa architettura fon-
damentale, composta dai se-
nrronfi tro olomonti'

MEMORIA
In questo elemento del compu-
,..,i rprogramml
tar \/onfl^nn <rritti
che si vogliono utilizzare, assie-
me ai dati necessari ed ai risulta-
ti che vengono generati.

PROCESSORE
E' la parte più importante della
macchina, esso deve interpreta-
ra lo i<trr rzinn i dol nr,
r,39ramna,
ed eseorrire le onerazioni che
competono ad ognuna. All'in-
tprno dpl nrncpqqorp l'Unita di
ll aersonal computer o PC
Controllo è quella che rnterpreta
sarà uno strumento indispensabile per operare con i microrobot
o traduce le istruzioni, quindi il
P Ol

Memoria Processore Periferiche


lstruzioni e dati Interpreta ed Stampante
esegue le istruzioni

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 di
prossimità, 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. di
larghezza, 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 Un tipico Microcontroller sulla punta del dito.
è facile dedurre che un Microcontroller è un piccolo
cornputer, con poca memoria, dove il processore e
molto semplice, infatti può riconoscere soltanto poche dotto molto conosciuto, che ha al suo ìnterno un
istruzioni di base e le periferiche che possono essere Microcontroller, il quale individua il tasto scelto,
colleqate sono abbastanza limitate. 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 prodotti
I Microcontroller sono computer di dimensioni molto dai due encoders che controllano il movimento della
ridotte che possono essere situati nella stessa applica- pallina in X e Y inoltre riconosce, codifica e trasmet-
zione che gestiscono. La tastiera è un esempio di pro- te i comandi dei tasti.
TWGROGONTROLLER
Presenleizione Generole
u
,

PANNELLO DEGLI
CONTROLLO DELLA VELOCITA CONTROLLO
CONTROLLO DELLA CLI MATIZZMIONE DEL MOTORE
SISTEMA DI NAVIGMIONE
MULTIPLEXING DEL CABLAGGIO
AIRBAG

La tastiera e il mouse sono due tipiche periferiche del PC,


ognuna delle quali viene governata da un microcontroller che si
trova al suo interno.

Un microcontrollore inserito nel prodotto che con-


trolla, sa eseguire solamente un compito, motivo per il ll numero di Microcontroller che vengono incorporatr
quale esegue sempre lo stesso programma: controlla nell'automobile è sempre maggiore
dati che si assomigliano e controlla sempre le stesse
periferiche. Un computer di ulilizzo generaìe come un
PC, possiamo utilizzarlo per disegnare un circuito elet- durante il secolo XXI assisteremo ad un'invasione gene-
tronico, oppure per grocare. ralizzala. La dìstribuzione percentuale della applicazio-
ll microcontroller permette d'impiegare un compu- ne dei microcontrollori nei diversi settori alla fine del
ter per far funzionare tutti i prodotti, piccoli o econo- secolo XIX è la seguente:
mìci che siano.
COMUNICAZIONE: 3O%
Telefoni fissi e mobili. Sistemi di comunicazione. Navigazione.

Le oossibilità d'utllizzo dei microcontroller sono ltmitate


PRODOTTI Dl LARGO CONSUMO:27Yo
solo dall'ingegno dei suoi disegnatori. Chi avrebbe mai Elettrodonrestici. Macchine da gioto. Giocattoli. Sistemi di skureza ed
pensato, anni fa, che una radio avesse bisogno di un allarmi Climatizzazione.
computer?
I ricevìtori moderni, grazie al lavoro di uno o più AUTOMOBILI:18o/o
(ontrollo del motore (consumo, gas di scarico, eccJ. Controllo di frenata
controlier, hanno cambiato immagine a questo classico (AB5). Airbag. Strumentazione. Controllo della velocità. Climatizzatore.

prodotto. La sintonia delle emittenti migliora, sì posso- Navigazione satellitare, Computer di bordo. Sistema antifurto.

no memorizzare le stazioni desiderate, programmarle in


PERIFERICHE INFORMATICHE: 1 5%
modo casuale, realizzare l'accensione in data ed ora Tastiera. Mouse. Disro rigido. Gestione dell'immagine e del suono.
prefissate e tantissime altre possibilità, con la capacità Stampante. Multirnedia.

di aumentare la categoria e le prestazioni di questo


apparecchio che prima era solamente una radio. INDUSTRIA: 1O7o
L'incorporazione dei microcontrollori a tuttì i pro- Strumentazione. Elettromedicina. Automazione. Robotica. Telecamere.
Applicazioni militari. Domotica (automazione delle abitazioni civili).
dotti e sistemi che abbiamo, è in costante crescita, e
MICROCONTROLLER
Presentcrzione Generole

Controllo illuminazione .,....1

SCALA COMPUTER E PERIFERICHE


Ascensore PC e periferiche associate .....".. ...... ... 6
Controllo illuminazione.
Antincendio TOTALE:37

Oltre ad aiutarci con i nostri lavori domestici, nei


nostro lavoro e nei nostri viaggi, divideranno e parteci-
(prnnr{n l: lì:t:nlo.t, nell'annO 2000 efanO 240 i peranno ai nostri momenti di relax e lotteranno per
microcontroller installati in una casa americana. A casa diventare i "migliori amici dell'uomo".
nosîra oLranîi ce ne sono? Faccia-
mo un piccolo bilancio
ln 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 anno
apparono sul nostro mercato
mndo li n I n.ìtont L r .-^--i ,1, .^-
V u VvLLr LoVoL ul lcd- ,t:.:'

lizza'e corrnlessi iavor con l'obret-


tivo dl automatrzzare prodotti
mportantr Pero uno dei più
appassronanti e con ptu futuro
commerciale e sociale e quello
relativo ai microrobots Queste
nirr-oie rn.errhino diventerarno
.^mn:nnó n<or:r:hil de l'uomo
p n.è(to oqpcr.ir:nnn COn veloCiia
ed e'{rcienza "nolri avori quotidia- Pratotipo del srstema PALMA di atuto alla mobilità per bambtni con paralisi cerebrale
lstituta di Automazione lndustriale (C5lC).
r- rhp.rdpsso s'rnlni,lrno noi.
Classifi ca zior€, mercato
e costruttori di microprocessori
*# *ffi il
rT=I-H*T *

ll microrobot della Husqvarna taglia conttnuamente l'erba del grardtno alimentandost con energia solare

smeltere nformazioni e nrragini delle telecarnere che


ll microprocessore e un computer in un chip, pero le sue ulilizza. Un microrobot della prestigiosa azienda HUSQ-
risorse e le sue capacità sono molto limitate. Si utilizza VARNA taglia continuamente l'erba del giardino. ll
nel controllo di aoolicazíoni concrete e di solito e inse- microprocessore che lo governa deve disporre di circui-
rrîo nel medesimn nrodOttO Che COntrOila. A SeConda ti per il controllo dei suoi motori, interfacce con jser-
dollc,annlir:zinni
ucilc lp Lor
oPPillqzrvr il, rE o LLqr ')UL'ic .h^
6pr:r+aric*irh^ Lt tc ucvc nnq(onoro sori che limitano la superficie dr taglio e sistemi di cari-
^^,,^
,,,.,"|"
i mirrnnrnroqqnrp (nnr'r d'fforonti Orrinn nar n^\/arn:- ca delle batterie mediante energia solare.
rp . rn rohot '.drrstriale si deve vvJJ!vU
nossedpre
I r,na
ur ru memoria Per pilotare un distributore automatico di iattine, il
coc ufa grande capacita, perche dovra contenere tutti microprocessore deve solo contare le monete che ven-
i programmi e i dati, i vari temporizzalori per controlla- gono ntrodotte, gestire r pursaf ri di selezrone, rl pan-
re r terrpi, i convertitori AD per il trattamento derle nello di visualizzazione e i meccanismi che liberano i'
^r--À^.-^
9tóttUÍ//t dlldlUVlLl rirrttiti
'^.1^^;-h^lC, |i !ilLurLr <nori:li
)VLLruil di
ur intorf :rri:
.rrLLrldLLld nar
i_,el prodotto selezionato. A fronte di necessità così diverse,
i motori e comunicazione seriale ad alta velocrta per tra- a seconda delle aoolicazioni i costruttori offrono un.r

),tt,'
"'
enorme varietà di microprocessori: dai più semplici ed progettr piu avanzati, come le applicazioni nell'intelli-
economici, destinati a prodotti comuni, sino a quelli più genza artificiale, oppure le applicazioni militari e dispo-
completi capaci di controllare sistemi avanzati. sitivi di immagazzinamento massivo di dati.

,'.'i,, t t,':t.1.!, í::',:. !.'.


" i: ! i,i
i..i i,: i.1 ii :,.,; ì; li. i", i. : i:r'.,,i 1,1.1'"';',':,::"'1t,
i,'i,.',:\ i.j i: ;: i),:"1

A seconda delle loro caratteristiche, i microprocessori si Sono ipiu usati e venduti, e dentro questa gamma si
possono classrficare in molti modi, il piu significativo e differenziano per le loro risorse e capacita. Un buon
ulilizzalo è quello riferito alla dimensione del bus dei progettista deve scegliere il microprocessore che soddr-
dati. ll bus dei dati è l'insieme delle linee mediante le sfi tutte le specifiche del suo progetto, incluse le preve-
quali vengono trasferite le informazioni all'interno del dibilr espansioni future I microprocessori a B bit sono
processore. Ne esistono di quattro tipi: caratterizzati dall'avere il bus dei dati da B linee, questo
comporta che tutti ì trasferimenti di informazioni all'in-
Microprocessori a 4 bit terno della struttura del chip saranno realizzaÍi a byte di
8 bit didimensione, e la memoria dei datiavra anch'es-

Microprocessori a 16 bit

Quelli a 4 bit sono i più semplici e si utilizzano in


piccoli automatismi e giocattoli. Vengono fabbricati in
grandi quantità e risultano molto economici da instal-
lare nei prodotti di largo consumo. Quelli a B bit, sono
i piu utilizzati per la loro grande varietà e versatilità.
Quelli a 16 brt sono impiegati in applicazioni più esi-
genti e, infine, quelli a 32 bit dominano il settore dei I microprocessori a B bit gestiscono dati di tale dimensione

F
-lì,

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- r
OTP: la memoria viene scritta dall'utente finale tra-
ni nr rn pssere differtrntp e si ad:tter: :l fnfmato del mite uno scrittore di memorie e un PC. 5i possono solo
m icroprocessore. programmare una volta e non si possono cancellare.
Adatte ner serie medio niccole delo il lorn h:sqo nrez-
zo.
La struttura generale del microprocessore e composta .
EPROM: mediante uno scrittore e un programma
uor ^,
rl , r++"^
^-"+i
9uoLLr u Poru. di comunicazione con il PC si memorizzano i program-
mi e si possono cancellare molte volte. Dispongono di
Memoria di programma una finestra di cristallo sulla parte suoeriore del conte-
nitore per facìlìtare la cancellazione, che viene realizza-
ta sottoponendo il chip a luce ultravroletta, per il perio-
do indicato dal costruttore.
. EEPROM: si scrivono e cancellano elettricamente
Processore qén7: no.p<<it: di r:nni rrltr:vinlofti
"' '"vY'
.
FLASH: simili alle EEPRON/. Le puo scrivere e can-

ausiliari cellare l'utente finale tramite un 0roorammatore colle-


: "ispositivi gato a un PC

A seconda del modello, la capacita della memoria sarà


diversa, così come il set di istruzioni che il processore
puo accettare, in sintonia alla dotazione di periferiche
di cui è dotato.

t,,1,,,'
Contiene le istruzioni del programma che governa l'ap-
plicazione a cui è destinato il microprocessore. Dato
rhp devc osonrrirp somnre lo slesso !v,
comnilo
,,v, Lv, rdeve esse-

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 scritte
all'interno della memoria dal costruttore e non posso-
no essere cancellate. Sono consigliabili per le grandi Fotografia di un programmatore per microprocessori
serie. con 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
yLvL rL!Luld a )Ll
lottr 1rt C crr''t+'
ltLUld (:/ .^-nnr.l:
d )t:LUllUd nlall:
UClld
VL,rrruLLLrL
tecnologia di fabbricazione, si divide in due categorie
à. |r fondamentali:
o RAIV: Memoria di iettura e scrittura molto rapida
e volatile.
. EEPRON/: Memoria di lettura e scrittura lenta, ma
non volatile.

; ' ';' :,' :1" . , ' l,'ll,

I
^t
t)frr^ hlnrrhì tinìri Aì tt
-. -n mtcroprocessore ''|,"..'''inrarirata di intprnretare ed
È la narlp dpl romnrrtpr
eseguire le istruzioni del programma E formata da due
sezioni, l'Unità Centrale che traduce le istruzioni e la anno del secolo scorso, arriva a moìte centinaia di
ALU (Unita Logico Aritmetica) che le esegue. milioni. ll maggior consumo, circa la terza parte, si e
verificato nel settore dei compu'ter e relative periferi-
': l ;l': ! l::
, : ': che.
Questa parte del microprocessore contribuisce, insieme La quarta parte e stata assorbita da prodotti di largo
alla capacità della memoria, a determinare la potenza e consumo, come elettrodomestici, giochi, TV, eccetera. ll
la complessità del dispositivo. Alcune delle periferiche settore delle telecomunicazioni, l'area industriale e l'au-
niir imnnrt:nti <nnn' tomazione completano il resto.
o Porte di inoresso e di uscita.
r Temporizzatori.
. Comparatori e campionatori di segnale. I maggiori costruttori di circuiti integrati dispongono di
o Convertitorr AD e DA. una linea di microprocessori, date le enormi aspettatrve
o Interrupt. di mprc:lo che si nrevedono. INTEL è considerato come
. Whatch dog. il padre dei microprocessori, perche fu il pioniere nella
o (i<lom: di <t:nd-hv fabbricazione di questi componenti, con il modello
8048 negli anni 70 poco dopo aver commerctalizzalo,
nel1971, il primo microprocessore del mondo. In segui-
la fine deoli anni 90 ha consolidato un forte incre- to ottenne un grande successo con la produzione del
mento nella vendita dei microprocessori a B bit, men- microprocessore a B bit della famiglia 8051, alla quale
tre ha mantenuto ilvolume divendita di quelli a 4 bit, seguì la 80C196 a 16 bit. Tuttavia è stata MOTOROLA
inoltre sono incominciati a crescere anche quelli a 16 che ha occupato il primo posto della classifica mondia-
e 32 bit. Se si suppone una media di 4 dollari per le negli anni 90. ll modello a B bit 6BHC'11, costruito
unità, il valore dei microprocessori venduti nell'ultimo con tecnologia HCMOS, e capace di interpretare il
repertorio completo di istruzioni del microprocessore
m6800 piu 91 nuove. f azienda americana N/ICROCHIB
produttrice del microprocessore PlC, che utilizzeremo in
questa opera per costruire il nostro robot, ha scalato la
classifica in modo vertiginoso, passando dal 20" al 2"
nosto in rn àr.o di temno rhe va dal '1 990 al 2000.
Orresta ascesa e hasata sulle sue eccellent nresta-
zioni, che sono le stesse che ci hanno ìndotti a sceqlier-
lo per la nostra macchina.

1990 1991 1992 1993 I 994 {001 t000


RÀilKtil0 RAIIKIIIG RATIKIIIG RAI{KIIIG FIt|KIT{G MilKtilG RAIIKIIIG
1, lloloro|a l\4otorola Motorola l,lolorola l\4otofola l\4otorola lloloro|a
2. Mihubishi l\lilsubishi lllilsubishi NEC l\4itsubishi ll4itsubishi tulicrochip
3. NEC NEC lntel lllitsubishi NEC NÉC

4, Intel lntel NEC Hitachi Ph lips Philips


c, Hitachi Hitachi Phìlips Philìps Intel
6. Philips Philips Hilachi lntel lllicrochip I
Èl\4icrochip
cnc

1. tulatsushik l\rlatsushik l\4ahushila SGS JUù Inlel


8, National SGS SGS f Microchip lllatsushita Hitachi
Siemens Slemens Nalional I i\4atsu$ita Hitachi Toshiba

10, Ti Ti Ti I Toshiba Toshiba Fìjilsu


11, Sharp Nalional og IZ1 Nationa National Hicoh
12, 0ki Toshiba Toshiba I Zilog Ti Matsushila
13, Toshiba Sony Siemens I Ti Htc0n Ti

sGs Sharp Èl/licrochip J Siemens Fijitsu National


15, Zilog Oki I Sharp Sharp Zilog Siemens
t!, l\4atra I\4HS Zilog I Sanyo Oki Siemens Zilog
17, Sony fulicrochip J ltlatra||4HS Sony Sharp SonY
t0, Fujitsu Itlatra[4HS Sony Sanyo 0ki 0ki
19, AI\40 Fujitsu Oki Fujitsu Sony Sanyo
20. l\4icrochip Sanyo Fuiitsu AI\4D Temic tem c

La vendita in miltoni di dollari dei mrcroprocessori a B bit supera \npt tsrnlsrp s<ep<s doll'e-ienda
ampiamente la somma di uttigli alLri. MICROCHIe produttrice del mrcroprocessore PIC
Perché it PIC?

€'É

Presso i che dlstribuiscono MICROCHIP in tutto il mondo, tyoviamo una straordinarla offera di prodotti relatwi ai plC
lvenditori

ll'interno dell'ampio panorama di modelli e gio, e molte università e centri di formazione specializ-
"';.,i
.F:1" fabbricanti di microprocessori, qual è la
',t?i regrone che cr ha indotto a scegliere il ptC ' zaIt, hanno scelto questo fabbricante per dare suppor-
,;l' : to allo sviluppo dei loro programmi formativi. Nella
tabella che segue elenchiamo gli aspetti piu rilevanti del
tenere conto che per ogni applicazione con- , PIC:
:
creta esiste un microprocessore ottimale, pero a secon-
da def le circostanze o delle prospettive per il futuro, il
modello o il fabbricante possono cambiare. euesto
significa che non esiste un microprocessore migliore in
termini assoluti, dato che ogni caso risulta differente.
Semplicità di utilizo
MICROCHIP ha scalato la classifica mondiale di ven-
t

dita dei microprocessori a B bit, infatti dai 20. posto del


1990, è arrivata al 2" posto ai giorni nostri. euesta fan-
,
Preao molto conveniente
ì

tastica accoglienza da parte di industrie, professionisti e


appassionati,edovutaalfattocheiPlChannouna
dote molto particolare: questi microprocessori sono Strumenti di sviluppo economici e facili da utilizzare
:

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
Enorme varietà di modelli di microprocessori

$"* S+el"+eÉs*$Èe+'uu tr$€lìn* eii* sEè+*+.+e{*$+e


r.t- l
..;
'
,tí
.ti

Un dato significativo è costituito dal


fatto che il fabbricante N/ICROCHIP, si è
o,9 I
preoccupato più di vendere e far merca- !
to con i suoi microprocessori, che con gli o,8 I
strumenti ausiliari di cui questo compo-
npntp nereqqita
,rrrJJ,Lv. In ortesto modo molti o,7
"' Ye

strumenti software si lrovano liberamen- o,6


te disponibili attraverso i loro distributo- I
I
ri nel mondo, o possono essere trovati 0,5 I

nei siti Internet. Le risorse hardware che


o,4
sono utilizzate nella sua applicazione I
I
hanno fatto sì che molti fabbricanti s'in- o,3
I
teressassero alla loro costruzione, quindi I

attualmente si hanno modelli di tutti i


o,2

tipi e prezzi. G :ffi elS ffi


o,r -! i
Sui mercatr esiste un'importantissima
a
-JI
e varia offerta di prodotti relativi ai PlC.
-# I a *ill
a

STó2 80c5 l X8óCXX Mcó8HC05 coP800 Ptct óc5x


fenorme varietà di modelli d PlC, più di @8MHz @rMHz @l2MHz @4,2MNz @20MHz @20MHz
un centinaio, permettono di scegliere il THOMSOM INTEL ZITOG MOIOROLA NATIONAL MICROCHIP

mrgliore a seconda delle applicazioni. ll ."_#


costo dei microprocessori PIC dipende Comparazione della velocità di esecuztone di un insteme
molto dalla quantità acquistata, pero di programmi di prova del PlCl 6C5X a 20 MHz, rispetto ai principali concorrenti
comparativamente è inferiore ai suoi
competitori. Sono facili da utrlizzare, perché nella gamma i alimentazione è molto apprezzato. Come si puo vedere
media - che è la più popolare - la gamma di istruzioni è j dai grafici sia la dimensione dei codici che genera il suo
di 35 che è quella più semplice ed efficiente. ll basso con- I
ll
programma, come la velocità di esecuzione lo avvantag-
sumo e l'ampio range di voltaggio che permette la sua I giano notevolmente rispetto ai suoi concorrenti.

!l
Í ,rE , ,
2,5 i1

'1,5

o,5

o
Ptcl óc5x coP800 MCó8HC05 78óCXX 80c5r STó2
@20MHz @20MHz @4,2MHz @12MHz @l I MHz @8MHz
MICROCHIP NATIONAL MOTOROTA ZITOG INTEL THOMSON l' t
i!
1ì-.,",.,.-=,".-.'+"". +,*'*r+,*' "."-.,,:..",i
La dimensione del codtce per l'insieme dei programmi di prova
per il PlCl6C5X è molto pitt piccola di quella dei suoi prrncipali concorrentl

s#frge*++fr1..1$p.g'
* MICROCONTROTTER
lei famiglio "PIC'' di Microchip
L

Disposítivo per la programmaztone del microprocessore plC,


preparato per lavorare con chip da 1B a 28 prn. Permette la connessiane a un PC attraverso la porta paratrcta

EEPROIVl, che fu presto sostituita con la memola


FLASH, tecnrcamente piu eff iciente. Nel 1996 presento
Come succede di solito con 1e grandi imprese amerrca- modelli PlC12C508/9, in contenitore con solo B pin,
ne, tJtto in,zia da qua cosa o, motto oicco o, che g"azie che ebbero un successo senza precedenti. Alla fìne
allo sforzo, alla qualtta tecnica e alla vrsione commer- degli anni '90 presentò la gamma alta, migliorata con
ciale, assume rapidamente dimenstoni enorm una poderosa architettura che risiede nella famiglia
ll primo successo di questa giovane impresa, la cuì PICl BCXXX, riducendo i prezzi dei microprocessori, fino
sede centraie e a Chandler tn Arizona, risale al 1989, ad arrrvare a 0,50 $ per unita. Nel 1999 aveva venduto
quando mrse In vendita un PlCl6C5X a 8 bit In versto- un miliardo d mtcroprocessorì a B bit rn tutto rl mondo.
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 AD Imodel i di PIC superano abbondaniemente tl centi-
rntegrato st trattava dei modello PlC16C71. Attorno a naro, e sr possono raggtuppare rn cinque categorie, che
1994 commercialjzzo ì primi prodottr con memola sr presentano secondo le loro principali caratteristiche,
FLASH e rl PIC 16C84 con fnemor a di programma 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 ALTA
FAsctA 120 ns / 33MHz 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- 72 modelli differenti. Si trovano in commercio con con-
mìci, dispongono delle risorse minime per controllare le tenitori da'18 a 68 pin e sono dotati di un set di 35
periferiche principali, come nel caso del PlC12C50B. istruzioni da 14 bit ognuna. ll loro stack arriva ad 8 livel-
Altri sono così potenti, come il PIClBCB5B, che i suoi li orrpsto nprmpttp sino a B annidamenti di subroutine
parametri e le sue prestazioni assomigltano a ststemì di come massimo. ln questa fascia e compresa la famiglia
applicazrone molto avanzati. Nella tabella riportata dei P|C14C000, specializzati per i progetti dei carica-
sopra, sono messi in comparazione questr due tipi di batterie intelligenti, gruppi di continuità, acquisizione
PIC. ed elaborazione der segnali, che richredono ìa gestione
dell'energia di alimentazione.
' 'l I '';',' , : t' .'l'.' .'
' , , ,. l, ,.
Comprende tutti i modelli rnquadrati all'interno della
.

denominazione PlC16C5X, iquali sono dotati di un set In questa gamma sono compresi undici dispositivi della
di 33 istruzioni da 12 bit di lunghezza ognuna. Sono serie PICl2CXXX, tutti quelli con contenitore da B pin,
talmente semplici che non sono dotati di interrupt, ed che hanno avuto un successo commerciale senza pre-
hanno solamente due Iivelli di stack. Hanno una dimen- cedenti, data la loro dimensione e il loro prezzo. Alcuni
ur nrro<ti îllî {ac.;î hrca olLl
:l+riI o:
sione molto ridotta, infatti sono commercializzati in eli
vuE)Lr rmnIellr
rvucilr rnrric^^^.1^^^
!urrJPUllut-rl lu dlld ld)Lld ud)cr
contenitori da 18 a 28 pin, sono ideali per applicazioni quella media.
semplici, di grande consumo, e che funzionano a bat-
teria.'
Hanno un'architettura aperta, che permette l'amplia-
I it ' t, :l mento esterno delle periferiche del microprocessore,
Sotto questa denominazione si raggruppano i proces- tramite il bus dei dati, quello degli indirizzi e dei con-
sorì che si identificano con la nomenclatura PICl6CXXX trolli. ll set di istruzioni arriva stno a 58 e la loro dimen-
e formano la gamma piu ampia e diversificata, con ben sione e di 16 bit. Dispone di un sistema molto potente
di gestione vettorializzata degli inter-
rupt, e vengono utiìizzati in applica-
zioni di grande complessità.

l l ' ,',':, ' .,',r lt,'lll I'1.;


';1
MICROCHIP ha prodotto nell'anno
2000 la serie PIClBCXXX, caratte-
rizzala da uno straordinario rendi-
mento, dell'ordine dei '10 MIPS ad
una frequenza di 40 MHz. Sono
dotat; di ln notentissimo set di 77
istruzionì da '1 6 bìt ognuna, e ven-
nnnn rommereializzali in conteni-
tori da 28 f ino a B0 pin Sono destì-
nati a lavorare con compilatori
'-.:, molto efficienti in linguaggio C, e la
loro memoria arriva a capacita di
16 KWord da 16 bìt.
Selezione e presenta zione
del "PICI6F8 4"
na volta deciso di utiiizzare un mrcroproces- , 1,,, , :. r,.,':, ..,;ir1.r, tl,l,.:i;:r; 11'
sore PIC di N/ICROCHIP, il passo seguente e Per governare un robot mobile, il microprocessore
scegliere il modello adeguato pe' il nostro dovr: renol:rp drre motori che muoverannO le fuote
progetto, all'interno de '116 possibili Per motrici, e dovrà ricevere ed elaborare le informazronr
poter fare questa scelta, dovremo st;diare che gli rnvieranno alcuni tipi di sensori, come quelli di
molto attentamente le caratteristiche dell'applicazione prossimita, di contatto, di temperatura, a ultrasuoni
che il chin dovra oestire. Nel lavoro che abbiamo intra- eccetera. ll corretto trattamento delle informazioni for-
preso vogliamo costruire un robot mobile che sra capa- nite dai sensori, determinerà il movimento delle ruote.
-^ ur lrLVurs Ài,,^"-, -
LL ^t ^.^^,,t"^ urvq: uOl'lìpt{L '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 molto
grande. Quello che risulta indispensabile e che la
memoria del programma possa essere scritta e cancel-
l:i:
rdLd n' rìn+ó \i^r+^
qudrìLe v(JrLe .s'd r--,---,,-, narrho
. noroc<:rin
r,-,-,,- il., nr
f.,'Ogfamma
d'oendera dal lavoro che dovra eseguire rl .obot D'altra
n:rtp il mirronroro<.qoro <rpltn sorvir,r npr ,far _, ct tmpara-
'e la programnazione prima di costruire I robot; 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 circa


1000 istruzioni

Memoria dei dati di almeno due dozzine


di indirizzi,
e non volatile
Un robot come il famoso R2D2 di "Guerre stellari" necessita
rli ttn mirrnnrnlp\\nrp rhe np<li<es i<ttni moforr, p
, qi2 rt^ trn ur
rru LolJoLq -tì
ricevere ed elaborare le informazioni inviateqli dai sensort.

-.1,".,,
il:,.,,1,::,:,: i:',,::;l
'
.-""-''-'..'.'.'.',.,".'..fr ,ò7;ll' MICROCONTROLLER
Sceltei del PIC ii

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 fabbricante
un modello della gamma media del PIC che soddisfi le
nostre esigenze.
ll modello che meglio si adatta alle nostre richieste,
è il PlC16FB4, capace di lavorare fino a 10 MHz, pero
dispone dr una versione PIC'l6FB4A, capace di 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 14
hits e nonrrna di orreste nrro ronlenere rrn'istrUzione.
Inoltre, è di tipo flash, il che permette di registrarla
e cancellarla irn mioiiaio di volte in tutta sicurezza. la
memoria dei dati contiene una zona RAN/ volat le da 68
bytes, e un'altra EEPROM non volatile, da 64 bytes,
adeottata alle nostrp esinonzp Disnone r^li 1? l,nee di l/O
dioitali
-'y'.-'', un temnorizTÀIorp |rn watch-doo
, ""Y, Y'nrto funzio-
nare in modo "riposo" con basso consumo. La velocita

Memoria di programma: I K x 14, tipo flash

Memoria dei dati RAM: 68 Bytes


s
:îS:u Memoria dei dati Eprom: 64 Bytes
tt
* -t
4 {g
*! L!""Ilt'g!3
a
5.!j
Set tJi istruzioni: 35 da14 Bits
a:
i;- -' Tempo di esecuzione delle istruzioni normali: 4 X Tosc
91
r$: S'" Tempo di esecuzione delle istruzioni di salto: 8 X Tosc

Cause che provocano Interrupt: 4

Frequenza massima di lavoro: f 0 Mhz

Linee di l/O digitali: '13

Temporizzatori: uno per l'utilizzatore, uno per il


watch-dog.

Tensione di alimentazione: da 2 a 6 VDC

Tensione di programmazione: da f 2 a 14 VDC

Contenitore: DIP a 18 PIN (oppure SOIC)


MICROCON

Assieme al6F84 esistono altri modelli con


PIC'l
caratteristiche molto simili. Così il PlCl6C84 è uguale,
però con memoria di codice di tipo EEPRON/. ll
PIC16F83 ha come memoria di programma FLASH solo
512 oarole. Ci sono modelli le cui lettere intermedie
sono 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 viene
montato in serie di molte mioliaia di aezzi.

ll PIC 1 6F84, che utilizzeremo nel nostro lavoro di


apprendimento dei microprocessori e applicazìoni alla
robotica, è fabbricato con tecnologia CMOS e si trova
lmmagine del PlCl6FB4 incapsulato in un contenitore plastico con 1B piedini,
sopra uno zoccolo per proteggere i suoi piedini. come si può osservare nella figura. Secondo le loro fun-
zioni, i piedini si classificano in 4 grandi gruppi.
massima di funzionamento è di 10 Mhz, che risulta
sovrabbondante, dato che le istruzioni si eseguono a . Alimentazione
400 ns, tempo inferiore a quello di cui noi abbiamo Perché tutti r componenti elettronici del microprocesso-
bisogno nella nostra applicazione. Pensate che il pro- re possano f unzionare, è necessaria una tensione di ali-
gramma più lungo è di 1 .024 istruzioni e a questa fre- mentazione a corrente continua, che deve essere appli-
quenza ci sara un ritardo nell'esecuzione di 0,5 ms, che cata nel seguente modo: il positivo al piedino VDD e la
vengono accettati come tempo massimo di risposta del terra a VSS. ll voltaggio di alimentazione è compreso tra
robot. 2e6VDC.

4ltttl\|lllti/|M Ptcr6c84 Prcr6F84 Ptc!6cR84 PlCr6F84 PrCr6CR84


èi;c[r to lo
lk
tk

36 68
64 64
TMRO+WDT TMRO+WDT

4 4
t3 t3
RAilGE DI tl 2.0'6.0 2.0-6.0
18 pin l8 pin
DrB SO|C DrB SO|C

Varianti del PlCl6FB4


L'altro compito del piedino 4
PD|P, SOIC p -l
r nttolln
yuLr rho ci rifaric.o
rilLrrrLC dl

VPP cioe nermette la scrittu-


ra e la cancellazione della
memoria FLASH e EEPROM
€ R/qI del PIC 1 6F84 Per ouesto
Y

RA4/TOCKI * * R/AO
lavoro si deve fornire al pie-
dino 4 una tensione a cor-
MCLR * * oscl /cLKlN
rente continrra comnresa tra
12 e 14Y.
Vss '-* ** osc2lctKouT . Linee di l/O digitalì
RBO/INT € ** VOO I tredici piedini rimanenti, di
cui non abbiamo ancora
RBI * * -i ,,+il;---^^
RB7 ^-.1-+^LU, 5l
lJdllcì ULllll./dll(-) pef
introdurre e ottenere infor-
RB2 {-* 4-È RBó *--;^^: !i^i+-l !- ^ vr,:fSO
tt taLtwt I ut9tLoti, uo u tl

RB3 * "* RBs


nrocessore Orresti niedini
H
sono dislrihrriti sl 2 oorte.
* RB4
la
LO A rnnc+r,-J
^^.ta LO H lV|)tO
VWr
che corrispondono ai piedini
U
tr l,^^^
J lttCE

denominati RAO-RA4 La
nnrt: R o r1icnnct: JU rR
qr U
linao
llllrc

Contenitore del PlCl 6F84, cosi come di tutte le sue vanantt. di l/O rhp corrisnnndono ai
pìedini RBO-RB7. Ci sono un
. Frequenza di lavoro di PlEuil
n.ein ul
vqlu r.hp vrLrE
nipdiniil l|E/ nl+.^ a uo|LLQt E rE +
-.^-r,---"^r^ ^-ioni di l/O
turrl
La velocità di funzionamento del PlC16FB4, e determi- digitali, hanno un alrro compito multiplexato, corne si
n:+:
llOLq r{:ll:
UOI|O {ran"on-:.ho
llEVUE|l4O 1,,! ci nonor: intornan-^^+^
rru'rlclltc/ -1.^
LllE
.^i^^L^"À
)prcgr rcrd ^;,, -,,-^+i1Lr.
pru dvdr
deve essere stabilizzata dall'esterno mediante un cri-
-+-il^ ..Ji
)LCllU ul 9uol4w
-^ilîoato ai
LUlltrVuLvur nredini
p'Luil il oSC
vJL 1/cLKlN e
OSC2/CLKOUT. ll PlCl6FB4 è un circuito integrato con doppia fila di
piedini. Ha 9 piedini metallici su ogni lato del conteni-
. Reset e programmazione tore che sono abbastanza flessibili.
ll piedino 4 denominato N/CLR#/VPP, supporta due fun- Questo circuito integrato, a volte, deve essere scrit-
zioni rhe si mrrltinlpxano nel tpmnn ll PIC lavora nor- +a rnl nraarr*-.
ro cor p"ogramma cne
-h^ supporLd ilil 1.,,^"^
.,,^^^r+î
dvoro, per
^^. por essere
m:lni:ntp oqonrrondn il nrnnr:mm: rho h: roni<tr:tn inserito nella scheda di applicazione ed e abbastanza
nella memoria FLASH, quando si attiva a un livello basso frporrentp dnverlo inserire sullo zoccolo dello scrittore
sul piedino 4, si reinizializza o resetta il microprocesso- per poi toglierlo e reinserirlo nuovamente su quello
re n{testo sicrnifica che i cr rni rpni<,tri intprni aSSUmono dcll: crhcd,a di :nnlirazione Orrpsta onerazione
Y vrJ Lu vvL e
un valore determinato e che il contatore di programma molto delicata perche se si forzano e si piegano i piedi-
punta la direzione 0, da dove incominciare il program- ni rinetute volte notrebbero staccarsi rendendo irrecu-
I
:^i-r-ri-'-'r^
lld pul I rLtorLLót tu. ^ 4CLR:
tv lVaster Clear Reset. perabile il circuito integrato. Raccomandiamo di collo-
care il PIC'16F84 sopra uno zoccolo normale, perche
srano i piedini di quest'ultimo a subire la pressione, o
NOîA !À'IPOn!AHTE menlio sosîiîrrire lo zoccolo dello scrittore o della sche-
"'_v"'
ll simbolo # che si antepone a certi segnali indica che i
r- ur'Ji oPPilLo4rurc,
uo -^î uno zoccolo a f orza di inserzio-
^^^ri---i^^^ LUI
medesimi sono attivi a livello basso. Questo simbolo è Irc Inrrll:
ne uilo, n|esto
9uc)LU nnssip;^
,,^- l^,,- -^^
PU))rEuE ur rc rcvo lr ^^"^ ' fOf i dOVe
rE oPtE I

identico alla riga che si trova sopra al nome del segnale. si introducono i piedini, cio aiuta enormemente a pre-
servare l'insieme dei oiedini.

r,;i,,;; r'rli 2,i:it'l:.ti :l:.: !l:i:,


La frequenza di funzionamento
del, microprocessore
.--r.i l cervello del nostro robot sarà un mtcroproces- si realizzano i programmi, pero ci sarà maggiore consu-
,
:r.:
;" sore. ll modello scelto è il P|C16F84, che è un
t:::--
mo di energia, cosa molto importante nei sistemi ali-
,':_ piccolo computer la cui missrone è eseguire le mentati da batterie.
istruzioni che noi scriveremo nella sua memoria
' .''.i.i , '' di programma. Attraverso queste, decodificherà ; i ,;:,, ' l',.i,;,,:t,r;,
i dati che gli invieranno i sensori per riconoscere le ll ciclo di istruzioni è il tempo impiegato ad eseguire
caratteristiche dell'ambiente, stabilendo con esse la un'istruzione. Non deve essere confuso con il ciclo di
strategia di movimento dei suoi motori per realizzare clock, che è il tempo con cui si realizza un'operazione
efficientemente i comprti che gli abbiamo attribuito. elementare.
ll PIC sa solo eseguire istruzioni. Ne conosce 35, non Un'istruzione si esegue in due fasi:
una di più. Nel suo costante lavoro di esecuzione, con- o Fase di ricerca: nella quale si cerca il codice bina-
verte le istruzioni in operazioni elementari. Ognuna di rio dell'istruzione nella memoria del programma.
queste cperazioni elementari necessita per essere ese- . Fase di esecuzione: nella quale si interpreta il
guita sempre dello stesso tempo, che è stabilito da un codice, si cercano gli operandi e si eseguono le opera-
clock molto preciso che indica I'inizio e la fine di ognu- zioni conseguenti.
na. Ognuna delle due fasi di istruzione si realizza in
ll nostro robot ha incorporato un PlC16FB4 che puÒ quattro ciclidiclock, che sichiamano Q1, Q2, Q3 e Qa.
'funzionare ad una freouenza di clock massima di 10 Quindi se ogni istruzione fosse eseguita in sequenza si
Mhz. Esiste una versione speciale chiamata PlC16F84A, tarderebbero quattro cicli di clock nella fase di ricerca e
che ammette una frequenza massima di 20 Mhz. Se altri quattro in quella di esecuzione, in totale otto cicli,
lavora a 10 Mhz ogni ciclo di clock durerà 100 ns e in come si vede nella frgura.
questo tempo si realizzerà un'operazione elementare di I microprocessori PIC dispongono di un processo-
una istruzione. Pertanto, un'istruzione verrà eseguita in re molto moderno, nel quale si utilizza la tecnica
vari cicli di clock. della segmentazione per eseguire le istruzioni.
Tanto maggiore è la frequenza di lavoro del PIC Questa tecnica si usa anche nelìa fabbricazione delle
tanto più rapidamente si eseguono le istruzioni e prima macchine, e nelle catene robotizzate delle grandi

FASE DI RICERCA FASE DI ESECUZIONE

Un'istruzione è composta da due fasi: ricerca ed esecuzione.


Ogni fase occupa quattro cicli di clock, e se il PIC avesse un processore normale il ciclo dell'istruzione occuperebbe otto cicli di clock

t.:"
Velocitù dl, e inizicrlizzeizione
I : r- " @i *3

,,: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- ricerca di un'istruzione, il secondo si oedica a realizzare
le, e fermare la produzione fino a che non sia stata ra fase di esecuzione dell'istruzione che e stata prece-
terminata la prima, si divide il lavoro in stadi succes- dentemente trovata. Con la segmentazione si ottiene
siv, in modo che iveicoli passrno da uno stadio all'al- Il'acorr rzinno
c)ELu4tvttE di w9rrr
ur nnni i<trr rzinnp rrur
r)rru4,vrrL npl temnn
rur "^a +r.ò
Ii Ulld lo)C,
trn ( nn,y-*-.- -,-, ra Àol
n{toqt: tprnir- l-',^.n pdldllel(J,
oel lavoro n:r:llaln Sl rleSce <:rphhe e: v,,L
dirc nrr:ttrn
YvuLL,v cicli di clock.
a dividere il tempo impiegato in tante parti quanti Al sovrappors' dei due stadi d'istruzione, il tempo che
-^^^
sono ^li slaor ,,+ili---+
gll -+--li uuillrdLl. imnipne rrn rrrln di istrr rzionr e di orratiro cicli di clock.
ll nrorcssore del PIC e
costruito con stadi diffe-
renziati, o stadi che
generano una segmen-
tazione di secondo ordi- FASE DI RICERCA
f tslRUztoNE
ne Uno stadio realizza la FASE DI RICEBCA
2" ISTRUZIONE
fase di rìcerca e l'altro la FASE DI RICERCA
3" ISTRUZIONE
fase di esecuzione Gli FASE DI ESECUZIO}IE
,f ISIBUZIONE
stadi sono indipendenti FASE DI RICERCA
5AISTRUZIONE
fra di loro, quindi posso-
no lavorare in parallelo;
mentre prtmo sta il Dato che la fase di ricerca e quella di esecuzione
si realizza in parallelo, il ciclo di istruzione dura quattro cicli di clock
effettuando la fase d

Un P!C16F84, che funziona ad una velocità Calcolare il tempo di ritardo


di10 Mha esegue un programma di 100 istruzioni, nell'esecuzione del programma anteriore
delle quali 30 sono di salto. Calcolare in un P!C16F84
il tempo che impiega ad eseguire il programma, che 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 = TEMPO Dl CICLO ISTRUZIONE Dl SALTO =


8 x T. CLOCK = 800 ns 8 x T. CLOCK = 2.000 ns = 2 ys

x 8ffÌ=S :5l
,.;i :;, -:,; ;riy ,i;l;:ji,yt ,;.
!; ,;1 ;,:. :1,1,:-:':
:+:,:i'; :,i";
,itùr j!tlrr,r!N:]*!i,::]i#lHì.ìlrr:rìrr}rrrrrl úft ,.,jij@rr#tlsÍ{!{l1 jìrììlìxìì11ììtlrrrltlillrnr\irmr&14?mrlifr lfr stllffi f lÍ{f 11fi 11
í,t'

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. St r*
l,a r:niono di nrrpsto ritardo si deve al
tlt.s
NeE
{r++n rhalc :rrirrr :l nrnao<<^ro {ÍS c:o
IdLLU Ll ^, '.ndn
vuoriuv qrrrvo or PrvLsJJvls
un'istruzione di salto non si puo comin-
.i-r^
Lldlc la
ld {-.^.li
l6)c ul r''rarra
I lLqlLú rjoll>
uLilu (afl1Anto
JLVULTTLL,
nerrhe non si sa orrale sia. Le istruzioni
normali sono ordinate in indirtzzi succes-
sivi nero nel caso di un'istruzione di I
salto, fino a quando non si completa la
fase di esecuzìone non si puo sapere
quale sara I'indtrizzo seguente.

I microprocessori PIC dispongono di


un oscillatore interno che determina
la f requenza degli impulsi di clock Cristaili ar quarzo di uso corrente
Sonz: drrhhio nor rontrollare il valo-
re della frequenza e stabilizzarla, e
necessario aggiungere alcuni elementi esterni ai pie- . Oscillatore RC
dini 15 e 16 (OSCl/CLKIN e OSC2/CLKOUT). . Oscillatore LP
Secondo il tipo di cìrcuito esterno, gli oscillatori si . Oscillatore XT
dividono in quattro tipi . Oscillatore HS

Uno dei dat, di inizializzazione necessa-


ri al microprocessore riguarda il tipo di
+Voo 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 combinazione
corrispondente.

':,,,:l
ffi OSC2/CLKOUT ln
,L' nrro<tn r:<n <i rnllon:nn :l nior^linn 16

flw-> Fosc/4
VULJ(v
del PIC 6FB4 (OSC 1/CLKIN) una resistenza
1

e un condensatore, i cui valori sono forni-


ti dal costrutlore nella scheda tecnica, e
Fosc Rexr Cexr
cne sono funzione del valore della rre-
625 kHz 10 ko 20pF flron7: C)rresto nroredimento e molto
80 kHz 10 kfi 220pF economico, pero la stabirita della f'equen-
za è mediocre e sono adattr solo in sistemi
80Hz 10 kO o,1pF
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
I valori della resistenza R esterna e del condensatare C esterno parte della f requenza di clock (Fosc/4) che
determinano la frequenza nell'oscillatore RC Questl dati sono forniti dal fabbrrcante
e iì tempo di ciclo di istruzione normale

';:
't:;:;;tj tt,
Questo tipo di oscillatore si usa per
lrrinrrro ran fraartar rze supefloI a
4Mhz.
Ulilizza un cristallo di quarzo e un
OSCl/CLKIN risonatore ceramico tra i piedini '15 e
1 6 collegato ai condensatori di disac-

coppiamento. Non tutti i modelli di


PIC ammettono questo tipo di oscil-
lr+arn
lo Flr+r
LU E. UAtA l-.,,-)Ud drLd
tA .l+- +.^^,,^^--
il trquct tzdr :ltl
consumo è molto elevato.

i;t i:5li:ì .-:;trLi'.i,1,


+l ia'j
F; it
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
ii
it ricomincia a eseguire il programma
+.*,.,,"=,*=,".,."",.*,.,.,",=,-, =_,.._,.,_,,,.,.,_,j dall'inizio nonendo à uno Stato noto
Per le f requenze comprese tra 4 e 1 0 Mhz i condensatori CI e C2 hanno una capacità
tutti isuoi registri interni, Questo
processo avviene anche quando si
collega per la prima volta la tensione
i-tfiq-"ii"L+ {-}+:iF: i"::r' i di alimentazione al chip, e si chiama "Power on
Tra 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 Program
quella'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 V)LilrOLUrE
LIPU Ur ^.-ill-+^"^ --l -++^ pcl
^ CUCttu
E ^^"
vuE)Lw
lavorare con basse frequenze, comprese
tra 35 e 250 Khz. ll principale vantaggio
dato dalla bassa f requenza e il consumo
rli
u, onerni:
LrrLryru ridnttn
rruvLLv ràc
Lr ^^-^--t'^
rC IICLtj>)ILd
nr-
^l TIL
dl

per funzionare, dalo molto importante


nei sistemi che si alimentano a batterie.

#SflEil€-.éè€q}-qtr SsiT
Orroctn
VuLrLv o
L ìl
,r tinn
Lrl.,v di
ur n<rill:+nra
vrlllloLUlC .^^lC U)ClC-
Ll "c^r^
mo Y-,
,,," ner ron'trollarp rl PIC del nostro
robot, perche e predisposto per lavorare
tra 100 Khz e 4 Mhz, la frequenza di
lavoro selezionata per il nostro N/onty.
lVonteremo un cristallo di quarzo o un
risonatore ceramico tra i piedini 1 5 e 16,
rnllenato ,ai risnettivi condensatofi di
disaccoppiamento, i cui valori sono indi-
cati nella documentazione tecnica e Quando si attiva il pulsante di RESEI si resetta il microprocessore,
dipendono dalla frequenza selezionata. cosi come quando si applica la tensrone di alimentazione per la prima volta

€*€**$*'efu #* $ww*s* * $s&€H$*E$eemeÈ**e*


t, i.!;
"t

-,:,,
-r,
- t, 't'

fintuizione
di un sognatore
el 1945 Von Neumann stabilì le MEMORIA
PRINCIPALE PROCESSORE
basi per la costruzione dei com-
puter che oggi hanno invaso il BUS DEGLI
mondo. Disegno una macchina in tNDtRtzzl
cui vi era un blocco - unità di con-
rrnlln
Lrvllv - LovoLE Ài llininp5laf;ra
ul rLEi Pr sLors rrn| ilinciomo
uÌ .li
rJrEr I rE ul
ictrr rzinni
"'
nonor:\/:
v!' '!'
i qonn:li nore<q:ri nor l:
realizzazìone delle operazioni che coinvolge-
vano le varie sezioni del blocco di elaborazio-
ne dei dati. BUS DEI DATI BUS DI
I ln nr:ndo arrhtt,tn coniirir nór .^ntanóra E DELLE CONTROLLO
lp istrrrzioni del nrnnramma insieme ai dati ISTRUZIONI

che esso oestiva.


J.'""-' infine un ultimo blocco.
-hi---+^,,^i+-
Lr ildilrdt\J ^lì l^^"^..^/,,.-i+-
urrLd ur il19rc))u/u)LtLd, ^^"'-^++^
pc||ctLc-
va il trasferimento delle informazioni da e
nor lo noriforirho a<tprno Orroct'inciomo
YsLJ\ rl di

ffiffiffi
olomonti ò r^rrrpllo rhe e conosciuto come
computer.

MEMORIA
PRINCIPALE PROCESSORE

I bus sono un Ìnsieme di linee digÌtali, trasportano


tulte le informazioni che gestisce il computer.
BUS

t,,,',t,:;,'t; 1 ,, ,1, I ,:,.1',,

ll computer di Von Neumann è una macchi-


na digitale. Tutte le informazioni vengono
archiviate in formato binario, ed essendo
una macchina elettronica, impiega per 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 è formata
dall'insieme di bit che la codificano, e la
:1 ,.:,. tr,,,.,,, r.
stessa cosa awiene per i dati. La memoria è
Architettura base del computer di Von Neumann. .^mn^<+: d:nli ,,,-,|zzt necessaI per
--r,, indi

':1.1 1,,.i,:','i:i;
"l
immagazztnare le istruzioni e idati brnarr.
L'unità di controllo riceve le istruzioni che man PROCESSORE
mano cleve eseorrrre le derodifira e npnera la
sequenza di segnali necessari all'esecuzione. ll
blocco di elaborazione dati si incarica, sotto la
supervisione dell'unita di controllo, di realtzzare
le onerazioni oener:te dalle istruzioni racco-
gliendo gli operandi dalla memoria e dagli l/O,
inviando irisultali a questi blocchi secondo MEMORIA
.^^-i{i--+^ (DATr)
VuorrLv rpsLrr!oLv ^luo- OQI-ìl lStfUZlOne.
^,,-^+^
Pero tutto il movimento delle informazioni
all'interno del computer è realizzato da tre tlo
(PERTFERTCHE)
insiemi di linee digitali, denominate bus ll bus
der dati e istruzioni ha il compito di trasferire
oreqte inform:zioni fra i vari blocchi del com-
puter. ll bus degli induizzi e caricato dal proces-
qÒro .nn ali ind rizzi dollp istrr rzioni d: pspnrrire
o degli operandi da cercare. Infine, il bus di con-
trollo supporta nelle sue linee differenti segnali, Nella fase di esecuzione, la ALU del blocco
rome orrelli del clock che sincronizzano il lavo- di elaborazione dati esegue le operazioni indrcate dal codice dell'istruzione

ro della macchina, quelli di lettura/scrittura che


indicano ìl tipo di accesso alla memoria eccetera. in cui si include I'induizzo dell'istruzione che deve esse-
re eseguita al passo successivo.
ll contenuto del Puntatore arriva tramite il bus degli
L'esecuzione di un'istruzione inizia in una parte del pro- indutzzi sino alla memoria, dove seleziona una delle
cessore che si chiama Puntatore, o Program Counter oosizioni nella ouale rìsiede il codice binario dell'istru-
(PC). È situato nell'unità di controllo e contiene l'indi- zione in corso. ln questo istante attraverso il bus dei
rizzo dell'istruzione da eseguire. controlli arriva l'ordine di lettura della memoria, e il
Di solito il
Puntatore dispone di un contatore che contenuto dell'indirizzo selezionato dal Puntatore
aumenta automaticamente di un'unità il oroorio valore viene caricato sul bus deì dati e istruzioni e portato al
ad ogni istruzione eseguita. processore, dove passa su di un registro specifico chia-
Questo perche la maggior parte delle istruzioni di un mato registro delle istruzioni.
programma, si trovano ordinate in sequenza nella Tr rttn il nro.oqqo r'li localizzazione delle istruzioni e

memoria, e all'indirizzo successivo all'istruzione in corso il caricamento sul registro delle istruzioni stesse pren-
d'esecuzrone, si trova quella da eseguire successiva- de il nome di fase di ricerca e si rioete oer tutte le
mente. Questa regola non vale per Ie istruzioni di salto, istruzion i.
Dono rhp il rodiro bìnario delle ìstruzionr è
ci:tn
)LoLU r:rirr+n
LollLcLU cr
'll'rnq6citn
)Ull
dl.JPvJ'rv inizi: ì.
ronictrn ttttLtu tó
MEMORIA PROGESSORE fase di esecuzione. L'unità di controllo interpre-
BUS DEGLI ta o traduce il codice delle istruzioni e genera
rNDtRtzzl
una serie di segnali che invia al blocco di ela-
borazione dati, il quale è formato da una Unità
Logico-Aritmetica o ALU, che sarà incaricata di
BUS DEI DATI E
DELLE effettuare le operazioni logiche o aritmetiche
ISTRUZIONI
che comporta l'istruzione.
Sia gli operandi che partecipano all'opera-
zione sia irisultati generati dalla ALU sono
posti negli indiizzi di memoria specificati dall'i-
Fase di ricerca di un'istruzione
slruzrone stessa.
MEMORIA DI MEMORIA
PROGRAMMA PROCESSORE DEI DATI
BUS DEGLI INDIRIZZI
DELLE ISTRUZIONI BUS DEGLI INDIRIZZI
DEI DATI

14,
8,
BUS DELLE
ISTRUZIONI
I
BUS DEI
DATI

l-- a uir __________*l

Architettura Harvard nel PlCl6FB4

tro la dimensrone delle sue celle dovevano adattarsi ad


entrambi i tipi di informazioni.
Sino agli ultimi anni del secolo XX, la maggior parte dei
,,''tl',
processori erano costruiti seguendo l'architettura pro-
posta da Von Neumann, come se si trattasse di un I mrcronrocessori PIC si basano su di una nuova archi-
' dogma di fede. tettura chiamata Harvard. Essa è basata su due memo-
I e nprpssita dpoli utilizzatori richìedevano nerò sem- rie indipendenti, una dedicata alle istruzioni e l'altra ai
pre maggiorr valori di rendimento, sarebbe a dìre sem- dati. Questa indipendenza permette di realizzare acces-
pre maggior numero di istruzioni eseguite per unità di si simultanei ad entrambe le memorie, e trovare un'i-
tempo (MIPS: Milioni di lstruzioni Per Secondo). struzione mentre si sta scrivendo un dato. lnoltre la
Per migliorare questo parametro furono implemen- rrnrri+r
LdPdLILO Ut UVIt rrCilrWrrq nl^
puw o<<ora
c))qrq qucLLata rllr
2611++r+r ara
^i ^^^i -^mnri:
tate le tecniche moderne, come la segmentazione, la necessita snecifira dell'informazione che si deve npstirp
predizione del salto, e altre ancora più sofisticate; in ouesto modo la caoacità della memoria delle istru-
comunque i principi di Von Neumann seguitavano a zioni puo essere molto piu grande di quella dei dati,
rimanere inviolabili. come conviene che sia nela maggior parte delle appli-
In seguito ci si rese conto di una grave limitazione: cazioni con i microprocessori. Inoltre si puo differenzia-
l'esistenza di una memoria in cui si scrivevano a caso sia re e adeguare alle specifiche esigenze la dimensione in
i dati sia gli indirizzi delle istruzioni. bit delle celle di ogni memoria.
Fra imnossihile accedere nel medesimo tpmno a Nel caso del PIC 16F84 la memoria di programma
entrambi i tioi di informazione. che è quella dedicata alle istruzioni, ha una capacità di
Inoltre il memorizzare richiedeva una memoria 1024 celle di 14 bit ognuna, è costruita con tecnologia
dimensionata per entrambi itipi di informazione: FLASH, che permette di sc.iverla e cancellarla elettrica-
istruzioni e dati, mentre la dimensione o la lunghez- mente. La memoria dei dati ha una capacità molto più
za dei datì è molto differente da quella delle istruzio- piccola e le sue celle hanno una dimensione di 8 bit,
ni. che è la dimensione tipica dei dati. È volatile, di tipo
Rìassumendo, l'inconveniente dell'architettura di RAM, ed a complemento ha una piccola memoria ausi-
Von Neumann era localizzaLo nella memoria unica di liaria non volatile di tipo EEPROM, per contenere i dati
cui disponeva il processore, che da un lato impediva di tipo permanente, necessari in alcune applicazionr.
l'accesso contemporaneo ad istruzioni e dati, e dall'al- Lindipendenza delle due memorie esige dei bus dif-

. .

ferenziati, per cui la memoria di programma si control- istruzione da eseguire, ma dato che ricevono differenti
la con il bus degli induizzi, con linee sufficienti per flussi di dati, questa istruzione ottiene differenti risulta-
discriminare 1 K posizioni, e un bus per trasferire istru- ti Ppr nntor rondirridors i dati intermedi e i risultati che
zioni da 14 bit ll bus che gestìsce gli indirizzi della producono i processori, e necessario che esista una
memoria dei dati ha meno linee, perche questa memo- intercomunicazione fra i microprocessori. Ci sono due
ria ha minore capacità. ll bus sul quale circolano idati modi di ottenerla:
ha 8 linee per supportare i bit di ogni posizione.

ln questo caso tutti i processori utilizzano una memoria comune,


Anche se I'architettura classica di Von Neumann e la e quando uno vuole inviare un dato ad un altro, prima lo scive in una
Harvard sono molto popolari, esistono molti modi per posizione che l'altro conorce, e 5uc(essivamente
l'altro legge questa posizione. Secondo l'accesso permesso alla
classificare queste macchine: uno dei piu rilevanli e quel- memoria, abbiamo quattro categorie:
ìo proposto da Flynn nel '1966. Per distinguere i proces-
sori, Flynn ne distinse il numero di flussi di istruzioni e il
numero di flussi di dati che questi processori avevano.
ll nrnresso comnrrtazionale consiste nell'esecuzione
. CREW: Lettura Concomitante - Scrittura lsclusiva. Vari processori
di qpnronz: di isfruzioni su un insieme di dati. ll
rrn,a JLYv!' possono leggere una locazione di memoria. però solo uno può scriverla,
flusso di istruzioni e la sequenza sopra la quale opera
un processore, e il flusso di dati comprende la sequen-
'- J^i
4d ucr À.+i
uoLr i^
il r i^^"^..^
il r9rc))u c^ l-
ro .^^'
)Er]ucr4d
'^^-- ,l^i
ucr ^l-+i
udLI ^."-i-li
Pdtztdil c^
fnf:li rho <i nonor:nn rCRCW: Lettura Concomitante - Scrittura Concomitante. Vari orocessori
Le architetture dei computer sr caratterizzano per possono leggere e scrivere simultaneamente una locazione.

l'hardware che utilizzano per gestire il flusso dei dati.


Flynn propose quattro categorie: Negli ultimi due tipi si origina il problema dello scrivere
nella stessa locazione da parte dì vari processori. Questo
', , i' si risolve applicando una dr queste tre alternative:
Corrispondono ai monoprocessori convenzronali, tipo
Von Neumann, e dispongono di una unità di controllo e
di un blocco di elaborazione dati. Le istruzioni in codice
binario ricevute dalla memoria sono decodificate dall'u- 2, 5e tutti vogliono scrivere la stessa cosa, si può scrivere, in caso
contrario. non scrive nessuno.
nità di controllo ed eseguite nel blocco di elaborazione
dati, con gli operandi che arrrvano dalla memoria der t
dati, archiviando poi in quest'ultima irisultati.

'''''': :.'".I'

Snno romnosli d,a 'n' unita di controllo che ricevono


In quela topologia la memoria è ripartita fra tutti
ognuna un flusso dr istruzioni differente. i procesori, i quali sono uniti da linee bidirezionali di comunicazione.
Le istruzioni codificate sono inviate a 'n' unita dr Ci sono diverse varianti,
a seconda della rete di interconnessione che si utilizza.
processo, ognuna delle quali riceve il medesimo flusso
dei dati o onerandi Orresîo - -'J' " ica che differenti
slonif '

sequenze di istruzioni vengono eseguite sopra lo stesso ,L ;'I .i 'i :'i It ; i:;,i,..;;
;i 1""r 1;r y' ,1

dato. MISD: Multiplo flusso di istruzioni, unico flusso di È un gruppo di monoprocessori convenzionali, ognuno
dati. Non sono stati costruiti modelli commerciali di con la sua unità di controllo e il suo blocco di elabora-
questi tipi di computer zione dati, associato ad una memoria locale. Lavorano in
parallelo ognuno con il proprio flusso di istruzioni e il
f"rl rì,Ì ili.i t i:ij;, ii:tr.,i+ oroorio flusso di dati. Inoltre se utilìzzano la memoria
Hanno un flusso di istruzioni unico e un flusso di dati condivisa, ricevono il nome di Sistemi a Multiprocessore,
multiplo. Esiste una sola unità dì controllo. che governa se utilizzano la rete di interconnessione danno luoqo a
differenti processori. Tutti i processori ricevono la stessa Sistemi Multicomouters.

;i'i;;;:;i:|::.:ii-i::;":Í;.iil]:Ì,.il:;]:j|!:i!!;||ii:,!,'i!111',1;;ij'..,,...|11ii|i.|1:||.N
||

MTGROGONTROLLER
ll PtC | óF84 denlro
\*,,,*,

It banco dei registri

PIC fanno un uso intensivo dei registri per realiz- come se sitrattasse di registri. La memoria dei dati RAM
zare le ooerazioni necessarie alle istruzioni che si del PIC 16F84 consta di 90 posizioni da 8 bits ciascura.
stanno eseguendo. Questo significa che normal- Queste celle si comportano come se fossero un banco
mente la ALU del blocco di elaborazione dati, dci rpnicf ri :vonti l: dimenciono dol hvto | 9O ronictri ci
ulilizza come operando il contenuto di un regi- dividono in due grandi gruppi:
stro e il risrrhafo lo nrro archiviare rn un altro reoistro - Registri specifici (SFR). sono 22, e i loro brts hanno
In realtà La ALU necessita didue operandifonte per rea- il compito di controllare e programmare il lavoro delle
lizzare un'operazione. Uno di questi è sempre scritto nel diverse risorse del microprocessore. Svolgono il compi-
registro di lavoro W (WORK) e l'altro provrene da un to di registri di controllo del funzionamento del PlC.
registro, o dall'istruzione stessa quando si tratta di un - Registri di utilizzo generale (GPR): sono le 6B
operando immediato. celle restanti della RAM, le quali sono a disposizione
Data la semplicità dell'architettura del PIC non sono dell'utilizzatore per archiviare idati. Nella figura si
stati implementati nel processore i banchi der registri, mostra la ALU che riceve gli operandi tramite il regi-
utilizzando al loro posto le celle della memoria RAM stro di lavoro W, oppure dalla propria istruzione o dal
banco dei registri, a seconda di come è
selezionato l'ingresso del multiplexer. ll
risultato della ALU si ouò deoositare in W
o in uno dei registri implementati nella
memoria RAM.
OPERANDO RAM
INTERMEDIO
-1 ll
Tutto il contenuto del PlC16F84, sarebbe a
REGISTRO dire, tutte le risorse di cur dispone insieme

mffi
DI LAVORO ai collegamenti delle medesime, è mostrato
nella figura, che presenta l'architettura det-
tagliata di questo microprocessore. Si puo
8--- 8-'-- riassumere tutta la sua potenza descriven-
do i prrncìpali elementi di cui è costituito e
le relative caratteristiche:

. 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 utilizzo
BANCO
DEI REGISTRI generale (GPR).
. Memoria EEPRON/ di dati da 64 bytes.
. ALU da 8 bits per realizzare
operazioni
Nelle operazioni della ALU intervengono i registri della RAM.
logiche e aritmetiche. Un operando provie-
l:L',',,

i\l

ilIICROCONTROLLER.
tl!

t,,:,

,ta.

t:, i.1! t t! : I
;'j'lt

*ffi-\8ffi
MEMORIA DEI DATI
13

DIREZIONE
-\ ,|3

ffi
coNsrGLl 7'--DIREZIONE
MICROCONTROLLORI
TEMPORIZZATORE
-- 14
INDIRIZZAMENTO DIRETTO 5 m îà3^,

PORTE I/O

nao
ffi ffi
ffi
:s
nar

W
m RA2
lRÈ nae
ffi neo
ffi ner
ffi nez

#ffifu ffi nes


ffi ne+
ffi nes
ffi neo
ffiG nez
'ffiffi
r OSCI/CLKIN osca
ffitrffiffiffi
MCLR# VDD VSS
] 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. Quando un processore esegue un'istruzione lo fa in due
o
- yuL norte
Drrp Vvr di r/l/O
Lu ur dioi*^ri r^
v uryrLoll. ^^"+^
LO VWI A -^^ trrinee
LO n LVll J e la B I fasi diverse. ll PlC16FB4 procede in questo modo, e chi
con B. vnrrì rnmnrandoro , fOndO il fUnZiOnamentO di Una
o lJn temoorizzalore da B bits chiamato TMR0. macchina programmata, deve conoscere queste due
. Un temporizzalore speciale da 8 bits, chiamato Watch i:nna
LqVVq fnnr'l:moni:li
lwl luql I lEl lLqll, nartanta\
VLr rur r!v
incictoromn
'
ru t nttectn
rv <t 9uLrLv
+nmr l-\nlln UUC {aci l.ld nrim: 1f+a la
lC ic+rr
Dog (WDT). Lfllld. UUIIC
^"^
ld)l Vrilrru
À
L rnmrrno
lvrrrurrL : ttLULLC
u l)tlU-
r

. Un puntatore per induizzare la memoria dei codici zioni e realizza sempre ìa medesima operazione, si chia-
lnnr+n
legdLU dr ullu
rrna c+trlz. tnm
^itn lirrolli
)LdLN d urLv ilvsilr, dnrro
uvvs <i
Jr ronictrrnn
rs9rJUdru lcilr- ma fase di ricerca. La seconda e specifica per ogni istru-
poralmente gli indrizzi di ritorno delle chiamate di zione e si chiama fase di esecuzìone.
subroutrne e degli interrupt.
. Un sistema per l'indirizzamenlo diretto e indiretto FASE DI RICERCA
della memoria RAM. ll contenuto del puntatore viene caricato nel bus degli
. Circuitì di Reset e temporizzatore legato al medesi- indilzzi della memoria di programma e contiene l'indi-
mo. rizzo in cui si trova il codice binario dell'istruzione che
. Possibilrtà di lavoro in condizioni di basso consumo. bisogna eseguire. ll PC contiene solo indirizzi di istru-

.i. ';i i'i 'i iL! t''1.rì!i;'ii tr'; t


MIGROGONIROTLER :I'L I

ll PlCf óF84 =--=; dentro


-b**l

zioni, mai valori relativi a dati. Nel caso del PlC16F84la ciascuna. La memoria FLASH ammette fino a 'l 000
memoria di programma ha una capacità di '1 K posizro- cicli di scrittura e cancellazione con la massima sicu-
ne di '14 bits. rezza.
Dato che la longitudine di ogni istruzione è sempre Per leggere una memoria da 'l K posizìoni abbia-
r-li 1 /. hitc ,,,-,rlOlld:
h: lcì
l: p{J5slUllltd
nnccihili+r Ol
nr ro<.t: ;-1-lpppnri
lld n COnîene- mo bisogno di indvizzi a 1 O bits, dato che 2'o = 1 .024.
re programmi con un massimo di 1.024 istruzioni; rnol- ll program counter, PC, del nostro PlC, ha 13 bits con
tre è di tipo FLASH il che significa che si puo scrivere e t quali puo indirizzare 2 = B K posizioni diverse. I bits
cancellare elettricamente con l'aiuto di un programma- in più di cui dispone il program counter sono dovuti
tore e un PC. alfatto che l'architettura ditutti imodelli deì PIC della
ll bus delle istruzioni sposta icodici brnari dell'istru- gamma media PICl6CXX e la stessa; pero, in ogni
zinne nrrnt:ta d,al PC f no all'unita di controllo del P'
vrrv uLr nro-
v modello, il costruttore ha implementato differenti
cessore, dove si trova un registro speciale denominato capacita di memoria, per cu, l'utjlizzatore selezronera
Registro delle lstruzioni, che viene caricato con questi la piu conveniente.
valori, terminando così la prima fase dell'istruzione. Nel PlC16FB4 sono state fisicamente implementa-
Questa fase di ricerca del codice dell'istruzione da ese- te solo le prime 1.024 posizioni degli B K possibili
ottire e ttnttale ner tlrl'p lo iqtrr rzinni riol ronqr{gri6. della mappa di memoria. ll primo indirizzo è lo
0000H, e l'ultimo valido è lo 03FFH.
FASE DI ESECUZIONE lindirizzo 0000H e riservato per il Vettore di Reset,
Con il codice dell'istruzione collocato nel Registro oilesto sionifica Lr r! r-,,^il-
che ; r- l.JU)l4lUllC I cui va il
9uEllo E lo ^^-i-r^^^ c

delle lstruzioni, l'unità di controllo procede a deco- puntatore ogni volta che si effettua un reset. Per que-
dific,arlo c,a intcrnrclare a Che istrUziOne Si riferisce. sto motivo il programma di lavoro del microcontroller
Terminata l'interpretazjone, viene generata una deve iniziare obbligatoriamente all'indirizzo 0000H,
serie di segnali di controllo che si applicano al resto dato che l'istruzione che cortiene e la prima che siese-
degli elenenti, dando via all'esecuzione La maggior gue dopo il Reset.
parte delle istruzioni implica il realizzarsi di un'istru- Se vogliamo iniziare il programma all'indirizzo
ziano laaiez n:ritmotir: tinn <nmma
,,,,,,, -Jttrazronr,
cr 0005H, dobbiamo mettere un'istruzione di salto in
AND, OR, rotazione eccetera. questo indirizzo nel Vettore di Reset, sarebbe a dire,
Per effettuare le operazioni esiste all'interno del go to 5.
blocco di elaborazione dati una unità denominata
ALU. La ALU del PIC 1 6FB4 riceve due operandi, uno
arriva dal registro di lavoro accumulatore W e l'altro MEMORIA DI
puo provenire dalla propria istruzione, se si tratta di PROGRAMMA
operando immediato, oppure da uno dei registri del
h:nrn rha a imnlallppf2'to nplle nosiziOniPvrr4l della
memoria RAM dei dati.
A volte bisogna estrarre o introdurre informazio-
ni nel micronrocessore
,,,,-,-F,-lY-, ner otreslo ahhiamo due
porte, la A e la B, che dispongono di linee collegate l3\
con ipiedini di uscita dell'integrato, attraverso i

nrrali entrano ed escono i bits


Come 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 corretta
elaborazione delle istruzioni del programma.
Nella memoria di programma del PlCl 6FB4 sono
1..,'-t',:;,:' I, .:,' . 1.,'.,.,. t', .t ll t :,
state implementate solo le prtme 1 024 posizioni della mappa
ll PlC16F84 dispone di una memoria di programma di ll program counter ha una longitudine di 13 bits
e lo stack può contenere fino a B indirtzzi di ritorno.
tipo FLASH, ccn una capacità di 1 K parole da 14 bits

r,.tt it,
11,.;;L ::, t..
'rllr

lil

MICROCONfROTLER
ll PIC | óF84 denlro

t'indirizzo 0004H è assegnato al Vettore di


Interrupt, e funzrona in forma simile a quello del
Vettore di Reset Quando si verifica un interrupt, il MEMORIA RAM
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 significativi
per indtrizzare le 1 .024 parole della memoria FLASH in
cui si trova il programma l tre bits piu significativi di BANCOO I BANCOl
nl,psto renrstro non sono rttilizzali in clreslo modello di
microcontrollore.
Per gestire e conoscere il contenuto del puntatore, si
'+ li---^^
'utrLLót ru I| '^^t'+'t -^rositi della zona SFR della RAM.
rtrgr)Lr roPl, I registri PCL e PCLATH sono dupltcati rtspettivamente nelle
Questr registri sono il PCL e il PCLATH, in modo che gri posizioni 02H e aAH dei due banchi della RAM.
B bits meno significativi deì PC sono dedicati al PCL e i

5 più signifìcativi al PCLATH, così come è rllustrato nella puntatore, ir modo che durarte la fase di carica ilvalo-
figura. re passa oa puntatore al livello 1, e gri altri valori scen-
ll rpoistro PCI e sitrrato all'induizzo 02H del banco 0, dono di un livello. Quando lo stack si scarica, il conte-
p rinptr rto npl h,rnro 1 dolla manna dei reoislri SFR della i^r ri,.^,r^
^.,+^ Utrt
ItuLU ilVCIU rI pd))u
^---a al pC e lrrtti nii altrr ValOfi Sal_
-,
memoria RAM. ll registro PCLATH si trova anche dupli- nnno di rrn livello oresto siorifica che l'rrltimo valore
cato all'indirizzo relativo 0AH dei due banchi. che è stato caricato e il primo che si scarica (LIFO: Last
Input First Output)
Lo stack serve per scrivere temporalmente gìi indi-
Associato al puntatore esiste una memorta ttpo LIFO a rizzt delle istruzioni, e si usa sempre automaticamente
R nosizinni da 1 3 hiîs oonrrni che si rhiama stack. se si ha la chiamata di subroutine (CALL) o se avviene
Dato che e di tino llFO si carica e si scarica tramite il un interrupt. In entrambi i casi bisogna memorizzare gli
suo livello superiore, che e drrettamente collegato al induzzi di ritorno al programma principale, infatti ter-
mìnata la subroutine o il programma legato all'inter-
rupt, s ritorna a programma principale.
A volîe oossono esserci situazioni di annidamenti:
t2 CONTATORE Dl PROGRAMMA (PC) O dall'interno di una subroutine ne viene richiamata
un'altra Ogni volta che questo succede, bisogna
mernorizzare nello stack l'indiizzo di ritorno. Visto che
non esiste un segnaiatore che segnala il rierrpimento
:8 ...l^ll^ )LcLN,
uElv )!o o
-+--1, -+- -l ^"-
p,ùgrammatore tenefe conto degli

ffi
annrdamenti ner evrtarp rhp srrneri nlr R v,alori e debor-
di nordpndo informazront.
A differpnza deoli .rltri nroressori lo stack del
PIC 6FB4 non e accessibrle da parte dell'utilizzatore e
1

nnn <i nr ta r-zriTara n cr:rir:roL. Orrpctp


YvLJLL drro
--- operazlonl
I bits del puntatore si scrivono nei regrstri PCL e PCLATH, si realizzano automaticamente quando si esegue l'ope-
secondo la distrtbuzione rndrcata.
razione CALL o avviene un interrupt.
La memoria dei dati RAM
on la finalità di semplificare l'indirizzamento
della memorra RAM e diminuire i bits degli
induizzi, i progettisti della gamma PICl6CXX
hanno organizzalo in 4 banchi da 128 posi-
zioni da B bits cadauna. f indirizzamento
implica la selezione del banco e la posizione relativa in
esso. Per determinare Ìl banco a cui si desidera accede-
4FH
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- 7FH
sari altri 7 hits ner indirarp rrn: dollo tr 4v
7R nosizioni
vr del
BANCOO BANCO BANCO 2 BANCO 3
t_.=.
medesimo, come si vede nella fiqura.
ll PIC 16F84 ha implementato fisicamente solo le prime B0
posizioni dei primi due banchi
?
W,,
FEGISTRO DI STATO O

,y'
stri snecificr (SFR) i cui bits controllano il funzionamento
SELEZIONE ooH delle risorse interne del microcontroller. Funzionano
DEL BANCO
come registi di controllo programmabili. In questa zona
INDIRIZZI
DEL BANCO
124 SFR abbiamo due posizioni non implementate, che occu-
:

7 POSIZIONI i pano gli induizzi 07H di ogni banco, pertanto il numero


i; totale dei registri specifici SFR del PlC16F84 è 22.
BANCO O BANCO 1 BANCO 2 BANCO 3 -r: -t
Le 68 posizioni finali di ogni banco con indirizzi com-
presi fra 0CH e 4FH, sono usate come registri di utilizzo
I PIC della gamma media hanno la memoia organizzata generale, GPR, destinati a contenere dati e risultati par-
in 4 banchi da 128 posizioni di B bits ciascuna. ziali dei programmi. Le 68 posizioni GPR del banco 1 sono
ll banco è selezionato con i due bits del Registro di Stato
mappate nel banco 0. Questo significa che anche facen-
l, p?t:r:o!".ro-, ,., in!i:.:::o Z tti.t;_
" 1 do riferimento ad una posizione GPR del banco 1, si acce-
de alla posizione correlata del banco O, idue banchi cioè
i i È r;,É i.; l i'.lr +,i j, r=.! il {j i.:
i1;
L !-..,.ri :ii É ir; non funzionano in modo indipendente. Riassumendo, il
l'; ij l" rrif- :l i;.F;ri+ numero totale dei registri GPR è solo di 68, dato che i 68
ll microcontroller che useremo per il controllo del nostro del banco 1 funzionano su quelli del banco 0.
robot ha una memoria RAM piccola. Non sono stati
implementati fisicamente i quattro banchi possibili, che ii :-a: : :iTÈ,i :i Ìrri:.i"î ir.ii"i. 1i ij!i
forniscono la capacità massima di 4 x 1 28 = 512 bytes. ll nostro PIC dispone di 22 registri specifici SFR; attraverso
Alcuni modelli più potentì della gamma media, dispon- i bits di questi registri si programma il funzionamento e
gono di questa capacità. ll PlC16FB4 ha implementato I'utllizzo delle risorse del microcontroller. Ci sono 1'1 regi-
solo i primi due banchi, anche se in modo incompleto. stri SFR nel banco 0 e altrettanti nel banco 1 . ll registro che
Infatti solo le prime B0 posizioni di questi banchi, cioè occupa la posizione 07H in ogni banco non è implemen-
dalla posizione 00H alla 4FH, in totale 2 x 80 =160 tato. Nella figura si mostra la nomenclatura di questi regi-
bytes, sono stati implementati. Le prime posizioni dei stri, possiamo notare che alcuni dì questi sono ripetuti in
due banchi sono riservate per i registri specifici e le entrambi i banchi. Per esempio il Registro di Stato occupa
rest:nti npr r-rrrplli eli riilízza nonor.eio l'indirizzo 03H del banco 0 e il corrispondente indirizzo del
Le prime 12 posizioni dei due banchi, i cui indirizzi banco 1. Questo succede con tutti i registri fondamentali
vanno dalla O0H alla 0BH, sono riservarti ai valori dei reqi- del microcontroller; per poter accedere ad essi indipen-

$ fu+=cÈ+fuÈ #+$$* ffi&SsÈ


dentemente dal banco che è stato programma l'istruzione "bsf STATO,5", ìa sua
Memoria dei dati RAM
definito con i bits RPO e RP1. esecuzione metterà a '1 il bìt 5. RPO, del Registro
&
8ll di Stato, in modo che, a partire da quel momen-
a2
83
to, I'indirizzamento della RAM si effettuerà dal
84
s
banco 1 nel programma. La seconda istruzione
lntegrano un insieme di 68 posizioni s bcf, mette a 0 il bit specificato del registro che si
di ogni banco. compresi tra gli indiriz- s", indica. L'istruzione "bcf STATO,5" pone RPO = 0
'.,

& e lascia puntato il banco 0 della RAM.


zi OCH e 4FH. Però non ci sono 68 x 2 8A'
= 136 registri GPR. Solo la metà sono 8B

validi, perché quelli del banco 1 sono


8C
.r r ,.r,.' :::; l.t t,t,; t:1.:i r,..'rl
mappati sopra quelli del banco 0. I registri specifici SFR si classificano in due grup-
Come è stato precedentemente spie- pi. Il primo include tutti i registri incaricati di
gato, questo significa che quando si controllare le funzioni vitali del nucleo oet
accede a un registro GPR del banco 1, microcontroller, tra i quali citiamo STAfO,
in realtà si realizza l'accesso al corri- OPTION, INTCON, eccetera. Nel secondo grup-
spondente del banco 0. Sono validi po sono compresi i registri incaricati del con-
solo i 68 registri GPR del banco 0. trollo del funzionamento delle risorse ausiliarie
e delle periferiche, tra le quali citiamo PORTAA,
1-; ,' t; tt l "'".,; : ;'t.
,, PORTAB, TRISA, TRISB e altre.
Dato che il PlC16FB4 ha operativi Nella figura è rappresentata l'organizzazione
soloi primi due banchi della RAM, dell'area SFR della memoria RAM in modo detta-
"È:EE
non sono necessari due bits per spe- i BANCO 0 SANCO 1
gliato. In essa sono indicati i nomì di ogni registro
cificare il banco selezionato. Dei due i..,. ., .., .," ,
specifico, l'rndirizzo che occupano in ogni banco
bits e RP1 del Registro di Stato
RPO Distribuztone e nomenclatura e rl nome di ognuno dei bits. ìnfine si indica il
dei registri SFR e GPR della
che servono per determinare il memoria RAM del PIC 16F84.
valore che avrà ognuno di questi bits dopo aver
banco, al nostro PIC basterà pro- effettuato un Reset normale o uno speciale.
grammare il bit RP0, che è quello che
occupa la posizione 5 nel Registro di
Stato. È rndifferente il valore che ha il T ti1'
T T T idlriffi '{ T 'é' ISSSIPO'O
ffih (mn h cgli!ÈlÈiol
t sodet cobt€Ntó dt FsRps è
VALOFIALTRI

t;

bit RP1, che occupa la posizione 6 nel Clad( / CoIidoG tn tetlEo €le r I btts xxxx xxxx qsuu úsqu I

BtÉemèFrìgnmqfiwdetPc O0OO oOOC O0O0 OOOO l

Registro di Stato. Se il bit RPO = 0, si DC G


fFP lRPt RPo îo# Po* Z oool txrr oooQ quuu
accede al banco 0, se RPO = 1. si lndùíaménio indiEtto rs F{DF xxxx xxxx uuuu uuuq
- RAl/foCt( nA3 RA2 iA1 ÉA0 --'x xtxx '--u uuuu
accede al banco 1. Rg? RE6 RB5 RB4 nBs î82 FBI i60lNT xxxx tx*x uuuu sùsu
ilgtr implèmtrio 3i hgge (om'o'
Quando vogliamo accedere ai isgfuBod€ida$fEPÈofrt xxxr xxxx uuuu uuuu
registri GPR non dobbtamo tenere i€glrtodaglilntiddÈEPnola xxxx xxxx suuù uuuu
- SísiemitbftsdiP€rl ---O OO00 -..ù 0OOO
conto del valore del bit RP0, dato GtE EÈlE TolE tNlE HBIE TolF lNfF RBIF ooÓo ooox ooÓo oooo
i

che, come abbiamo gia detto, il BIf BIT BtT BIT 8tT BIT BIT BIÎ VALORI DOPO VALORI ALTRI
?6543210 IL RESET
banco 1 è mappato sopra il banco 0. tho e @rúedsb di fsR gq lndirÌaÉ lq reddià (@r è s rtgiÉtn firt€)
FÉSET

Or rindi la oesîione dell'accesso ai ftOFU* INIDG TOCS TOSE P{tA FSz P51 PSO lttl tlll îf11 l11l
Èy$ nm rlgntticttuo d€l PC 0000 oooo ooo0 0000
banchi, consiste nell'impostare il valo- IBP NPT RPO TO* Pb* Z DC C OúOltxxx 000q quuq
re del bit RPO, che e il quinto del lndtnEsrunto díetto @ lrtDf xxxxxxxr uquú uuuu
. conft$ruloÉ lortr A ---l {tl't ---l l1l't
Registro di Stato, rl quale occupa l'in- confiEHrfsG por& B 1!r1 tltl 1111 1t',ll
t{on lnFlenènqÉo 5l Lggè ffi '0"
diizzo 03H dei due banchi dell'area . EEIF WHEÉE WREN WÉ fiD ---ó x0o0 ---- q00O t
ièglelo tlt .o[tnlto :EPfotil (mn Egùfs fitko]
SFR. Ci sono due istruzioni nel reper- è sn
- CttfEwdm?cttA ".'O 00OO '.-0 0Oo0
torio del PIC che facilitano enorme- GIE EEIE ?OfE INIE RBIE 'ÍOIF INTF RBIF O00O oóOx Oo00 000u

mente il controllo di RPO. La prima è


l'istruzione bsf, che ha il compito di Organizzazione dettagliata dei registri SFR del PIC 16F84. Sono indicati gli indirizzi,
mettere a 1 il bit specificato del regi- il banco, il nome del registro e di ognuno dei suoi bits e i valori che questi avranno dopo
un ,îeset normale o speciale.
stro che si indica. Se troviamo ìn un

ii i+t:ttnilrL+hi. ,'cÈ+;i glr* lrt r*-:{ifé


ICROCONTROLTER
Operondi gestiri dalle istruzioni

Indirizzamento
delta memoria dei dati RAM
,,',1;,.,1.,, dati gestiti dalle istruzioni prima dell'esecuzio-
La memoria dei dati RAM del PIC della gamma media e
dotto dall'esecuzione dell'istruzione è il risul- organizzala in quattro banchi da 128 posizionj con 8
tato. Nel PlC16F84 i dati, in generale, occupa- bits di dimensione cadauna. Nel caso del ptC16FB4
no indirizzi della memor a dei dati RAM, sono state implementate solo le prime BO posizioni
sarebbe a dire, registri. Esistono dati speciali il cui (00H-4FH) dei banchi 0 e 1.
valore non deve essere perso quando si toglie tensio- Per tndvizzare una posizione della memoria RAM in
ne al srstema, per questo vengono scrrtti in una zona un PIC bisogna specificare, in primo luogo, il banco in
di memoria EEPROM, che studieremo successivamen- cui si trova, e dopo, I'induizzo relativo al medesimo. per
te. ll dato puo anche essere contenuto nel codice selezionare il banco ci sono due bits nel Registro di
binario dell'istruzione, nel qual caso si chiama ope- Stato dell'area SFR della RAM, che si chiamano RpO e
rando immediato. RP1, e occupano le posizionr 5 e 6 delsuddetto registro.
tutte le istruzioni sono realizzate
Normalmente Per determinare la posizione relativa in un banco, biso-
con un'operazione elementare logica o aritmetica gna specificare 7 bits per poter formare 27 = 128 indi-
nella ALU, la quale riceve uno dei due operandi fonte rlzzi possibili.
dal registro dr lavoro W, che è stato precedentemen- Esistono due modi per indirizzare la RAM: l'indiriz-
te caricato in modo adeguato. L'altro operando, se zamento diretto e quello indiretto.
non è immediato e quindi è già dentro l'istruzione,
arriverà da una posizione o da un registro della RAM. ' 'r

Infine, come è indicato graficamente nella figura, il Questo modo per definire la posizione nella memoria
risultato della ALU è caricato in W e in uno dei regi- RAM, dove si trova il dato ricercato, inizia scrivendo nei
stri della RAM. due bits RPO e RP1 del registro di STATO il codice corri-
spondente al banco. tindirizzo all'interno del banco è
incluso nel codice della propria istruzione, dato che dei
MEMORIA
DEI DATI
éilffire
;niúiul-ffE
rc
rc
rc ffirT6jSTATOo

ffitr ffi
ffi
re-rc
*ryre
sELEztoNE DEL BANco "2
8-: :re
ryrc ooH
oo ol 'to

rc
ffiG
ffi
DIREZIONE
(coDrcE oP
TSTRUZTONE)
Ìre
rc
rc 7
gH$Effiffi

ruru
8.r 07t
BANCO O BANCO I BANCO 2 BANCO 3

Gli operandi fonte della ALU arrivano o dal registro W Nell'indirizzamento diretto i bits Rp0 e Rpl del Registro di Stato
o dal multiplexer ll risultato finisce o in W o in una posizione selezionano il banco, e i 7 bits
della RAM meno significativi dei codici dell'istruzione, la posizione relativa.
occupa l'indirizzo 00H deì due banchi dell'area SFR. In
STATO realtà il registro INDF non è implementato fisicamente,
pertanto quando si fa riferimento a questo registro, si
accede ad un altro reqistro specìf ico dell'area SFR, che
si chiama FSR. Nei 7 tits meno significativi del FSR si
00H
trova il valore dell'induizzo relativo al registro cercato
nel banco selezionato.
{ OBH
0cH Listruzione con modo di indirizzamento indtretto,
ultlizza come registro operando INDF, pero il PIC accede
4FH al contenulo del registro FSR, che occupa, oer duplrca-
50H
to, la posizione 04H dei due banchi della RAM.
Non solo e diversa la maniera di ottenere i 7 bits di
] BANCO O I BANCO 1
indirizzo, ma nel metodo indiretto cambia anche il
modo di specificare il banco. In quello diretto si usava-
Per selezionare il banco nel PIC 1 6FB4
no i bits RPO e RP1 per scegliere il banco, nel modo indi-
bàstà scrivere nel Regislro RP) del Regtslro di jtato. retto si usa il bit 7 - il più significativo - del regrstro di
STATO, che si chiama IRB e il bit 7, il più significativo,
del registro FSR (ricordiamo che i 7 bits meno significa-
14 bits che la compongono, i 7 meno significativi sono tivi contengono gl indirizzi ativi). Dato che nel
re
riservati a questo compito. PlC16FB4 abbiamo solo disponibili i banchi 0 e 1, il bit
Per caricare il codice del banco nei bits RPO e RPl, IRP der registro di stato varra sempre 0.
es stono, come abbiamo già visto, un paio di istruzioni Se, per esempio, vorremo selezionare in forma indi-
molto efficaci, capaci di mettere a I o a 0 un bit di qua- retta la direzione 12H del banco 1 in un PlC16FB4,
lunque registro. Per esempio, se vogliamo accedere al
banco 2 dobbiamo caricare RP1 = 1 e RPO = 0, visto che
: STATO IóFSRo
ilffi
o
sr usano le ìstruzioni "bsf STATO,6" e "bcf STATO,5".
Nel PIC 16F84, l'indirizzamento diretto e più sempli-
ffi *t
sELEzroNE oeL enNco
ce dato che la memoria RAM è solo implementata nei 00 0l tt
prmi due banchi, il banco 0 e il banco 1. Questo sup-
pone che con un solo bit si scegtie il banco, in realta e
usato solo il bit RP0, essendo indifferente lo stato che
ha il bit RPl 5e RPO = O, si accede al banco 0 e se RPO
= 1, si accede al banco 1 . Rimangono gli altri 7 bits
necessari per indirizzare una delle B0 possrbili posizioni
che ci sono all'interno di ciascun banco. SAl.lCO O gAl'KO I BAN{Ò 2 SANCO 3

' , I i, '
Nell' indirizzamento indiretto il banco si sceglie con il bit
piit significativo del Registro di Stato e quello pru sgnificativo
Quando si utilizzano tecniche avanzate d programma-
di FSR. L'indirizzo relativo
zìone, o si lavora con linguaggi di alto livello come il C, di
è contenuto nei 7 bits meno significativi FSR
così interessante nei srstemi con microcontrollori, è
molto conveniente disporre di un modo speciale per
f indirizzamento dei dati nella memoria RAM. Si tratta cominceremo caricando in FSR il valore '12H (0x'12), per
'1
del modo di indirizzamento indiret'to, nel quale il codi- I 7 bits di minor peso, e metteremo a il bit 7 dt mag-
ce dell'istruzione non contiene i 7 bits che formano la ninr no<n dal ronictrn nor <ronlipro il h,anco 1

direzione del banco. Con questo metodo si fa riferr-


mento ad un registro specifico attraverso il quale si
MOVIW 0x12 ; 5i carka W con 12 H

ottengono questi 7 btts.


Nei microcontroller PIC le istruzioni che gestiscono
l'indirizzamento indiretto utilrzzano il registro INDF, che
mowvf tSR ; ll valore di W si carica in F5R

., i.t.: 1, \,., :.tit,': i, t!. t,


:t:.:: . :.. ..:::: .. . .. . . . :. .. .........
iorte
con Íl ,

Le porte
di ingress o/uscita
lprocessore che contiene il
a - -t .--^
l'lL lbfó4 tnat|7za e^.---^^lt^
Íaccogile PROCESSORE
icodici delle istruzioni resi-
denti nella memoria di pro-
gramma, le decodifica, cerca
nìi nnor:ndi lo pcpnrrp p nrndrrrp doi
risultati che memorizza. Questo è il
tipico lavoro necessario per processa-
ro rrn'i<trr rzinnp noraì : rho crnnnT
l'nhiottivo fin:lc p nrrollO di COntrolla-
re una serie di dispositìvi esterni che
configurano il sistema che dobbiamo
nn\/orn:ro lìrrocti di<nnqitivi rho
YvrJL'

chiameremo periferrche, certe volte


hanno il compito di introdurre dati
nel microprocessore e quindi vengo-
no chiamati di "rngresso" Altre volte :--
ricevono i risultati dell'elaborazione
delle istruzioni, sono dati che vengo-
no conferiti alle periferiche per rego-
Le periferiche sono dispositivi esterni
larne rl funzionamento, questo tipo che introducono e ricevono rnformazioni da o per il mondo esterno
di periferiche viene chiamato di
" uscita " .

lp neriferiche si classrficano in due


grandi 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 ogri
parola 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 La peiferica di rngresso digitale
sola linea digitale, di modo che, se piit comune è l'interruttore, che puo assumere diverse forme

lri r',1 | . .: ":.". :

l\:;::1:r::::ti:,,i,,,4,?41@útt9$||"/aaaa*att
valore di un bit, in modo che
quando il programma che sta ese-
guendo il microprocesso.e legge
questa linea, riconosce se c'è un 1
o uno 0. Programmando una di
queste linee di l/O come uscita,
potremo collegare ad essa una
periferica di uscita, come un LED
e quando il programma va a scri-
vere il valore di un bit sopra que-
sta linea, se è un 'l il LED si illumi-
nerà, e se è uno 0 il LED si spe-
gnerà. ll collegamento di una
neriferir:
}."''."' d'innrpcsn in nrrpcto
caso un interruttore, e di una
periferica di uscita, un LED, è illu-
strato nella figura.
Può capitare, in alcuni sistemi,
che i livelli logici delle periferiche
I diodi LED sono le periferiche digitali di uscita più semplici e utilizzate
siano al contrario rispetto a quelli
indicati nella figura; per esempio,
sono periferiche di ingresso introducono il valore di un !,
se l'interruttore e aperto, viene introdotto uno 0 nella
bit su di una linea, mentre se si tratta di periferiche di i
linea di l/O, e se è chiuso un 1 .

uscita il loro funzionamento necessita solo di un bit. La l


Inoltre, può succedere che si desideri accendere il
periferica di ingresso digitale più comune e più utilizza- i LED quando la linea di uscita digitale sia a 0 e spegner-
ta è l'interruttore, che assume diverse forme come pul- l la quando sia a 'l . Nella figura si vedono le modifiche al
sante, commutatore ecc. La perife-
rica di uscita più semplice, ma non
per questo la meno usata, e il +Voo
diodo LED. ll primo tipo di questi
interruttorr, a seconda dello stato,
introduce un 'l o uno 0. ll secondo
tino se riceve rn 1 normalmente si INTERRUTTORE
illumina, mentre se riceve uno 0 si
spegne. LINEA DIGITALE DI INGRESSO
: .. .. :':.,,,. i Ji i'-.rt-:
.ij :ìi I: . :1 ,L Ì, i: t.'
i:..". r r_,ri

Dei 18 piedini che dispone il nostro LINEA DIGITALE DI USCITA


PlC, 13 sono destinati a linee di l/O -ìì!

digitali. Ognuna di esse puo intro- tÍr:


drrrre al nro.esqorè il valore di un 7t;'

bit o essere incaricato di prendere


dal processore il valore di un bit per
il mondo esterno. É,.,, ,
Sc rrn: di
v' nrrp<to
YULJTL
13 linee di l/O ll processore conosce lo stato dell'interruttore,
'.

e
À
programmara come In9resso,
nrnarrmmr*r
se e aperto o chiuso, questo perché leggendo la linea di ingresso esso riceve un 1
sara possibile collegare ad essa un se e dperto o uno 0 se è chtuso. ll LED della linea di uscita
e controlldto dal processore perche lo accende scrivendo 1 e lo spegne scrivendo 0
dispositivo esterno che introduca il

;1;:'11;,i+1;:11.+i+i.i:'i,Èl.l;i=ltjl..e"+l.loll:+'r:l.+l.È;.+#'oÈ1Ì,.:;!1#;tt,1]tli1i,f.+i.íiÉ11iiii'.i;;t1i;.ii!
processore ìa leqqe.
Ooni reoistro nel ouale si collo-
cano le informazioni da trasfe-
l
INTERRUTTORE
'o+v;i rire ha associato un altro regi-
qtrn rho <or\/o nar COnfigUfafe
-."-'-
LINEA DIGITALE DI INGRESSO ognr ilnea come Ingresso o
,,--i+-
uscrta. l-La poria A na assocrato
^^"+- A I

Voo il registro TRISA e la porta B il


+5V registro TRISB. ll procedimento
LINEA DIGITALE DI USCITA per configurare le linee è molto
semnlrce Se desiderramo che
la linea 2 del registro PORTAA
(RA2) funzìoni come una linea
di rngresso dobbiamo scrivere
nel bit 2 del registro TRISA un
\p I infarn trfnre e ànprtÒ intfOduCe un bit 0.
1. Se al bit 3 di TRISA si memo-
Per accendere il LED dobbiamo scrivere un bit 0 sulla ltnea digitale a cui e collegato
rizza uno 0, la linea RA3 del

circuito di adattamento delle due periferrche per opera-


re con livelli logici opposti
BANCO O BANCO 1

Normalmente si dice che il PIC'l6FB4 e povero perche


ha solo 13linee di l/O, scarse risorse e poca capacità
di memoria. Le linee di l/O si raggruppano in due
insiemi che sono chramate "porte". La porta A rag- 05H
gruppa 5linee di l/O, mentre la porta B raggruppa le 06H
R roqt:nti lo nnrto di l/O onor:nÒ .Òmo roni<tri rhp
oossono essere letti e scritti dall'esterno e dall'interno
dol nrorpssnre
,r. C)rrpsti
vvLJLl reoistri si chiamano PORTA A e
PORTAB. In realtà lo scambio dr informazioni ìo realiz-
z: iltt nrnro<<nro <rririO^À Inî ^^r+r manlra lo l:
/u Vt L, JLrrvúl IUU )UPIO Ulld
' PUI Ld lllclltlE
nel rizzì r'lal la nnrta
pclllcllLo l: lanno n :l rnntr:rin ò l. narifori-
c)tEl llq lo ltryyr/ v ur lvr rLr urrv, L rq PElrrErr-
^^ri+^ri.1òc+Òrnì
I ì

p rlci relsritti roni<f.i di l nnfiottrs-innc doll'srca q,FR della RAM


ca esterna che colloca l'informazione nella porta e il

registro PORTAA rimane confi-


nrrretn rnmc linp,a r-li uscita.
BUS TNTERNO DEt DAT| 8t
registri PORTAA e PORTAB,
I

I
insieme ai loro associati TRISA
e TRISB, occupano gli indirizzi 5
e 6 di entrambi i banchi della
memoria, come si vede nella
F---F FFF-FFFF figura.
ÈoNrO \CÈOàQN-O

LINEE O PIEDINI DI I/O

Prima di Iennprp o scrìvere Ie


Ogni registro dr scambio d'informaztone, PORTA A, e PORTA B, ha associato un registro dt informazionì in una periferica,
configurazione TRIS A e TRIS B, rispettivamente.
dobbiamo confi gurare adegua-

I:l
g***rrrllÍf Íf lllllllti:srzrììlìiìì:ì:ìll.:
P t8 MIGROCONTROLTER
rytzlzv,{tlM&}M,llrrlrf *i\\\ìss{.wj,

*w. t r, r*./.,.g*i-r..!.j:irilririr.itt tTt%r#


Porfe per il trersferinrento d'inforrnozioni
con il mondo 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 programma
corrispondente.

5i deve caricare nel regisiro di configurazione TRISA il valore binario "xxx11t10", I tre bits di maggior peso di TRISA non hanno significato né funzione, dato the la
P0RTA A dispone solo di 5 linee. Scriveremo in quefi registri tre zeri, in modo che il valore da caricare sarà "000111'10", che corrisponde al valore 1!H. ll programma
richiefo dovrà scrivere 1EH nell'indirizzo 5 del banco 1, dove è indicato TR|SA.
N0TA: in assembler i valori esadedmali si scrivono dhettamente preceduti da 0x.

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-r r ^^ I-^rianle
Ll
l^
lr
r\/tutrr\ lp o.,,t
,L
:^
llvullrr )l i"t.'eI
|r si I Cr ! scono le tr:qfor ro Por lonnoro I COntenUtO df Una pofta Cl'ln-
nfo.rr.rzinn dinilali dcf'npnnn nli ,.nresci e le uSCite. ,,- .- rho
nro<<Ò , rl^rÒ /Llle
rnni cno- .l . drure hÒ l.
ld Uel llel lLcl CO" SpO'-
^^.'{^.i..
Realizzata la conf gurazione delle inee l/O scrivendo net dente vi ha deposrtato, si utiiizza l'istruzione " movf
'pcist' TRIS nèr nÒ'tzrp :l nrnreccnro''in'Oranazione PORTAA,\/", con la quale r dato presente nelia porta
.^^ a."i',1
Llltr c'lvo Ud r'nî aar'{6t1,1 2 d'innreccn
U ld Pcll,!.'!u J I yr rnl on.,
Lqdld d i-rlrl passa a reg stro w.

r.1 rr-: nnr+: dnhhiàmo cO'o lenOprp I r-nrler_tO
v ,LvYri del Per spostare un dato verso una porta d'uscita, prma
rY,JLr v rli arroctr ^^"1a, OSSia, PORTAA O PORTAB.
ranicrrn s ca';ca qL,est'- I ro rel reg slro W e dopo s esegue
A contrario, se si deside'a po'tare da processo.e il 'rstruz one "rnov\r/f PORTAA" ll valore contenuto n W
va ore dell'rnformazione digrtaie ad una penfer ca di viene spostato sui a PORTAA e le linee d uscita corri-
usc ra coi egata al oin d -na porra, conI gurata co-e spondenti portano verso rl mondo esterno i bits corri-
uscita, basta scrvere il suddetto registro con lva ore da spondenti
Caratteristiche
detteporteAeB
-i' ri'
i ,r1 1::1.;iilgi .'i 'i.,È r.i,i'r Él Í;.r i liT ;i {" :'ì 11 il i: i'ì :{ il È'+ 5

Questa porta ha solo 5 linee digitalì che st collegano Le ìinee RAO-RA3 accettano livelli di rngresso TTL e
con l'esterno mediante cinque pìedini denominati RA0, CMOS. Nella figura della pagina seguente è mostrato rl
RA1, RA2, RA3 e RA4. Essi occupano le posizioni supe- circuito elettrico di adattamento di questt pin con le
riori delle due file di cui è composto il contenitore del linee di controllo e con quelle del bus dei dati del pro-
PlC16FB4, come mostrato nella figura. cessore, Leggere una linea della porta A significa cattu-
Le informazioni che entrano ed escono da questi rare il livello logico che essa ha in quel momento, e que-
piedini passano temporaneamente nel registro POR- sto viene fatto ogni volta che si esegue l'istruzione
TAA, che occupa I'indtrizzo 5 del banco 0 dell'area dei "movfw PORTAA". Al contrario, quando le linee della
registri specifici SFR della RAM. Inoltre per configurare porta A lavorano come uscite, lo fanno tramite il latch
come ingresso o uscita ognuna delle linee di questa interno, che mantiene stabìle nel tempo l'ultimo valore
porta disponiamo di un registro chiamato TRISA, che caricato in PORTAA.
occuoa la posizione 5 del banco 1 . Come ricorderete. se Come sì puo vedere dalla figura, per portare un
in un bit del regrstro TRISA si scrive un 1, la linea della livello logico su una linea della porta A, prima vlene
porta A corrispondente f unzionerà come ingresso, e se scritto nella linea corrìspondente del bus interno dei
si scrive uno O funzionerà come uscita. Ogni linea della dati e viene attivato il segnale di WRìTE, il quale per-
porta si configura in modo indipendente, per cui nella mette la scrittura di questo livello sul flip-flop dei dati.
stessa porta potremo avere contemporaneamente llnee ln questa situazione il flip-flop di configurazione
di ingresso e di uscita. dovrebbe contenere un livello 0, ìn modo che si com-
ll piedino RA4 è speciale, dato che oltre a compor- porti come un'uscita. Con questivalori Ia porta OR avrà
tarsi come una trpica I nea di l/O, si puo programmare uno 0 alla sua uscita e la stessa cosa succederà alla
perche serva come ingresso di impulsi esterni per il con- porta AND. Questi valorì ortgineranno la conduzione
trollo del timer TMR0, che studieremo più avanti. del transistor PMOS superiore e l'interdizione di quello
NMOS inferiore. In queste condizìoni il pin
di l/O resterà collegato a VDD e quindi avrà
livello alto.
Dato che la linea dt uscita è "lecciata"
R/42- (cioè e comandata da un latch) conserverà il
suo valore logico sino a che non scrlveremo
na*r J? g
ìr nuovamente sul flip-flop D.
s Se una linea funziona come ingresso,
RA4/TOCKI$ I
quando si attiva il segnaie READ il livello
ff'
logico depositato ìn essa dall'esterno, passa
alla linea corrispondente del bus interno der
dati, e il dispositivo ad alta impedenza che li
unisce diventa conduttore, Dato che il pin è
programmato come ingresso, i due transi-
stor MOS rimangono bloccati, e la linea di
uscìta passa ad alta impedenza. Quando si
legge un piedino, si rileva il valore che ha in
Posizione dei piedini della porta A quel momento, e non deve essere memoriz-

l ;rliìì,11ì,ììì,ìììrì1rìuuuuuuuttììììrìùrrr: : .rrl
$ii{Ft:Èe.l
-lrlrìlììuììì.ìiirllr'llllllllllìììììì:llrlllllilrllrlìlìì
.-{ÉEl í C*l ,tÉi.s:i +eli ì
'l

Voo
LINEA DEt
BUS DEI DATI
WR
SCRITTURA
PORTA A

{RA3:RAO)
WR
SCRITTURA
TRIS A
BUFFER
VssE INGRESSO
TTL

RD
LETTURA TRIS A

RD
LETTURA
PORTA A

Circuiteria interna che collega i piedini RA?-RA3 con le linee di controllo e il bus dei dati interno al processore

zato nel flip-flop dei dati. f informazione presente nella


linea d'ingresso, deve già essere presente al momento
d'rnizio del ciclo di istruzione, e deve mantenersi stabi-
le durante tutta la sua esecuzione.

Èformata da otto linee che comunicano con l,esterno


mediante i piedini RB0-R87.
ll registro di l/O contiene le informazioni che si scam-
biano con le periferiche, sr chiama PORTAB, e occupa l,in-
duizzo 6 del banco O. I bits del registro associato TRISB i,
RBO/INT
*í,,,
servono per configurare le linee di questa porta come -)
rngressi o come uscite (1: ingressi e 0: uscite) ed e situa- RBI <-; ,Llììì1.

l',]ììì
-RB7
<-* RBó
*rtl
to ali'indirizzo 6 del banco 1 dell'area SFR della RAM. ..:t
j:rf
Come succedeva con ia porta A, anche la poria B RB2

lra una linea speciale che ha multiplexate nel tempo -r -*tt


due funzioni possibili. Si tratta della iinea RB0/tNT che RB3

oltre a funzionare come linea dr l/O normale, puo fun- -i"


zionare come linea di ingresso dr interrupt esterno per
l'hardware. Se si programrna questo piedino per fun-
zionare come inqresso di interrupt, oqni voita che lc si Drstrtbuzione dei ptedini della porta B
t,,

attiverà tramite un livello alto, verrà generato un inter- Le quattro linee piu significative della porta B (RB4-
rupt. RB7) insieme. possono svolgere un compito molto inte-
ressante e pratico, orientato alla gestione delle tastiere.
Le tastiere matriciali hanno i loro pulsanti dispostì nella
A tutte le linee di questa porta è possibile collegare confrgurazione di quattro file per quattro colonne. Per
delle resìstenze di pull-up di valore elevato. collegate a rilevare l'attivazione di un pulsante e individuare quale
loro volta al positivo della tensione di alimentazione. Se sia questo pulsante, si collegano le quattro file della
si vuole realizzare questa connessione dobbiamo met- tastiera ai oiedini RB4-R87.
tere a zero il bit RBPU# che c'è nel registro specifico Le quattro colonne si collegano agli altri quattro pie-
OPTION della RAM. Quando si produce un Reset ven- dini della porta B (RBO-RB3), in modo da introdurre un
gono scollegate tutte le resistenze di pull-up, e tuttì i lìvello logico alto in modo sequenziale, uno dietro l'al-
piedinì della porta B vengono configurati come ingres- tro. L'attivazione di un pulsante permette ìa comunica-
si, come succedeva con la Porta A. zione di una fila con una colonna, pertanto si avra un

P (pull-up)

BUs DEI DATI


(RB7:RB4)
WR
SCRITTURA
PORTA A

RD
TETTURA PORTA B

DAGLIALTRI
PIN
RB7:R84

Colleqamenti clei piedini RB4-RB7 can le lrnee di cantrollo e quelle del bus dei aati rnierno al processore
livello alto, sia sulla fila che sulla colonna dove e srrua-
:

to il pulsante premuto.
Si possono programmare i quattro piedini piu signi- Le tastiere piu comuni, impiegate nelle applicazioni con
ficativi della porta B, in modo che se uno di questi cam- microcontrollori, dispongono di l6 tasti, numerati da 0
bia il suo stato logico viene generato un interrupt. a F e disposti in matrice di quattro file per quarrro
Quando si attiva un pulsante, cambia il livello logico di colonne. Ogni volta che si attiva un pulsante il proces-
un piedino e si genera un interrupt, la cui routine indi- sore deve riconoscere jmmediatamente quale sia stato
vidua il pulsante premuto conoscendo la fila e ta coton- pigrato La possibilità di generare un interrupt quando
na che sono passate a livello alto. varia lo stato logico di una delle quattro linee più signi-
ll circuito elettrico di adattamento dei piedini RB4- ficative della porta B, semplifica la rivelazione della
RB7 e abbastanza complesso, ed e mostrato nella figura. tastiera, per questo si collegano, come rndica la figura,
I prediniRB6 e RB7 inoltre hanno una funztone le quattro linee meno significative della porta B con le
speciale, durante la funzione di scrittura del program, quattro colonne, e le quattro file con le linee RB4-RB7
ma nella memoria FLASH. La scrittura in memorra sr della porta B.
realizza inviando le informazioni in modo seriale tra- Le lrnee meno significatrve della porta B vengono
mite il PC, per cui sono necessari il segnale di clock e messe a uno in modo sequenziale, in modo che in
ilvalore binario di ogni impulso, ossia dei dati in serie. ogni momento ci sia una linea a livello logico alto.
ll piedino RB6 riceve il segnale di clock e RB7 l,ingres- Se non ci sono pulsanti premuti le file sono scolte-
so dei dati. gate dalle colonne e il livello logico alto inviato alle file
non puo passare alle colonne, di conseguenza non
I , :' ,"',I
cambierà lo stato di RB4-R87.
Ogni linea d'ingresso puo erogare una corrente il cui Premendo un pulsante, ogni volta che la colonna
valore massimo arriva a 20 mA, mentre un,uscita puo corrispondente a questo pulsante invra un Iivello logi-
assorbire fino a 25 mA. Dato che esiste una limitazione co alto, questo passerà alla fila associata e cambierà
nella dissipaztone massima della potenza del chip, l,as- stato uno dei quattro piedini piu significativi della
sorbimento massimo di corrente della porta B e limita- porta B, gene.ando un inte'rupt.
to a 150 mA, mentre l'erogazione massima è limitata a La routine dell'interrupt verifica ia f ila da cui arriva il
100 mA. La porta A, con meno linee, raggiunge la cor- livello logico aito e la colonna da cui e partito, per
rente massima di assorbimento di B0 mA e 'l 50 di ero- determinare il pulsante che è stato premuto, in pratica
gazione. quello che si trova all'incrocio fra ia fila e la colonna.

RA2 1

+Vcc 'nqs 2
^

- RBo 6
ffi
RB2 8
RB3 9

Ptc r óF84

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
Secondo il tipo di componenti esternì che montere-
I

istruzioni - che è l'unìca cosa che sa fare - e mo, si configurano quattro tipi di oscillatori:
necessaria la presenza di un clock, il cui Tipo RC: è un oscillatore di basso costo poco stabi-
impulso determina la velocità di lavoro. le. Necessita solo di una resistenza e di un condensato-
', ,' L'oscillatore che genera questi impulsi è re esterno.
implementato dentro il circuito integrato, pero, per
regolare, selezionare e stabilizzare la frequenza di
lavoro, dobbiamo montare esternamente alcuni com-
ponenti, fra i piedini OSC'l/CLKIN e OSC2/CLKOUT,
che corrispondono rispettivamente ai piedini 15 e 16
del contenitore.
Un'istruzione impiega normalmente 4 periodi di
clock ad essere eseguita, e se sitratta di un'istruzione di
salto, impiega il doppio.

4t
b.tr
*}H

Fotografia di un cristallo di quarzo e parte di un circuito nel quale è montato


,#.
2l

CRISTAL

Schema generale dell'interfaccia del cristallo di quarzo


e dei condensatori esterni. La resistenza RS si utrltzza solo nella versione spectale ad alta frequenza

TIPO HS: e un oscillatore ad alta


velocità molto stabile. Funziona a 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 o
risonatori 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 unzione
eloll: fronrronz:

é3, *=s$j,
g *3 *.{" àj g,lE
-**StEtLeè==*#E
lmpiegando alcune porte logiche TTL
Schema elettrico dell'oscillatore di cristallo a risonanza parallela
molto spmnlici si nnssono costruire

+F + :,ìÈ E €i4 +:$ $ .€ e+ *.t :*, $'# t*É ÈH +ÉÉj+ iÈ'* *+É
MIGROGONÍROLtER
Ripaero dei, concelti sullei frequenzc di
ut '

330ko 330ko AGIIALTRI


ETEMENTI

74ASO4 74ASO4

XTAL

'.n,
"t
:i+irit+;;:;:'..-:.r+î:::Ì:;ti::::iiìl.iljiia:i::ai;ii1:,Ì:tii!r'r:':*;
il
i,

Schema elettrico dell'osctllatore di cristallo a risonanza seriale.

oscillatori che hanno un otttmo comportamento e nella generazione della frequenza, che e determinata
un'ampia gamma di frequenza. Ci sono due tipi di oscil- Oar crlStallO 0r QUafZO.
latori al quarzo: a risonanza parallela e a rtsonanza in I

serie. : ,. :., ir'=li'i.ii.r:; i-:,i 1;i,1,;{!ii:-jÈi+ j;1.{r-ririli


lì circuito oscillatore con risonanza parallela illustra- : Risiede all'indirizzo 2007N della memoria FLASH, che è
to nella figura oscilla aìla frequenza deì cristallo che r,serva'la pe' un compito speciale, infatti e accessibi e
incorpora. La porta invertente 74A504 realizza un'in' , solamente durante il processo di scrittura del program-
versione di fase di 180' , ma nel PlC16FB4.
ll circuito oscillatore a risonanza in serie - il modello . OLresta reoistro di 14 bits riceve la denominazione di
nportato nelia figura - permette un'elevata precisione : "Parola di configurazione". Quando viene scritto il pro-

PAROLA DI CONFIGURAZIONE
13-

PROTEZIONE DELTA MEMORIA

TEMPORIZATORE "POWER-UP"

WATCHDOG

TIPO OSCTU.ATORE

Distribuzione dei bìts nella parola di confiqurazione con i quattro campi che la compongono

+ia"ÈÉl!.tli!i;r;,ì+ +i++iÌ :::+i:l+..*'4,;,.+3fla':i *t;a;iìi ,'f 1.'1qq+.+11:11;+ # ii ti+ r*+ l*i ;rf sii:'Èr:iÌ È"i:É *í gÈÉi+
gramma dell'applicazione, dobbiamo memorizzare in tando le copie. Owiamente il programma non si potrà
essa un determinato valore binario che andrà a definire nemmeno sovrascrivere, né sarà permesso l'accesso alla
alcune caratteristiche fondamentali del funzionamento memoria EEPROM dei dati.
del microcontrollore. Se si prova a modificare i bits CP passando da 0 a 'l
La parola di configurazione ha 14 bits che si divido- si provoca la cancellazione completa della EEpROM.
no in 4 campi. ognuno dei quali controlla una caratte-
ristica del comportamento del PIC: i. i'.!.,1,"i')ì,i;; i, 1 ; I i-1 i. i ,-rrr i :" i:t: iti ' !,::

'1. Campo dei bits che selezionano il tipo dì oscillatore. ll WTD o Watchdog Timer, è un temporizzatore che
2. Campo dei bits che controllano il Watchdog. serve per controllare che il corretto sviluppo del pro-
3. Campo dei bits che controllano il temporizzatore di cesso di elaborazione delle istruzioni avvenga secon-
"POWER-UP". do una determinata cadenza. Se per esempio, il pro-
4. Campo dei bits che controllano la protezione della gramma entra in un ciclo chiuso da cui non riesce più
memofla. ad uscire, il Watchdog si attiva e resetta il program-
ma.
La parola di configurazione dispone di un bit chia-
mato WTDE che controlla il Watchdog. Se WTDE = i
Quando sr memorizza un programma df applicazione in il Watchdog è attivato e controlla l'elaborazione delle
un PlC, bisogna scrivere la parola di configurazione, e in istruzioni, Se WTDE = 0 il Watchdoq è disattivato.
uno der suoi campi dobbiamo specificare il tipo di oscil-
latore fra i quattro possibili, con cui funzionerà il micro-
controllore.
A questo scopo sono riservati i due bits meno signi- ll lemporizzatore Power-Up controlla un tempo fisso
ficativi di questa parola, che si chramano FOSC'1 e dt 72 ms e serve ad evitare problemi durante il colle-
FOSC0, nei quali bisogna scrivere i codici indicati nella gamento iniziale della tensione di alimenTazrone al
tabella per specificare l'oscillatore utilizzato. m icrocontrollore.
A volte la tensione di alimentazione, nel momen-
to immediatamente successivo all'accensione, è
,|
instabile e conviene ritardare la sua applicazione alla
RC I
circuiteria interna del PIC sino alla sua comoleta sta-
bilizzazione.
Nella parola di configurazione il bit pWRTE# si usa
XT 0 I per attivare o disattivare il temporizzatore Power-Up,
che ritarda la connessione dell'alimentazione esterna
alla circuiteria interna.

. ': - :, : :

Similmente a quello che succede con la parola di confi-


In molte situazioni, il fabbricante o i progettisti di un gurazione, a cui è riservato I'indirizzo 2007H della
prodotto governato da un microcontrollore, non voglio- memoria di programma, esistono altre quattro posizio-
no che si conosca il programma e i dati presenti nella ni che sono riservate per le parole di identificazione e
memoria. In altri casi questo non è importante, quindi che occupano gli indirizzi dal 2000H al 2003H. Non
sia il programma che i dati possono essere letti. sono accessibili durante il funzionamento normale del
| 10 bits di maggior peso della parola di configura- PlC, e possono solo essere letti o scritti durante il pro-
zione sono denominati CP (Code Protection) e0 nanno cesso di memorizzazione del programma.
il compito di proteggere o meno l'accesso alla memoria Nelle parole di identificazione sono solo validi i 4
dei codicì. bits meno significativi di ogni posizione da 14 bits.
Se si scrive un 1 nei bits CB la memoria sarà spro- Esse sono utilizzate per immagazzinare codici di iden-
tetta, e si potrà leggere liberamente. Nel caso che i bits tificazione, numeri di serie, chiavi segrete, dati di fab-
CP siano a 0, il programma non si potrà leggere, evi- bricazrone, numerì sequenziali eccetera.
It temporizzatore TMRO

_ iii? ella maggior parte delìe applicazioni in


"{"
lÉÉd,
cui intervengono dei microcontroller tro-
- viamo dei procedimenti e dei compiti in Coricore un registro con un volore
L.r
" =- cui.'-'.-e necessario controllare il temno Per
- lar fronte a questa esigenza si puo istrui-
re il nronrio
"Y"' nro.essore
Y' mediante un semnlire oro-
gramma, che inizi caricando un valore in un registro,
De*emenfore il registro
e noi lo derrementi sino ad arrivare a zero. Se con un
<olo
)VlV rpni<lrn
lq9l)LlV llVll ottipno il tpmnn dpqidorî+^
nnn )lci VLL,!,,L v!J,vúrOLV, c^ ^^
)E llE

possono concatenare diversi, in modo che quando


uno arriva a zero, decrementi di una unita il successr-
vo e ripeta il ciclo. Questo procedimento è molto
semplice e molto preciso, perche conoscendo il
numero di istruzioni da eseguire, si deduce il tempo
+^+-l^ ^^-^^'-'r^ -! pspnrrirp Registro=Q
lultru I rrt r))dt tu du il ricln
E)qvuI E il LtLtu rnmnlglg.
LUI tP
L'inconveniente principale nel dedicare il proces-
sore a compiti di cronometro, è che vengono ipote-
' r rta lo cr ro ricnrca
Ldre re 5ue r5ur5u,-, nor roalizzzro allro tlpefazlonl,
inoltre non potrebbero essere gestiti gli interrupt,
perche significherebbe fermare il conteggio del
tcmnn I lomnorizzatori sonn disnositivi hafdware
ausiliari integrati nel microprocessore, e sono dedi-
catr alla misura del tempo, scaricando da questo
i:irnrn il nrnrpccnrp FINE

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 decrementa


per il controllo del tempo medrante tl decremento di un regrstro
ognì volta che riceve un impulso di clock In caso di

i: -:

ru
IMPULSI DI CTOCK
SEGNALATORE

I temporizzatoil sono contatori che si incrementano


o detremenlans 1sn gli impul>i dr clock. dispongono di ,,tn bit di seqnalazione che va a I al termine del conteggio

$eeep+r€.*#*Eru# d## Èeeeep+r'$Hm#*.wsE


CARICO DEt VATORE INIZIATE
"8
j-1_ft__[a
INGRESSO DEGLI IMPUTSI SEGNALAZIONE
TMRO
DI OVERFTOW

Schema e funzionamento del temporizzatore TMR0.

dpcrpmento orando il valore del contatore arriva a


zero, viene attivato un bit ausiliario che funziona È formato da un contatore ascendente a 8 bits che puo
come segnalatore, o "f lag", e va a 1 avvisando del- essere caricato inizialmente con oualsiasi valore e suc-
l'accaduto. In caso che il contatore incrementi il suo cessivamente si incrementa ad ogni impulso di clock,
valore con gli impulsi del clock, quando supera il sino a superare il valore massimo, cioè il passaggio dal
valore massimo e arriva I'impulso che fa passare i maggior valore di conteggio (tutti uno) al minore (tutti
bits del valore di conteggio, da tutti uno a tutti zero, zero). Quando ìl contatore passa dal valore FFH al valo-
il segnalatore va a 1 come indicato nel disegno. re 00H si attiva il flag.
ll grande vantaggio di utilizzare temporizzatori, è ll temporizzatore TMR0 può realizzare due funzioni
scarica're il processore dai compiti di controllo del principali:
tempo. Se rl processore vuole sapere quando il timer 1u. Temporizzatore o controllore del tempo. Ha il
ha terminato il suo conteggio, deve vigilare sulla compito di misurare il tempo fra il carìco di un valore
messa a uno del segnalatore o flag. Questa conti- iniziale, e i successivi incrementi ad ogni ciclo di rstru-
nua esplorazione del flag sottrae tempo di esecu- zione (Fosc/4) sino al superamento del valore massimo,
zione al processore, per questo esiste un'altra possi- o overflow, che puo essere rivelato mediante ìl flag o
bilità più immediata e chiara, che consiste nel pro- producendo un interrupt.
durre un interrupt ogni volta che il contatore finisce 2". Contatore di eventi. In questo caso ogni evento
il suo ciclo. che deve essere contato, è rappresentato dall'impulso
diclock che siapplica tramite il pin RA4/TOCKl. Se va in
t.r,,,
' .,.,,',,,..i,;.-, ',',t:'.: :.i: '',1 ,:.r.'.,, overflow, il contatore mette il flag a 1 oppure produce
Questo modello di microcontroller dispone di vari un interruot.
temporizzatori integrati nel chip. Un paio di questi Per fare in modo che il TMR0 funzioni come conta-
dispositivi sono utilizzati per ritardare di un tempo tore di eventi esterni, dobbiamo programmare il piedi-
costante la messa in marcia del PlC, durante la prima no RA4/TOCKl come ingresso, e caricare alcuni bits del
accensione o in caso di reset. Quelli che ci interessa- registro specifico OPTION con determinati valori. ll regi-
no sono quelli programmabili, e che sono dedicati alla stro con il valore del contatore TMR0 occuoa l'indirizzo
misura del tempo all'interno dei compiti a cui è dedi- 'l del banco O della RAM, mentre il registro OPTION di
-
cato il microcontroller. Per ouesta finalità il PlC16F84 cui alcuni bits programmano il funzionamento del
dispone di due temporizzatori da 8 bits: il TMR0 che TMRO - occupa l'tndinzzo 1 del banco 1 dell'area SFR
è di utiìizzo generale e il WDT, Watchdog Timer che della RAN/.
vigila sul corretto tempo di elaborazione delle istru- Come vedremo in segurto, il registro OPTION dispo-
zioni del programma, resettando il processore in caso ne di due bits che determinano il comportamento del
di anomalia. temporizzatore come contatore di impulsi. Uno di que-

t;.,tt ...' ì. 1;..',,.'-1',;n,:.,,


;,';,,;, it t:,.::
nnÉ

: to al pin RA4/TOCKl, con il quale si determina


l'incremento del contatore. 5e TOSE = 1 il
BANCO O BANCO I f ronte attivo sarà
v, orrello
Yvr"v
cli cliscesa e se
_:-_
TOSE = ^.
O sarà quello di salita.

00 l
. ,,',, . .

ln molte occasioni, sia il TMR0 che il


Watchdog devono gestire lunghi intervalli di
0l +^m^^
Lc'pu, c^ ^^-^--'+^
rrsus>:rroì'ìo di aumentare il tempo
che intercorre fra ogni impulso di clock, per
02 rlaroare ilncremenlo, e 0r conseguenza
aumentare la durata dell'rntervallo. Per far
' fronte a questa necessità, si dispone di un
03 nlivicnro di {ronranZa pfogfammabile, Che
divide la frequenza di clock per i diversi valo-
,
:

fl possr0rlr.
Abbiamo un solo divisore di frequenza, cre
-J^..^E))ct c d))r
' ucvc ----agndto al TMR0 o al
, Watchdog; per fare questa scelta disponiamo
di un bit nel regLstro OPTION, chiamato PSA.
ll contatore TMR) occupa l'indiilzzo 1 del banco 0 Se PSA = 0 il divisore di frequenza è applica-
e il registro OPTION, di cui alcuni bits programmano il funzionamento to al TMR0, con il quale funziona come
del TMR), occupa l'indirizzo 1 del banco 1.
Predivrsore, o Prescaler. In questo modo gli
impulsi del clock passano prima attraverso ìl
sti bits si chiama TOCS, e se vale 1 il IMR0 funziona divisore di frequenza, vengono divisi per il valore scelto
come contatore di impulsi, se vale 0 come temporizza- e sono poi applicati al contatore TMR0 per ottenere l'in-
tore di ulilizzo generale. L'altro bit chiamato TOSE, sce- cremento di valore. Gli impulsi del clock possono pro-
glie il fronte attivo per il conteggio del segnale applica- venire dal proprio oscillatore interno, con una frequen-

;:11
)%F- tffisf-*
**FW:^ffi*n, PSA
sErEzroNE RANGE
oPTtoN

Schema interno del TMRj con i bits di programmazione del registro OPTION.
24

za di Foscl4, o da impulsi esterni applicati al piedino vernano il comportamento dei temporizzatori TMR0 e
RA4/TOCKl. Questi impulsi passano al Prescaler che li WDT; inoltre il bit RBPU# serve per collegare o meno
divide per un valore impostato dai tre bits meno signifi- lo rp<iqton zo dr nrrll-r rn doll: nnrt: R I In :ltrn hit
cativi di OPTION (PS2, PS1, PSO). yuurL crrì
INITFDG doridp 611;lp )dld il rnn+n dLLIVU
ll fllUlrLC r1-ii,in nor
pcl l,intar_
llllLCl-
Per calcolare il tempo che controlla il temporizzato- lInt
rupL a<tornn
sJrsr rrv rho
!rrE nni.. d c))crc rnlJnar+n
LUtìtr9dtu rllr
dtd narlr
vwLt PUtLd
re TMR0, dobbiamo tener presente il valore caricato ini- RB0/lNT. Nella figura è indicata Ia distribuzione e la
zialmente e il fattore di divisione del Presca er, in accor- nomenclatura dei bits del registro OPTION così come
do ron la spnrrpntc formula: l: f r rnzinnp rhp nnnrrnn di esqi romnip a seconda del
|||/|!9J!t

valore. che Ouo essere 'l o 0.


Temporizzazione = 4 . Tosc .

Valore caricato in TMRO .


OPTION
Fattore di divisione del
Prescaler

Valore da caricare in TMR0 =


Temporizzazione I P52:P50 Vqlori con i quoli funziono il divisore difrequenzo
(4 . Tosc . Fattore di
Divisione del Divisione del
divisione del Prescaler) PS2 P5I P50 TMRO WDT
In qualsiasi momento si 0 0 0 1:2 l:l
nr ro il va lorc n rtr\en p
lpc c e re I
0 0 I l:4 l:2
in TMRO senza influenzare il 0 I 0 l:8 lz4
rnnteooin ner rrri si utilizza
l'istruzione "movfTVlR0, W"
0 I I I:ló l:8
che eariea ncl renistro di lavo-
I 0 0 l:32 l:ló
ro il vàlore del contatore nel
I 0 I l:64 l:32
momento in cui sr esegue l'i- I I 0 l :128 l:64
qtrrrzinno
Jrru4rvr,L. inr r". dall.
l\loll: frrVUlO UEIIO
I I I l:256 l:128
n:nin: ru
yuyil nrororlonlo
rL! p
! rinnrl-:fn
llPwlLoLw
PSA: Asseqnozione del divisore di frequenze
lo schema interno del TMR0, e
si ouo notare l'esistenza di un
l= lllivisore di frequenze si ossèqno o WDT
circuito che ritarda di due cicli
0= ll divisore di fre{uenze si osseéno q TMRO
i rontpooio/ Y9npr sinrrontzzare
r"'L' TOSE: Tipo di fronfe in TOCKI
rl momento dell'incremento l= Incremento di TMRO con fronte di disceso
nrndnttn el:l <onn:lo
PrwuvLLv uor Jqvrrors crrrr
^c+^rh^
r I(, 0= Incremento di TMRO con fronte di solito
TOCKI con il quale si produco- TOCS: Tipo di clock per il TMR0
no gli impulsi del clock rnter- l= lmpulso irì inqresso dq TOCKI (contotore)
no. Quando si scrive il TN/R0 si 0= lmbulso di clóck interno Fosc/4 (temporizzotore)
ritarda di 2 cicli il suo reincre-
mento e si pone a 0 il divisore INTEDG: Frole ottivo per interrupt esterno
di f "cnr tFnTà o Prpsr:ler. l= Fronte di lolito
0= Fronte di disceso
i.
t, ;1i';, rj-j,;j"Ti? r-i ij i'' 1'? i.,l i4
Ò r ro<
\{uLrLv ln ron
rLVrJLrv vLLupdtnl lr
i< t rn naar lC nac
pU)l- i
RBPU#: Resistenze di pull-up Porto B

zione ldel banco l nell'area I = Scolleoote


SFR della RAM, che ha il com-
0= Colleg"ote
nitn di rontroll:re le risorse del
microcontroller. I bits di
OPIION, principalmente go-
o_:::'
!
i
i1: :?' ly' a, ? :' !::^ l :-'
b',!:
:n'': l
É -+ È g"++i+ e";=a++ +r :.it,gs +S É È1+resc 5+ i+ rÈ :ÈiH ÉÉ *+È {i' lil
r.+.*
j
rt4tsf!!.rrrì1l11lrr1rrìr1ì1ìì1ìììììììììììììrì:rr....tt........:aN\t\ttttnt4\

MICROCONTROLLER {r|-ràF-,',,..r:ìrì jì!i*.:r:;,

ll Ytfcrfchdog

Un cane
che morde

#
È-

.{..,,:
3.t:
;:':..
::.:: :

ì.,,
ìr'

=.!: .,

Qcre-sto eArbo, un cane mtcrorobat castruita dalla Sony, che sa anche morclere. E una mascotte dtsegnata
D-or coloToche abitano rn città, e non devc:rtt,t preoccuparsi di portare tl cane a spasso, dargli da mangtare, evitare che abbai di rtatte ecc
PuÒ capire 14 messaggt, o ordtni del padrr:ne, rrnpara percl'te
è senstbile alle carezze e ai castrgttt. Gioca con la palla, segue rl paclrone, abbara, dice rl suo nome, alza la zampa quando fa prpì ecc.
Cort la sua telecamera vtgila -o rnorde li estraner, e non ha ntente a che vedere con tl
Watcltcloq cite contiene rl PIC e che dev-. solo resettare rl mrcrocontroller, quando ll programma di lavoro non è eseguita normalmente
bene, prima che il Watchdog termini ìa sua temporiz-
(Watchdog Timer) è un contatore ascendente a zaztone, il programma gli fornisce un'istruzione che lo
B bits che ha Ia proprietà di mandare il micro- cancella e reinizia ìl conteggio, in altre parole effettua
+ controller in reset ogni volta che va in overflow. un "refresh". Se il programma si è "piantato", e non
. n differenza del TMR0, il Watchdog non dispo- sono state eseguite le istruzioni secondo le previsioni, il
ne di segnalatori, ne genera interrupt alla fine del ciclo, programma non fornirà l'istruzione di refresh, di con-
l'unica cosa che fa e provocare il reset del microproces- seguenza il WTD andrà in overflow e verrà generato un
sore, il quale ricomincia ad eseguire il programma prin- reset. Con quest'azione si ottiene che il microcontroller
cipale dalla prima istruzione 0000H della memoria dei inizi nuovamente il programma, ed eviti la causa del
codici (Vector Reset). blocco. Un programma si puo bloccare perche, ad
L'obiettivo del Watchdog è verificare la corretta ela- esempio, entra in un ciclo infinito, o perché necessita di
borazione delle istruzioni del orooramma. Se tutto va un segnale per uscirne che non arriva, ecc.

Nell'organigramma di attuazione de
lNtzlAlrzzAztoNE (RESET)
Watchdog si osserva che alla fine della tem-
porizzazione del WDR si esegue l'istruzione
"clrwdt", si cancella il te'nporizzatore e rico-
mincia il conteggio. Se non si esegue questa
INIZIO TEMPORIZZAZIONE WDT istruzione, qualcosa non ha funzionato, quin-
di si npnpra rn reset. Per controllare il
Watchdog si aggiunge l'istruzione "clrwdt" in
certi punti del programma su cui si vuole vigi-
t^-^ . ^^| \-1uE)Ld
tdtE. LUt ^, ,^-+î i-*.,,:ione
r)u uz il contatore torna
ESECUZIONE DELLE ISTRUZIONI a 0 e inizia il conteggio, evitando l'overflow
Se il programma non è eseguito normalmen-
te, l'istruzione "cìrwdt" non arriverà in
tempo, il WDT andrà in overflow provocando
il reset del sistema, come nmedio per supera-
FINE
re l'anomalia.
b TEMPORIZZAZIONE
WDT ll refresh o reinizio del conteggio del WDl,
si puo produrre anche quando si esegue I'i-
strr rzione "sleen"
J|!!y, che serve ner norre il PIC in
uno stato di basso consumo, fermando I'oscil-
latore interno e sopprimendo l'elaborazione
delle istruzioni. Anche se il WDT si cancella
con l'istruzione "sleep", non si ferma, a meno
che non venga fatto da programma.
ESECUZIONE
CTRWDT
:, ,,,".' . ' '' : ,

{cANCErrO WDT)
ll Watchdog si attiva e si disattiva con il valore
del bit WDTE della Parola di Configurazione.
come abbiamo visto in precedenza.
tlO La frequenza di lavoro di questo temporiz-
zatore e sempre interna e indipendente, origi-
nata da un oscillatore RC proprio. Quando si
Organigramma sull'attuazione del Watchdog. Se il programma si eseErue assegna il Divisore di frequenza al Watchdog,
normalmente riceverà in tempo l'istruzrone clrwdt e non deborderà. Se qualcosa questo lavora come postdivisore, al contrario
va male, o questa istruzione non arriva in tempo, verrà generato un reset.
di come lavora con il TN/RO. In questo modo
ilTICROCONÍROLLER

IMPUTSI DI CLOCK
PER TMRO

TOSC
8-
ArrrvATo/ /l
DISATTIVATO Ps2.Pso7ffiK
WDTE At TMRO
(PAROLA Dr CONFTGURAZTONE)

ffi PsA

OVERFTOW WDT
(RESET)

Schema interno del funzionamento del Watchdog.

gli impulsi che genera il WDT passano al Divisore di fre- frequenza si puo fare in modo che questo tempo si elevì
quenza, che li divide per ilvalore che selezioneremo con fino ad un massimo di 2,3 secondi.
i tre bits meno significativi del registro OPTION.
Se il bit PSA neì registro OPTION e a 1, il Divisore di ESEMPIO
froatanza si annlir,a al WDT. E curioso notare che il ln un programma si desidera controllare che un deter-
Watchdog non dispone di nessun registro nell'area SFR ^;^^+^
Ilil IA LV
I -;-t^ lvt-^^^^sto
ttllWt lPV
r da 200 istruztoni normali
della RAM. senza nessuna di salto, sia eseguifo esattamente 100
La ragione si deve al fatto che non si carica con volte. Si lavora con un PlCl6FB4 con un crtstallo di
alcun valore iniziale, iniziando sempre da zero sino al- quarzo a 4 Mhz e si utilizza il Watchdog per controlla-
l'overflow. re questo tempo, che può essere critrco nell'applìca-
Ogni volta che clrwdt produce un refresh torna a ztone.
zero e inizta a contare nuovamente. Nel registro STATO ll controllo del tempo del ciclo, richiede di postzio-
esiste un bit chiamato TO# che passa a valore 0 quando nare davanti allo stesso un'istruzione "clrwdt", che
il WDT va in overflow, così discrimina il motivo per cui resetta il Watchdog e inrzializza la sua temporizzazio-
e avvenuto il reset. Al termine del processo di 100 ciclr, collocheremo
ne.
nel programma princrpale un'altra istruzione di refre-
sh del Watchdog. Con quale temporizzazione si deve
programmare il Watchdog, per ottenere un reset nel
rtca )/d
ciz JUlJcldLU
.t t^Òra+^ llil Lcl
famnn
t tPw rha
rt tc uimniaaa //il rirl^ 1A cJ)c-
ll temporizzatore WDT è preprogrammato per control- Ld)u t tPtcva L/!ru ou ^..^
lare un tempo di 'lB ms, pero regolando il Divisore dr ro o<aattitn 1îtît rrnlfo?
P26

CLOCK PER TMRO

PSA PS2:PSO
ATTIVAZIONE
DEt WDT At TMRO
wDrE)
P5A

OVERFTOW
DEL WDT
Bits del registro OPTION che intervengono nel comportamento del Watchdog.

SOLUZIONE indipendente dall'oscillatore prrncipale del sistema.


- La temporizzazione nominale e di I B ms, anche se
Dato che il ciclo consta di 200 istruzioni puo essere aumentato con il valore che si sceglie nel
normali, iltempo che dura ogni istruzione sarà: Divisore di frequenza fra 1:2, 1 :4, .....1 :128, ottenendo
Ciclo lstruzione= 4. Tosc = 4.250ns = 1.000 ns = 1 !s con quest'ultimo caso una temporizzazione massima di
Tempo dì Ciclo = 200 Ciclo lfruzione = 200 . 1 ps = 200 ps 2,3 secondt.
TempoTotale = 100 Tempo di Ciclo= 100. 200 ;rs=20.000 ps = 20 ms
" Per stabilire il range di divisioni del Divisore di
Frequenza si utilizzano i tre bits meno significativi di
ll WDT deve essere programmato per andare in over- OPTION (P52, PSl e PS)).
flow 20 ms dopo il refresh. Gli impulsi per il WDT sono * Per prevenire l'overflow e i/ reset bisogna cancel-
generati dail'oscillatore RC interno, proprio e indipen- lare il WDT prima del termine della temporizzazione
dente dal orincioale. con I'istruzione "clrwdt" o "sleep".
* ll WDT si attiva o drsattiva con un bit della Parola
di Configurazione (WDTE).
Con l'obiettivo di precisare tutte le caratteristiche * Se il bit PSA è a 1 nel registro OPTION, tl Divtsore
principali di cui bisogna tenere conto per gestire cor- rli freottenza P assp.,nato al WDT.
rettamente il Watchdog, forniamo un riassunto di * Quando si esegue I'istrulone "sleep" si entra in
quelle piu importanti e una figura che mostra grafica- modo basso consumo e si ferma tl srstema e l'elabora-
mente i bits dì controllo che intervengono nel suo zione delle istruzioni. ll WDT si cancella, pero non si
comportamento. ferma e continua rl conteggio.
* Nel modo basso consumo st entra con lo s/eep e
RIASSU NTO DELLE SPECIFICH E termina con I'azione del reset esterno tramite MCLR#,
* ll WDT è un contatore che genera un reset ogni o anche all'overflow del WDT.
volta che va in overflow. * Uscendo dal modo basso consumo si ricomincia
" È controllato da un oscrllatore RC interno ed o<onttanrla l'i<frr tzinna rho <oat ra nt talls r'li -,-"eP.
,-,,,- -, <l'
La memoria
det programma
MEMORIA DI

farchitettura Harvard dei PIC,


divide la memoria in due zone
indipendenti, una destinata a
PROGRAMMA FIASH

tNDtRrzzo
/,o
tNDtRtzzo
/,
I I

contenere le istruzioni e l'altra i ','iXtl"


dati. Il primo vantaggio che ISTRUZIONE
/,0
DATO
/"
I

deriva dall'architettura Harvard I

e che nermette l'accesso simul- BANcoolanNco r

taneo ad entrambe le memo-


rie, in modo che il processore
Un progetto esclusivo per il PlC|6FB4.
possa leggere un'istruzione di

diversi modelli della gamma


media. Per questo il bus degli
MEMORIA
PROCESSORE
DEI DATI tndirizzi, ovvero l'insieme di
linee che trasportano il valore
dell'indirizzo al quale si deve
tNDtRtzzo accedere nella memoria - che
e generato dal Program
DATO
Counter PC - non ha solo dieci
linpp rhe,r s:rphhprn nrtelle
Je,LUvL'v Yr suf-
firienti ner
YLr
oestire
YrJ!'r ! la
'v
memoria
'

da 1 K, ma 13 con le quali è
L'architettura Harvard del PIC rende indipendente la memoria del programma da quella dei dati.
possibìle induizzare capacità

programma, e nel medesìmo tempo scrivere un dato.


Così, il processore attende a due istruzioni alla volta, MEMORIA DI
PROGMMMA
conseguendo un parallelismo implicito chiamato seg-
mentazione. che migliora notevolmente il rendimento
del sistema; fatto che in pratica si traduce nella possi-
bilità di eseguire un elevato numero di istruzioni al tNDtRlzzo
secondo. Se guardiamo il progetto costruttivo del ,13

PlC16FB4, notiamo che la memoria dì programma ha ISfRUZIONE

una capacità di 1 K byte da '14 bits ognuno, mentre la '14


memoria RAN/ è costituita da due banchi da '128 byte
l..- +l
ciascuno, lasciando gli altri banchi non implementati. 14 BITS

,:
:,
.' ,
':'l
"i , ,orr)uo," il ,**rirlru'" i
ttu, a"g i ,:,iiri;i nunì,o t s t*,
MICROCHIP non ha realtzzalo un progetto specifico con i quali si può indirizzare uno spazio di B K posizioni di memoria.
ll PlCl6FA ha solo implementate le prime 1 024 posizioni.
per il PIC16FB4,l'architettura utilizzala è la stessa per
fino a 8 K posizìoni di memoria del programma tipo , ll fatto che il programma principale cominci all'indì-
FLASH. Nel caso del PlCl6FB4 è stato fisicamente ' rizzo 0000 H e la routine di interrupt al 0004 H non
implementato solo il primo K, sarebbe a dire, dall'indi- cinnifir: rhp lo rpstanti istruzioni continrrino seouen-
rizzo 0000 H al 03FF H , zialmente, altrimenti il programma principale intacche-
, rebbe la routine di interrupt che inizia quattro posrzro-
;'y,:; i..j :j r:'irí. I ::i :- I
;';:1:!; j,1:.
ni dopo. Normalmente all'indirizzo del vettore si collo-
Nei PIC di gamma media abbiamo due indirizzi della , ca un'struzione di salto incondrzionato al vero indiriz-
memoria di programma che sono riservati per espleta- zo dove inizia il programma. Per esempio, se il pro-
'
re due funzioni principali. Un indirizzo riservato è lo ; gramma principale - con l'obiett vo di salvare il Vettore
0000 H, che è il primo della mappa. ln esso è ubicato : di Interrupt - si decide di farlo iniziare all'indirizzo 0005
Vettore di Reset o Reinizializzazione. ll suo compito è , H, all'indirizzo 0000 H, viene collocato un GOTO alla
direzione 0005 H, come si puo vedere dal seguente
: OrOOfamma:
MEMORIA DI
PROGR/AM^tu4
0000 H RADIX HEX ;l valori si rappresentano in esadecimale

Goto inizio ;Salto all'istruzione con etichetta inizio

tk

F un renistro da 13 hits rhe ronlienc nli indirizzi dell'i-

O3FF H struzione successiva che deve eseguire ii processore.


Dato che i registri della RAM sono di 8 bits, il valore del
PC si i'nnlempnta qnnra drre di essi ll rcnistro PCL del-
I due indirizzi riservati nella memoria di programma. La 0000 H
l'area SFR della RAM contiene gli 8 bits meno significa-
per il Vettore dl Reset e la 0004 H per il Vettore di lnterrupt.
tirrr dpl PC
! o acr^trn,a le nosizione
L vLluvu,u PvJ,L,vl 2 dei drre banchi. | 5

supportare la prima istruzione del


programma principale, che e quella
rho o<anrro il,, nrnroccr
r.,_-,_-Jre oopo cne
è stato effettuato un reset.
T-- ì^ -i+.^ --.,-^ il -^-^+ -l ^-^ CONTATORE DI PROGRAMMA
duce con l'accensione del micro-
controller nel momento in cui si
applica la tensìone di alimentazio- 12 87
ne, il programma che esegue il
microcontroller rnizia all'indirizzo
{s
0000 H.
L'altro indirizzo riservalo è lo PCLATH
0004 H, in cui alloggia il Vettore di
lntorrr rni (o nol nrnnr
-y,amma e pre-
432rO
visto un interrupt, la routine che lo Íi
riguarda ha la sua prima istruzione
Gli B bits meno significatiu a" iìiìr,eaono ntel registro PCL e i 5 più significativi nel PCLATH.
all'indkizzo 0004 H.

íÉ ;l,r :;e + i:' i. *tu *11 a1; I i + i.# $i-l tr;l ;i:, i; n:+ i;-i,j
frilc

cano dalle Iinee del bus dei dati


interno al processore. | 5 bits
CONTATORE DI PROGRAMMA
piu significativi, invece, si rice-
vono tramite i bits <4:0> del
registro PCLATH.
Nell'istruzione di salto GOTO
o CALL I'induizzo del salto che
-2 'll si carica nel PC arriva dagli 11
bits meno significativi del codi-
CODICE OP ISTRUZIONE < | 0:0> ce OP dell'istruzione, e dai bits
<4:3> del PCLATH.

PCTATH

4 3 Lo stack è un insieme di registri


che contengono le informazio-
Nell'istruzione di salto il PC vrene caricato ni in una forma particolare,
con gli 11 bits meno stgnificativi del codice OP e i bits <4;3> del reqistro 7CLATH
dato che, sia il carico che lo
scarico è speciale. Nel caso del
bits piu significativi del PC risiedono nei 5 bits meno PIC'16F84 lo stack è formato da B registri da 13 bits
signifrcativr del registro PCLATH, che occupa l'induizzo ognuno, ed è dotato di una struttura di carico e scari-
0A H nei due banchi della memoria dei dati. Il registro co tipo LIFO, acronimo inglese che significa "ultimo ad
PCL si può leggere e scrivere direttamente, mentre il entrare primo ad uscire". Quando si carica un'informa-
PCH è accessibile in scrittura attraverso i 5 bits meno zione nello stack, si introduce sempre al livello 'l
significativi di PCTATH In quelle istruzjoni in cui la Se precedentemente avevamo un'informazione al
destinazione è il PC, gli 8 bits meno significativi si cari- livello 1, questa viene spostata al livello 2 e quella del

cARrco SCARTCO
\13
STACK STACK \I3
T.INFORMMIONE I-'INFORMAZIONE
5I SPOSTA At stSPosTA
HVELTO SUCCESSTVO At LIVELLO
PRECEDENTE

Caricando lo stack al livello 1


Anche lo scarico dello stack si realizza al livello 1,
l'informazione di ogni livello trasla al successivo spostando l'informazione al livello precedente

,-!, i,
NfiICROCONTROTTER

livello 2 al livello 3 e così di seguito; in aìtre parole, stamento dell'informazione di ogni livello al seguente,
quando si carica l'rnformazione aì ìivello 1, quello che quindi si perderà quella che esisteva al livello B.
c'era memorizzato in ogni livello si sposta al seguente Per recuperare le informazìoni dallo stack, lo spo-
livello. stamento delle informazioni si realizza al rovescio;
Se lo stack e nieno e contiene informazioni in tutti esce quella che sta occupando il livello 1, e ìn esso
qli otto livelli, rl carico di un nuovo dato produce lo spo- viene caricata quella del livello 2. Le informazioni si
spostano al livello precedente
e il dato che esce dal livello 1
sarà l'ultimo che è stato inse-
t,, rrto.

rì-- cARrco ' ' '''',,, ': .l'


(cArr E TNTERRUPT)
Lo stack del PIC funzlona
automaticamente, 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 volta
rhp ci pconrro l'istrr rzinne CALL
o che si produce un interrupt,
è necessario salvare il conte-
l3
nuto del PC per sapere succes-
sivamente ritornare al punto
L'istruzione CALL o I'interrupt, dove avevamo lasciato il pro-
provocano il caricamento automatico del contenuto del PIC nello stack gramma princrpale.
L'esecuzione di un'istruzio-
ne CALL o di un interrupt,
produce lo spostamento auto-
matico del contenuto del PC
/
'13 al livello 1 dello stack.
scARlco fultima istruzione di una
subroutine o di una routine
srAcK rs\ (RETURN, RETTW,RETFIE)
d'interrupt è di RITORNO,
quando questa è eseguita
produce lo scarico automatico
del livello 1 dello stack sopra il
PC, restituendo il f lusso di
controllo al programma prin-
cipale, nel punto in cui era
stato abbandonato.
ll programmatore deve te-
nere conto che non esistono
segnalazioni che indicano
quando lo stack è pieno, ed è
sua responsabilrtà evitare il
Le istruzioni di RITORNO della subroutine debordamento e la perdita di
o dell'interrupt scaricano immediatamente il contenuto del livello 1 dello stack sopra il PC
informazioni.

;:;,::iii :r,, 11l,il:;.+ 4i,i ;r1111;i


Reset
e circuiteria fissa
Per entrare in funzione il PlC16FB4 ha bisogno di tre
risorse:

- Tensione di alimentazrone
- Freorenza di rifprimpnto.
- Reinizializzazione o Reset.

La tensione di alimentazione e indispensabile per il


funzionamento di tutti i componenti elettronici, e il suo
valore può essere compreso fra +2 e +6 VDC, essendo

Quando si preme il pulsante


di Reset il piedino MCLR# passa a livello logtco basso
!,,0,
àoscr/crKrN T
._------------l-cR|sTAt lnfine, un microcontroller deve disporre di diverse
MCtR#/Vpp
-osc2/crKouT
E-.---l $lml' forme di inizializzazione de programma di lavoro. Per
| nro\/oràre rrn Rpspt esterno si rrtilizza il oiedino 4
-+'
MASSA:Vss À-' 27ot
(MCLR#l/pp), che ha anche la funzione di introdurre la
S+Voo=+SVDC T
-:-
I + 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.
Questi sono i 5 pin del PlCl6FB4 che supportano le tre funzioni
principali. alimentaztone, frequenza di riferimento e Reset. Voo=+5VDC

+5 V la tensione tipica, compatibile con il resto della cir-


î
rok=
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 rN4148+
f
dalla tensione di alimentazione, che non supera 10 mA.
La frequenza di riferimento serve per stabilizzare e fissa- t--M A-
re la frequenza dell'oscillatore interno, che determina PULSANTE
I rooo
quella di lavoro del orocessore. Si ottiene da un cristallo
r'-rrq; I

di 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 tipo
I.:
XT. In ognuno di questi piedini si monta un condensato-
ro di nnchi nirofered nor dic,rrrnnni:ro lo fronttonza ll rlinrln imnpdisr c r he e íre6li
,,,,P!vrr!L

corrente dall'rnterno del microcontroller al positivo


spurie.
n^+^
uaro cne -A^ quan0o
^,,-^,]^ 5l
imnieoa
""r'-v- rrn PIC 16F84
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/O
rnn lo norifari16,a rho
dovremo controllare
esrstono sul mercato
schede di circuiti stam-
pati che dispongono di
rrnn znrrnln nar
Y-, il,, Pll-
',-,
dci rollcn,amonti
rv,,rYU,,,L,,Ll nc;
l'alimentazione, del
cristallo di quarzo e del
Rocoi o r rn: znn: liho-
lmmagine di una scheda di prototipi commerciahzzata da Microsystem Engineeilng
r: rlnrio nnq(nnó
YvrJv'
èqqé-
ro m^nf:to lo nori{ori-
Y-.,,-,,
che che si collegheranno alle linee di l/O.
Nr^ll- {i^,,"-
r\eila rgurd ,..J^ll- pagrna successlva sl puo veoere lo
Quando si applica un livello basso per un tempo suffi- oeild ^.
rientp al niedino N/al R#, JIsi yIvvuLL
nrodrrrp rrnà rcinizializza- schema elettrico della scheda per i prototipi che è molto
zione che comporta l'esecuzione di due azioni impor- ulile per la presentazione e la messa a punto dei proto-
tL.i doi nrnnoffi
o uLr d:t: l.ld {..ili+à À'".^
U U)U, l-
ld rr^ir:+;
l/^
^ lc-
tanîr: L ||JrvgLLLrr uuru ldLlllLd ldPìultd E
'1
". La messa a zero del Prnnr:m Cor rntor rhe cosl conomia che comporta.
pd>>d -r r^ri.i---.Ò
du il ruil r4zor! la
prima istruzione del pro-
gramma.
2". Pone in uno stato
p"edeterminato la maggìor
narte dei bit dei reoistri di
controllo del processore.
Nella figura della pagina
nro.p.ltrnto sr mnstr:\/a Un
semplice schema a base di
un pulsante, che provoca il
Reset esterno.
Un altro schema comu-
ne per il pulsante di Reset
include una resistenza di
assorbimento da 10 K, un
dindn rho imnpdisre la cir-
colazione di corrente al pie-
dino 4 e un'altra piccola
resistenza da 100 Q come
Scheda dei prototipi con un'applicazione che controlla diverse periferiche
sivede nella figura.

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
seguente a
-^^,,^^+^ - ^,,^ll-
queila cne
-t- lo na
mandato nello stato di basso
consumo. Nella tabella sono
rino.fati Ii v:lori
vu,v,, r-ho nrendOnO
r,L vl i

bit del registro SFR dopo ognu-


Schema elettrico della scheda dei prototipi
na delle possibili cause di Reset.

ll Reset rnette a zero il PC e colloca in uno


stato predeterminato la maggior parte dei
hit dei reoistri di controllo. Esistono tre
cause principali che originano i Reset:
1". Connessione dell'alimentazione
(POR: Power On Reset) Si produce al pas-
saggio della tensione dì alimentazione da
1,2a1,7Y.
2'. Attivazione del piedino N/CLR#.
C)rrpsto
YULJLV
nrn sr rrcpdpre sia mentre il PIC CONSENSO PWRÍ
(Porolo di configurozione)

funziona normalmente, sia che si trovi in


stato di rìposo.
Schema elettrico di controllo interno dell'attivazione del Reset
3'" Overflow del Watchdog (WDT). Puo
:,, i:,'.
1-;,'1',_ i,
i i:. ;.: ; ;,;'?'
- i j 1 il:
11,
CONNESSIONE OVERFLOW OVERFIOW MCLR#
DEII.A ì WATCHDOG WATCHDOG MODO .
MCLR#
IAODO ii i i. i:' 1' 1; ir
'i
REGISIRO tNDtRtzzl aUMENTAZIONE ìmoDo NoRMAIE r MODO RIPOSO . NORI AtE: RIPOSO
XXXX XXXX UUUU UIUU UUUU IUUU UUUU UUUU |Lq i^,,"- ff^.+,a
- fil9UIO lttUJttC l^
rV SChema
00h
01 h xxxx xxxx elettrico che controlla l'attiva-
o?h 0000h 0000 h PC+ I 0000 h 0000 h
zione del Reset. Sono messr In
03h OOOI lxs 0000 I uuu uuu0 0uuu OOOu uuuu 0001 0uuu
04 h xxxx xxxx UUUU UUUU UUUU UUUU evidenza i temporizzatori OST e
05L xxxx xxxx UUUU UUUU UUUU UUUU
PWRT.
Oé h xxxx xxxx UUU! UUUU UUUU UUUU

góh
85 lr ---11111 ---r l]1t -.-r llil ll temnnrizTz,tore PWRT
tlil lill 11111111 llll llil llll llll
(Power-up-Timer) aggiunge
sl h 1111l',] t1 illr I11r UUUU !UUU ll]t lltl il| 1t1r
: 08 h xxxx xxxx UUUU UUUU UUUU UUUU UUUU UUUU
72 millisecondi che manten-
09 h xxxx xxxx
j,, h
es ,.. o oooo ---o?ooo 0?000 .--0?000 gono rl microcontroller nella
r.' ge h
situazione di Reset, per dare
;i:,oah ---oúooo ---00000 00000 ---00000
ìììr oal oo00 Òoox 000O 0O0u uuuu uuuu 0000000u 00000000 tempo alla tensione di ali-
i U=Noncombio x=lndelerminoto --- = Non ufìlizzoto ? = Dipende do olke condizioni.
mentazione di stabilizzarsi.
.i
Per il suo funzionamento
Tabella con i valori che assumono i bit dei registri durante i possibili Reset
dobbiamo mettere a basso
SFR
livello il bit di accesso PWRTE#, che
risiede nella parola di configurazione.
Laltro temporizzalore, OST, fornisce un
ritardo di 1 .024 Tosc e ha il compito di
assicurare che l'oscillatore principale del
processore slabilizzi la sua frequenza.
OST inizia a funzionare quando termina
la temporizzazione di PWRI, dovuta al
collegamento della porta OR7 con la
AND5. L'ingresso Set del flip-flop di usci-
ta sr attrva:
. All'attivarsi del piedino MCLR#.
. Quando va in overflow il WDT. I bit TO# e PD# del Registro di Stato determinano la causa che ha originato il Reset

. Se si rileva un fronte di salita nel pie-


dino VDD (POR). conoscere la causa stessa. Per questo sì utilizzano due
f ingresso Reset del flip-flop sr attiva quando, trami- bit del registro di STATO o STATUS, che occupano l'in-
te la AND4, arriva un livello alto; questo richiede che duizzo 3 dei due banchi della RAM. Si tratta del bit
agli ingressidella porta cisiano livellialti, e quindisigni- TO# (T mer Out), che si attiva con l'overflow del WDT,
fica che: e del bit PD# (Power Down) che si attiva quando il PIC
. Non ci sono richieste di Reset e l'uscita di OR2 ha e in stato di riposo. La tabella in alto decodifica glistati
livello basso. di ouestr due bit.
. 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 coinvolti
nel 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'É il .

i"rili" i'iií€F{;;,iFj F. l}t i, ilÈF=È*,E


Dati i differenti effetti che provoca il Reset a seconda È

della causa che lo ha originato, è molto importante È

Ouando la tensione di alimentazione scende al di sotto del


valore di tensione del diodo zeneq Vz = 0,7 V, si produce un
Reset per I'attivazione del aiedino MCLR#.

... : l .
..':. :

+-ì{:-S*"il È:È:È * {i {i} *È,{+:f+i;3.q"} *.é E.


POR
A volte è molto importante reinizializzare il processore
oiERFtovrf
PI,vnÍ quando si produce un buco di tensione e/o la tensione
OVERFLOW scende sotto un valore determinato, senza arrivare azero,
osr risalendo subito dopo.
**i-t fu Ci sono modelli del PIC che incoroorano nel silicio i circui-
tinecessari per provocare il Reset a fronte di un buco di
tensione. Questo non è il caso del PlC16F84, quindi per
Cronogramma dei segnali che partecipano a/ Reset all'arrivo dr ottenere cio bisogna costruire un circuito ausiliario come
un fronte di salita nella tensione di alimentazione.
mostrato nella figura.

#+È*É.eÈs$Eea*=$+$È+ # R*s+*
ecessità di m emo rizzare
N

dati non volatiti


, ,,, i r,. pesso, nelle applicazioni più comuni con i scritto e cancellato; pero deve essere mantenuto anche
microcontroller, è necessario poter disporre quando viene scollegata l'alimentazione. Con l'obietti-
di intormazioni ditipo permanente. ln deter- vo di supportare questo tipo di dati e applicazioni, il
minati momenti vengono introdotti nel P|C16F84 dispone di una memoria EEPROM da 64
sistema alcuni dati che devono essere man- bytes.
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- Le memorie EEPROM nascono per superare gli inconve-
cipali periferiche saranno una tastiera, un display di nienti delle EPRON/, che si potevano scrivere e poi can-
visualizzazione dei messaggi, e un relé di uscita. Ogni cellare sottoponendole per alcuni minuti ai raggi ultra-
utilizzatore introduce la sua chiave segreta mediante la vroletti, per cui disponevano di un cristallo sulla superfi-
tastiera e i messaggi che appaiono nel video guidano le cre. La scrittura della EPROM è di tipo elettrico, però per
operazioni del medesimo. cancellarla, bisogna estrarla dallo zoccolo e posizionar-
Nell'applicazione descritta, ogni utilizzatore ha un la sul "cancellatore" a raggi ultravioletti. Questo pro-
suo codice, e l'insieme di questi deve essere memoriz- cesso è lungo e complicato.
zato in modo permanente, per essere utilizzato quando Nelle memorie EEPROM sia la scrittura sia la cancel-
'è necessario. Inoltre sarà possibile cambiarli in qualun- lazione delle informazioni, sono realizzate mediante
que momento. segnali elettrici, per cui non è necessario estrarre il cir-
Por momnrizT)ro
^tro<ti , ,,---554|a
tini di drri ò nara una cuito integrato dallo zoccolo.
memoria non volatile, perchè il contenuto possa essere Nella costruzione della cella N/OSFET delle memorie
EEPROM, si introduce una sottile lamina di ossido sopra
il drain, che permette la cancellazione elettrica. Quando
si applica una elevata tensione fra il gate e il source del
MOSFET si introduce una carica nella barriera di poten-
ziale, che rimane memorizzata anche se viene tolta l'a-
limentazione. Per distruggere questa carica basta appli-
care la stessa tensione inversa.
Nella EEPROM si possono scrivere e cancellare sin-
gole celle. Le operazioni di scrittura e cancellazione di
solito durano pochi millisecondi. Linconveniente è che
la superficie che occupa questa cella e grande e per
questo la densità di integrazione è bassa e il costo ele-
vato.
La memoria FLASH ulilizza la stessa tecnologia pero
riducendo lo spessore della iamina di ossido, il che per-
mette un funzionamento simile alle EEPROM, con mag-
giore densita di integrazione, minor costo e maggior
velocità di accesso.
Terminali programmabrli della OMRON, che hanno funztone dr
Per questo motivo useremo la memoria di program-
nterfaccia uom o-macch i n a.
i
ma FLASH nel PlC16FB4.
P3l

Altre caratteristiche interessanti per la scnttura dei Per le operazioni di scrittura e cancellazione, la
dati nella EEPROM del PlC16F84 sono: memoria EEPROM necessita di una tensione Vpp alta,
dell'ordine di 13,8 VDC, che viene introdotta tramite
il pin MCLR#l/pp, come si puo vedere dalla figura.
Mantiene le informazioni più di 40 anni.

Anche se la EEPROM è una parte della memoria dei


dati, i suoi induizzi non sono mappati insieme ai regi-
ll microcontroller che usiamo come cervello di Monty, stri SFR e GPR della RAM, che è volatile. Occupa uno
dispone di una zona di memoria dei dati implementata spazio di memoria indipendente, così come mostrato
con tecnologia EEPROM, con una capacità di 64 posi- nella figura.
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 INDIRIZZI
più istruzioni delle 1024 che può contenere nella sua
memoria di programma. Inoltre questo tempo è critico
EEPROM HEX
e bisogna aspettare che termini completamente ogni 00
singola operazione per iniziarne una nuova. 0r
02

64
POSTZTONI

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, mentre
I
quello EEDATA si trova ubicato alì'indirizzo B del
banco 0, come riportato graficamente.
Nella posizione uguale a EEDATA, nel banco 1, si
La te:ntsione di 13j B VòC nec:e:ssaria trova il reoistro di controllo della EEPRON/, EECONl.
per la scrittura/cancellazione di un indirizzo della EEPROM, In modo simile il registro di controllo EECON2 occu-
si applica tramite il pin 4 del PlCl6FB4.
0a una posizione correlata a EEADR, neì banco
'1
.
Dato che questo tempo è molto critico, la fine delle
operazioni è controllata da un flag che può essere
complementato con un interrupt alla fine della scrittu-
RAM ra di un induizzo.
Per accedere ad una posizione della EEPROM
dobbiamo caricare nel registro EEADR I'indirizzo
della medesima, mentre in EEDATA si carica il dato
da scrivere, o nel caso della lettura, si deposita il
dato letto.
Dato che iregistri EEADR ed EEDATA sono di B blt,
i due bit più significativi del registro EEADR valgono
sempre zero, perche il valore maggiore che si può cari-
care è 3 FH.

EEADR (09 BANCO 0)

EEDATA (08 BANCO 0l ;

BANCO O BANCO I
Nel rcaistrn FFADR * eari16 | inj111776
a cui accedere, e in EEDATA, il dato da scrivere o quello letto

Ubicazione dei registri EEADR ed EEDATA, che si utilizzano ,; ',",i' i,;,t, i'.:,, .',. ' ',,,";1,1 1', I 1 "
nella gestione dell'area di memoria EEPROM, , t ,.', i;',':
sono riportati anche i registri di controllo EECONI ed EECON2
All'indirizzo OB relativo al banco 1 della zona SFR
della RAM è situato il registro EECONl i cui bit
., ,;.
il hanno rl compito di controllare le operazione della
EEPROM.
cicli di lettura e scrittura della EEPROM sono realizza- I tre bit meno significativi di questo registro non
ti <rrnli ind,irizti di rrn hrito hanno alcuna funzione.
ll ciclo di scrittura comoorta la orecedente cancel- Di seguito descriveremo il compito di ognuno dei
lazione in automatìco delle informazioni che contene- bit del registro EECONl:
va la posizione a cui sie fatto accesso. lltempo diciclo
di scrittura è controllato da un temoorizzatore inte- RD: Lettura
grato nel chip. Quando questo bit è messo a 1, si realizza un'opera-
ll problema maggiore e che questo tempo non zione di lettura all'induizzo contenuto nel registro
solo è lungo, '10 millisecondi come massimo, ma è EEADR. ll contenuto di questo indirizzo viene caricato
variabile a seconda della temperatura e delra rensro- nel registro EEDATA. Terminata l'operazione di lettura
ne aoolicata. RD torna automaticamente a 0.

hj'i,++=++;l'l'È+u #+u*i'.U+uil"t rtljdri+rli'[st.::r í fr j


P32

FLAG

EECON r (Oe BANCO | )

Struttura e nomenclatura dei bit del registro EECONl

WR: Scrittura EEIF: Flag di termine


N.4pttendo a 1 nrrpsto hit sì realizza rrn'nnerazione di dell'operazione di scrittura
scrittura dell'indirizzo indicato da EEADR, con il dato Data l'importanza dell'operazione di scrittura, e rl
caricato in EEDATA. Completato il ciclo di scrittura il WR rischio di comoromettere il sistema se non termina cor-
torna a zero automaticamente. rettamente, questo bit è dedicato a segnalare il termine
dell'operazione, prendendo il valore L
WREN: Consenso alla scrittura ln seorrito dovremo
'"
norre
r"ii
ollesto l-ti| a zero tramite
Questo bil realizza una funzione di sicurezza, se è a 1 software, altrimenti resterà a 'l .

normtrtttr l: srrittr rr: qe e a 0 no indinondentemente


dal valore del blt WR.
i::i.;.:l:'
WRERR: Flag di errore di scrittura In realtà questo registro non è fisicamente ìmplementa-
Viene posto automaticamente a 'l quando un'operazio- to nella RAM.
ne di scrittura termina prematuramente. È utilizzato come un drsposirivo di sicurezza, per
Segnala che si e verificato un errore di scrittura, atti- convalldare l'operazrone dr scrittura della EEPROM, ed
vandosi quando si interrompe l'operazione di scrittura, evitare disturbi che potrebbero prodursi durante il
a causa di un reset prodotto da MCLR# o per overflow lungo irtervallo di tempo prodotto dalla durata di que-
del WDT. Dopo il Reset l'utilizzatore deve verif icare que- ct: nnor:zinno
'l
sto hit e se vale rinetere l'onerazione oi scrittura. 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 dedicati
alla EEPROM
er gestire in lettura e scrittura le 64 posizio-
ni della EEPROM del PlC16FB4, si utilizzano Creore un progrommo per leggere l'indirizzo 0C H
ouattro reoistri dell'area SFR: dello EEPROM e deposiiorlo nel regislro W.

slufus Eu 0x03
eesdr qu 0x09
eedoh equ 0x08
eeconl equ 0x08

EEDATA: Contiene il dato da scrivere o il dato letlo,


bd shfus,rpO ;rd =0
per ocedere ol bonco 0

movlw 0x0r lv=0c


movwf eeodr P = eeodr
EEC0N2: Si utilizza come dispositivo di sicurezza durante la scrittura. bt shfus,rpO ;rp0 = | per occedere ol bonco I

bsf eecon!,rd ;rd= I perleggere


bcf shfus,rp0 ,'rp0 = 0 per oaedere ol bEnco 0
movf eedofo,w ;eedoh = w

EÈADR (09 BANCO O}

\"
EEDATA (08 BANCO 0) dato in un indirizzo della EEPROM, dob-
Per scrivere un
biamo seguire una sequenza di istruzioni in cui parteci-
pa in modo speciale il registro EECON2. Questo regi-
EECONT {08 BANCO r)
stro, che in realtà non è implementato fisicamente,
assume solo una funzione di sicurezza, caricandosi con
ivalori 55 H e AA H in sequenza. Questo evita interfe-
renze durante la lunga operazìone di scrittura, che a
EECON2 {09 BANCO r)
volte dura fino a 10 ms.
ll ciclo inizia caricando in EEADR l'indirizzo della
cella e in EEDATA il byte da scrivere. Se decidiamo che
Registri incaricati di realtzzare durante il processo di scrittura non si possono accet-
le operazioni con la memoria EEPROM tare interrupt, si deve mettere il bit di enable global
GIF - O In,, I nrrpctn
YvLJLv
modo si evita che durante
'LL
Il'onera-
vVL' u

zione di scrittura, la CPU venga sviata verso un'altra


routine al verificarsi dell'interrupt. In seguito dobbia-
mo autorizzare la scrittura, mettendo il bit WREN = 1

La lettura di una posizione della EEPROM inizia carican- nel registro EECON'1;poi dobbiamo includere nel pro-
do in EEADR l'induizzo a cui accedere, Successivamente gramma una sequenza di istruzioni che caricano in
si pone a 1 il bit RD del registro EECONl. Nel ciclo primo luogo il valore 55 H in EECON2, in seguito AA
seguente il dato letto è disponibile in EEDATA. Questo H nel medesimo registro. Terminata questa sequenza,
dato permane nel registro sino al realizzo di un'altra si pone il bit WR = 1 in EECONl e si inizia la lunga
operazione di lettura o scrittura nella EEPROM. operazione di scrittura.
MICROCONTROLLER
Memorier dei deiri EEPROilI [lII

Quando termina la scrittura, nel registro EECONl il &.egisfre


Vc!*ea dapo lfclore de:pe
Rest*f FOR shr? Rese9
bit WR sarà uguale a zero, e I flag EEIF a 1. Questo flag EEDATA xxx xxx UUUU UUUU
si pone a 1 automaticamente, al termine del ciclo di . EEADR xxx xxx UUUU UUUU
scrittura e, leggendolo, possiamo quindi sapere se il ;EÈCONI ---O xO(Xt ---O qOOO
processo è terminato. ll flag EEIF dovrà essere poi reset-
tato dal programma. Tabella con i valori che assumono i registri che gestiscono
Dopo ogni ciclo di scrittura è raccomandabile verifi- la EEPROM dopo un Reset.
care l'indirizzo della EEPROM, per vedere se e stata (x: sconosciuto, u; non cambia, q: dipende dalla condizione).

scritta correttamente.
sempre valore zero in caso di lettura. Infine i bit RD, WR,
WREN, ed EEIF del registro EECONl, prendono un valo-
Creore un progrommo per scrivere il volore Oxff
re casuaìe dopo un POR oppure un valore che dipende
oll'indirizzo dellq EEPROM 0x32.
dalla condizione precedente (q) se il Reset dipende da
Si suppone che primo del progrommo si siono specificoie
altra causa. Nella tabella riportata qui sopra si riassumo-
le direftive che ossegnono oi
no i valori di questi registri dopo i vari tipi dr Reset.
regislri di controllo impiegoti gli indirizzi corrispondenfi
{eeodr, eedolo, slolus, inlcon, eeconl, eecon2}.

bcf shfus,rpO ;rp0 = 0 per occedere ol bonco 0

movlw 0x32 iw = 0x32 I principali fabbricanti di circuiti integrati e di memorie,


movwf eeodr P, = eeodr offrono EEPRON/ con differenti capacità. Microchip
movlw uxIT iw = 0xff dispone di tre grandi famiglie di memorie EEPROM:
movwf eedqta ry = eedoto
bsf slofus,rpO ppO
= | per occedere ol bonco I

bcf inlcon,gie ;gie = 0 per proibire inlenupf

eeconl,wren I per permellere lo scrilfuro


bsf ryren
' tamiglia 24xxxx: Memorie EEPROM per bus I2C a due linee.
nello EEPR0M

Sequenzo di scritturq

movlw uxcl ,n* = 0x55


movwf eecon2 ff = eecon2

movlw Oxo iw = Oxoo


mowvf eeeon2 ;w = eecon2
Voo
bsf eeconl,wr ryr =I inizio ilciclo di scrilluro

5CA

5CL

I bit dei quattro registri che partecipano alle operazioni G


t2c
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'altra
causa, i bit non cambiano valore (u). ll registro EECON2 Adattamento delle memorte EEPROM 24xxxx per bus 12C
alle linee di l/O dì un microcontroller.
non è implementato fisicamente, e i suoi bit hanno
TNICROCO R
lllemoriei dcrl CCPROfrfi

altre come la 24\C64SC che dispongono di 64 K bits


con rn tcmno di srrittrypS di 5 ms e 400 KHz. Entrambi
i modelli supportano '1.000.000 di cicli di
scrittu ralca nce latu ra. I

Della famiglia 93xxxx rlcordiamo il modello 93AA86,


DO/DI --^--;+- ul^ri 1É
LUI I Ul lo LovoLlto Khits rrn
I u r\urLr, uil temno di srrittura
LLr I rpv ur rLl di 5
CLK
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
c5
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

Collpoamcnh rlplle memnrie LIPROM 93r<xr


alle linee di l/a del microcontroller.

In queste famiglie è sufficiente riservare due o tre fili


ner realizzare l'interscambio d'informazioni con la
t2c
memoria EEPRON/. Questo aspetto e molto importante
quando si collega uno di questi dispositivi ad un micro-
ffii:
.ÉllSilllllEL Al
gzlrtrurffi
]ilffi, ^^
Az
controller con un numero limitato di linee di l/O, per G'*,.,
ampliare la sua memoria. ll trasferimento si realizza in I:
sprip spnrrpndo rrnn dei nrntnrnlli :hitrr:lj deil'indu-
'stria, come illustrato nella figura. * DIREZIONEsr*ah
Nella famiglia24xxxx predisposta per il bus l2C esi- : -7
stono dispositivi come la 24C00, che ha una capacita VDD

di soli 128 bits, raggruppati in bytes, con una ve'ocita


dr scrittura di 4 ms e una frequenza di 400 KHz, ed

Collegamenti di otto memorie


EEPROM 241C64 per ottenere una capacita di 51 2 K bits.

Gi'
sPl
frequenza, tensione di lavoro fra 2,5 e 5,5 VDC con
1 000.000 di cicli di scrittura/cancellazione.
In alcuni casi sono necessari grandr quantità di
EEPRON/, e per queste situazioni si possono configura-
re insiemi di dispositivi controllati in modo indipenden-
te da diverse linee di indirizzamento, che utilizzano gli
stessi l/O del microcontroller. Nella figura e mostrato un
Collegamenti della memoria circuito formato da otto memorie da 64 Kbits ognuna,
EEPROM 25xxxx per il bus SPl, ad un mtcrocontroller PIC
per ottenere un totale di 512 Kbits.

'i ;:, ;, r,':,,,.'',,',i,,1 ::,t:rr].: .,'.'rr.,.:::.,


P34 NilICROCONTROttER

Routine per colcolore


il numerb cosuole.
Ppr nntpr d:rp rrn'ìde,e delle immense nossihilità
vvJJr u di uti- Ogni volta che inìzia una partita, il Lingo Numerico
lizzo che hanno le memorie EEPRON/, presentiamo un genera un numero casuale di cinque cifre che deve
caso pratico. Abbiamo scelto un gioco sviluppato con essere temporaneamente memorizzato negli indi-
un PIC 1 6FB4 che controlla una tastiera e un vtdeo LCD. rizzi della EEPROM che vanno da 10H a 14H. Ogni
ll Lingo Numerico è un gioco nel quale bisogna cifra viene memorizzata con il suo codice ASCll, e
Ia routine fa uso del Timer 0. situato all'indirizzo
indovinare un numero di 5 cifre generato in modo
00H della EEPROM, e delle variabili DATO_A e
casuale dal gioco stesso. Con questo scopo, il micro-
DATO_B della memoria RAM"
controller comunica al giocatore, tramite l'LCD i digit
La formula oer calcolare il numero casuale uti-
che sono stati indovinati, e che occupano la posizione lizza il valore del Timer 0, che cambia continua-
corretta, e quelli che sono stati indovinati, ma che non mente, inoltre utrlizza un " numero base" che
occu0ano la oosizione corretta. dipende dal vaìore orecedentemente calcolato.
Esistono due livelli di difficoltà che si differenziano Questa formula è Ia seguente:
ner il temno tnf,rlp di rrri si disnonp npr indovinare il
Numero cssuqle = (Numero bose' I73 + 49 + Timer 0) %10
numero giusto. Se si indovina il numero prima che il
tempo sia scaduto, sul display LCD appare la scritta Di seguito riportiamo Ia routine corrispondente in
"HAl V|NTO", seguita dal punteggio, che equivale al cui sono presenti molti commenti.
numero dei secondi che mancano allo scadere del RAND dÍ EIADR ;Punlotore oll'indkizo del "numero hse" nello EEPROM

tempo massimo. movlw h'10


movwf fSR

r ît.
bí $Alus,s ;Selezioniomo il Bonro I
I f-------------- i.
bsf
_t_t_t_r
: I !"*--*-::;\
.!,,
M
ÍEDATA,RD Éomondo di leturo
*l*t&ta1
ro '1P "1f "lf :1 .-. f-ffi SIATUS,s ;Selezioniomo ilhnco 0

fo etfo clÉ ùtfo +t,. "ilFffi -:::Èi6i movf EEDAIA,W

movwf DAIO-A
=-r=T=T=Ta
pqpqpqFq
, l, t' ,!i-
,! f,orliomo il numero bore in DAIO-A

f*!o"P*P*.'. ,{:
I |
I
<'!.J'j
R_8UC movlw h'lf
TASIIERA MAIRICIALE 4X4
n*, f
J*--
I
subvrf FSR,\{ ,'Vedfichiqmo seà sbto kminob ilnumero

btfrc STAIUSF ;['hrminob?


golo l+lN ;5i

mov{w d'173'

movwf DAÍ0-B fork{iomo DATO-B on ilvolqe 173

R-À{U oddwf DAT0-A,W ;Sommo di DAIO-A con W

decfsz DAIO-8,F f,'sloio somrnob 173 Yolh DAIO-A?

goto R-MUI ;lS


oddh d'49' ;Si; Sommo 149 ol numero
Schcma elefrrtr o dell annltcaz,one. oddwf TMR0,W ;Sommo il volqe del Timer 0

movwf DAI0-A ;Si stobilisre il nuovo numero bose

ln ouesta annlicazione si utilizza la EEPROM molto R-DIG oddlw' d'10' ;5i sommo I 0 o W sino o che non genero riporlo

frenttentemente ad esemnio qerve npr memorizzare sia btfis SIAIUS,ÍC Suesto fo sì che il numero sio do 0 o 9

il nnme di ri:srr rn niocatore sia il nome del crrocaîore goto R_DIG

che ha preso piu punti, pero noi abbiamo pensato di oddhv h'39 ;5i converle in ASCII il numero

tiilizzarlz
u-rtLLut ru nor
pLr <rrirroro
rLr rv!.L ìn
I nnni
w9ril n:r+it: .a."îl^ movwf lNtr
PorLtLo ilil nrrma"^
;5i conhollo lo posizione oll'inlemo del numero
f tuItctu Ld)udtc
nanar2t^ el;l ninrn iid' t$Rl ;Si intremenh lo psizione del numero

Lo schema elettrico e molto semplice. Le B linee della


oolo R BUC
rl,
;)r npeE srno 0 J volle

;Scritluro del nuovo numero bose nello EIPR0M


Porta B supportano la tastiera matriciale 4 x 4, RB0-RB3 tlN movf DAI0 A,W
R ;5i coriro il nuovo numero bose in W
le frle e RB4-RB7 le colonne; inoltre queste linee servo- l,lovwf IEDAIA ;Porliomo il nuovo numero nello EEPR0M
no, in forma multiplexata, per trasferire informazioni al Coll GÎAI.E inrrm J',.r', r;nai'r"' oorllJn irp*ol.l
di<.nl:v ICD lremrtp i cr rni innrocqr DO-D7 RAO RA1 o flefurn

RA2 nestisrnrn ispnn,rli di controllo del LCD.


MICROCONTROtLER P35
Utilizzo e progrclmmclzione deller EEPROIiI

I m pa ri a m o ad uti tizzare
le EEPROM
computer e i sìstemi informatici attualmente uti- tutte le parti del progetto, quello che intendiamo fare è
lizzano le memorie come elemento base per mostrare pezzi dedicati a leggere e scrivere la EEPROM.
supportare le loro applicazioni. f importanza di Concentriamoci su queste parti.
questi dispositivi è enorme, e imparare il loro
utilizzo è fondamentale a tutti i livelli. Fino ad
ora abbiamo studiato la struttura e i registri che con-
trollano la memoria EEPROM del PlC16FB4. Si tratta di lllustreremo ora un progetto che ha una vasta applica-
fare un passo in piu, e imparare ad utilizzarla mediante zione negli stabilimenti, per gestire gli ingressi del per-
i programmi adeguati. sonale. Lo svilupperemo sopra un potente ed economr-
Anche se la programmazione del PIC e ancora in co sistema di sviluppo chiamato "Micro'PlC Trainer",
fase di apprendimento, dato che abbiamo solo iniziato che è stato progettato e commercializzalo dalla ditta di
ad utilizzare le istruzioni principali del microcontroller, lngegneria di Microsistemas Programados S.L.
crediamo che sia di notevole aiuto, una volta studrato a Un sistema di sviluppo è uno strumento fondamen-
fondo un dispositivo, provare ad assimilare le routines tale per la realizzazione di progetti, che in questo caso è
che lo devono governare. Non importa se non capiremo stato dedicato ai microcontroller PIC della qamma

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 I
l:;:

tuffi4lwffidw#
Utilizzo e progrdmnrcrzione dello EEPROll,t
$

deila nacchina. Con questa


finalira sr imnrpo: la'rremo-
ria EEPROM del PIC 16F84,
che memonzza l'ultimo
n u me'o visu a liz,,a ro, in
modo che in caso di man-
canza di al,mentazione, per-
merto ut
tttc{Lq eli rinrandere
rPtcttuctc î^..^++1
LUrrrrrc-

mpnlp il rnnlpnnin con:l


ritnrno dell'enerai: Come
nllnîn di n)rton7) roncida-
PUrrtv ur vq LErrzq !vr Jiug-
ri:mn
rrurrrv rho
Lr rr, nrr:ndn <i
Jr ilinizi: l:
ll4lo lo
vuurruv
^.i--,,^l+-vorLd, l-
p|md ----l^,, na Inl-
td mdccn
zi: il rnntennìn d: O

N r^l - -^^,
t\cilo ,^^_- ucl
)cquErrzo r^rle iStrUZiO_
Fotografia del sistema di sviluppo Micro'PlC Trainer. ni, prima di iniziare rl pro-
gramma prìncipale, esistono
media. Sostanzialmente è formato da tre elementi: una serie di blocchi e di soubroutines che descriviamo
1) uno scrittore/cancellatore di programma del PlC, dr seguito:
2) un insieme di periferiche utilizzate nelle applicazioni
con microcontroller, 3) circuiteria ausilraria che com- 1o. Intestazione
nrondp :limpnt:tnrc rircuito di Reset e crìstalìn di nrrar- lnrlr
ilrLruuLrflo lo
rL dirottirio
uilLLLrvL 661 l'-..^-hlar
llUlEf, l:lo lihrari:
llUlEllo doi
uLr ranictri
rLyrJLl
vrL I rvL VLr lO))Cl I

zo. La scheda Micro'PlC Trainer e collegata alla porta interni del PIC e le relazioni delle etichette utilizzate.
parallela del PC e si controlla facilmente dal computer
con il software che la correda. 2o. Subroutine EE_Write
Data l'efficacia e le possibilità che off re questo stru- È una ruotine incaricata d scrivere un byte caricato ini-
mento, dedicheremo più avanti una sezione completa zialmente nel registro EEDATA nella posizione ountata
npr dpscriverne le caratteristiche e l'utilizzo. da EEADR

3o. Subroutine EE_Read


Si vuole emulare il funzionamento delle note macchine I eooe il dato ountato dal contenuto di EEADR e lo
"ELIN/INACODE" che sono usate in molti esercizi com- deposita in EEDATA.
merciali per ordinare le file dei clienti. Nel nostro caso,
come video informativo utilizzeremo un display a sette 4". Tabella di decodifica Tabella
segmenti. Sarebbe stato meglio ulilizzare il display È una ruotine che converte il codice BCD, presente sui
LCD, di cui dispone anche il Micro'PlC Trainer, pero 4 bits meno significativi del registro W, nel codìce adat-
data la sua complessita, ne parleremo più avanti. Sopra to per essere visualizzato sul dispìay a sette segmenti.
il display sara mostrato il numero corrispondente al
turno attuale. 5o. Subroutine di ritardo Delay_20_ms
LL:--^ d- ul)Pu)lzrvr
'J:-^^-i-inne
HUUldlllu
^ lrnI nrrlsante
rE ur rhe
purJcr rLc Ll rq/ una volta Raslizza Utlq
I\EOlfZZq rrnr iomn^r'pzaztano
LEtttvwttLLoLlvllE rli 4v
ul 7O m<
lll) 56p
Pql
nliminrrn
EllllìllldlE

premuto, incrementa iì turno e prepara al seguente. l'effetto di rimbaìzo tipico dei componenti elettromec-
Questo pulsante chiamato RAO e collegato alla linea 0 canici, come il pulsante RAO.
della porta A.
In questa applicazione dovremo risolvere il proble- 6o. Programma principale
mà .hp qnrflp npl rasn 6j; Una mancanZa momentanea ln questo programma si gestiscono i blocchi precedenti
di energia elettrica, o allo scollegamento involontario per risoìvere l'applicazione.
list p=lóF84 ;Tipo di processore
lntlude "Plóf84.lNC', ;librerh con definizioni dei regiski inlerni

Conhtore 0x0c ;Definisce lo voriobile conlqlore

org 0x00 ;Vector Reset


gob inizio
or9 0x05 Solto per solvore il veffore di inlenupf

;EE-WRITE: E uno routine che scrive un byle nello memorio EEPROM. lindirizzo sqrù contenuto nel registso
;EEADR e il doto è stotro precedentemente introdotto in EEDAIA

EE Write bs{ sTAruS,RPO ;Seleziono il boncol


bs{ EECONI,WREN ;Permesso di scri*uro nello EEPROM
movlw b'0l0t0t0l'
mowvf EECON2
movlw b't0!0l0l0l'
movwf EECON2 ;Sequenzo di sicurezzo, si coriro 55 e oo in EECON2
bsf EfcoNl,wR ;Ordine di inizio dello scritluro
kf EECONI,WREN /mpedisce nuove scritlure
Woit btfss EECONI,EEF ;Testo il flog per vedere se lo scrifuro è terminoh
golo Woit ;Lo scrilfurq non è lerminolo
kf IECONI,EEIF ;Lo scrilfuro è lerminoh e si resetto il flog
bcf STATUS,RPO ;selezione del bonco 0
relurn

;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 bt STATUS,RPO ;Seleziono il boncol


bsf EECONI,RD ;Ordine di lefiuro
bcf STATUS,RPO ;Selezione del bonco 0
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.

Tobello oddwf PCt F ;Disposizione sullo tobello in bose ol PCI e W


redw b'00llltit' ;Digit 0
refiw b'000001 l0' ;Digit I
reilw yor0r r0r I ;Digit 2
reilw b'0t00t I I I' ;Digit 3
reilw b'01 I00l l0' ;Digit 4
retlw b'01 l0l t0t' ;Digit 5
retlw b'0lllll0t' ;Digii ó
retlw b'000001 I I' ;Digit 7
retlw b'olillilt' ;Digit I
retlw b'0t l00t I I' ;Digit 9

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.000
microsecondi otterremo un lempo equivolenle q 20 ms. Se sceqliomb il volore di 128 per il divisore di frequen-
zo, il TMRO dovrà contqre l5ó impulii che equivolgono o Ox9cin esodecimole, e dolo èhe il TMRO è oscendente,
dovrò essere coricoto con il suo complemento o l, cioè 0xó3 in esodecimole.

Deloy_20-ms bcf INTCON,TOIT ;Metle o zero il flog di overflow del TMRO


movlw 0xó3 ;Complemenlo o I di 15ó {0x9d
movwf TMRO ;Corico il IMR0
Deloy-20_ms_l clrwdt ;Refresh delWokhdog
btfss INTCON,TOIF ;Verifico se il TMRO ho finito
goto Deloy_20_ms_l ;Non ho finilo
bcf IMCON,TOIF ;|l TMR0 ho finito, si reseth il flog
return Jnizio del progrommo principole
lnizio chf PORTB ;Concello il lotch di uscito dello Porto B
bsf STATUS,RPO ;Accesso ol bonco I
clrf TRISB ;Configuro lo Porto B come uscito
movlw b'0001 1
'il 1'
movwf TRISA ;Configuro lo Porto A come ingresso
movlw b'000001 t0'
,|28
movwf OPTION-REG /mposto il divisore di frequenzo del TMR0 o
bcf STATUS,RPO ;Seleziono il bonco 0
chf EEADR ;Corico l'indirizzo 00 in EEADR
coll EE_Reod ;Legge il byte dello EEPROM
movlw 0x09
sub# EEDATA,W i
btfsc STATUS,C ;E moggiore di 9?
golo Ini_0 ;E moggiore di 9 e si pone o 0 il contolore
goto lni_l ;Non è moggiore di 9
Ini_0 clrf Contotore ;Metle o zero il conlotore
golo !oop
Ini_l movf EEDATA,W ;
movwf Contolore ;lniziolizzo il contotore
Loop movf Contolore,W
coll Tobello ;€onverte il contotore in codice o 7 segmenti
movwf PORTB ;Visuolizzo sul disploy
Woil_O clrwdt ;Refresh del Wotchdog
btfss PORTA,O ;RAO= l?
goto Woit_O ;Nonèo l,ofiendere
coll Deoly_20_ms ;Temporizzozione per eliminore il rimbolzo
Woil I clrwdt ;Refresh del Wotchdog
btfss PORTA,O ;RA0 = 0?
goto Woit_l ;Nonèo0,ottendere
coll Deoly-20_ms ;Eliminore il rimbolzo. C'è stoto un impulso

incf Conlolore,F Jncremento il conhlore


movlw ,10
sub# Conhtore,W ;
btfsc sTAÎU5,2 ;ll contotore è moggiore di 9?
clrf Contofore ;5i è moggiore di 9. 5i pone o 00
movf Contotore,W
mowvf EEDATA ;
coll EE_Write ;Memorizzo il nuovo volore del conlotore nello EEPROM
golo Loop
end ;Fine del progrommo
Rlpasso

Le risorse ausiliarie

I PIC
1 6F84 ha il soprannome di "f ratello nostro m icrocontroller che funzìona come cervello di
povero" della famiglia. Ha poco di tutto, ma Monty. Queste risorse sono:
nonostante questo, e molto piu utilizzato
dei suoi fratelli, che hanno più risorse. Ha
avuto grande successo e la spiegazione arri-
{POR), per attivazione del piedino MCIR # e per overflow del WDT.
va dalla sua semplicità, economia e media delle
ca ratteristiche.
Prima di passare a studiare gli interrupt, così vitali
nelle applicazroni del mondo industrrale, abbiamo con- 38 La parola di configurazione.

siderato molto interessante fare un piccolo ripasso delle


risorse ausiliarie e comolementari che circondano il

ll Reset inizializza il sistema, e


il processore inizia ad eseguire
+Voo
il programma dalla prima
istruzione, partendo da uno
stato 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 pIma
volta.
3". Quando il programma
sre "piantato" e voglia-
mo che ricominci dal prin-
c rp ro.
4". Quando trascorre un certo
tempo in stato di riposo.

I L'applicazione deì livello logi-


- co basso al piedino 4 del PIC
genera un Reset. ll circuito più
<omnliro
JLr I rPilLL rho
Lr normotto
rL PLr ì: c":
I r rL LLg lo )uo

attuazione è mostrato nella


Circuito base per generare un Reset premendo un pulsante
figura.

îlt1#.|||24;waa.aa/ataaaaiait.aaa
REGISTRO DI STATO

IRP RPI RPO TO# PD#


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# PD#


u: Non combiq

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ì :,', ,,. ,

in stato di "riposo", oppure stia funzionando in ln questo caso la reitiztalizzazione del processore si pro-
modo normale, quindi eseguendo delle istruzioni. Nel duce quando si collega per la prima volta l'alimentazio-
primo caso il bit PD# del registro dì Stato si pone a 0 ne. E chiamato Reset per POR (Power On Reset).
eil bitTO#a1 Questo Reset è generato con un leggero ritardo
Quando l'attivazione del l'MCLR# si origina col pro- I rrvL LLv :l momentn doll'ennlir:zinnp doll'alimenla-
risnptln
cessore funzionante in modo normale i tre bit meno zione, con il f ine di permettere che la tensione dell'a-
significativi del registro di Stato passano a 0 e i rìmanen- limentazione stessa sì stabilizzi al suo valore nomina-
ti non cambiano, così come è rappresentato nella figura le. È un ritardo di 72 ms qenerato dal temporizzatore

REGISTRO DI STATO

IRP RPI RPO TO# PD# DC

x: Indeterminoto

ir"", ,,n, ì*,r'ior," o r' 0,",

.aa-.t*ffi |ffial*,ia1tt:aLttiltlltLa
PWRT (Power-up Timer) Inoltre con l'obiettivo di processore f unziona normalmente o quando si trova in
/,.+.^/.Jt\!,t'
ottenere la slabilizzazione della frequenza del funzio- 5Ldruuy , ;^ .+-t^ ur
IrsLdL(J ^1,,Iposo.
namento del sistema, si aggiunge un altro ritardo di ll bit TO# del registro di Stato va a 0 quando il
1.024 impulsi del segnale applicato in OSCl. Lo pro- Respt e stato nrovocato dall'overflow del WDT. Nelle
duce il temporizzatore OST (Oscillator Start-up Timer). figure annesse possiamo apprezzare la differenza dei
Cosi quando si inizia l'esecuzione delle istruzioni, la valori che prendono i bit del registro di Stato, in
f requenza di lavoro e stabile. Come si vede nella figu- accordo con lo stato del processore quando il WDT va
ra, dopo che si e prodotto questo tipo di Reset, ibit in overflow.
PD# e TO# restano disattivati, sarebbe a dire a 1, nel
registro di Stato.
Molte volte r sistemi basati su microcontroller devono
.l , ,. :: .,:, l:: , ri. l',,; . rimanere inattivi per molto tempo, aspettando che
Come ricorderemo il Watchdog (WDT) è un contatore \-.luolLullu ---;- r-,,^.Àre
^,,-r-,,^^ rill floLLlo lovvrorL. c)|es,tn
vuL)rv L r:so \delle mac_
e ilil Lqrv
che si incrementa al ritmo della frequenza dell'oscrllato- chine distributricidi prodotti vari come caffe, bibite,
re principale, e quando va in overflow origrna un Reset. srgarette, ecc. Durante lunghi perrodi di tempo queste
ll WDT viene caricato con un valore, ed entra ìn funzio- macchine non fanno nulla, fino a quando un cliente sì

ne all'inizio del programma. Prima che vada in over- avvicina, introduce una moneta e chiede qualcosa. Con
flow, lo si deve resettare mettendolo a 0. Se il flusso di lo scopo di ridurre al minrmo il consumo di energia, si
controllo entra in un ciclo infinito, o rimane in attesa di induce il microcontroller ad un sonno profondo, nel
un segnale che non riceve, il Reset del WDT non arriva rludrc rd -"-
^"^r^ r- )ud d-++;"r+r À
LUVTLd ( 'idotta notevolmente. ll PIC che è
|

in tempo e l'overflow reinizzializza il processore. in questo stato di riposo o di basso consumo, si suole
lloverflow del Watchdog si puo originare quando il dire che sta dormendo

REGISTRO DI STATO

IRP RPI RPO TO# PD# DC c


u: Non combio

,otrl', ,, ruì* reg s;tro di stato i,r,uro:o *0,,

REGISTRO DI STATO

IRP RPI RPO TO# PD# Z DC

u: Non cqmbio
:l
i

Registro di Stato dopo il debordamento del Watchdog quando il processore e in stato di "riposo".
PAROTA DI CONFIGURAZIONE

Struttura interna della parola di configurazione.

Per produrre questo stato di relax, basta eseguire ì'i- zioni del programma non possono essere lette, al
'1
struzione SLEEP Pertanto si ottiene che l'oscillatore contrario. se CP è il programma memorizzato nella
principale e le linee di l/O si congelano mantenendo il FLASH si puo leggere. Con i due bit meno significa-
<rr^ (f:tn nrororlonto tivi, FOSC0 e FOSC 1 , si determìna il tipo di oscillato-
Per togliere il processore dallo stato di riposo esisto- re che ulilizza il processore, secondo la seguente
no due alternative: attivare esternamente il piedino cod if rca:
MCLR#, o fare in modo che il Watchdog vada in over-
flow, se è rimasto attivo quando si entra nello stato di
riposo, visto che non si eseguono istruzioni e non rice-
RC
ve refresh. Un'altra possibilita per togliere il processore 1 I

dallo stato di riposo, consiste nell'annullare l'alimenta-


zione per ricollegarla nuovamente, producendo un
Reset POR. 0 XT

' r : ' ', ' '

La parola di configurazione occupa una posizione spe-


ciale della memoria di programma FLASH, la direzione ll bit WDTE abilita o disabilita il funzionamento del
2007 ll, icui '14 bit regolano le funzioni vitali del pro- Watchdog. 5e il WDTE è a 1, il Watchdog entra in
.pssore l'oroanizzazinno di nrrpstn indirizzo della f unzione. In ultimo il bit PWRTE# abilita il temporiz-
memoria è presentato nella figura. zalore PWRI che ritarda di 12 ms il Reset per POR,
| 10 bit meno significativi, denominati tutti CP per dare il tempo alla tensione di alimentazione di
(Codrce di Protezione), sono incaricati di proteggere stabilizzarsi. Se PWRET# è a 0, lavora come tempo-
l'accesso alla memoria dei codici. Se CP è 0le rstru- rizzalore.

Sono quattro posizioni della memoria


PAROTA DI IDENTIFICAZIONE
FLASH che occupa n o induizzi compresi f ra

2000H la 2000 H e la 2003 H. Sono solo accessi-


bili in lettura e scrittura durante rl proces-
2001H so di memorizzaztone del programma.
2002H Dei '14 bit della parola di identificazione,
sono validi solo i 4 meno significativi, e rn
2003H essi, il programmatore puo scrivere codici

ro di identificazione, numeri di serie, dati


sulla fabbricazione, modelli, ecc. Nella
figura si possono notare i bit validi per
Nelle parole di identificazione sono validi solo i 4 bit meno srgnificativi
ogni posizìone.
P39

Che cos'è
un interrupt?
'-r't

una fermata del programma in


" f:<o
roJE fli
ur o<err lzinnnlc, nar ..1+.r^
LJLLU4lul Pcl )oltdlc
' '" "
,+ÉrA=É,i:i
a realtzzare una routrne spe-
;ft,
crale che riguarda la causa che
PROGRAMMA PRINCIPALE
ha prodotto l'interrupt. Una
vutLc LUt I tPtE tc Lq r-
:
,,^r+- -^*^r^+-+- ro rOutine dediCata

all'interrupt si rìtorna al punto di par-


tenza del programma principale. Si puo
dire che l'interrupt ha le stesse conse- CALL SUBROUTI
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 puo
vodoro nr:fir:monto il componameîro

della chiamata a subroutine.


Operatività di una chiamata a subroutine
l'imnieoo delle srrbroutine evita di
ripetere nei programmi alcuni procedi-
i:!i
menti di uso frequente. Invece di ripe-
terli tante volte quanto serve, si scrivo-
no una volta sola in forma di subrouti- PROGRAMMA PRINCIPALE
I tc, d Lur,i .i)r dLLcuc
^--^^^ î++rî,,^,-^
oLU ovcr)u
,,^- -A:-
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-
ROUTINE DI INTERRUPT
ni del programma principale, di forma
sincrona. 5i sa quando viene prodotta
norrhp psnliritampntp invocata con l'i-
struzione CALL. RETURN

Un rnterrupt è una rottura "asincro-


na" del flusso di controllo. Non si sa
quando avviene perche le cause dell'o-
Un interrupt è un awenimento asincrono che si produce in modo imprevedibile.
rigine sono dovute a circostanze non

'?;i:{:1:1r1 ,t"l
previste nelle istruzioni del pro-
gramma. Ad esempio, una PROGRAMMA PRINCIPATE
causa che provoca un Interrupt
:l nrnressnre e l'ettivazione
mediante un livello logico alto,
di un piedino del microcon-
troller.
Orrpstn
YULJLV
livplln altn ootrebbe
essere prodotto da un compa- RILEVATORE DESTRO f_
RUT SX
ratore, che riceve come ingres-
so il segnale analogico di un 1
i
sensore di temperatura; il vaio- RUT DX :

"^ ...l^l
RETURN i
tc uct .^^^-l^
)c9trdrE h-
Id .,,^^"-+^
)uPcrdru l-
rd

tersione di riferimento, perche


la temperatura a sua volta ha RETURN
superato la soglia prefissata. ll
valore della temperatura varia
in modo imprevedibile A seconda dell'antenna che ha rtlevato l'ostacolo si produce un interrupt differente,
con le corrispondenti strategie.

Prendiamo ad esempio il microrobot a sei gambe


Gli interrupt costituiscono il procedimento più rapido che cammina, mostrato nella figura, con una coppia di
ed efficace del microcontroller per il trattamento degl antenne frontali che funzionano come sensori e che
eventi del mondo esterno rilevano gli ostacoli sulla traiettoria.
Se oualche oarametro o circostanza ha influenza ll microrobot a sei gambe e controllato da un micro-
sullo sviluppo del programma, l'rnterrupt è il mezzo con rnnirnllor rho o<on1o Jn 1n programma
nrnnr:mm: pflnclpàte, inr:ri
nrinrin>la ilìLd|-
cui il microcontroller lo qestisce immediatamente. La cato del movimento degli arti meccanici, per seguire
parte di programma dedicata alla gestione di questo una trarettona.
evento si chiama "routine di interrupt" Se ad un certo punto del cammino, l'antenna di
sinistra tocca un ostacolo,
viene aoolicato un livello logi-
rn :lin OU
LU OtLV :À rrnn
UItV Àai
UEt niorlini nlol
PtEUil il Ugl
microcontroller, e viene gene-
. rato un interrupt.
A quel punto viene abban-
donato il programma princi-
^-r^ -; --r+- -!
PO|E, s^ Jr )Orrq ou Una fOUtine
, che si chiama RUT_SX, che
contiene una procedura per
raaltzz=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 livello
looico sarebl-re stato applica-
to ad un altro piedino, e
--"^l-.L.^
)dtcuuc a+-+r
)tdLd l-n:i -+- l-
tdilLtdLd td .^,,
tuu-
tine RUT DX con un'altra
L? antenn:, o flli, front3li microrobot, funzionano come sensori per la rilevazione degli ostacolr
lel strategia per aggirare l,osta_

' -,':
colo sul lato destro, come si può vedere nella figura. In dalla subroutine, o dalla routine di interrupt, come
questo esempio si producono due interrupt differenti, espresso graficamente nella figura.
perché ogni antenna del microrobot fa riferimento ad Lo Stack è il luogo dove si depositano tempo-
un piedino diverso del microcontroller, questo permette ralmente gli indirizzi di ritorno al programma prin-
i salti a due routine distinte. c ipa le.

,;,1''it 1" ,:,1i ',.;''' ''.n'i,ir,,i;


,

Per rendere possrbile il corretto funzionamento degli


interrupt, è imprescindibile l'utilizzo dello Stack. Come
ricorderete, è 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 tl,
t

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 )r
Ituuu duLUrroLrLU,9ucruv ci sJE9uE r rn' j5{pg7 jgpg
oconr ro 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 LIFO

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.
Lo Stack ha una struttura LIFO. , N/olti Stack con un numero di livelli limitato, dispon-
L'ultimo dato cartcato nel livello 1 sarà il primo che uscira
' 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


:I!O ilTICROCONÍROLIER
Gonceffi e opernlivitù degli interrupl
ììììirìl\iqs:wilgf rlslùiiiMtrilì:sì*úessiiÌÌùiìiwr*ir;

questa risorsa non e disponibile nel PIC 16F84, resta


quindi responsabilità del programmatore vigilare su
nr ro<tn f:ttn 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
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,

TABELLA DEI VECTOR


DI INTERRUPT
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.
imnlir: rhe l'inizin dol nrnnr:n
Orro<tn ,,,,r,,__ r,_y,_,,lma pfln_
cipale avvenga all'indirizzo 0000H, e che quattro
rndirizzi dopo, inizi la routine dedicata all'inter-
ru pt.
il programma principale "coprirebbe"
E chiaro che
le istruzioni della routine di interrupt, per evitare que-
sto si colloca in entrambi i vettori un'istruzione di salto
incondizionato 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 salto Tabella con 256 vettori differenti
all'indirizzo 0005H, salvando ìl Vector di interrupt. di interrupt, propna di alcuni processor; di INTEL.

Normalmente i'inizio di un programma per il PIC è fatto


come rl seguente: 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 routine
dedicate ad essi iniziano in modo uguale per tutti.
goto inizio; All'indirizzo 0 c'è un'isfuzione di salto a "inizio"
La prima cosa da fare sarà verificare quale sia stata
l: r:tt<: doll'intorrr rnt nar derri:ro il flrrccn nli
_, program-
ma alla routine dedicata a quella determinata causa;
tntzt0 bsf 5TATU5,5; Prima istruzione del programma per questo ogni diversa causa di interrupt dispone di
principale rrn fl:n dodir:fn

iu!u1aìììììììììììììììììtùltrtuìtaiuiu:nt!t
Utilità delf interrupt

.i,'ll'T ._- ossiamo montare su Monty un finecorsa zare di qualche centimetro, girare nuovamente di 90" e
. -. continuare il suo percorso.
ostacoli sul suo cammino, come si puo vede- ll tempo che deve trascorrere fra l'attivazione del
fi re dalla figura. Uideale sarebbe che quando sensore e l'esecuzione del programma specializzato
il sensore chiude i suoi contatti, il processo- nella manovra anti-ostacolo, deve essere minimo. La
re abbandoni il programma principale in esecuzione per cosa migliore è utilizzare un interrupt, per questo è
entrare in una routine specralizzata, che ad esempio lo necessario progettare un circuito per fare in modo che
faccia retrocedere di un centimetro, girare di 90', avan- subito dopo che ilcontatto difinecorsa siè chiuso, arri-

,.:*Í:!211Hi$i*1]*i$llliiì"lfill;;a,

ffi

" ::: i ;:;::.: .,:. :, : :.,:: ì

ll finecorsa anteriore serve per rilevare qli ostacoli


':
" l
*._.,,r,

t
, ''
'

euando si chiude I'interruttore di finecorsa, si genera un fronte di discesa che si appltca al piedino INT e causa un tnterrupt

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
2o) Nel PC viene caricato il valore del Vector di intenupt che è all'indirizzo
fìgura.
00M H, dove inizia la routine dedicata all'interrupt.
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- 4o)[a routine dedicata all'interrupt inizia tealizzando due compiti
importanti:
le, un'attenzione non immediata alla situazione visto
a) lndaga sulla causa che ha generato l'interrupt, e per fare questo
che la CPU nel programma principale realizza anche controlla i flags
altri compiti oltre all'ispezione della linea di ingresso b) Scrive nella memoria dei dati RAM, area GPR i valori di alcuni
che fa riferimento al sensore. reqistri del processore, con i valori relativi al programma principale.
Nel caso in i:ui questi registri fossero utilizzati dalla routine di inter-
Uinterrupt è il metodo più sicuro, rapido ed effica- rupt, i loro contenuti subirebbero delle modifiche, e al momento di
ce, per reagire agli eventi esterni che influenzano l'ela- toinare al programma principale non si disponebbe più delle stesse
informazioni di quando lo si era lasciato.
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:
lnlerrupt

r overflow iltemporizzatore TMR0. tlsuo contenuto pasu


il.rîr;:itr,î
PC+-UVELLO I TSTACK)

PC <- O4 (Vertor Reser)


4a. Quando termina il ciclo di scrittura di un bpe in un indirizzo deÌla
memoria EEPROM dei dati.

ROUTINE DI INTERRUPT
le Indogo sullo cquso Una delle difficolta intziali che presentano queste
2e Sqlvo i vqlori dei registri
3e Risolve lo cquso
frrnzinni ò rho y--,-,
nrr:lrrn^"^ "i. l.ta causa
ìque std --".- cne
-L^ l^na oflgtna-
to l'interrupt, la routine dedicata inizia sempre all'indi-
rizzo del Vector dr interrupt che è lo 0004 H. Altri pro-
cessori dispongono di un Vector di interrupt per ognl
RETF;E causa che li produce, con il PIC 16F84 non c'è altra
PC-<-UVELLO| (STACK)
soluzione che inrziare indagando quale sia stata la
causa dell'interrupt, testando i flags corrispondenti, e
indirizzando il processore alla routine corretta.
FINE
i i .l tl''i : : í t;i i' ; :,.'i i'1 1..1 i:, 1. :,'i. irj i i:.i:i'il:,X, i í: t:'

A volte molti programmi non necessitano di interrupt,


i,,,,,.,,..",..,,.,.... ".,..".,..,..",..".",..,,..,,i e quindi non li usano.
Organigramma del trattamento di un interrupt nel PlCl 6F84. Per oresto mnf ivn deve esistere Una Chiavp ncnpr;-
le che permetta o proibisca gli interrupt nel loro insie-
me.
l. ii.j:i,ir í::! j. :.:i'; Í I i;:iii,r ì.r :i Nel PIC 16F84, esiste un registro di controllo dell'a-
Ci sono quattro cause che possono generare un inter- rea SFR della RAM, chiamato INTCON, che regola il
rupt nel PlC16F84; funzionamento degli interrupt. ll bit più significativo di

:J:

INTCON

t-,".-"--"----.-"="-
"i
ll 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è


tazione, che deve essere attivato se si desidera che al
.-l-
Inlerrupf
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.
p€+_ STACK Nella figura possiamo osservare che quando si
GIE=0 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-
PC= 0004
cano altri nuovì.
{Vecfor di inferrupt)
Compìetata la routine dt interrupt ed eseguita
l'ultima istruzione RETFIE, che è quella di ritorno al
Rouline di servizio programma principale, iì bit GIE riprende il vaìore 1,
dell'interrupt (RSI)
iu
dato che ritornando al prìncipale, bisogna fare in
modo che gli interrupt possano nuovamente essere
5i memorizzo i accettatt.
registri do modificqre

5i determino lq csuso
dell'inlerrupt

Solto ollo routine di


servizio corrispondente

Si recuperono i vqlori
dei registri memorizzqti

5i cqncellq
Siconcello ilflog ilflog
di inierrupt di interrupt

Ritorno (RETFIE)
PC+ STACK
Gie= I ir
.i
=
il
Organigramma dello sviluppo
dr un interrupt tenln!1 co,nt1 dell funzion.e di GIE_

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


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 ll piedino RB0/lNT puo generare un interrupt quando
glì avvenimenti che succedono nel mondo ad esso viene aoolicato un fronte di salita o di discesa.
esterno. Un f ronte di salita consiste nella transazione di tensio-
Orrpctn
YvLJ(v
intprrr rnt c sunnortato dal
nipdinO 6 del ne dal basso verso l'alto, mentre un fronte di discesa e
microcontrolìer, e si chiama RBO/INT. Si tratta dr un pie- la transazione inversa.
Per selezionare il tipo di f ronte, il
PIC'16F84 dispone del bit INTDEG,
INTCO N situato nel registro OPTION, che
I'inriirizza R1 h del banco 1.
vLL u vu
^(^.ttrlA
Quando INTDEG = 1 il fronte attivo
sarà quello di salita, mentre quando
INTDEG = 0 il fronte attivo sarà quel-
lo di discesa, come indicato nella
fig u ra.
Per fare in modo che il piedino RB)/INT Lo schema elettrrco riportato nella
supporti richieste di interrupt esterni, i bit GIE e INTE devono valere 1
figura della pagina seguente, corri-
sponde ad un generatore di fronti per
dino multifunzione, che puo essere utilizzato in due attivare il piedìno RB0/lNT.
modi differenti. In primo luogo puo funzionare come Ulilizza due porte invertenti 74L504 che, grazie al
linea di ingresso/uscita digitale (RBO), nel qual caso si particolare collegamento, costituiscono un filtro anti-
comporterà come ingresso se nel bit O del registro di rimbalzo per il pulsante del circuito. La rete R-C con-
configurazione TRISB avremo caricato un 1, mentre trolla la durata dell'impulso che contiene i due tipi di
sara un'uscita se nel suddetto bit avremo scritto uno 0. f ronti.
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- OPTION
na di intprrr rnt dpvp pssere abilitato
per questo lavoro, per questo scopo
è necessarìo mettere a 1 il bit di
Permesso Globale di lnterrupt, GlE. t
at
7 0
Inoltre bisogna abilitare anche il per-
messo particolare di questo inter-
I \-'|
.
rr rnt mettendo
'-F', "
a 1 il bit INTE.
Sia GIE che INTE si trovano nel
INTDEG= INTDEG= 0_-!l-
registro INTCON che occupa l'indi-
rizzo 0B H del banco 0 e il correlati-
vo del banco 1, come illustrato nella
ll bit INTDEG del registro OPTION determina il fronte attivo sul pin RB)/INT.
figura.
'.1 ,.: :

p 43

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 INTF
ESIERNI INTE
Voo--+5VD€

INTERRUPT
rok

I N4r48

PUI.SANTE
Logica di controllo corrispondente al circuito
DI RESET

I
di generazione degli interrupt esterni.
4
I Dentro la ruotine di interrupt e prima di
ritornare al programma principale, il pro-
grammatore deve necessariamente riportare
Circuito che genera l'impulso di una durata determinata, per provocare il flag INTF = 0, altrimenti subito dopo l'i-
interrupt in modo ciclico.
struzione di ritorno RETFIE, torneremo a

Onni vnlfa rhp ci nenera Un fronte attivo Jvrsrrl nin


vrr I

RBO/INT programmato per ricevere interrupt, e questo


bcf OPT|0N, intdeg INTDEG = 0, fronte di discesa

yiono
vr!rrL nonor:tn fl:^ inrrrir:in
lllLollLoLv Ài
ul cannrllyp
VLrrLruLv, rrn
urrrruV )EVIlOlols n1o(t:
Vuq)Lo
situazione si oone automaticamente a 1 .
Si tratta del flag INTF del registro INTCON come
mostrato nella figura.
bd |NTCON, gie ;GlÈ = 1, Permesso Globale di Interrupt

Da quanto esposto sinora deduciamo che per fare


in 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
bcf |NTCON, intf ;INTF = 0. Ci assicuriamo che il flag sia a 0

INTCON SEGNAIATORE

7 4
ll bit INTF è un flag che viene messo automaticdmente a 1 quando si produce l'interrupt esterno
ripetere il processo di interrupt, quindi il flag INTF sarà
ancora a 1.

:,,l;:.,.,,,, i .t,:,;r",rt.l.',t I

ll meccanismo di interrupt ricopre un aspetto vitale nei


sistemi di controllo industriali. L'interrupt è il metodo
più 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 della
tpmnor:trrra di rrn forno oltre ad una determinata
soglia, un sensore trasduce il parametro temperatura in
una grandezza elettrica proporzionale, convertendola ll processore INTEL
in una tensione capace di attivare uno dei piedini di dispone di uno straordinario meccanismo di interrupt.

interrupt che ha il microprocessore, awisandolo dell'e-


vento che si sta verrficando. lo 8085, che è stato commercializzato dal 1976 e anco-
La risposta della CPU e immediata: sospende l'ese- ra oggi è uno standard industriale.
cuzione delle ìstruzioni del programma in corso, salva in Dato che il fabbricante oriento l'8085 al settore dei
una zona della memoria chiamata STACK l'rndirizzo di sistemi industriali dedico un insieme di cinque piedini
abbandono del programma e carica nel PC un indirizzo per supportare le richieste di interrupt per I'hardware
determinato a cui salta per eseguire una routine che esterno. Questì piedinr sono:
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-
RST 7.5
rupt, potrebbe ridurre l'ingresso del combustibile al
forno rn modo che questo si raffreddi e la temperatura
torni a valori adeguati
Nel momento in cui si abbandona questa routine, si R5T5.5
ricarica I'indirizzo di ritorno dallo STACK, e si torna ad
eseguire le istruzioni del programma principale dal
nrrntn in rrri lo si e :hbandOnatO
|Ld- ,.^.- i-^^.+-^-r
vEto riltvwt torr4o dpnli inip"rrrnt
uE9il ilitE ri<,iede nella lOfO
ruPL rr)rquc Alcuni dei piedini di interrupt dell'8085 si attivano
.-^;,1 . -^-,,^;-.-i^^^ ,.li
'dp,ud LUlllul llLdzlul lc ui ^,,.1. ..i .^^--li. +'.,-. ^.+^" - mediante ifrontie altri con livelli. Inoltre ognuno ha un
9udl)rd)l ol iul lldllc l)lLo E)tq
na che succede nel mondo reale al processore, in modo propr,o grado di prio.ta. la orio'ita oiu ai[a e del TRAP
che ouesto oassr al loro trattamento. La rilevazione di a cui seg.rono, in ordine decresce.îe, la RST 7 5, RS'
qualsiasi anomalia quando sr usa un interrupt, provoca 6.5, RST 5.5 e INTR.
ii trattamento immediato delJ'anomalia stessa, medran- Questr interrupt si classificano in due gruppi
ie 'esecuzione d ;r'a rout ne preposta peryisolvere la mascherabilì e non mascherabili. Quelli che sono
srtuaztone. 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
INTEL, rl pion,ere dei rrrc'oprocessori e fabbricante dei a zero.
Pantirrm rho onrrin:nni:nn i nn<trr nor<nn:l anmnrtAr Questa caratteristica permette al programmatore,
ha implementato in essi un meccanismo di trattamento scrivendo e cancellando questo bit, di accettare o igno-
degli interrupt eccezionale, la cui flessibìlità e varietà lr rare l'interrupt in parti vitali del programma.
rendono i oiù ootenti del mercato. Gli interrupt dell'8085 sono vettorializzati, il che
INTEL fabbrica anche microprocessori che gestisco- suppone che quando sono accettati ognuno carichi sul
no dati a otto bit. così come il PlC. Si tratta del model- PC un indirizzo specifico della memorìa, origrnando un
servizio della fonte di alimentazione alternativa o delle
:rz batterre di sicurezza.
^ - oi*
>^

à;l# X E ú e6 N-
'-:
A c J JIw ú
>fIUlccYoÌCil<;<<<dd
^ -lolq t ^ - <{d < RST 7.5
ooÉ^€ó{ó*-ooóA€ol4ò- ll piedino che attiva questo interrupt è sensibile al f ron-
nóófió-nróqn&1À&^NÀNtu
I te e gli corrisponde un vector il cui indirizzo e 3C H. È

Y'
un interrupt mascherabile, che puo essere ignorato
etó€s9À@ o*N-tooÀ€oo quando il bit di maschera situato in un registro di con-
LJ U LI L' U U U IJ U UU U U U U U U U U U
RF trollo e messo a zero. Ha una priorità inferiore a quella
x- x :) O O d ú o ú dt< O - N ó e 6 6 È o
O; { o o *l> ó O ó ó ó O O O -o
O 6 -'c( -- > p ZIZ del TRAP
664-'

RST 5.5 e RST 5.5


Entrambi i piedini si attivano quando viene applicato
Diagramma dei piedini dell'8085 un livello logico alto, che deve essere mantenuto fino a
i che la CPU non lo accetta. La loro priorità e inferiore
salto del flusso di controllo a quella oosizione dove si alla RST 7.5 e i vector che hanno assegnatr sono al 34
suppone inizi la routine che riguarda detto interrupt. H e 2C H, rispettivamente.
Nell'8085 ogni piedino di interrupt dispone di un suo
i .: ,l 'l r: - - :-. :r
proprio induizzo vettorializzato, così si differenziano le
diverse cause che provocano gli interrupt e si assegna i1 Ì ir.r il f it i:.. í j l_+ ì, Íri

ad ognuna una routìne indipendente. INTEL, non soddisfatta dalle precedenti richieste di
Nel microcontroller PIC esiste solo un Vettore di Intérn rnt LrLL,,,qr
oqtorn: ,,=
no ,la
I introdotta una speciale, il cui
interrupt, che ha assegnato I'induizzo 4 della memoria meccanismo viene solo impiegato da questo fabbrican-
di codice, per tutte le cause di interrupt. Qualunque te, che permette di saltare fino ad otto routires diffe-
interrupt che si produca nel PlC16F84, fa sì che il PC renti con il solo piedino INTR.
passia puntare I'indirizzo 4 e ad eseguire il programma Inizialmente INTEL ha rntrodotto nel repertorio di
che inizia in questa posizione. Generalmente nell'indi- istruzioni la chiamata RESTAR n, il cui mnemonico e
lzzo 4 si usa mettere un "goto" all'induizzo vero di ini- RST n. Dato che n puo valere otto valori da 0 a 7, da
zio della routine di interrupt. orioino : otto rodiri ,^l; istruzioni corrispondenti a RST0,
Dato che le cause che provocano gli rnterrupt pos- 1,2,3,4,5,6 e 7, ognuno dei quali e composto dai
sono essere diverse, il loro trattamento deve essere snli otto hit Fspnrrprdn nrpctp ictrr rzioni ci nrodUce Un
fatto in modo individuale, per questo all'inizio della salto agli indirizzi n x B, ossia, alla 0, B, 16,32, ecc. Dal
routine di interrupt in un PIC inizia la verifica di cosa ha programma, e in forma sincrona, si puo saltare a que-
originato l'evento in modo da poter scegliere la routine sti indirizzi di memorra, in ognuno dei quali si puo dare
corrispondente. inizio ad una routine differente.
INTR è il piedino di richiesta di interrupt maschera-
{:i *. * i. {ìÌ H i: E * t+ g, ;s 5 t s: E J {+ *|,{ {.i I'd,.x l4 il hl "i i.l bile di priorita minima. Quando la CPU genera due cicli
ii *. + i"i i' +li:È: ft 5t È..{ PF *É'iF- H i'j f l,} ii L L $i*;Ìr i: del bus di lettura, iquali sono attrvati indicando il pie-
TRAP dino INTA (Riconoscimento di Interrupt). Nel secondo
Si tratta di un interrupt non mascherabile, quindi la CPU dei cicli, la CPU legge gli otto bit presenti nel bus dei
lo accetta sempre indipendentemente dallo stato del bit dati (DO-D7) e li interpreta come il codice dell'istruzio-
di maschera. A questo corrisponde un vector che indi- no (orr ronto
,L JLyuL, ,LL rho
!, ,L dovo
ucvc e Se
1
QUI[e .

rizza il f lusso di controllo alla posizione di memoria 24 Se il codice che introduce tramite il bus dei dati il
Hex. È sensibile sia sul fianco sia al livello. richiedente corrisponde con uno degli otto dell'istru-
F otiello di maocrior nriorira di ronsenrrpnza se arri- zione RST n, si produrrà un salto agli otto indirizzi pos-
vano diverse richieste di interrupt contemporaneamen- sibili ln x B).
te, il TRAP e il primo che vrere gestito Generalmente e Questo fa sì che il PC si carichi con uno degli otto
impiegato per far fronte a situazioni estreme, come la induizzi e inizi l'esecuzione della routine applicata a
mancanza di alimentazione. che 0ermette l'entrata in partire da esso.

à.;ii:,,{eÈÈ?:f=s=c?+;rtgEE+aet+È r**+eÈ:,t:,-rr,lr+;rii]4F +;!Ír;':'+"ii!fÈ::,


finterrupt per overflow
det TMRO
':' :.'i :,,::

' :,i.1 i ::i

La misura del tempo è uno


dei lavori piu comuni nelle
-^^ri---i^^i il
cl.rpilLo4rur
i^r,,-+fiali.
il ruu)t
Nella fotografia è mostrato
un robot scalatore a sei
qam0e,
^-*L-^ ^^. l-
per ra --l^l-+,,
saroaTura 1n

verticale nelle costruzioni


navali (REST) dell'lstituto
delle 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 puo
apprezzare l'importanza e
ìa necessita dei temnoriz-
zatori. Durante 3 ms si
dorio :nriro
uLvL uVrilL 1162 pl6ff16r,rl
urru LrLLrrUVdl-
vola per aggiungere un
determinato prodotto ad
una miscela in preparazio-
no Alln (toqq.\ tomnrl
''rJ Pef
un periodo di 2,6 ms,
un'altra elettrovalvola
:^.,-\
uuvrd ^--^-^
essere -++i.,-+- per
druvdLd
inserire una certa quantità
dr un determinato liquido
nella miscela. Dopo 20 ms
.li :ttoq..a noro<<:ri
"------,, per
miscelare entrambi i pro-
dotti, si procede allo scuo-
timont^ nor 1)
LilrrLrrLv VLr r- 6q
rrrJ. n; rnc+r Robot scalatore a sei gambe per la saldatura Ìn verticale nelle costruztoni navali (REST)
VUtr)LO
(lstituto dell'Automazione lndustriale del CSIC).
c urd )tr\-1ucr rzd ourLUdrc
Temporizzqlore
TEMPORIZZATORE

FIAG

Coriro ilvolore nel registro

I tempoilzzatori sono contatori


ascendenti o discendenti che funzionano in modo autonomo,
e che dispongono di flag che awisano
quando arrivano al massimo o attraversano lo zero

Decremenlo 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 tempo
che doveva contare. Nell'organigramma della figura si
Èoa 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
Fine
un determinato valore all'inizio del conteggio, e auto-
maticamente si incrementano o decrementano fino ad
arrivare al massimo valore o arrivare a zero, momento
nel quale comunicano l'accaduto al processore, che nel
Organigramma tipico frattempo in parallelo può eseguire altre istruzioni del
che presenta la strategia che segue la CPU quando si dedica programma principale.
alla misura del tempo.

nello sviluppo di un processo industriale, e in essa i ll temoorizzatore TMR0 è un contatore ascendente a B


tempi sono un fattore fondamentale. ll processore può bit che oassa a 00 H ouando arriva al massimo valore di
misurare facilmente il tempo; il controllo è effettuato in rnntenoio FF"
H Orrpsta
,,. YUL- tranSiziOne è chiamata Over-
base alla frequenza dì funzionamento e al tempo che flow.
impiega ogni istruzione ad essere eseguita. Così, ad Nel caso del TMRO il suo valore si incrementa al
esempio, un PlC16FB4 lavorando con un cristallo di ritmo degli impulsi di clock che sono applìcati al piedi-
quarzo da 4 Mhz e un oscillatore XT, ha un periodo no RA4/T0CKl o tramite I'oscillatore orincioale ìnterno
T = 250 ns. Per eseguire un'istruzione normale servono con la frequenza Fosd4.
quattro periodi, ossia. 4 x 250 = 'l .000 ns. Quando il valore del TMRO passa da FF H a 00 H il
Le istruzioni di salto impiegano il doppio. Quando la flag T0lF, che è il bit 2 di INTCON, si pone a 1 automa-
CPU si dedica a contare il temoo oeneralmente lo fa ticamente.
MICROCONTROLTER
fer misurrr del tempo

IMPUTSI ESTERNI
TOCKI

T. TMRO

,
l'
IMPUI.SI INTERNI
INTC O N

FOSC/4

lngressi degli impulsi at TMR7 e situazione del flag al suo overflow.

il valore decimale 56, il Divisore di Frequenza sarà asse-


Per fare in modo che il processore sappia quando il gnato alTN/R0 e sarà programmato con range di '1:32.
TMR0 va in overflow, deve testare frequentemente lo Calcoleremo il tempo di misura del TMR0 sino al suo
stato delfìag T0lF. ll check di questo bit suppone un'at- overflow:
tenzione costante, quindi una perdita di rendimento.
Per sapere immediatamente quando awiene l'overflow Tempo = 4 .250 ns . (256 - 56) . 32 = 6,4 ms
del TMR0 è molto più efficace generare un interrupt al
I ,: : t: : : 'l
momento ìn cui awiene. :

Per fare questo e necessario abilitare I'interrupt del La famiglia x86 di INTEL, alla quale appartengono i
temporizzatore, il quale implica di porre il bit GIE = 1, moderni Pentium, dispone di un meccanismo di alta
che è il permesso Globale degli Interrupt. e dopo atti- qualità e versatilità per supportare gli ìnterrupt esterni.
vare il bit di permesso dell'interrupt del TMR0, ossia, È interessante analtzzare le alternative esistenti nei pro-
scrivere un 1 in T0lE, così come si vede nella fiqura della cessori più utilizzati e verificarli con quelli dei PlC.
n:nin; <onron+a Per gli interrupt esterni la famiglia x86 utilizza due
,, piedini: NMle INTR. Ognivolta che uno di essi e attiva-
, ,;.
, ,.t . , li ,
to con livello logico appropriato, la CPU ferma il flusso
Per calcolare il tempo che misura il TMRO, bisogna di controllo, sospende l'esecuzione delle istruzioni nel
conoscere il valore che si carica inizialmente in esso, programma principale in corso, salva nello Stack l'indi-
dato che e ttn reoistro che ncrr na l'indiriTTo '1 del rizzo di ritorno, e salta ad eseguire una routine incari-
banco 0 dell'area SFR della memoria dei dati RAM. cata del trattamento della causa che ha oriqinato l'in-
Questo valore espresso in decimale, lo chiameremo N; rerru pI.
bisogna anche tener conto della frequenza di funziona- Esjstono 256 vettori di interrupt che danno accesso
mento de1 processore così come del range programma- a 256 routines differenti. Ouesti vettori sono indicati
to per il Divisore di Frequenza, in caso di un suo utiliz- nella tabella degli ingressi che si chiama IDT (Tabella di
zo. La formula che determina ouesto temoo è: Descrizione degli Interrupt).
Questa caratteristica determina una differenza fon-
Tempo = 4. Tosc
. (256 - N) . damentale con i PIC che dispongono di un solo vettore
. Range del Divisore di Frequenza di interrupt per tutte le cause che possono originare
una richiesta di interrupt.
Esercizio Nel PlC16F84 il vettore di interrupt occupa l'indi-
Consideriamo un PIC'16F84 funzionante con cristallo di rizzo 4 della memoria di programma e dato che è
quarzo da 4 Mhz. Supponiamo di caricare il TMR0 con comune a tutte le cause, il primo lavoro che realizza

["+ ft'+ È €-,.i.É;r.rlg ;14+at iir".+;:'Èe;{: J,"É; j:


.,;

Si tratta di un interrupt esterno che


si produce attivando il livello logico
applicato al piedino NMl.
Si rhi:m: infprrrrnt "non masche-
r:hilo"
rouilE nar16,ó
rE o
c <om^r^
)qrrlPlg î..^++î+^LU
oLLELLo
INTERRUPT PsrLr
; r'
oaila r or pflorla arla, e quan-
-^,,
LHU.
do avviene ha accesso tramìte il
\/o.tAr
vg!Lvr n ilryrsJJv z? dall:
v innrocqn uEllo +:haìl:
LouEìlo
IDT.
È un interrupt asincrono perché
non si conosce il momento in cui si
origrna, dato che dipende dalle con-
Quando il TMR) va rn overflow il segnalatore T)lF si pone a 1 automaticamente e st ut4tvtil r-; ^-"-"-^tri del mOndO
,.Ji-;^^i E^ uor
PorqrrrEl
genera un interrupt sempre che i bit GIE e T)lE valgano 1. esterno.

la rouiine è verificare ouale di essa ha oenerato la ,', I 'r I I ',', | '

rich iesta. ln un caoitolo orecedente abbiamo analizzalo il com-


Nelle 256 routines di rnterrupt possibili nel proces- portamento dell'interrupt INTR del microprocessore a
sore x86 a cui si fa riferimento mediante gli ingressi otto bit 8085. Era capace di accedere fino a otto routi-
della tabella lDT, ce ne sono alcune che sono destinate nes differenti. Nella famiglia x86 il piedino INTR puo
a risolvere sempre la stessa causa di interrupt dare accesso a qualsiasi deìle 256 routines che si sele-
Ad esempio, l'ingresso 0 della IDT è riservato per zionano agli ingressi della lDT. Quando la CPU accetta
rìsolvere una routine che riguarda gli errori che si pro- la richiesta INTR genera due cicli di bus dì lettura, il
ducono nel compiere le operazioni di divisione con le secondo dei quali realizza la lettura del valore binario
istruzioni DIV e lDlV. 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 solo
ès&acÈ9eùatog6q piedino, si possono utilizzare tutte le 256 routines di
v9ú 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 ?{C interrupt possibili.
o6*€óltó*60(}('óo L interrupt INTR è "mascherabile", questo significa
,,! ,,* ** *f rl* v3s vfg trr vg5 r*, *l* lfi vst 0t*
t'90 ètu che viene ignorata la richiesta quando il flag di masche-
*f r*c lt va5 1{{ 3?t
só3 9lrg ra lF vale zero. Questo flag lF è indicato nel Registro di
Y{d l|*t vgg 09t Etr *8{
gs* co9 stato insieme ad altri flag deì sistema.
vlt r{ x€ 6!t Fft Ytrtt
Questa caratteristica ha la sua importanza nella
99? Superficie 9('s
Yff ,mf Hc vec Yef tlt
costruzìone dei programmi. Generalmente medrante il
oaa metollicq g&a
Mi XrÀ FrAE{l vE ti* \.f; piedino INTR la CPU si dedica alle periferiche e alle
ó{rc o(}g
Ygi 8a,s?f,i€rfY stú 9t1 tr* risorse secondarie. Se in un pezzo di programma prin-
óó{l e{o
1.rc s6f locff vtt *n Dlt cipale si risolvono azioni fondamentali per il buon fun-
{'69 ó{t{,
ert* Yflt Ytl gtt *!* lta zionamento del sistema, non conviene che questo
ag9e9g{lt*€ll9ó9 oezzo interromoa la sua esecuzione a causa di una
l./r,* r.i ve c Íe* @{e.Ílr €t &{ v*t 0? Ycf ù1Ù *1, $l{
E*ù0c{*cotsltocc richiesta a bassa priorità. Per evitare tali richieste si
t(:$lfta**lrf titt l* rf rratrlgl v* *t ot v* 3lr 0Íl
oago<t{tG{rltr}o{'l}t
y[e vt!||$a{&rre4}v*| ltt à! 9t t{ t{ t{.sral at*
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
i rrn,r,rì oi-;;";,::;: t;t;r;; :; : ;irr;;n;r;r*:: ;r',; nuovamente gli ingressi degli elementi secondari attra-
piedini riservati agli interrupt esterni NMI e INTR.
verso INTR.
Interrupt per cambio
di stato in RB7:RB4
na delle quattro cause che generano l'inter- inserire informazioni, facile da gestire. di ridotte dimen-
rupt del PlC16F84. è il cambio di stato logi- sioni ed economico.
co in uno dei quattro ingressi più significati- Una tastiera molto comune è quella a 16 pulsanti,
vi della Porta B (RB7:RB4). configurata in una struttura matriciale composta da 4
Se ad un determinato momento in una di linee per 4 colonne.
queste quattro linee, configurate come ingressi, cambia I pulsanti sono situati sull'incrocio delle linee con le
colonne, quando si preme uno di essi si chiude il con-
tatto fra la linea e la colonna che formano l'incrocio
INÎERRUPT RBIF
controllato dal suddetto pulsante. Quando non ci sono
RB7:RM RBIE
pulsanti premuti, le linee sono elettricamente isolate
dalle colonne.
INTERRUPÍ
In pratica queste tastiere dispongono di 8 terminali
ATIR,E
di collegamento, 4 corrispondono alle file e si collega-
CAUSE DI no con le linee RB7:RB4 della Porta B, che devono esse-
INIERRUPT
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 di
Quando cambia Io stato logico di una delle linee RB7:RB4 informazioni dal microcontroller. Nella figura si mostra-
della Porta B, se i bit GIE e RBIE no i collegamenti delle file e delle colonne della tastie-
sono uguali a 1 si produce un interrupt.
ra con le linee della Porta B.

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
R84
interrupt, per fare in modo che l'e-
vento sia accettato, è necessario che RB5
INGRESSI
il bit di Permesso Globale di Interrupt, VERSO It PIC :
GlE. sia a 1. RBó

Lo schema logico della f igura


esprime in modo graf ico quanto IECIADO
descritto. RBO RBI RB2
/Ir
I
USCITE
DAt PIC

Questa strana causa di interrupt , COLONNE FI1I


è ' (uscrTE) (TNGRESST)
stata sviluppata per gestire al meglio
.
le tastiere matriciali, molto diffuse :
nelle applicazioni con i microcontrol-
Struttura e collegamento della tastiera matriciale ai piedini della Porta B del PIC
ler. La tastiera è un disoositivo oer

: t jtl.rtt'f:.i:,a t::;tjl;,':t!,4+llli,;r;':rlt
Per esplorare la tastiera e rilevare il pulsante premu- colonne, ed essendo sospese in aria, si comportano
to si applica il seguente metodo: il microcontroller come se su tutte arrivasse un Iivello logico alto. ll livel-
deposita nelle 4 linee di uscita digitali (colonne) un codi- lo basso in uscita da una delle colonne, viene spostato
ce formato da tre livelli logìci alti (1)e un livello basso in modo sequenziale da una all'altra, e quando arriva
(0). Ad ogni scansione il codice sposta la posizrone del alla fine il ciclo si ripete da capo. Dato che si conosce
livello logico basso in modo sequenziale, su ognuna sempre da quale colonna si sta facendo uscìre il livello
delle 4 colonne collegate a RB3:R80. Quando non c'è basso, basterà conoscere la fila da cui detto livello viene
nessun pulsante premuto, le file essendo isolate dalle ricevuto per riconoscere il pulsante di incrocio fra fila e
colonne, sono "in aria" e introducono un livello logico colonna, come illustrato nella frgura.
alto, dovuto ad una caratteristìca costruttiva pro- .:
pria della tecnologia TTL. In questa situazione, COLONNI CODICE HEX
{usclrE)
quando si leggono gìi ingressi digitali, che sono le R33 RB2
xB4 RBI RBO
file della tastiera, avremo quattro uno. Nel caso
venga premuto un pulsante, quando il livello
o '
ijiili#iiili I t tIo I 7D

ijliilt'*É I ttt
basso che esce dalle colonne, coincide con l'in-
iilli* '' ' I
o
rro
o
I
EE

crocio fila-colonna del pulsante premuto, per la


iiÍlì:*#' ' o
rot I
ED

fila corrispondente entrerà un livello logico basso, 'r


i:iiir${ijji r
r
o
o
I ltl o
EB

DE
grazie al quale si potrà localizzare immediata- :iili:i$#' I rto I
i.$ii.,* r r'
o DD
mente il pulsante che è stato premuto, perché si
o I lot I DB
orodurrà un interruot.
,.jr1.;r* r o I I ttl o BE

: !;i.:,1, t,iii;: ;,, {;,.,.1*-1.i-. r o I I lro I BD

lì metodo usato per la rivelazione del pulsante


ril::*: r o I I ror I BB

premuto, ulilizza il livello basso come livello atti- :,,iì:+=:l.i o t t I ltl o 7E

vo, mentre quello alto è considerato inattivo.


.*a:.'"o r t I lor I 7B

,,1frÈ.-:l. o r r I otl t 77
Dalle quattro colonne collegate alle uscite
quattro livellì logici, uno attivo, :.:.1l.;,,O1
:. I O I I oìt I 87
RB3:RBO escono
o tre inattivi, o altr. Se c'è un pulsante lì,'..1',1:€È,: r r o I olr I D7

1ì11$ r r
basso, e
premuto nella colonna che ha il livello logico
I o ort I E7

basso, la fila di incrocio riceve questo livello, che


Tabella dei codici per verificare rl pulsante premuto
arriverà su una delle linee RB7:R84. Se non ci
in funzione della presenza del livello logico basso nella fila e nella colonna.
sono pulsanti premuti, le file restano isolate dalle

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.
naa f Per ognuno di questi codici in uscita viene verifica-
to ouello rhe si rireve dalle file che f unzionano come
nas f
ingressi digitali.
Se tutti gli ingressi sono a livello logico alto, signifi-
RBó
+ ca che nessun pulsante della fila da cui sta uscendo lo
nez f zorn à <t.rfrr nrtrmrrtn Nel momento in CUi vrene nre-
TASTIERA muto un pulsante, nell'ingresso corrispondente all'in-
lo

I I

t
RBO
A
I
RBI RB2 RB3
crocio fra la fila di questo pulsante e la colonna da cui
sta uscendo lo zero, apparirà un lìvello logico basso.
Si puo facilmente compilare una tabella che stabili-
sca il oulsante oremuto in funzione della fila e della
Quando dalle colonne esce il codice 1 1 10, colonna che hanno il livello logico basso, come propo-
se il pul.sa.nte premuto è E sulle file si ryceve il codyce 01 1 1
sto dalla fiqura.

q,..F+ 3rt::È+::r;.i:.,+,ÉlÌi1Í +Èirt*rE+.ÌÉ !ÍlriìrÈ+.ÈÉ+;t+-4:,ilrri,r*/l


Per sfruttare i beneficr dell'interrupt, si collegano le dalla ditta Ingegneria de Microsistemas Programmados
{ir^,.J^rr-
| ilc uEilo
+--+i^.-
Ld)ucr o d-:I prc
^;.dini RB7:R84, che saranno con_ S.L. per realizzare prototipi in modo sicuro, rapido e
figurati come ingressi. I terminali delle colonne si colle- economico. Nella parte superiore contiene la circuiteria
gano ai piedini RB3:R80, che saranno confìgurati come ausiliaria, insieme ad uno zoccolo a 1B pin, adatto a
uscite. Sr pone GIE = 1 per abilitare gli interrupt in ricevere il PIC'16F84 con il programma memorizzalo. La
generale, e anche RBIE =1 per abilitare l'interrupt per parte inferiore e una zona libera con fori prestagnati ed
cambio di stato logico nelle linee RB7:RB4. Un sempli- ^^-*^ri--^+^
d Pd>>U ttUttlldllLLdtU r rr ri À
L rnllon:f: urld trctinrr
LvilLyu(u rrn:
<r Ld)LlCld
ce programma inserirà in modo sequenziale i codici con matriciale e un display a 7 segmenti. I collegamenti
un livello basso sulle uscrte RB3:R80, che sono colleqa- della tastiera seguono lo schema della tastiera mostra-
te alle colonne Tutto qui. to in precedenza.
Quando si premera un pulsante cambierà lo stato
logico 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 come
prima cosa si verifica quale delle linee RB7:RB4 ha un
Ptctóx84
livello basso. Con l'informazione della fila che ha rice-

Schema del circuito descritto nell'enunciato del oroqramma.

,l '

. ; , , ' "' a't.


,",, ,

Per fare in modo che il lettore si abitui ad utilizzare


nella 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 cui
qi 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
Cntlonsmpntn rli t tn Dla l6FB4 ad una taSttera. modo l'overflow si produrrà alla fine di (256-12) = 244
Le linee RB3.RB) sono uscite dalle quali esce rl codice binario, impulsi applicati al timer.
e RB7 R84 sono ingressì da; qudli
si riceverà un livello basso se c'è un pulsante premuto 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-
vuto un livello basso, e della colonna che in quel pone una lemporizzazione dì:
momento aveva in uscita detto ltvello, consulteremo la
tabella mostrata in precedenza, per dedurre il pulsante
premuto.
ln commercio si puo trovare una scheda commer-
Temporizzazione = 4 . 250 ns .2M.256 = 62,4 millisecondi
ciale per prototipi, chiamata PIC 18-ME, progettata

'+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
MICROCONIROTTER
Un interrupt molto particolcre

Dato che non si arriva


Listato del programma con commenti
ancora ad 1 secondo,
si imnipna rnr^onfa-
tlST P=15F84 ;Dhettive per Assembler
RADIX HEX tore ausiìiario CONTA.
che deve essere inizia-
W EQU 0 ;Etichette
lizzalo con valore 'l 6
FEQUl
TMR_OPT EQU 0x0l e si decrementa ad
STAT0 EQU 0x03 ogni interrupt del
P0RTAA EQU 0x05
TN/R0, cioè ogni 62,4
P0RTAB EQU 0x06
INTC0N EQU 0x0B ms. Arriverà a zero in
CONTA EQU 0xl0 ;Contatore ausiliario 16x62,4ms-1
ORG secondo (approssima-
O ;Vector reset
goto inizio ;Salto al vettore di interrupt tiva mente).
ORG 4 ;Vettore di interrupt
goto inter ;Salto all'inizio della routine di interrupt
ORG 5
Comporre un program-
inizio bsf STAT0,5 ;Selezione del banco 'l ma in linguaggio
clrf PORTAB ;Porta B uscita Assembler per il
movlw b'00000011' ;Configura M0 e RAI come ingressi
6F84, il cui oscilla-
mowvf PORTM
PIC 1

movlw b'00000111' ;Configura il registro 0PTl0N tore rnterno sra contror-


movwf TMR_OPT lato da un cristallo di
bcf STAT0,5 ;Seleziona il banco 0 ,.1-,4
UO A À,,tLJ-
rVil rZ.
movlw b'10f00000' ;Abilitazione globale per gli interrupt e per il TMR0
9Uqr4U
mowvf INTC0N Alle linee RAO e RA1
movlw 0xl0 della Porta A saranno
. movlw C0NTA ;Grico C0NTA con il valote 16 in decimale
collegati due interrut-
movlw 0x0c
mowvf TMR_0PT ;Carico TMR0 con 12 in decimale tori AeB,iquali devo-
ciclo btfx P0RTM,0 ;5e M: 0 salto la prossima istruzione no essere testati conti-
goto ra0_1
n ua m ente, e il lo ro
bcf P0RTAB,0 ;SeM0=0,R80=0
goto ralx ;lest ru M1 stato (aperto o chiuso)
ra0_'f bsf PORTAB,0 ;Se RAO = I si porta RBO = 1
riportato su due diodi
ralx btfsc PORTAA, I ;5eMl=0salto
LED A' e B' collegati
goto ra1_l ;Saha se RAf = 1

bcf P0RTAB, I ;5eRAl=0,R8=l alle linee RBO e RB 1

goto ciclo2 della Porta B.


ral_'l bsf PORTA8,'| ;5e RAI = I,RBI = I
lnoltre, un altro
ciclo2 goto ciclo ;Ciclo infinito dal quale si esce per interrupt
diodo LED sulla linea
inter decfsz CONTA,I ;Decrementa C0t'lTA e salta se vale 0 RB7 deve lampeggiare
goto continua
in
conta_0 movlw 0x10 ;5e (ONTA = 0 si carica con 16
continuazione con
mowrrf CONTA un tempo programma-
btfsc P0RTA8.7 ;5e RB7 = 0, salta to di un secondo, cioè
goto rb7_1
restera acceso
bsf un
PORÎAB,7 ;5e RB7 = 0 si inverte il valore
goto continua secondo e snento il
rb7_1 bcf P0RTAB, i ;Se RB7 = 1 si inverte il valore SCCONdO SUCCCSSiVO.
continua movlw b"10f00000' ;Si dpristina ll.lTCON, interrupt disabilitati
movrvf INTCON
Questo serve per con-
movlw 0x0C ;Si ricarica TMR0 con f 2 in decimale trollare il tempo in cui
movwf TMR OPT
awiene l'interrupt del
retfie ;Ritorno dall'interrupt
end
TMR0 che è stato spie-
gato in precedenza.