MICROCO
Registri dedicati
alla
EEPROM
er gestire in lettura e scrittura le 64 posizioni della EEPROM del PlC16FB4, si utilizzano ouattro reoistri dell'area SFR:
EEDATA:
Creore un progrommo per leggere l'indirizzo 0C H dello EEPROM e deposiiorlo nel regislro W. slufus
Eu
0x03
eesdr
qu
0x09
eedoh
equ
0x08
eeconl
equ
0x08
bd
shfus,rpO
;rd
movlw
0x0r
lv=0c
movwf
eeodr
P
bt
shfus,rpO
;rp0 =
bsf
eecon!,rd
;rd= I perleggere
bcf
shfus,rp0
,'rp0 = 0 per oaedere ol bEnco 0
movf
eedofo,w
;eedoh = w
Contiene il dato da scrivere o il dato letlo,
EEC0N2: Si utilizza come dispositivo di sicurezza durante la scrittura.
EÈADR (09 BANCO
per ocedere ol bonco 0 =0
= eeodr
|
per occedere ol bonco I
O}
\" EEDATA
(08 BANCO 0)
EECONT {08 BANCO r)
EECON2 {09 BANCO r)
Registri incaricati di realtzzare le operazioni con la memoria EEPROM
dato in un indirizzo della EEPROM, dobbiamo seguire una sequenza di istruzioni in cui partecipa in modo speciale il registro EECON2. Questo regiPer scrivere un
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 volte dura fino a 10 ms.
a
ll ciclo inizia caricando in EEADR l'indirizzo della cella e in EEDATA il byte da scrivere. Se decidiamo che durante il processo di scrittura non si possono accettare interrupt, si deve mettere il bit di enable global GIF - O In modo si evita che durante ,, I nrrpctn Il'oneravVL' u YvLJLv 'LL zione di scrittura, la CPU venga sviata verso un'altra routine al verificarsi dell'interrupt. In seguito dobbiamo autorizzare la scrittura, mettendo il bit WREN = nel registro EECON'1;poi dobbiamo includere nel programma una sequenza di istruzioni che caricano in primo luogo il valore 55 H in EECON2, in seguito AA H nel medesimo registro. Terminata questa sequenza, si pone il bit WR = 1 in EECONl e si inizia la lunga operazione di scrittura. 1
La lettura di una posizione della EEPROM inizia carican-
do in EEADR l'induizzo a cui accedere, Successivamente
si pone a 1 il bit RD del registro EECONl. Nel ciclo seguente il dato letto è disponibile in EEDATA. Questo dato permane nel registro sino al realizzo di un'altra operazione di lettura o scrittura nella EEPROM.
MICROCONTROLLER Memorier dei deiri EEPROilI [lII
Quando termina la scrittura, nel registro EECONl il bit WR sarà uguale a zero, e I flag EEIF a 1. Questo flag si pone a 1 automaticamente, al termine del ciclo di scrittura e, leggendolo, possiamo quindi sapere se il processo è terminato. ll flag EEIF dovrà essere poi resettato dal programma. Dopo ogni ciclo di scrittura è raccomandabile verificare l'indirizzo della EEPROM, per vedere se e stata scritta correttamente. Creore un progrommo per scrivere il volore Oxff
oll'indirizzo dellq EEPROM 0x32. Si suppone che primo del progrommo si siono specificoie le direftive che ossegnono oi
regislri di controllo impiegoti gli indirizzi corrispondenfi {eeodr, eedolo, slolus, inlcon, eeconl, eecon2}. bcf
shfus,rpO
;rp0 = 0 per occedere ol bonco 0
movlw
0x32
iw = 0x32
movwf
eeodr
P, = eeodr
movlw
uxIT
iw = 0xff
movwf
eedqta
ry
bsf
slofus,rpO
ppO
bcf
inlcon,gie
;gie = 0 per proibire inlenupf
bsf
eeconl,wren
ryren
&.egisfre
Vc!*ea dapo Rest*f FOR
EEADR
xxx xxx xxx xxx
;EÈCONI
---O xO(Xt
EEDATA
.
lfclore de:pe shr? Rese9 UUUU UUUU UUUU UUUU
---O
qOOO
Tabella con i valori che assumono i registri che gestiscono la EEPROM dopo un Reset. (x: sconosciuto, u; non cambia, q: dipende dalla condizione).
sempre valore zero in caso di lettura. Infine i bit RD, WR, WREN, ed EEIF del registro EECONl, prendono un valore casuaìe dopo un POR oppure un valore che dipende
dalla condizione precedente (q) se il Reset dipende da altra causa. Nella tabella riportata qui sopra si riassumono i valori di questi registri dopo i vari tipi dr Reset.
I principali fabbricanti di circuiti integrati e di memorie, offrono EEPRON/ con differenti capacità. Microchip dispone di tre grandi famiglie di memorie EEPROM:
= eedoto
=
|
'
per occedere ol bonco I
I
per permellere lo scrilfuro
tamiglia 24xxxx: Memorie
EEPROM
per bus I2C a due linee.
nello EEPR0M
Sequenzo di scritturq movlw
uxcl
,n* = 0x55
movwf
eecon2
ff
movlw
Oxo
iw = Oxoo
mowvf
eeeon2
;w =
bsf
eeconl,wr
ryr
=
eecon2
eecon2
=I
Voo
inizio ilciclo di scrilluro
5CA 5CL
I bit dei quattro registri che partecipano alle operazioni
della EEPROM, prendono dei valori predeterminati dopo il Reset. Questi valori possono essere diversi se il Reset è dovuto al colleqamento dell'alimentazìone o ad altra causa. Dopo un Reset provocato da POR (Power On Reset) i bit dei registri di EEDATA e EEADR prendono un valore casuale (x) oero se il Reset è dovuto ad un'altra causa, i bit non cambiano valore (u). ll registro EECON2 non è implementato fisicamente, e i suoi bit hanno
G t2c
(POR)
Adattamento delle memorte EEPROM 24xxxx per bus alle linee di l/O dì un microcontroller.
12C
TNICROCO dcrl
lllemoriei
R 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. Della famiglia 93xxxx rlcordiamo il modello 93AA86, I
--^--;+- ul^ri 1É Khits rrn di srrittura I u r\urLr, uil temno LLr I rpv ur rLl di 5 ms p lna f reouenza di 2 MHz. La tensione di alimentazione puo essere compresa fra'l,B e 5,5 VDC, e il
DO/DI
LUI I Ul lo LovoLlto
CLK
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 microcontroller con un numero limitato di linee di l/O, per ampliare la sua memoria. ll trasferimento si realizza in sprip spnrrpndo rrnn dei nrntnrnlli :hitrr:lj deil'indu'stria, come illustrato nella figura. Nella famiglia24xxxx predisposta per il bus l2C esistono dispositivi come la 24C00, che ha una capacita di soli 128 bits, raggruppati in bytes, con una ve'ocita dr scrittura di 4 ms e una frequenza di 400 KHz, ed
ffii: gzlrtrurffi
.ÉllSilllllEL Al
G'*,.,
]ilffi,
^^ Az
I: * DIREZIONEsr*ah
: VDD
Collegamenti
di otto memorie
EEPROM 241C64 per ottenere una capacita di 51
Gi' sPl
Collegamenti della memoria EEPROM 25xxxx per il
bus
SPl,
ad un mtcrocontroller PIC
-7
2 K bits.
frequenza, tensione di lavoro fra 2,5 e 5,5 VDC con 1 000.000 di cicli di scrittura/cancellazione. In alcuni casi sono necessari grandr quantità di EEPRON/, e per queste situazioni si possono configurare insiemi di dispositivi controllati in modo indipendente da diverse linee di indirizzamento, che utilizzano gli stessi l/O del microcontroller. Nella figura e mostrato un circuito formato da otto memorie da 64 Kbits ognuna, per ottenere un totale di 512 Kbits.
'i
;:,
;,
r,':,,,.'',,',i,,1
::,t:rr].:
.,'.'rr.,.:::.,
P34
NilICROCONTROttER
Routine per colcolore il numerb cosuole. d:rp rrn'ìde,e delle immense nossihilità di utivvJJr u lizzo che hanno le memorie EEPRON/, presentiamo un caso pratico. Abbiamo scelto un gioco sviluppato con un PIC 1 6FB4 che controlla una tastiera e un vtdeo LCD. Ppr nntpr
ll Lingo Numerico è un gioco nel quale bisogna indovinare un numero di 5 cifre generato in modo casuale dal gioco stesso. Con questo scopo, il microcontroller comunica al giocatore, tramite l'LCD i digit che sono stati indovinati, e che occupano la posizione corretta, e quelli che sono stati indovinati, ma che non occu0ano la oosizione corretta. Esistono due livelli di difficoltà che si differenziano ner il temno tnf,rlp di rrri si disnonp npr indovinare il
numero giusto. Se si indovina il numero prima che il tempo sia scaduto, sul display LCD appare la scritta "HAl V|NTO", seguita dal punteggio, che equivale al numero dei secondi che mancano allo scadere del
Ogni volta che inìzia una partita, il Lingo Numerico genera un numero casuale di cinque cifre che deve essere temporaneamente memorizzato negli indi-
rizzi della EEPROM che vanno da 10H a 14H. Ogni cifra viene memorizzata con il suo codice ASCll, e Ia routine fa uso del Timer 0. situato all'indirizzo 00H della EEPROM, e delle variabili DATO_A e DATO_B della memoria RAM" La formula oer calcolare il numero casuale utilizza il valore del Timer 0, che cambia continua-
mente, inoltre utrlizza un " numero base" che dipende dal vaìore orecedentemente calcolato. Questa formula è Ia seguente: Numero cssuqle = (Numero
r
RAND
dÍ movlw movwf
bí bsf M
ît.
f-------------- i. I !"*--*-::;\
_t_t_t_r
*l*t&ta1
ro '1P "1f "lf :1 .-. fo etfo clÉ ùtfo +t,. ,!i=-r=T=T=Ta t' pqpqpqFq , ,! l, f*!o"P*P*.'. TASIIERA MAIRICIALE
4X4
.!,,
f-ffi "ilFffi
movf
-:::Èi6i
,{: I
|
n*, f
I I
<'!.J'j
R_8UC
btfrc golo mov{w movwf R-À{U
Schcma elefrrtr o dell annltcaz,one.
R-DIG
Porta B supportano la tastiera matriciale 4 x 4, RB0-RB3 le frle e RB4-RB7 le colonne; inoltre queste linee servono, in forma multiplexata, per trasferire informazioni al di<.nl:v ICD lremrtp i cr rni innrocqr DO-D7 RAO RA1 o RA2 nestisrnrn ispnn,rli di controllo del LCD.
oll'indkizo del "numero hse" nello
$Alus,s
;Selezioniomo il Bonro
ÍEDATA,RD
Éomondo di leturo
SIATUS,s
;Selezioniomo
ilhnco
I
0
EEDAIA,W
f,orliomo il numero bore in DAIO-A
seà sbto kminob ilnumero
FSR,\{
,'Vedfichiqmo
STAIUSF
;['hrminob?
l+lN
;5i
d'173'
on ilvolqe
DAÍ0-B
fork{iomo
DAT0-A,W
;Sommo di DAIO-A con W
decfsz
DAIO-8,F
goto
f,'sloio somrnob
R-MUI
;lS
oddh
d'49'
;Si; Sommo 149 ol numero
oddwf
TMR0,W
;Sommo il volqe del Timer 0
movwf
DAI0-A
;Si stobilisre il nuovo numero bose
oddlw'
d'10'
;5i sommo I 0 o W sino o che non genero riporlo
SIAIUS,ÍC
Suesto fo sì che il numero sio do 0 o 9
DATO-B
173
173 Yolh DAIO-A?
R_DIG
oddhv
h'39
;5i converle in ASCII il numero
movwf
lNtr
;5i conhollo lo posizione oll'inlemo del numero
R
BUC
;Si
intremenh lo psizione del numero
rl,
;)r npeE srno 0 J volle ;Scritluro del nuovo numero bose nello EIPR0M
R
EEPROM
fSR
iid' t$Rl oolo
Lo schema elettrico e molto semplice. Le B linee della
;Punlotore
oddwf
btfis goto
.a."îl^ tiilizzarlz u-rtLLut ru nor rLr rv!.L ìn I nnni f tuItctu pLr <rrirroro w9ril n:r+it: Ld)udtc PorLtLo ilil nrrma"^ nanar2t^ el;l ninrn
EIADR h'10
movwf DAIO-A movlw h'lf
subvrf
J*--
ln ouesta annlicazione si utilizza la EEPROM molto frenttentemente ad esemnio qerve npr memorizzare sia il nnme di ri:srr rn niocatore sia il nome del crrocaîore che ha preso piu punti, pero noi abbiamo pensato di
+ 49 + Timer 0) %10
Di seguito riportiamo Ia routine corrispondente in cui sono presenti molti commenti.
tempo massimo. I :
bose' I73
tlN movf
DAI0 A,W
;5i coriro il nuovo numero bose in W
l,lovwf
IEDAIA
;Porliomo il nuovo numero nello EEPR0M
Coll
GÎAI.E
inrrm
flefurn
J',.r',
r;nai'r"' oorllJn irp*ol.l
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 supportare le loro applicazioni. f importanza di questi dispositivi è enorme, e imparare il loro utilizzo è fondamentale a tutti i livelli. Fino ad ora abbiamo studiato la struttura e i registri che controllano la memoria EEPROM del PlC16FB4. Si tratta di fare un passo in piu, e imparare ad utilizzarla mediante i programmi adeguati. Anche se la programmazione del PIC e ancora in fase di apprendimento, dato che abbiamo solo iniziato ad utilizzare le istruzioni principali del microcontroller, crediamo che sia di notevole aiuto, una volta studrato a fondo un dispositivo, provare ad assimilare le routines
mostrare pezzi dedicati a leggere e scrivere la EEPROM. Concentriamoci su queste parti.
lllustreremo ora un progetto che ha una vasta applicazione negli stabilimenti, per gestire gli ingressi del personale. Lo svilupperemo sopra un potente ed economrco sistema di sviluppo chiamato "Micro'PlC Trainer", che è stato progettato e commercializzalo dalla ditta di lngegneria di Microsistemas Programados S.L. Un sistema di sviluppo è uno strumento fondamentale 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 Utilizzo e progrdmnrcrzione dello
tuffi4lwffidw#
I l:;:
$
EEPROll,t
J
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 mancanza di al,mentazione, permerto ut eli tttc{Lq
rinrandere î^..^++1 rPtcttuctc LUrrrrrc-
mpnlp il rnnlpnnin con:l ritnrno dell'enerai: Come nllnîn di PUrrtv ur ri:mn rrurrrv rho Lr rr,
n)rton7) roncidavq LErrzq !vr Jiugl: nrr:ndn <i ilinizi: Jr ll4lo lo vuurruv
^.i--,,^l+-vorLd, lp|md td mdccn ----l^,, na Inlzi: il rnntennìn d: O
r^l - -^^, ,^^_- ucl r^rle t\cilo )cquErrzo N
iStrUZiO_
ni, prima di iniziare rl
Fotografia del sistema di sviluppo Micro'PlC Trainer.
pro-
gramma prìncipale, esistono
è formato da tre elementi: 1) uno scrittore/cancellatore di programma del PlC,
media. Sostanzialmente
2) un insieme di periferiche utilizzate nelle applicazioni con microcontroller, 3) circuiteria ausilraria che comnrondp :limpnt:tnrc rircuito di Reset e crìstalìn di nrrarI rvL vrL zo. La scheda Micro'PlC Trainer e collegata alla porta parallela del PC e si controlla facilmente dal computer con il software che la correda. Data l'efficacia e le possibilità che off re questo strumento, dedicheremo più avanti una sezione completa npr dpscriverne le caratteristiche e l'utilizzo.
una serie di blocchi e di soubroutines che descriviamo dr seguito: 1o.
Intestazione
l'-..^-hlar lnrlr 661 llUlEf, ilrLruuLrflo lo rL dirottirio uilLLLrvL VLr lO))Cl
interni del
l:lo lihrari: doi llUlEllo uLr ranictri rLyrJLl
I
PIC e le relazioni delle etichette utilizzate.
2o. Subroutine EE_Write È una ruotine incaricata d scrivere un byte caricato ini-
zialmente nel registro EEDATA nella posizione ountata
da
EEADR
3o. Subroutine EE_Read
eooe il dato ountato dal contenuto di EEADR e lo
Si vuole emulare il funzionamento delle note macchine
I
"ELIN/INACODE" che sono usate in molti esercizi commerciali per ordinare le file dei clienti. Nel nostro caso, come video informativo utilizzeremo un display a sette segmenti. Sarebbe stato meglio ulilizzare il display LCD, di cui dispone anche il Micro'PlC Trainer, pero data la sua complessita, ne parleremo più avanti. Sopra
deposita in EEDATA.
il
display sara mostrato
il
numero corrispondente
4". Tabella di decodifica Tabella È una ruotine che converte il codice BCD, presente sui 4 bits meno significativi del registro W, nel codìce adat-
to per
essere visualizzato sul dispìay a sette segmenti.
al
turno attuale.
LL:--^ d- ul)Pu)lzrvr 'J:-^^-i-inne lrnI nrrlsante rhe rE ur rq/ una volta purJcr rLc Ll premuto, incrementa iì turno e prepara al seguente. HUUldlllu ^
Questo pulsante chiamato RAO e collegato alla linea 0 della porta A. In questa applicazione dovremo risolvere il problemà .hp qnrflp npl rasn 6j; Una mancanZa momentanea di energia elettrica, o allo scollegamento involontario
5o. Subroutine di ritardo Delay_20_ms nliminrrn Raslizza Utlq rrnr iomn^r'pzaztano rli 4v 7O m< 56p EllllìllldlE ul lll) I\EOlfZZq LEtttvwttLLoLlvllE Pql
l'effetto di rimbaìzo tipico dei componenti elettromeccanici, come il pulsante RAO. 6o. Programma principale ln questo programma si gestiscono i blocchi precedenti per risoìvere l'applicazione.
list
p=lóF84
;Tipo di processore
lntlude
"Plóf84.lNC',
;librerh
0x0c
;Definisce lo voriobile conlqlore
org
0x00
;Vector Reset
gob
inizio
or9
0x05
Conhtore
con definizioni dei regiski inlerni
Solto per solvore il veffore di inlenupf
;EE-WRITE: E uno routine che scrive un byle nello memorio EEPROM. ;EEADR e il doto è stotro precedentemente introdotto in EEDAIA EE Write
Woit
lindirizzo sqrù contenuto nel registso
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
btfss
EECONI,EEF
;Testo il
golo
Woit
;Lo scrilfurq non è lerminolo
kf
IECONI,EEIF
;Lo scrilfuro è lerminoh e si resetto il flog
bcf
STATUS,RPO
;selezione del bonco 0
flog per vedere se lo scrifuro è terminoh
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
1qi1l]!1!1]!1!!]*R!t!{lul!utiutSili;!]ii::].]::]g:
oddwf
PCt
redw
b'00llltit'
;Digit 0
refiw
b'000001
l0'
yor0r r0r
I
;Digit I
reilw reilw
b'0t00t I I
I'
;Digit 3
reilw
b'01
I00l l0'
;Digit 4
retlw
b'01
l0l t0t'
;Digit 5
retlw
;Digii ó
retlw
b'0lllll0t' b'000001 I I'
retlw
b'olillilt'
retlw
b'0t l00t
;Disposizione sullo tobello in bose ol PCI e W
F
I
I'
;Digit 2
;Digit 7 ;Digit
I
;Digit 9
ì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 elettromlcconici. 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 frequenzo, il TMRO dovrà contqre l5ó impulii che equivolgono o Ox9cin esodecimole, e dolo èhe il TMRO è oscendente, dovrò essere coricoto con il suo complemento o l, cioè 0xó3 in esodecimole. Deloy_20-ms
Deloy-20_ms_l
bcf
INTCON,TOIT
movlw
0xó3
;Metle o zero il flog di overflow del TMRO ;Complemenlo o I di 15ó {0x9d
movwf
TMRO
;Corico il IMR0 ;Refresh delWokhdog
clrwdt INTCON,TOIF
goto
Deloy_20_ms_l
;Non ho finilo
bcf
IMCON,TOIF
;|l TMR0 ho finito, si reseth il flog Jnizio del progrommo principole
chf
PORTB
;Concello il lotch di uscito dello Porto B
bsf
STATUS,RPO
;Accesso ol bonco I
clrf
TRISB
movlw
b'0001
movwf
TRISA
movlw
b'000001
movwf
OPTION-REG
return lnizio
Ini_0
Ini_l Loop
Woil_O
Woil I
;Verifico se il TMRO ho finito
btfss
1
'il
;Configuro lo Porto B come uscito 1'
;Configuro lo Porto A come ingresso
t0'
bcf
STATUS,RPO
chf
EEADR
coll
EE_Reod
movlw
0x09
/mposto il divisore di frequenzo del TMR0 o ;Seleziono il bonco 0
,|28
;Corico l'indirizzo 00 in EEADR ;Legge il byte dello EEPROM
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
clrf
Contotore
;Non è moggiore di 9 ;Metle o zero il conlotore
golo
!oop
movf
EEDATA,W
;
movwf
Contolore
;lniziolizzo il contotore
movf
Contolore,W
coll
Tobello
movwf
PORTB
;€onverte il contotore in codice o 7 segmenti ;Visuolizzo sul disploy ;Refresh del Wotchdog
clrwdt btfss
PORTA,O
goto
Woit_O
= l? ;Nonèo l,ofiendere
coll
Deoly_20_ms
;Temporizzozione per eliminore il rimbolzo
;RAO
;Refresh del Wotchdog
clrwdt 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
clrf
Contofore
;ll contotore è moggiore di 9? ;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 povero" della famiglia. Ha poco di tutto, ma nonostante questo, e molto piu utilizzato dei suoi fratelli, che hanno più risorse. Ha avuto grande successo e la spiegazione arriva dalla sua semplicità, economia e media delle ca ratteristiche. Prima di passare a studiare gli interrupt, così vitali nelle applicazroni del mondo industrrale, abbiamo considerato molto interessante fare un piccolo ripasso delle risorse ausiliarie e comolementari che circondano il
nostro
m icrocontroller che funzìona come cervello di Monty. Queste risorse sono:
{POR), per attivazione del piedino MCIR # e per overflow del WDT.
38
La parola di configurazione.
ll Reset inizializza il sistema,
+Voo
e
il processore inizia ad eseguire
il
programma dalla prima
istruzione, partendo da uno stato noto di tutti i registri. È un avvenimento vitale a cui si arriva nelle seguenti situazioni:
1'. Quando si desidera provocarlo esternamente. 2o. Quando si collega l'alimonfrzinna
nar
lr
pIma
volta.
3". Quando il programma e "piantato" e voglia-
sr
mo che ricominci dal princ rp
ro.
4". Quando trascorre un certo tempo in stato di riposo.
I
-
L'applicazione deì livello logico basso al piedino 4 del PIC genera un Reset. ll circuito più ì: c": <omnliro rho normotto I rPilLL JLr Lr rL PLr I r rL LLg lo )uo
Circuito base per generare un Reset premendo un pulsante
îlt1#.|||24;waa.aa/ataaaaiait.aaa
attuazione figura.
è
mostrato nella
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
modo normale, quindi eseguendo delle istruzioni. Nel primo caso il bit PD# del registro dì Stato si pone a 0
eil bitTO#a1 Quando l'attivazione del l'MCLR# si origina col processore funzionante in modo normale i tre bit meno significativi del registro di Stato passano a 0 e i rìmanenti non cambiano, così come è rappresentato nella figura
:,',
,,.
,
ln questo caso la reitiztalizzazione del processore si produce quando si collega per la prima volta l'alimentazione. E chiamato Reset per POR (Power On Reset). Questo Reset è generato con un leggero ritardo
risnptln I rrvL LLv :l momentn doll'ennlir:zinnp doll'alimenlazione, con il f ine di permettere che la tensione dell'alimentazione stessa sì stabilizzi al suo valore nominale. È 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 ottenere la slabilizzazione della frequenza del funzionamento del sistema, si aggiunge un altro ritardo di 1.024 impulsi del segnale applicato in OSCl. Lo produce il temporizzatore OST (Oscillator Start-up Timer). Cosi quando si inizia l'esecuzione delle istruzioni, la f requenza di lavoro e stabile. Come si vede nella figura, dopo che si e prodotto questo tipo di Reset, ibit PD# e TO# restano disattivati, sarebbe a dire a 1, nel registro di Stato. ,. :: .,:, l:: ,
.l ,
ri. l',,;
.
Come ricorderemo il Watchdog (WDT) è un contatore che si incrementa al ritmo della frequenza dell'oscrllatore principale, e quando va in overflow origrna un Reset. ll WDT viene caricato con un valore, ed entra ìn funzione all'inizio del programma. Prima che vada in overflow, lo si deve resettare mettendolo a 0. Se il flusso di controllo entra in un ciclo infinito, o rimane in attesa di un segnale che non riceve, il Reset del WDT non arriva in tempo e l'overflow reinizzializza il processore.
lloverflow del Watchdog si puo originare quando
il
processore f unziona normalmente o quando si trova in /,.+.^/.Jt\!,t' .+-t^ ur IrsLdL(J ^1,,Iposo. 5Ldruuy , ;^
ll bit TO# del registro di
,,
ruì*
reg s;tro di stato i,r,uro:o
di prodotti vari come caffe, bibite, srgarette, ecc. Durante lunghi perrodi di tempo queste chine distributrici
macchine non fanno nulla, fino a quando un cliente
sì
avvicina, introduce una moneta e chiede qualcosa. Con
lo scopo di ridurre al minrmo il consumo di energia, si induce il microcontroller ad un sonno profondo, nel
À ^"^r^ rrludrc rd -"LUVTLd ( 'idotta notevolmente. ll PIC che è )ud d-++;"r+r in questo stato di riposo o di basso consumo, si suole dire che sta dormendo |
PD#
DC
*0,,
REGISTRO DI STATO
IRP RPI RPO TO# PD#
Z
DC
u: Non cqmbio :l
i
Registro
il
Molte volte r sistemi basati su microcontroller devono rimanere inattivi per molto tempo, aspettando che ---;- r-,,^.Àre ^,,-r-,,^^ rill floLLlo e ilil Lqrv r:so \delle mac_ \-.luolLullu lovvrorL. c)|es,tn L vuL)rv
u: Non combio ,otrl',
0 quando
valori che prendono i bit del registro di Stato, in accordo con lo stato del processore quando il WDT va in overflow.
REGISTRO DI STATO
IRP RPI RPO TO#
Stato va a
Respt e stato nrovocato dall'overflow del WDT. Nelle figure annesse possiamo apprezzare la differenza dei
di Stato dopo il debordamento del Watchdog quando il processore e in stato di "riposo".
c
PAROTA DI CONFIGURAZIONE
Struttura interna della parola di configurazione.
Per produrre questo stato di relax, basta eseguire ì'i-
struzione SLEEP Pertanto si ottiene che l'oscillatore principale e le linee di l/O si congelano mantenendo il <rr^ (f:tn
nrororlonto
Per togliere il processore dallo stato di riposo esisto-
no due alternative: attivare esternamente il piedino
zioni del programma non possono essere lette,
al
'1
contrario. se CP è il programma memorizzato nella FLASH si puo leggere. Con i due bit meno significativi, FOSC0 e FOSC 1 , si determìna il tipo di oscillatore che ulilizza il processore, secondo la seguente cod if rca:
MCLR#, o fare in modo che il Watchdog vada in overflow, se è rimasto attivo quando si entra nello stato di riposo, visto che non si eseguono istruzioni e non riceve refresh. Un'altra possibilita per togliere il processore
1
I
RC
dallo stato di riposo, consiste nell'annullare l'alimentazione per ricollegarla nuovamente, producendo un Reset POR.
'
r
:
'
',
'
'
La parola di configurazione occupa una posizione speciale della memoria di programma FLASH, la direzione ll, icui '14 bit regolano le funzioni vitali del pro-
2007
.pssore l'oroanizzazinno di nrrpstn indirizzo
della
memoria è presentato nella figura.
|
XT
0
10 bit meno significativi, denominati tutti
CP
(Codrce di Protezione), sono incaricati di proteggere l'accesso alla memoria dei codici. Se CP è 0le rstru-
ll bit WDTE abilita o disabilita il funzionamento del Watchdog. 5e il WDTE è a 1, il Watchdog entra in f unzione. In ultimo il bit PWRTE# abilita il temporizzalore PWRI che ritarda di 12 ms il Reset per POR, per dare il tempo alla tensione di alimentazione di stabilizzarsi. Se PWRET# è a 0, lavora come temporizzalore.
Sono quattro posizioni della memoria
PAROTA DI IDENTIFICAZIONE
2000H 2001H 2002H 2003H
ro Nelle parole di identificazione sono validi solo i
n o induizzi compresi f ra la 2000 H e la 2003 H. Sono solo accessibili in lettura e scrittura durante rl processo di memorizzaztone del programma.
FLASH che occupa
4 bit meno srgnificativi
Dei '14 bit della parola di identificazione, sono validi solo i 4 meno significativi, e rn essi, il programmatore puo scrivere codici
di identificazione, numeri di serie, dati sulla fabbricazione, modelli, ecc. Nella figura si possono notare i bit validi per ogni posizìone.
P39
Che cos'è
un interrupt? '-r't
una fermata del programma in "
' '" "
,+ÉrA=É,i:i
;ft,
:
f:<o lzinnnlc, nar ..1+.r^ roJE fli ur o<err LJLLU4lul Pcl )oltdlc
a
realtzzare una routrne spe-
PROGRAMMA PRINCIPALE
crale che riguarda la causa che
ha prodotto l'interrupt. Una ,,^r+-^*^r^+-+ro rOutine dediCata vutLc LUt I tPtE tc Lq rall'interrupt si rìtorna al punto di partenza del programma principale. Si puo CALL SUBROUTI
dire che l'interrupt ha le stesse consenrpnTp d, rrna "rhi:mata a subrouti-
ne". Quando in un programma troviamo 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. l'imnieoo delle srrbroutine evita di ripetere nei programmi alcuni procedi-
menti di uso frequente. Invece di ripeterli tante volte quanto serve, si scrivono una volta sola in forma di subroutiI
^--^^^ tc, d Lur,i .i)r dLLcuc
î++rî,,^,-^
oLU ovcr)u
Operatività di una chiamata a subroutine
i:!i
PROGRAMMA PRINCIPALE
,,^-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 rottura 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-
RETURN
struzione CALL. Un rnterrupt è una rottura "asincro-
na" del flusso di controllo. Non si sa quando avviene perche le cause dell'origine sono dovute a circostanze non
Un interrupt è un awenimento asincrono che si produce in modo imprevedibile.
'?;i:{:1:1r1
,t"l
previste nelle istruzioni del pro-
PROGRAMMA PRINCIPATE
gramma. Ad esempio, una causa che provoca un Interrupt
:l
nrnressnre e l'ettivazione mediante un livello logico alto, di un piedino del microcontroller. Orrpstn livplln altn ootrebbe YULJLV essere prodotto da un comparatore, che riceve come ingres-
RILEVATORE
DESTRO
f_
RUT SX
so il segnale analogico di un sensore di temperatura; il vaio"^ ...l^l tc )c9trdrE uct .^^^-l^
hId
.,,^^"-+^ )uPcrdru
1
i
RUT DX
RETURN
lrd
tersione di riferimento, perche la temperatura a sua volta ha superato la soglia prefissata. ll valore della temperatura varia in modo imprevedibile
:
i
RETURN
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 ed efficace del microcontroller per il trattamento degl
che cammina, mostrato nella figura, con una coppia di
eventi del mondo esterno Se oualche oarametro o circostanza ha influenza sullo sviluppo del programma, l'rnterrupt è il mezzo con cui il microcontroller lo qestisce immediatamente. La parte di programma dedicata alla gestione di questo evento si chiama "routine di interrupt"
rilevano gli ostacoli sulla traiettoria. ll microrobot a sei gambe e controllato da un microinr:ri rnnirnllor rho o<on1o Jn 1n programma nrnnr:mm: pflnclpàte, nrinrin>la ilìLd|-
antenne frontali che funzionano come sensori e che
cato del movimento degli arti meccanici, per seguire una trarettona. Se ad un certo punto del cammino, l'antenna di
sinistra tocca un ostacolo, viene aoolicato un livello logirn :lin OU :À rrnn nlol LU OtLV UItV Àai UEt niorlini 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 applicato ad un altro piedino, e --"^l-.L.^ )dtcuuc L?
antenn:, o flli, front3li
'
-,':
lel
microrobot, funzionano come sensori per la rilevazione degli
ostacolr
tine
a+-+r -+- l)tdLd l-n:i tdilLtdLd td .^,, tuu-
RUT DX con un'altra strategia per aggirare l,osta_
colo sul lato destro, come si può vedere nella figura. In questo esempio si producono due interrupt differenti, perché ogni antenna del microrobot fa riferimento ad un piedino diverso del microcontroller, questo permette i salti a due routine distinte.
dalla subroutine,
o dalla routine di interrupt, come
espresso graficamente nella figura.
Lo Stack è il luogo dove si depositano temporalmente gli indirizzi di ritorno al programma princ
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 quelli scaricati in uscita verso il PC sono ancora quelli
tl, t
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 r rn' j5{pg7 jgpg ci sJE9uE oconr ro url Ituuu duLUrroLrLU,9ucruv CALL, o quando si origina un interrupt. Anche lo scarico del livello 'l dello Stack sul PC avv ene in modo automatì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
, Lo Stack ha una struttura LIFO. L'ultimo dato cartcato nel livello 1 sarà il primo che uscira
, , '
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 ritorno. N/olti Stack con un numero di livelli limitato, dispongono 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
14, 5i origina I'intenupt e viene acquisito dal processore.
Interrupt, come mostrato dalla figura. ll vantaggio di disporre di tanti vettori, sta nel fatto
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'indirizzo 0004H della mappa di memoria del programma, invece il Vector di reset contiene l'induizzo 0000H. Orro<tn ,,,,r,,__ imnlir: rhe l'inizin dol nrnnr:n r,_y,_,,lma pfln_ cipale avvenga all'indirizzo 0000H, e che quattro rndirizzi dopo, inizi la routine dedicata all'interru pt.
il programma principale "coprirebbe" le istruzioni della routine di interrupt, per evitare questo si colloca in entrambi i vettori un'istruzione di salto incondizionato GOTO, che trasla l'inizro del programma principale e della routine di interrupt ai punti corE chiaro che
retti.
In generale, all'rndirizzo 0000H, si colloca un salto all'indirizzo 0005H, salvando ìl Vector di interrupt. Normalmente i'inizio di un programma per il PIC è fatto
Tabella con 256 vettori differenti di interrupt, propna di alcuni processor; di
come rl seguente:
che si possono trattare in forma differenziata le distinfo a2rrca rho nonar:nn
goto
tntzt0
iu!u1aìììììììììììììììììtùltrtuìtaiuiu:nt!t
inizio;
bsf
All'indirizzo 0 c'è un'isfuzione di salto a "inizio"
5TATU5,5;
Prima istruzione del programma principale
INTEL.
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. La prima cosa da fare sarà verificare quale sia stata
l: r:tt<: doll'intorrr rnt nar derri:ro il flrrccn nli _, programquella ma alla routine dedicata a determinata causa; per questo ogni diversa causa di interrupt dispone di rrn fl:n dodir:fn
Utilità delf interrupt 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 vedere dalla figura. Uideale sarebbe che quando il sensore chiude i suoi contatti, il processore abbandoni il programma principale in esecuzione per entrare in una routine specralizzata, che ad esempio lo faccia retrocedere di un centimetro, girare di 90', avan-
ll tempo che deve trascorrere fra l'attivazione del sensore e l'esecuzione del programma specializzato nella manovra anti-ostacolo, deve essere minimo. La
.i,'ll'T
.
._-
-.
fi
cosa migliore
è utilizzare un interrupt, per questo
,.:*Í:!211Hi$i*1]*i$llliiì"lfill;;a,
ffi
" :::
i ;:;::.: .,:.
:,
:
:.,::
ì
.
ll finecorsa anteriore serve per rilevare qli ostacoli
è
necessario progettare un circuito per fare in modo che subito dopo che ilcontatto difinecorsa siè chiuso, arri-
"
': 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 fìgura. Utilizzando un interrupt, nello stesso momento che il f inecorsa rileva un ostacolo, si attiva l'interrupt con la routine associata ad esso. L altro modo consiste nel col-
2o) Nel PC viene caricato il valore del Vector di
intenupt che è all'indirizzo
00M H, dove inizia la routine dedicata all'interrupt.
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 principale, un'attenzione non immediata alla situazione visto che la CPU nel programma principale realizza anche
altri compiti oltre all'ispezione della linea di ingresso che fa riferimento al sensore. Uinterrupt è il metodo più sicuro, rapido ed efficace, per reagire agli eventi esterni che influenzano l'elaborazione del programma princìpale.
Dooo aver completato l'istruzione in corso di esecuzione, se il PIC accetta un interrupt, sviluppa i seguenti oassi ooeratìvi:
[a routine dedicata all'interrupt inizia tealizzando due compiti importanti:
4o)
a) lndaga sulla causa che ha generato l'interrupt, e per fare questo controlla i flags
b) Scrive nella memoria dei dati RAM, area GPR i valori di alcuni reqistri del processore, con i valori relativi al programma principale. Nel caso in i:ui questi registri fossero utilizzati dalla routine di interrupt, i loro contenuti subirebbero delle modifiche, e al momento di toinare al programma principale non si disponebbe più delle stesse informazioni di quando lo si era lasciato.
lnlerrupt il.rîr;:itr,î PC+-UVELLO
PC
<-
I
r overflow iltemporizzatore
TMR0. tlsuo contenuto pasu
TSTACK)
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 Sqlvo i vqlori dei registri
Una delle difficolta intziali che presentano queste rnzinni ò rho y--,-, nrr:lrrn^"^ --".- cne -L^ l^na oflgtnaìque std "i. l.ta causa to l'interrupt, la routine dedicata inizia sempre all'indirizzo del Vector dr interrupt che è lo 0004 H. Altri processori dispongono di un Vector di interrupt per ognl causa che li produce, con il PIC 16F84 non c'è altra
2e
fr
3e Risolve lo cquso
RETF;E
PC-<-UVELLO|
(STACK)
soluzione che inrziare indagando quale sia stata causa dell'interrupt, testando i flags corrispondenti,
la e
indirizzando il processore alla routine corretta. FINE
i,,,,,.,,..",..,,.,....
i ".,..".,..,..",..".",..,,..,,i
Organigramma del trattamento di un interrupt nel PlCl 6F84.
l.
i
.l
tl''i
: : í t;i i' ; :,.'i
i'1
1..1
i:, 1.
:,'i. irj
i
i:.i:i'il:,X,
i í:
t:'
A volte molti programmi non necessitano di interrupt, e quindi non li usano. Per oresto mnf ivn deve esistere Una Chiavp ncnpr;le che permetta o proibisca gli interrupt nel loro insieme.
ii.j:i,ir í::! j. :.:i'; Í I i;:iii,r ì.r :i
Ci sono quattro cause che possono generare un interrupt nel PlC16F84;
Nel PIC 16F84, esiste un registro di controllo dell'area SFR della RAM, chiamato INTCON, che regola il funzionamento degli interrupt. ll bit più significativo di
:J:
INTCON
t-,".-"--"----.-"="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
"i
E SF,ffi,gè
tazione, che deve essere attivato se si desidera che al prodursi dell'interrupt, il processore lanci le fasi del suo sviluppo. Nell'organigramma della figura, si approfondiscono le operazioni dello svìluppo di un interrupt, tenendo conto della funzione del bit GlE. Nella figura possiamo osservare che quando si accetta un rnterrupt, il processore pone automaticamente GIE = 0, per evitare che durante l'elaborazione della routine dedicata a questo interrupt, se ne produ-
.-l-
Inlerrupf
p€+_
STACK
GIE=0
PC= 0004
cano altri nuovì.
{Vecfor di inferrupt)
Rouline di servizio
dell'interrupt
(RSI) iu
Compìetata la routine dt interrupt ed eseguita l'ultima istruzione RETFIE, che è quella di ritorno al programma principale, iì bit GIE riprende il vaìore 1, dato che ritornando al prìncipale, bisogna fare in modo che gli interrupt possano nuovamente essere accettatt.
5i memorizzo i 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 di inierrupt
Ritorno
PC+
ilflog di interrupt
(RETFIE)
STACK
ir .i
Gie= I
= il Organigramma dello sviluppo dr un interrupt tenln!1 co,nt1
INTCON
è
dell
funzion.e di
GIE_
chìamato GIE (Permesso Globale di
Interrupt). questo bit e si pone GIE = 0 tutti gli interrupt saranno disabilitati, e il processore non ne accettera nessuno. Al contrarìo se scriviamo GIE = 1 il processore accetterà qualsìasi interrupt che si genererà, e ll programmatore potrà lavorare con essi. Ogni interrupt dispone di un bit partrcolare di abiliSe si scrive
;,: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 glì avvenimenti che succedono nel mondo
ll piedino RB0/lNT puo generare un interrupt quando ad esso viene aoolicato un fronte di salita o di discesa. Un f ronte di salita consiste nella transazione di tensione dal basso verso l'alto, mentre un fronte di discesa e la transazione inversa. Per selezionare il tipo di f ronte, il
esterno.
Orrpctn intprrr rnt YvLJ(v
c sunnortato dal
nipdinO 6 del microcontrolìer, e si chiama RBO/INT. Si tratta dr un pie-
del bit INTDEG, situato nel registro OPTION, che PIC'16F84 dispone
INTCO N
I'inriirizza R1 h del banco 1. Quando INTDEG = 1 il fronte attivo sarà quello di salita, mentre quando INTDEG = 0 il fronte attivo sarà quello di discesa, come indicato nella vLL u vu ^(^.ttrlA
fig Per fare in modo che il piedino RB)/INT supporti richieste di interrupt esterni, i bit GIE
e
INTE
devono valere
u
ra.
Lo schema elettrrco riportato nella 1
figura della pagina seguente, corrisponde ad un generatore di fronti per attivare il piedìno RB0/lNT. Ulilizza due porte invertenti 74L504 che, grazie al particolare collegamento, costituiscono un filtro antirimbalzo per il pulsante del circuito. La rete R-C con-
dino multifunzione, che puo essere utilizzato in due modi differenti. In primo luogo puo funzionare come linea di ingresso/uscita digitale (RBO), nel qual caso si comporterà come ingresso se nel bit O del registro di configurazione TRISB avremo caricato un 1, mentre
trolla la durata dell'impulso che contiene i due tipi
sara un'uscita se nel suddetto bit avremo scritto uno 0. lnoltre può f unzionare come linea di richiesta di interrupt esterno (lNT). Per fare in modo che questo piedino possa ricevere la richiesta ester-
f
ronti.
OPTION
intprrr rnt dpvp pssere abilitato
na di per questo lavoro, per questo scopo necessarìo mettere a 1 il bit di Permesso Globale di lnterrupt, GlE. Inoltre bisogna abilitare anche il permesso particolare di questo inter-
è
rnt mettendo a 1 il bit INTE. "
rr '-F',
Sia GIE che INTE si trovano nel registro INTCON che occupa l'indirizzo 0B H del banco 0 e il correlativo del banco 1, come illustrato nella figura.
7
t
at
INTDEG=
0
I \-'|
. INTDEG=
0_-!l-
ll bit INTDEG del registro OPTION determina il fronte attivo sul pin RB)/INT.
di
'.1
,.:
:
p 43
bit INTF = 1 . Nella figura è mostrata la logica 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
N4r48
I
PUI.SANTE
Logica di controllo corrispondente al circuito di generazione degli interrupt esterni.
DI RESET
I
4
I
Dentro la ruotine di interrupt e prima di
ritornare
al programma principale, il
Circuito che genera l'impulso di una durata determinata, per provocare
interrupt in modo ciclico.
struzione
di ritorno
RETFIE,
torneremo
Onni vnlfa rhp ci nenera Un fronte attivo Jvr srrl nin vrr per RBO/INT programmato ricevere interrupt, e questo
bcf
OPT|0N,
intdeg
INTDEG = 0, fronte di discesa
yiono fl:^ inrrrir:in vr!rrL nonor:tn urrrruV lllLollLoLv Ài ul cannrllyp )EVIlOlols n1o(t: VLrrLruLv, rrn Vuq)Lo situazione si oone automaticamente a 1 . Si tratta del flag INTF del registro INTCON come mostrato nella figura. Da quanto esposto sinora deduciamo che per fare in modo che si produca un interrupt esterno, e neces-
bd
|NTCON,
gie
;GlÈ = 1, Permesso Globale di Interrupt
bcf
|NTCON,
intf
;INTF = 0. Ci assicuriamo che il flag sia a 0
I
sario che il bit GIE RBO/INT riceva un
= 1, che il bit INTE = 'l e che il pin
fronte attivo. Tutto questo fa
sì che il
INTCON
7
pro-
grammatore deve necessariamente riportare il flag INTF = 0, altrimenti subito dopo l'i-
SEGNAIATORE
4
ll bit INTF è un flag che viene messo automaticdmente a 1 quando si produce l'interrupt esterno
a
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'ambiente 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 in una tensione capace di attivare uno dei piedini di interrupt che ha il microprocessore, awisandolo dell'evento che si sta verrficando. La risposta della CPU e immediata: sospende l'esecuzione delle ìstruzioni del programma in corso, salva in una zona della memoria chiamata STACK l'rndirizzo di abbandono del programma e carica nel PC un indirizzo determinato a cui salta per eseguire una routine che sarà incaricata del trattamento e risoluzione del problema che ha generato l'rnterrupt. Nell'esempio che abbiamo commentato, la routine che fa riferimento all'inter-
rupt, potrebbe ridurre l'ingresso del combustibile
ll processore INTEL
dispone di uno straordinario meccanismo di interrupt.
lo 8085, che è stato commercializzato dal 1976 e ancora oggi è uno standard industriale. Dato che il fabbricante oriento l'8085 al settore dei sistemi industriali dedico un insieme di cinque piedini
per supportare le richieste di interrupt per I'hardware esterno. Questì piedinr sono:
RST 7.5
al
forno rn modo che questo si raffreddi e la temperatura torni a valori adeguati Nel momento in cui si abbandona questa routine, si ricarica I'indirizzo di ritorno dallo STACK, e si torna ad
eseguire
le istruzioni del
R5T5.5
programma principale dal
nrrntn in rrri lo si e :hbandOnatO
i-^^.+-^-r
|Ld- ,.^.inip"rrrnt ri<,iede nella lOfO ruPL rr)rquc vEto riltvwt torr4o dpnli uE9il ilitE .-^;,1 . ,.li ..i .^^--li. +'.,-. -^-,,^;-.-i^^^ l)lLo E)tq 'dp,ud LUlllul llLdzlul lc ui ^,,.1. ^.+^" 9udl)rd)l ol iul lldllc
na che succede nel mondo reale al processore, in modo che ouesto oassr al loro trattamento. La rilevazione di qualsiasi anomalia quando sr usa un interrupt, provoca ii trattamento immediato delJ'anomalia stessa, medranie 'esecuzione d ;r'a rout ne preposta peryisolvere la
,,.
mediante ifrontie altri con livelli. Inoltre ognuno ha un propr,o grado di prio.ta. la orio'ita oiu ai[a e del TRAP a cui seg.rono, in ordine decresce.îe, la RST 7 5, RS' 6.5, RST 5.5 e INTR. Questr interrupt si classificano in due gruppi
mascherabilì
e non mascherabili. Quelli che sono
d essere gnorati dalla CPU quando vengoîo attivati, nel caso che un bit sper:le sitrr:to in rrn reoistro di controllo sia stato messo mascherabili hanno la proprieta
srtuaztone.
'
Alcuni dei piedini di interrupt dell'8085 si attivano
':
INTEL, rl pion,ere dei rrrc'oprocessori e fabbricante dei
Pantirrm rho onrrin:nni:nn i nn<trr nor<nn:l anmnrtAr ha implementato in essi un meccanismo di trattamento degli interrupt eccezionale, la cui flessibìlità e varietà lr rendono i oiù ootenti del mercato. INTEL fabbrica anche microprocessori che gestiscono dati a otto bit. così come il PlC. Si tratta del model-
a zero.
Questa caratteristica permette
al programmatore,
scrivendo e cancellando questo bit, di accettare o ignorare l'interrupt in parti vitali del programma.
Gli interrupt dell'8085 sono vettorializzati, il
che
suppone che quando sono accettati ognuno carichi sul PC un indirizzo specifico della memorìa, origrnando un
servizio della fonte di alimentazione alternativa o delle :rz ^ - oi* à;l# X E A c J JIw ú '-: >fIUlccYoÌCil<;<<<dd ^
batterre di sicurezza.
>^
t
-lolq
ú e6 N-
^ -
<{d <
RST 7.5
ll piedino che attiva questo interrupt è sensibile al f ron-
ooÉ^€ó{ó*-ooóA€ol4ònóófió-nróqn&1À&^NÀNtu
te e gli corrisponde un vector il cui indirizzo e 3C H. È un interrupt mascherabile, che puo essere ignorato quando il bit di maschera situato in un registro di controllo e messo a zero. Ha una priorità inferiore a quella
I Y'
tó
o*N-toooo
etó€s9À@ LJ
U LI L' U U U IJ U UU U U U U U U U U U
RF O d ú o ú dt< O - N ó e 6 6 È o x- x :) O O; { o o *l> ó O ó ó ó O O O -o O 6 -'c( -- > p ZIZ 664-'
del TRAP RST 5.5 e RST 5.5
Diagramma dei piedini dell'8085
i
salto del flusso di controllo a quella oosizione dove si suppone inizi la routine che riguarda detto interrupt. Nell'8085 ogni piedino di interrupt dispone di un suo proprio induizzo vettorializzato, così si differenziano le diverse cause che provocano gli interrupt e si assegna ad ognuna una routìne indipendente.
Nel microcontroller PIC esiste solo un Vettore di interrupt, che ha assegnato I'induizzo 4 della memoria di codice, per tutte le cause di interrupt. Qualunque interrupt che si produca nel PlC16F84, fa sì che il PC passia puntare I'indirizzo 4 e ad eseguire il programma che inizia in questa posizione. Generalmente nell'indilzzo 4 si usa mettere un "goto" all'induizzo vero di inizio della routine di interrupt. Dato che le cause che provocano gli rnterrupt possono essere diverse, il loro trattamento deve essere fatto in modo individuale, per questo all'inizio della routine di interrupt in un PIC inizia la verifica di cosa ha originato l'evento in modo da poter scegliere la routine corrispondente. {:i *. *
i.
{ìÌ H i:
ii *. + i"i
E
*
t+
i' +li:È:
g,
ft
5t
;s 5 È..{
t
s:
E
J {+
PF *É'iF-
l4 il hl "i i.l l,} ii L L $i*;Ìr
*|,{ {.i I'd,.x H i'j
f
i:
TRAP
tratta di un interrupt non mascherabile, quindi la CPU lo accetta sempre indipendentemente dallo stato del bit di maschera. A questo corrisponde un vector che indirizza il f lusso di controllo alla posizione di memoria 24 Hex. È sensibile sia sul fianco sia al livello. F otiello di maocrior nriorira di ronsenrrpnza se arrivano diverse richieste di interrupt contemporaneamente, il TRAP e il primo che vrere gestito Generalmente e Si
impiegato per far fronte a situazioni estreme, come la mancanza di alimentazione. che 0ermette l'entrata in
à.;ii:,,{eÈÈ?:f=s=c?+;rtgEE+aet+È
r**+eÈ:,t:,-rr,lr+;rii]4F +;!Ír;':'+"ii!fÈ::,
Entrambi i piedini si attivano quando viene applicato un livello logico alto, che deve essere mantenuto fino a che la CPU non lo accetta. La loro priorità e inferiore alla RST 7.5 e i vector che hanno assegnatr sono al 34 H e 2C H, rispettivamente. i .:
,l 'l
r: - - :-.
:r
i1 Ì ir.r il f it i:.. í
j
l_+
ì, Íri
INTEL, non soddisfatta dalle precedenti richieste di Intérn rnt LrLL,,,qr oqtorn: ,,= no ,la I introdotta una speciale, il cui meccanismo viene solo impiegato da questo fabbrican-
te, che permette di saltare fino ad otto routires differenti con il solo piedino INTR. Inizialmente INTEL ha rntrodotto nel repertorio di
istruzioni la chiamata RESTAR n, il cui mnemonico e RST n. Dato che n puo valere otto valori da 0 a 7, da orioino : otto rodiri ,^l; istruzioni corrispondenti a RST0, 1,2,3,4,5,6 e 7, ognuno dei quali e composto dai snli otto hit Fspnrrprdn nrpctp ictrr rzioni ci nrodUce Un salto agli indirizzi n x B, ossia, alla 0, B, 16,32, ecc. Dal programma, e in forma sincrona, si puo saltare a questi indirizzi di memorra, in ognuno dei quali si puo dare inizio ad una routine differente. INTR è il piedino di richiesta di interrupt mascherabile di priorita minima. Quando la CPU genera due cicli del bus di lettura, iquali sono attrvati indicando il piedino INTA (Riconoscimento di Interrupt). Nel secondo dei cicli, la CPU legge gli otto bit presenti nel bus dei dati (DO-D7) e li interpreta come il codice dell'istruzio(orr ronto no ,L JLyuL, ,LL rho !, ,L dovo ucvc e Se 1
QUI[e
.
Se il codice che introduce tramite il bus dei dati
il
richiedente corrisponde con uno degli otto dell'istruzione RST n, si produrrà un salto agli otto indirizzi possibili ln x B). Questo fa sì che il PC si carichi con uno degli otto induizzi e inizi l'esecuzione della routine applicata a partire da esso.
finterrupt per overflow det TMRO ':' :.'i
'
:,i.1
:,,::
::i
i
La misura del tempo è uno dei lavori piu comuni nelle i^r,,-+fiali. -^^ri---i^^i il il ruu)t cl.rpilLo4rur Nella fotografia è mostrato
un robot scalatore a
sei
qam0e, ^-*L-^ ^^. lper ra --l^l-+,, saroaTura
1n
verticale nelle costruzioni navali (REST) dell'lstituto
delle Automazioni Industriali del CSIC, nel quale la lemporizzazione nel movimento delle sue articolazioni è fondamentale per
'l'esecuzione dei suoi comprtr.
In una sequenza
dr
tempi all'interno di un processo chimico si puo apprezzare l'importanza e ìa necessita dei temnoriz-
zatori. Durante dorio :nriro uLvL uVrilL
3
ms
si
1162 pl6ff16r,rl urru LrLLrrUVdl-
vola per aggiungere determinato prodotto
un ad
una miscela in preparaziono Alln (toqq.\ tomnrl ''rJ Pef
un periodo di 2,6
ms,
un'altra
elettrovalvola :^.,-\ -++i.,-+- per ^--^-^ uuvrd essere druvdLd inserire una certa quantità dr un determinato liquido nella miscela. Dopo 20 ms .li :ttoq..a noro<<:ri "------,, per
miscelare entrambi i prodotti, si procede allo scuornc+r timont^ nor 1) r- 6q rrrJ. n; LilrrLrrLv VLr VUtr)LO c urd )tr\-1ucr rzd ourLUdrc
Robot scalatore a sei gambe per la saldatura Ìn verticale nelle costruztoni navali (REST) (lstituto dell'Automazione lndustriale del CSIC).
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 puo vedere la strategìa impiegata dalla CPU nel contonnin dal tomnn
Èoa
Anche se la CPU ouò realizzare il comoito di misurare il tempo senza alcuna difficoìtà, mentre esegue questo lavoro non può fare altre cose. Di conseguenza, destinare il processore alla misura del tempo significa privare di supervisione e di attenzione il programma principale. I temporizzatori sono contatori che si caricano con un determinato valore all'inizio del conteggio, e automaticamente si incrementano o decrementano fino ad arrivare al massimo valore o arrivare a zero, momento nel quale comunicano l'accaduto al processore, che nel frattempo in parallelo può eseguire altre istruzioni del programma principale.
Fine
Organigramma tipico che presenta la strategia che segue la CPU quando si dedica alla misura del tempo.
nello sviluppo di un processo industriale, e in essa tempi sono un fattore fondamentale. ll processore può misurare facilmente il tempo; il controllo è effettuato in base alla frequenza dì funzionamento e al tempo che impiega ogni istruzione ad essere eseguita. Così, ad esempio, un PlC16FB4 lavorando con un cristallo di quarzo da 4 Mhz e un oscillatore XT, ha un periodo i
T = 250 ns. Per eseguire un'istruzione normale servono quattro periodi, ossia. 4 x 250 = 'l .000 ns. Le istruzioni di salto impiegano il doppio. Quando la
CPU si dedica a contare il temoo oeneralmente lo fa
ll temoorizzatore TMR0 è un contatore ascendente a B bit che oassa a 00 H ouando arriva al massimo valore di rnntenoio FF H Orrpsta ,,. tranSiziOne è chiamata OverYUL"
flow.
Nel caso del TMRO il suo valore si incrementa al ritmo degli impulsi di clock che sono applìcati al piedino RA4/T0CKl o tramite I'oscillatore orincioale ìnterno con la frequenza Fosd4. Quando il valore del TMRO passa da FF H a 00 H il flag T0lF, che è il bit 2 di INTCON, si pone a 1 automaticamente.
MICROCONTROLTER fer misurrr del tempo
IMPUTSI ESTERNI TOCKI
T.
,
TMRO
l'
INTC O N
IMPUI.SI INTERNI
FOSC/4
lngressi degli impulsi at TMR7 e situazione del flag al suo overflow.
in modo che il
Per fare
processore sappia quando
il
TMR0 va in overflow, deve testare frequentemente lo stato delfìag T0lF. ll check di questo bit suppone un'attenzione costante, quindi una perdita di rendimento. Per sapere immediatamente quando awiene l'overflow del TMR0 è molto più efficace generare un interrupt al momento ìn cui awiene. Per fare questo e necessario abilitare I'interrupt del temporizzatore, il quale implica di porre il bit GIE = 1, che è il permesso Globale degli Interrupt. e dopo attivare il bit di permesso dell'interrupt del TMR0, ossia, scrivere un 1 in T0lE, così come si vede nella fiqura della
n:nin; <onron+a ,,
, ,;.
, ,.t . , li Per calcolare il tempo che misura il TMRO, bisogna conoscere il valore che si carica inizialmente in esso, dato che e ttn reoistro che ncrr na l'indiriTTo '1 del banco 0 dell'area SFR della memoria dei dati RAM. Questo valore espresso in decimale, lo chiameremo N; ,
bisogna anche tener conto della frequenza di funzionamento de1 processore così come del range programmato per il Divisore di Frequenza, in caso di un suo utiliz-
zo. La formula che determina ouesto temoo
è:
4. Tosc
. (256 - N) . . Range del Divisore di Frequenza
Tempo =
Esercizio Consideriamo un PIC'16F84 funzionante con cristallo di quarzo da 4 Mhz. Supponiamo di caricare il TMR0 con
il valore decimale 56, il Divisore di Frequenza sarà assegnato alTN/R0 e sarà programmato con range di '1:32. Calcoleremo il tempo di misura del TMR0 sino al suo overflow:
Tempo = 4 .250 ns . (256 I
-
56) . 32 = 6,4 ms ,: :
t: : : 'l
:
La famiglia x86 di INTEL, alla quale appartengono i moderni Pentium, dispone di un meccanismo di alta qualità e versatilità per supportare gli ìnterrupt esterni. È interessante analtzzare le alternative esistenti nei processori più utilizzati e verificarli con quelli dei PlC. Per gli interrupt esterni la famiglia x86 utilizza due piedini: NMle INTR. Ognivolta che uno di essi e attivato con livello logico appropriato, la CPU ferma il flusso di controllo, sospende l'esecuzione delle istruzioni nel programma principale in corso, salva nello Stack l'indirizzo di ritorno, e salta ad eseguire una routine incaricata del trattamento della causa che ha oriqinato l'inrerru pI.
Esjstono 256 vettori di interrupt che danno accesso
a 256 routines differenti. Ouesti vettori sono indicati nella tabella degli ingressi che si chiama IDT (Tabella di Descrizione degli Interrupt). Questa caratteristica determina una differenza fondamentale con i PIC che dispongono di un solo vettore di interrupt per tutte le cause che possono originare una richiesta di interrupt. Nel PlC16F84 il vettore di interrupt occupa l'indi-
rizzo 4 della memoria di programma e dato che è comune a tutte le cause, il primo lavoro che realizza
["+
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
INTERRUPT
nar16,ó rE o c <om^r^ )qrrlPlg PsrLr
; -^,, LHU.
î..^++î+^LU oLLELLo
r'
r or pflorla arla, e quando avviene ha accesso tramìte il oaila
\/o.tAr vg!Lvr n ilryrsJJv z? dall: v innrocqn uEllo +:haìl: LouEìlo IDT.
Quando il TMR) va rn overflow il segnalatore T)lF si pone a 1 automaticamente e genera un interrupt sempre che i bit GIE e T)lE valgano 1.
la rouiine è verificare ouale di essa ha oenerato la rich iesta.
Nelle 256 routines di rnterrupt possibili nel processore x86 a cui si fa riferimento mediante gli ingressi della tabella lDT, ce ne sono alcune che sono destinate a risolvere sempre la stessa causa di interrupt Ad esempio, l'ingresso 0 della IDT è riservato per rìsolvere una routine che riguarda gli errori che si producono nel compiere le operazioni di divisione con le istruzioni DIV e lDlV.
ès&acÈ9eùatog6q 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 o6*€óltó*60(}('óo ,,! ,,* ** *f rl* v3s vfg trr vg5 r*, *l* lfi vst 0t* ètu t'90 va5 1{{ 3?t *f r*c lt 9lrg só3 09t Etr *8{ Y{d l|*t vgg gs* co9 6!t Fft Ytrtt vlt r{ x€ 9('s 99? Superficie vec Yef tlt Yff ,mf Hc g&a metollicq oaa vE ti* \.f; Mi XrÀ FrAE{l o(}g ó{rc stú 9t1 tr* Ygi 8a,s?f,i€rfY e{o óó{l vtt *n Dlt 1.rc s6f locff ó{t{, {'69 gtt *!* lta ert* Yflt Ytl v9ú
ag9e9g{lt*€ll9ó9 l./r,* r.i ve c Íe* @{e.Ílr €t &{ v*t 0? Ycf ù1Ù *1, $l{ E*ù0c{*cotsltocc t(:$lfta**lrf titt l* rf rratrlgl v* *t ot v* 3lr 0Íl oago<t{tG{rltr}o{'l}t y[e vt!||$a{&rre4}v*| ltt à! 9t t{ t{ t{.sral at*
i rrn,r,rì oi-;;";,::;:
t;t;r;;
:; : ;irr;;n;r;r*:: ;r',;
piedini riservati agli interrupt esterni NMI e INTR.
,',
È un interrupt asincrono perché non si conosce il momento in cui si origrna, dato che dipende dalle con,.Ji-;^^i E^ uor r-; ^-"-"-^tri del mOndO ut4tvtil
st
PorqrrrEl
esterno. I
'r
I
I
',',
|
'
ln un caoitolo orecedente abbiamo analizzalo il comportamento dell'interrupt INTR del microprocessore a otto bit 8085. Era capace di accedere fino a otto routines differenti. Nella famiglia x86 il piedino INTR puo dare accesso a qualsiasi deìle 256 routines che si selezionano agli ingressi della lDT. Quando la CPU accetta la richiesta INTR genera due cicli di bus dì lettura, il secondo dei quali realizza la lettura del valore binario depositato neglì otto bit meno significativi del bus dei dati (D0-D7). Questo valore e interpretato dalla CPU come ingresso della IDT con la quale risolvere la richiesta che arriva da INTR. ln questo modo, con un solo piedino, si possono utilizzare tutte le 256 routines di
interrupt possibili. L interrupt INTR è "mascherabile", questo significa che viene ignorata la richiesta quando il flag di maschera lF vale zero. Questo flag lF è indicato nel Registro di
stato insieme ad altri flag deì sistema.
Questa caratteristica ha la sua importanza nella costruzìone dei programmi. Generalmente medrante il piedino INTR la CPU si dedica alle periferiche e alle risorse secondarie. Se in un pezzo di programma principale si risolvono azioni fondamentali per il buon fun-
zionamento del sistema, non conviene che questo oezzo interromoa la sua esecuzione a causa di una richiesta a bassa priorità. Per evitare tali richieste si pone a zero il flag lF all'inizio di questa parte di istruzioni, proibendo gli interrupt in arrivo da INTR. Dopo aver completato la zona pericolosa del programma, si torna a mettere a 1 il flag lF con il quale si accettano nuovamente gli ingressi degli elementi secondari attraverso INTR.
Interrupt per cambio di stato in RB7:RB4 na delle quattro cause che generano l'interrupt del PlC16F84. è il cambio di stato logico in uno dei quattro ingressi più significativi della Porta B (RB7:RB4). Se ad un determinato momento in una di queste quattro linee, configurate come ingressi, cambia
INÎERRUPT
RB7:RM
RBIF RBIE
INTERRUPÍ
ATIR,E
CAUSE DI INIERRUPT
Quando cambia Io stato logico di una delle linee RB7:RB4 della Porta B, se i bit GIE e RBIE sono uguali a 1 si produce un interrupt.
inserire informazioni, facile da gestire. di ridotte dimensioni ed economico. Una tastiera molto comune è quella a 16 pulsanti,
configurata in una struttura matriciale composta da 4 linee per 4 colonne. I pulsanti sono situati sull'incrocio delle linee con le colonne, quando si preme uno di essi si chiude il contatto fra la linea e la colonna che formano l'incrocio controllato dal suddetto pulsante. Quando non ci sono pulsanti premuti, le linee sono elettricamente isolate dalle colonne. In pratica queste tastiere dispongono di 8 terminali di collegamento, 4 corrispondono alle file e si collegano con le linee RB7:RB4 della Porta B, che devono essere 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 informazioni dal microcontroller. Nella figura si mostrano i collegamenti delle file e delle colonne della tastiera con le linee della Porta B.
lo stato logico, il flag RBIF passa a 1, e se il bit di permesso di questo interrupt è attivo (RBIE =1) si genera un
interrupt. Come per le altre cause di interrupt, per fare in modo che l'evento sia accettato, è necessario che
R84
INGRESSI
il bit di Permesso Globale di Interrupt, GlE. sia a 1. Lo schema logico della f igura
esprime
VERSO
It
PIC
:
RB5
RBó
in modo graf ico quanto
IECIADO
descritto.
RBO RBI
RB2
/Ir I USCITE PIC
DAt
Questa strana causa
di interrupt
è
stata sviluppata per gestire al meglio le tastiere matriciali, molto diffuse nelle applicazioni con i microcontrol-
ler. La tastiera è un disoositivo oer
, COLONNE FI1I ' (uscrTE) (TNGRESST) .
:
Struttura e collegamento della tastiera matriciale ai piedini della Porta B del PIC
:
t
jtl.rtt'f:.i:,a
t::;tjl;,':t!,4+llli,;r;':rlt
Per esplorare la tastiera e rilevare il pulsante premu-
to si applica il
seguente metodo:
il
microcontroller
deposita nelle 4 linee di uscita digitali (colonne) un codice formato da tre livelli logìci alti (1)e un livello basso (0). Ad ogni scansione il codice sposta la posizrone del
livello logico basso in modo sequenziale, su ognuna delle 4 colonne collegate a RB3:R80. Quando non c'è nessun pulsante premuto, le file essendo isolate dalle colonne, sono "in aria" e introducono un livello logico alto, dovuto ad una caratteristìca costruttiva propria della tecnologia TTL. In questa situazione, quando si leggono gìi ingressi digitali, che sono le file della tastiera, avremo quattro uno. Nel caso
venga premuto un pulsante, quando
il
' ' 'r :iili:i$#' i.$ii.,* r r' ,.jr1.;r*
:. I :.:.1l.;,,O1
quattro livellì logici, uno attivo, inattivi, o altr. Se c'è un pulsante basso, e tre o premuto nella colonna che ha il livello logico basso, la fila di incrocio riceve questo livello, che arriverà su una delle linee RB7:R84. Se non ci sono pulsanti premuti, le file restano isolate dalle
lì,'..1',1:€È,:
Quando dalle colonne esce il codice
1 1
lo
tî
I
RB2
RBI
RB3
10,
se il pul.sa.nte premuto è E sulle file si ryceve il codyce 01
1
q,..F+ 3rt::È+::r;.i:.,+,ÉlÌi1Í +Èirt*rE+.ÌÉ !ÍlriìrÈ+.ÈÉ+;t+-4:,ilrri,r*/l
t
tIo ttt
I I I
o
RBI
RBO
I
7D
o
EE
I
ED
r
o
rro rot
I
EB
o
I
ltl
o
DE
rto lot
I
DD
I
DB
o
BE
I
BD BB
o
o
I
o
I
I
I
I
I
ttl lro
I
I
ror
I
I
ltl
o
7E
I
I
7B
r
I
t
77
O
I
I
I
87
r
o
I
I
D7
I
o
lor otl oìt olr ort
I
E7
Tabella dei codici per verificare rl pulsante premuto in funzione della presenza del livello logico basso nella fila e nella colonna.
f nas f RBó + nez f
t
R33 RB2
t
1ì11$ r r
naa
RBO
r
xB4
t
o r ,,1frÈ.-:l. o r .*a:.'"
RB3:RBO escono
I
r o
o {;,.,.1*-1.i-. r r o ril::*: :,,iì:+=:l.i o t
lì metodo usato per la rivelazione del pulsante premuto, ulilizza il livello basso come livello attivo, mentre quello alto è considerato inattivo. Dalle quattro colonne collegate alle uscite
CODICE HEX
{usclrE)
iilli* '' iiÍlì:*#' i:iiir${ijji r
: !;i.:,1, t,iii;: ;,,
A
.: COLONNI
o ' ijliilt'*É
crocio fila-colonna del pulsante premuto, per la fila corrispondente entrerà un livello logico basso, grazie al quale si potrà localizzare immediatamente il pulsante che è stato premuto, perché si orodurrà un interruot.
TASTIERA
alla fine il ciclo si ripete da capo. Dato che si conosce sempre da quale colonna si sta facendo uscìre il livello basso, basterà conoscere la fila da cui detto livello viene ricevuto per riconoscere il pulsante di incrocio fra fila e colonna, come illustrato nella frgura.
ijiili#iiili
livello
basso che esce dalle colonne, coincide con l'in-
I
colonne, ed essendo sospese in aria, si comportano come se su tutte arrivasse un Iivello logico alto. ll livello basso in uscita da una delle colonne, viene spostato in modo sequenziale da una all'altra, e quando arriva
1
li programma di scansione metterà ciclicamente nelle colonne i quattro codici che possiedono un solo livello basso: 0111, 101 1,1 101,'1 1 10. Per ognuno di questi codici in uscita viene verificato ouello rhe si rireve dalle file che f unzionano come ingressi digitali. Se tutti gli ingressi sono a livello logico alto, significa che nessun pulsante della fila da cui sta uscendo lo zorn à <t.rfrr nrtrmrrtn Nel momento in CUi vrene nremuto un pulsante, nell'ingresso corrispondente all'incrocio 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 stabilisca il oulsante oremuto in funzione della fila e della colonna che hanno il livello logico basso, come proposto dalla fiqura.
Per sfruttare i beneficr dell'interrupt, si collegano le {ir^,.J^rr+--+i^.^;.dini RB7:R84, che saranno con_ | ilc uEilo Ld)ucr o d-:I prc figurati come ingressi. I terminali delle colonne si collegano ai piedini RB3:R80, che saranno confìgurati come uscite. Sr pone GIE = 1 per abilitare gli interrupt in generale, e anche RBIE =1 per abilitare l'interrupt per
dalla ditta Ingegneria de Microsistemas Programmados S.L. per realizzare prototipi in modo sicuro, rapido e economico. Nella parte superiore contiene la circuiteria ausiliaria, insieme ad uno zoccolo a 1B pin, adatto a ricevere il PIC'16F84 con il programma memorizzalo. La parte inferiore e una zona libera con fori prestagnati ed
cambio di stato logico nelle linee RB7:RB4. Un semplice programma inserirà in modo sequenziale i codici con un livello basso sulle uscrte RB3:R80, che sono colleqate alle colonne Tutto qui. 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 dall'induizzo 004 della memoria di programma, e come prima cosa si verifica quale delle linee RB7:RB4 ha un livello basso. Con l'informazione della fila che ha rice-
^^-*^ri--^+^ d Pd>>U ttUttlldllLLdtU
r rr ri À L rnllon:f: LvilLyu(u rrn: urld trctinrr Ld)LlCld matriciale e un display a 7 segmenti. I collegamenti della tastiera seguono lo schema della tastiera mostrato in precedenza. <r
Ptctóx84
Schema del circuito descritto nell'enunciato del oroqramma.
,l
'
. ;
, ,
'
,",,
,
"'
a't.
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 controllare 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, Per fare
zinno rnrri<nnndonte
Cntlonsmpntn rli t tn Dla l6FB4 ad una taSttera. Le linee RB3.RB) sono uscite dalle quali esce rl codice binario, e RB7 R84 sono ingressì da; qudli si riceverà un livello basso se c'è un pulsante premuto
vuto un livello basso, e della colonna che in
quel
momento aveva in uscita detto ltvello, consulteremo la tabella mostrata in precedenza, per dedurre il pulsante premuto. ln commercio si puo trovare una scheda commerciale per prototipi, chiamata PIC 18-ME, progettata
,NN{s{r
Per ottenere la temporizzazione di 1 secondo, si carica il TMR0, con il valore iniziale di '12; in questo modo l'overflow si produrrà alla fine di (256-12) = 244 impulsi applicati al timer. Questi impulsi arrivano dall'oscíllatore interno del PlC, che funziona ad una frequenza di 4 MHz, pero divisi per 256 grazie al divisore di frequenza, rl che suppone una lemporizzazione dì:
Temporizzazione = 4 . 250 ns
.2M.256
= 62,4 millisecondi
'+i:ti,.t i:,i;iti l:;ì;.t1.,.,,.i41ii.{--.,r,ali:*iÍi,É r-lti#,f'1{i4r]:q,iurì"Lglt?a; lllirlwsiliriilw
MICROCONIROTTER Un interrupt molto particolcre
Dato che non si arriva ancora ad 1 secondo, si imnipna rnr^onfatore ausiìiario CONTA. che deve essere inizia-
Listato del programma con commenti
tlST RADIX W FEQUl
TMR_OPT
STAT0 P0RTAA P0RTAB INTC0N CONTA ORG goto ORG goto ORG inizio bsf clrf movlw mowvf movlw movwf bcf movlw mowvf movlw . movlw movlw mowvf ciclo btfx goto bcf goto ra0_'f bsf btfsc ralx goto bcf goto ral_'l bsf ciclo2 goto inter
decfsz goto conta_0 movlw mowrrf btfsc goto bsf goto rb7_1 bcf continua movlw movrvf movlw movwf retfie end
;Dhettive per Assembler
P=15F84 HEX
EQU EQU EQU EQU EQU EQU EQU
0
;Etichette
lizzalo con valore 'l 6 e si decrementa ad
0x0l
ogni interrupt
0x03 0x05
TN/R0, cioè
0x06
ms. Arriverà a zero in
0x0B
0xl0
del
ogni 62,4
;Contatore ausiliario
16x62,4ms-1
O
;Vector reset
secondo (approssimativa mente).
inizio
;Salto al vettore di interrupt
4
;Vettore di interrupt
inter
;Salto all'inizio della routine di interrupt
5
STAT0,5
;Selezione del banco 'l
PORTAB
;Porta B uscita
b'00000011'
;Configura
M0
Comporre un programma in linguaggio
Assembler per
e RAI come ingressi
PORTM b'00000111'
PIC
tore rnterno
;Seleziona il banco 0 ;Abilitazione globale per gli interrupt e per il TMR0
9Uqr4U
lato da un cristallo
STAT0,5 b'10f00000'
0xl0 ;Grico C0NTA con il valote 16 in decimale
C0NTA
0x0c TMR_0PT
;Carico TMR0 con 12 in decimale
P0RTM,0
;5e
M:
0 salto la prossima istruzione
ra0_1
P0RTAB,0
ralx PORTAB,0
I
PORTAA,
;Se RAO = I si porta RBO ;5eMl=0salto ;Saha se RAf =
ra1_l
I
P0RTAB,
=
1
1
;5eRAl=0,R8=l
ciclo2 ciclo
;5e RAI = I,RBI = I ;Ciclo infinito dal quale si esce per interrupt
CONTA,I
;Decrementa C0t'lTA e salta se vale 0
PORTA8,'|
continua ;5e (ONTA = 0 si carica con 16
0x10 CONTA
P0RTA8.7
;5e RB7 = 0, salta
rb7_1
PORÎAB,7
i
b"10f00000'
;5e RB7 = 0 si inverte il valore ;Se RB7 = 1 si inverte il valore ;Si dpristina ll.lTCON, interrupt disabilitati
INTCON 0x0C
;Si ricarica TMR0 con f 2 in decimale
TMR OPT ;Ritorno dall'interrupt
RA1
della Porta A saranno collegati due interruttori AeB,iquali devono essere testati contin ua m
;SeM0=0,R80=0 ;lest ru M1
di
,.1-,4 rVil rZ. UO A À,,tLJ-
Alle linee RAO e
INTC0N
P0RTAB,
6F84, il cui oscillasra contror-
;Configura il registro 0PTl0N
TMR_OPT
continua
1
il
ente,
e il
lo ro
stato (aperto o chiuso) riportato su due diodi LED A' e B' collegati
alle linee RBO e della Porta
RB
1
B.
lnoltre, un diodo LED sulla
altro linea
RB7 deve lampeggiare
in
continuazione con un tempo programmato di un secondo, cioè
restera acceso secondo
e
un
snento
il
SCCONdO SUCCCSSiVO. Questo serve per con-
trollare il tempo in cui awiene l'interrupt del TMR0 che è stato spiegato in precedenza.
IWCROCONTROLTER lnterrupt per fine scriilurei nellcr
EEPROITI
La delicata operazione
di scrittura netla EEPROM a EEPROM dei dati del
PIC
1
6F84 ha una capa-
cità di soli 64 byte, ma il suo pregio sta nella non volatrlità dei dati. Scollegando l'alimentazione, l'informazione memorizzata nelle sue
celle viene nantenuta; ouesta caratteristica
completata. non è possibile ripetere I'operazione stessa, ìnoltre conviene verrficare che non siano stati prodotti errori durante la sua realizzaztone, per questo test esi-
stp rn fl,an dpdirato npl rpnicfrn di rnntrgllo
della
EEPROM.
rondp nrroqta momoliS indispensabile in molte applicazioni commerciali. l-nmo ni: dotfn in nraee|,! sv, y,q
i1 t: tt ll 1: )l
::
denza. ogni indirizzo di questa
mpmoria nlro esqprc scritto ìn modo indipendente, anche se
la grande quantità di
tempo
GIE e EEIE devono essere é 1 per permettere un interrupt quando termina la scrittura della EEPROM e il flag EEIF passa a 1
I bit di permesso dell'interrupt
.
(relativo) che richiede questa operazione, a volte rappresenta un problema. Scrivere un byte nella EEPROM puo richiedere sino a 10 ms. Questo tempo è enorme, se comparato con la veìocttà di lavoro del microcontroller; per dare un'idea bastr pensare che un PlC16FB4 funzionante con quarzo da 4 MHz può eseguìre 10.000 istruzioni normali nel tempo in cui si scrive un byte nella EEPROM. ll tempo di scrittura di una cella della EEPROVI non è costante, dipende dalla temperatura, dalla frequenza di campionamento, e da altri parametri; pero questo tempo è critico, perche se non si compie non si riesce a
scrivere
in modo corretto ìl byte nella memoria, e
il
sistema resta degradato e inservibile. Pertanto è assolutamente necessario verificare con certezza che l'opera-
zione di scrittura terminì correttamente.
Così come ner le altre tre cause di interrr rnt nel PIC 16F84, l'interrupt per frne della scrittura nella FFPROIV psinp la oestione di tre bit: - GIE: Permesso Globale di Interrupt. - EEIE: Abilitazione dell'interruot oer fine scrittura nella EEPROM. - EEIF: Flag di fine scrittura della EEPROM Quando termina l'operazione dì scrittura di un byte nella EEPROM, il flag EEIF viene messo a 1 automaticamente. Sino a che l'operazione di scrittura non e stata
Per poter conoscere immediatamente la fine delle
operazioni,
è raccomandabile attivare un interrupt in
cur il processore verifichi che le procedure siano terminate correttamente e possa scrivere gli eventuali byte SUCCESSIVI,
I bit GIE e EEIE sono ubicati nel registro INTCON, mentre il flag EEIF si trova nel bit 4 del registro EECONl; questo flag viene messo automaticamente a 1 quando termina la scrittura. Dobbiamo considerare che quando si utilrzza un interrupt per fine scrittura nella EEPROM, all'interno della routine dedicata, prima dell'istruzione di ritorno dobbiamo porre il bit EEIF = 0, perche in caso contrario appena ritornati al programma principale si ripeterebbe la chiamata alla routine di interrupt. Nella figura e riportata la situazione dei bit che gestiscono l'interrupt per fine scrittura. Quando GIE = EEIE = 1, e termina Ia scrittura nella EEPROM, il bit EEIF si pone a 1 e si genera un interrupt. La routine dedicata deve esaminare se vi sono stati eventuali errori, testando il bit che lo segnala, e successivamente porre EEIF = 0 prima del rìtorno al programma principale. Una buona tecnica e verificare che sia stato scritto
nell'indirizzo voluto
il
valore corretto. Nello schema
logico della figura si mostra il modo in cui si genera un interruot oer fine scrittura nella EEPROM.
ill ICROCONTROLLER nellcr EEPROilI
INTERRUPI SCRITruRA EEPROM
zìone che sta controllando, come ad esempio un sensore optoelettronico che rileva il passaggio di un oggetto, si puo collegare direttamente l'uscita del sensore al piedino RB0 in modo che generi un interrupt. Quando il parametro è analogico, puo essere necessaria la sua conversione in digitale, mediante un ADC (Analog to Digital Converter), oppure l'utllizzo di un comparatore che cambi lo stato della sua uscita se il valore analogico supera una soglia determinata. Per chiarire al lettore la gestione degli interrupt sia nell'aspetto fisico che in quello logico descriveremo un progetto basato sul
EEIF EEIE
Schema logico che mostra il controllo della generazione di interrupt per fine scrittura nella EEPROM
Ptc 16F84.
. ,, ', . t': l':.,.,:,..,i:'i]."
I
ll microcontroller è in continua esecuzione del orogramma a cui è stato dedicato, il quale controlla molti elementi esterni che fanno oarte dell'ambiente di lavoro. Questi dispositivi sono influenzati dalle caratteristiche e dai parametri di molti fattori, sia interni che ambientali. Se ad esempio stiamo controllando un motore, la velocità di giro dell'asse è un fattore fondamentale per lo sviluppo delle sue operazioni, pertanto dobbiamo verificare continuamente che rimanga all'interno'di margini adeguati, un altro fattore fondamentale potrebbe essere la temperatura. Sia la velocità di giro che la temperatura sono valori di cui deve tener conto il microcontroller, e reagire immedìatamente in caso vengano superati i limiti stabiliti. Per poter rispon-
dere in modo immediato alle condizioni esterne, il microcontroller dispone degli interrupt. Nel caso del PIC
1
6F84 sono state descritte quattro cause che posso-
no oenerare interruot:
,'t."
't.'.:1,
Prendiamo in considerazione il progetto dì un allarme antifurto per un'automobile. Per controllare l'apertura delle quattro porte principali della macchina si utilizzano quattro sensori a contatto che saranno collegati alle quattro linee più significative della Porta B (RB4-RB7). Quando si attiva I'allarme, l'apertura di una qualsiasi delle porte genera un cambio di stato in uno dei pin RB4-R87, che saranno programmati in modo interrupt, originando il medesimo. La routine di interrupt ha il compito di attivare due sirene o altoparlanti di grande potenza, controllati dai piedini RAO e RA'l della Porta A del PlC16FB4. Ouesti elementi acusticì resteranno in funzione sino a che un sensore ad infrarossi riceverà il
comando adeguato originato da un telecomando a distanza. Questo sensore sarà collegato al piedino RB0/|NI, come mostrato dalla figura. Lo schema elettrico corrispondente all'allarme anti-
furto, è riportato nella figura alla pagina seguente, in cui sono stati aggìunti i circuiti ausiliari dr alimentazione, clock e reset.
2'. Che vada in overflow il fMR0 al termine di un periodo di tempo.
41 Che sia terminata la scrittura di un byte in una cella della EEPR0M.
Quando si progetta un'applicazione si deve adattare una di queste possibili cause di interrupt alla grandezza esterna che si intende controllare, per intervenire su di essa immediatamente. Nel caso di un sensore digitale, che cambia rl suo stato logico alvariare della situa-
Schema generale del sstema di allarme antifur-to.
P50
Nelì'allarme per l'automobile abbiamo un programma principale che si SIRENAI
occupa
SIRENA2
adattarle alle periferiche, dopo di che entra in un ciclo dr attesa da cui non esce se non si attiva l'allarme per l'a-
frqA A,-
Itlv\Ar
27pF
pertura
di configurare le porte
per
di una porta, o si scollega
l'allarme. Queste piccole operazioni, si riflettono nell'organìgramma della figura. L'implementazione, con le istruzioni del PlC, dei blocchi che compongono I'organigramma, si realizza con
i+PoRrA4 '#PORTA3 t+PORTA2 1'+POnrAt SENSORE AD INFRAROSSI
i <onrrpnti n:<<i' Per chiarire la programmazìone del
Schema elettrico semplificato dell'allarme antifurfo
Un buon programmatore ha la capacità di ordinare ìl lavoro di sviluppo in parti, o moduli, di piccole dimensioni. In questo modo al momento di scrìvere le istruzioni farà nferimento a piccoli moduli, facili da eseguire e da capire, e rapidi da editare. Por rennrpqpnlartr comodamente la divisione deì problema da risolvere è fortemente consigliabile utilizzare gli organigrammi.
regrstro INTCON per l'abilitazione
2". Definizione di inizio del programma principale e inizio del ptogramma di
4". Configurare la pora B (ome ingresso.
6". Attivare i bit di permesso dell'intenupt, il bit di permesso globale, quello di intenupt esterno tramite RBO e quello per il cambio di stato nelle linee RB+RBi,
degli interrupt, riportiamo nella figura Ia struttura interna del medesimo. Nella pagina a lato svilupperemo il programma di allarme, con i gruppi di istruzioni divisi nelle parti prìncipali di cui è composto.
€onfiguro porle
Ciclo
!ip'
Allorme?
Rouline
di interrupt
Organigramma del programma principale
Struttura interna del registro di controllo degli interrupt INTCON.
TWCROCONTROttER Interrupt per fine gcrlftura nellei
EEPROilI
PROGNAITTffIA PRIIICIPA1E DI AII.ARThE
Definizione delle caratteristiche e dei registri del LIST
P=16F84
RADIX
HIX
W
EQU EQU EQU EQU EQU EQU
F
STATO
PORTAA PORTAB INTCON
PIC
0 1
0x03
0x05 0x06 0x0B
Definizione degli indirizzi di inizio del programma principale e della routine di interrupt ORG
0
goto
inizio
ORG
4
9oto
inter
ORG
5
Configurazione delle porte di ingresso e uscita tntzto
bsf
STATO,5
movlw movwf movlw movwf clrf clrf
b'0000 0000' PORTAA
b'1111 1111' PORTAB PORTAA PORTAB
Bit di abilitazione dell'interrupt
ciclo
movlw
b'r001 1000'
movwf goto
ciclo
INTCON
Programma principale
inter
allarme
sirena
btfss
INTCON,O
goto goto
fermare allarme
clĂ&#x2030;
PORTAB
movlw movwf
b'l001 1000'
bsf
PORTAA,O
INTCON
NOP
bcf
PORTAA,O
bsf
PORTAA,l
NOP
fermare
bcf
PORTAA,l
goto
sirena
clrf
PORTAA
bcf
PORTAB,O
movlw movwf goto
b'1001 1000' INTCON
end
ciclo
;Ciclo infinito in attesa di
interupt
,;.
5r
fimportanza del consumo bbiamo un distributore di bibite in mezzo alla spiaggia. Ha avuto una buona accocesso. Pero lr non abbiamo una presa di corrente, e il distributore deve funzionare con una batteria, o delle pile ricaricabilr. Evidentemente è fondamentale che il consumo della macchina sia molto basso, per evitare le continue sostituzioni delle batterie, e periodi con mancanza di servizio. Inoltre funziona realmente da mezzogiorno fino a sera, fuori da questo periodo si awicina solo qualche cliente occasionale. Non c'è attività nemmeno nei giorni in cui manca il sole, quindi ci sono lunghi periodi in cui la macchina non funziona. Per ridurre il consumo sarebbe auspicabile che la circuiteria elettronica consumasse energia solamente quando deve fornire il servizio. ll caso del cellulare, è simile a quello appena esposto, trascorre lunghi periodi di tempo in cui non è utilizzato, in attesa di ricevere -l-i-*-+uorLr rE Lr ild I I to Ld. v^,,-l-h^
Nella maggioranza delle attrezzature portatili alimentate con pile, e che non dispongono di energia elettrica, conviene ridurre il consumo al minimo nei periodi in cui sono in attesa di realizzare un'operaztone.
ll nostro microcontroller puo rimanere molto tempo in uno stato in cui consuma una quantità ìnsiqnificante di qr ^^^"^;^ ^l^++.;-rEruro crctLt tLd.
Questo modo si chiama di riposo o di basso consumo, e la corrente di alimentazione tipica, che e circa 2 milliampere, passa ad essere inferiore a 10 microampere; questo significa che è possibile alimentarlo con una piccola pila, che può durare sino a due anni. Questa caratteristica lo rende molto adatto a quelle applicazioni in cui ci siano lunghi periodi di inattivrtà in attesa che succeda qualche evento esterno, come l'attivazione di un pulsante. Durante questa condizione si dice che il microcontroller sta dormendo.
ll telefono cellulare resta molto tempo in stato di attesa
MODO RIPOSO CONSEGUENZA
STATO RISORSA
Non si eseguono istruzioni Non funziono il TMRO {RAM/TOCKI collegoto o VDD}
Oscillotore principole fermo
- Si resetto però conlinuo o funzionore
WDT
- Montengono lo stoto precedente
linee l/O congelote
- Posso dq 2mA o meno di IOpA
Consumo minimo
Tabella che raccoglie le principali conseguenze
degli ingressi nel modo riposo.
Per addormentarsi al microcontroller basta eseguire
l'istruzione
SLEEP,
:'
di conseguenza il primo elemento
che si ferma è l'oscillatore principale, lasciando il compito di produrre gli ìmpulsi di lavoro alla frequenza Fosc/4.
l
Il microcontrollore si addormenta eseguendo l'istruzione SLEEP nel programma e si sveglia, riprendendo il suo funzionamento normale, per le seguenti cause:
ln questa condizione il processore non esegue alcuna istruzione, né tantomeno funziona ilTMR0 dato che non riceve impulsi interni.
2', Per l'ovedlow del
Per fare in modo che il TMR0 non funzìoni con gli impulsi esterni, si porta il piedino RA4/TOCLKl aì positi-
vo. In questo stato dobbiamo
evidenziare che
il
Watchdog che rimane in funzione, entrando in modo riposo viene resettato, o reinizializzato, però continua a funzionare, dato che dispone di un oscillatore proprio e indipendente. In questo caso i flag del registro STATUS resteranno TO# = '1 e PD# = 0. Le linee di ingresso e uscita mantengono lo stato precedente all'ingresso in modo riposo, e quelle che non sono collegate a delle periferiche e che assumono lo stato di alta impedenza si raccomanda di colìegarle al positivo o a terra, per evìtare possibili fughe di corrente. Vedere la tabella della fiqura.
Quando si attiva ìl piedino MCLR# e ìl PlC16F84 è stand-by, si sveglia e inizia ad eseguire la prima istruzione del programma, che risiede nel Vector Reset. Lo stesso succede quando va in overflow il WDT: se il microcontroller stava dormendo, si sveqlia e si reinizializza. Per determrnare quale delle due cause ha origina-
to il f
iflag TO# e PD# del registro i valori indicati dalla tabella della
Reset, sì testano
STATUS, seguendo
igura.
Quando si sveglia il PIC si sviluppa la sequenza del
INDICAZIONE
VALORE DET FLAG
PD#=0
- Esecuzione
PD#= |
- Si è sveglioto
TO#=0
-
TO#= |
- Non è ondoto in overflow il WDT
È
SIEEP.
Modo riposo
ondoto in overflow il WDT
Stato e significato dei flag PD# e TO#.
Iemoorizzalore OST rhe ritarda di 'l024.Tosc l'inizio del
interrupt che ammette
f
unzionamento normale, con l'obiettivo di dare il tempo alla frequenza di funzionamento di stabilizzarsi.
TN/R0 non
La terza causa che puo fare risvegliare
quindi sono valide soÍo le altre tre opzioni (vedi tavola in alto alla pagina seguente). Quando venne eseguita l'istruzione SLEEP, il PC si fermò caricato con I'indinzzo dell'istruzione successiva
.
':..
1.., 'l'
il
PIC avviene
quando si verifica un interrupt. Dei quattro possìbili
il
PlC16t84, quella relativa
al
e possibile, dato che mancano gli impulsi,
(PC+1).
RISVEGLIO CON INTERRUPT I
STATO DEI BIT
ISTRUZIONI
SUCCESSIVE
| (Successivo
GIE- 0 (tnibizione)
PC
+
RBIE= INTE- EEIE-- I
PC
+ 2 (Successivo)
I (Abilitozione)
PC
+
GIE=
RBIE- INTE= EEIE= |
o sleep)
t (Successivo o sleep)
0004 {Vector di lnterrupt)
lstruzioni che esegue il PlCl6FB4 quando si sveglia tramite un interrupt a seconda del valore del bit GIE
:
P52
MTCROCONTROttER ll
modo riposo
partire dall'istruzione successiva 2'. Cambio di stato in uno dei piedini RB7:R84,
Per accettare uno dei tre interrupt e necessario che relativi bit di abilitazione (lNTE, RBIE, e EEIE) siano a 1. ln questo caso quando si attiva uno deiflag di interrupt si testa il valore del bit GlE, che è il bit di abilitazione nlnhrlo donli intorrr rnt i
"-v" " = 1 e quindi gli interrupt sono abilitati, il PIC si sveglia ed esegue l'istruzione (PC+1) successiva a SLEEP, e infine si carica nel PC l'ìndirrzzo 0004 H, saltando alla routine di interrupt. Dato che a volte non sì desidera eseguire nessuna istruzione prima di saltare alla routine di interrupt, dopo SLEEP si inserisce un'istruzione NOP. Se si genera un interrupt abilitato a livello individuale ma non a quello globale, cioe con GIE = 0 (lnibizione Globale), il PIC si sveglia dallo stato di riposo, e continua l'esecuzione del programma a Se GIE
a
SLEEP come
mostrato nella tabella della figura. Quando GIE = 0 e si attiva il flag di un interrupt che ha 1 sul bit di abilitazione individuale, può verificarsi una delle seguentì condizioni: 1") Se l'interrupt avviene prima dell'istruzione SLEEP, questa si completera come se si trattasse di un'istruzione NOP. Non si cancella né il WDT né il
suo Divisore di frequenza. ll bit TO# non viene messo a 1 e il bit PD# non si cancella. 2") 5e l'interrupt avviene durante o dopo l'istruzione SLEEP, il microcontroller si sveglierà immediaîamente dono aver esporrito l'istruzione SLEEP Si cancella il WDT e il suo Divisore di frequenza, il bit TO# passa a 1 e il PD# passa a 0. Per assicurare la cancellazione del WDT quando
si esegue l'istruzione SLEEP, si raccomanda di mettere davanti ad essa l'istruzione CLRWDT. Nella figura è presentato un cronogramma che illustra la forma di risveqlio del PIC tramite interru pt.
or 02 a3 04 0l 02 a3 04 Qr 02 a3 a4 ar a2 a3 a4
or 02 03 04 al a2 03 a4 Qr 'g ,'
t I l l I f
;,r$ 1,,|'|,,1'l f::1 1
I,,i,I,[.]-']
PIEDINO INT INTF
flos
(|NTCON <t>) GIE
bit
<
{tNTCON <7>)
PROCESSORE
>
':.
::::'..:..:'.t,'
ir.iirìHi-si
PC
;
'"tlfitooìf
Insr (PC)=
'tTJ,fl!ilf
srEEP
lnsi (PC+l)
hsi(PC-r)
i NoTE
, ',
Inst {PC+l}
Ciclo
Dummy
Ciclo Dummy
i;
l'oscillotore. RC.
sono i modi possibili per 2. Tost = 1024 lost. Queslo ritrordo non c'è nel modo 3. Se si suppone che GIE = I ol suo risveglio il processore solto ollo routine di interrupt. Se GIE = 0 l'esecuzione conlinuo con le istruzioni successive ollo 4. CTKOUT non è necessorio in questo modo, però si uso come 1. XT, HS,
o
LP
sleep. riferimento.
Cronogramma del risveglio del PIC al prodursi di un interrupt.
I
t i,
j
MICROCONTROLLER
II Micro PIC Programmer: uno scrittore di PIC fatti su di un personal computer, utilizzando i programmi necessari forniti dal fabbricante del microcontroller o da una ditta esterna. Una volta ottenuto il codice binario, o esadecimale, che deve essere memorizzato nel PlC, si passa alla fase di scrittura, tramite l'hardware esterno, collegato ad una porta del PC, da cui si scarica il programma in questione, con l'ausilio di un software di comunicazione fra il PC e lo scrittore. cessiva compilazione, sono
Un microcontroller è un piccolo computer, che esegue il programma che si trova scritto nella sua memoria, per assolvere al compito a cui è stato destinato. La memoria dove risiede il programma non deve essere volatile, le istruzionr devono rimanere inalterate anche se viene
tolta l'alimentazione. Quando il programma risiede nella memoria ROM o OTP (One Time Programmable), non si puo né cancellare né modificare; mentre se la memoria di programma è di tipo EPROM, EEPROM oppure FLASH, si puo scrivere, cancellare, e riscrivere un numero di volte molto grande. La scrittura del programma sorgente. e la sua suc-
in un modello
Per scrivere i PlC, oltre ai dispositivi forniti dal fabbricante, ve ne sono moltr altri sviluppati da ditte esterne. Per questa spiegazione abbiamo scelto il programmato-
rwic. (l.ì) \È
systa,t's Frrdirroertn
ll kit dello scrittore MICRO PIC PROGRAMMER è composto da una scheda elettronica, un dischetto con il programma, il cavo per il collegamento al PC e il manuale d'uso in italiano.
{wattaaaaaaaatltjjtlllll:11::iìrìììììilri.ffi
Birrrrllllr,
ONTROLTER
:
''
.
'::.
I
l
Fotografia del Micro PIC Programmer collegato alla porta parallela del PC
re dr PIC N/ICRO PIC PROGRAMMER della ditta "MSE Microsystem Engrneering ". Si tratta di uno scrittore di PIC di gamma media, caratterizzato dalle sue ridotte dimensioni, dal basso
prezzo e dalla semplicitĂ di utilizzo. Fra i PIC che nro scrivere troviamo il Y"" PlC16F84, e i moderni PIC'l 6FB7x.
E basato su una scneoa in cui si trova tutta la circui-
teria elettronica, compresi gli zoccoli su cui inserire il PIC che si desidera program-
mare.
ll
sistema comprende anche un cavo a 25 fili da collegare alla porta parallela
Fotografia della scheda elettronica del Micro PIC Programmer. Anche se dispone solo di due zoccoli liberi, esrtono molti adattatori per gli altri tipi di contenitori del PIC
MICROCONTR,OLLER Uno scriltore
di
PIC
del computer. Uimpiego di questa porta permette una maggiore velocità di scrittura e una maggiore protezione del PC, dato che la scheda dispone di alimentazione autonoma. lnoltre è incluso anche un dischetto con il orogramma di comunicazione e controllo PICME-PR, e le
durante la fase di scrittura, in cui bisogna inserire e togliere il circuito integrato dallo zoccolo del programmatore, si possono uttlizzare zoccoli a "forza di inser-
e sul funziona-
tinizializzazione del funzionamento del MICRO PIC PROGRAMMER e molto semplice e rapida, e consta di quattro passi: 1" Passo: Cooiare il software PICME-PR del dischetto, in una subdirectory sull'hard disk del PC.
informazioni tecniche sull'utilizzo mento.
Questo programmatore dispone di un circuito per la
stabilizzazione delle tensroni di alimentazione, quindi può funzionare sia con due pile da 9 VDC che con un trasformatore da 220/15 VAC e una corrente uquale o superiore a 0.5 A.
Anche se sulla scheda del MICRO PIC PROGRAMMER ci sono soìamente due zoccoli da 1B e da 40 piedini per inserire i PIC da programmare, esistono diversi adattatori che supportano i modelli a 2B piedini, con contenitori di differente larghezza, permettendo l'uso del programmatore con la maggior parte dei PIC della gamma media. Per proteggere i piedini del microcontroller
zinnorE ruro nr rll: " , lvrrs rnmo 4rvr
'
.
.
'
61 lnlln
vucllu jt
Ànllr uEllo {n+nnrrfir luLU9lollo.
, "
2" Passo: Collegare il cavo da 25 fili fornito insieme programmatore alla porta parallela del PC. al 3" Passo: Fornire la tensione di alimentazione allo scrittore, o con due pile da 9 VDC o con un trasformatore da 220/15 VAC e una corrente superiore a 0,5 A.
4" Passo: Eseguire dal PC il programma PICME-PR con il quale si possono realizzare le funzioni di lettura, scrittura, verifica, cancellazione, ecc. del microcontroller. Dovrà aooarire neì monitor del PC la finestra di lavo-
ro rioortata in fiqura.
Fotografia dello zoccolo a forza di inserzrone nulla, e un adattatore per un PIC con contenitore diverso.
I'IICROCONfROttER
VERIFICA DI CANCELLAZIONE
Quando
si
attiva
questa
+. .++- l^^-i^^^ opzrone, IUIIa ta memona -del circuito integrato, prima della fase di scrittura, e sot-
toposta a una verifica di cancellazione. ID/CHECK
Mediante questa frnestra,
si
puo scnvere un numero dr identificazione che verra scritto nella memoria del PIC (parola di identif icazione) In egual modo verra visualizzato il "Check-sum" delcontenuto attuale della memoria. APRI FILE Questo pulsante permette di
file
Videata di lavoro del aroqramma PICME-PR.
il
contpnrrto di un eseguibile in formato
leooere
INTEL.HEX
e depositarlo
nel
buffer della memoria. PROGRAMMA TUTTO Trasferisce
Quando si esegue il programma PICME-PR, sul monitor appaiono una serie di finestre e dì pulsanti di comando, -++i,,1^^ tt ttté lo fr rnzinni,. del nr -^^ iI quarì ^,,-li -; sr arrvano con --, tr,ogrammatore, che descriviamo di seguito: BUFFER DELLA MEMORIA DI PROGRAMMA È la finestra più grande della videata, e in essa appare il contenuto che arriva da, o che deve essere trasferito a,
la memoria del codice interno del
microcontroller. Mediante i pulsanti adeguati si puo visualizzare tutto il conten uto. SELEZIONE DEL MODELLO ln nrocf: finpctr,a qi cronlip il Pll- rho <i uLrluEIo dociÀo'. PIUrL Jr ^'^
in a' ,a++rn gruPpt Ofammafe. F vtYutt'LLara Of OaniZZ=+: ilrquqLLrv ^r, ^^i di modellt 16C6X, 16C62X, 16C7X, 16C84 (16F84). Selezionando uno di questi gruppi appare un menu a tendina, con diversi modelli disponibili. Dopo aver selezionato quello che si desrdera, nella parte inferiore della f inestra si posI
i
sono leggere le caratteristiche piu importanti
del
modello scelto, PAROLA DI CONFIGURAZIONE Tramite olestà finestra si scenlie ,a conf iarrrazione di lavoro del PIC: protezione del codice, attìvazione del Watchdog, Brown-Out, Power Timer e tipo di clock (XT).
il contenuto del buffer di
memoria
e
la
Parola di Configurazione attuale nella memoria interna
del microcontroller. PROGRAMMA PAROLA Scrive unicamente la parola di configurazione attuale sul microcontroller, lasciando inalterato il contenuto della sua memoria interna. VERIFICA
Verifica il contenuto della memoria interna del PIC con il contenuto del buffer di memoria. Se viene rilevata qualche differenza appare il corrispondente messaggio. Si utiltzza per verificare la corretta programmazione del PlC. LEGGI PIC Legge il contenuto della memoria interna del PIC e lo denosita nel hrrffer dolla memoria. CANCELLA PIC
Cancella il contenuto della memoria ìnterna del PlC. Questa icona risulta attiva solo quando la memoria e di tioo FLASH e ouo essere cancellata. VERIFICA DI CANCELLAZIONE Verifica che la memoria interna del PIC sia totalmente cancellata. ESCI
Chiude il programma PICME-PR e restituisce il controllo del PC al sistema operativo.
NilICROCONTR L[ER Concetli e utilifer del
di sviluppo
It MICRO PIC TRAINER: un sistema di sviluppo n sistema di sviluppo è un insieme di strumenti hardware e software, che permettono dt realizzare tutte le operazioni necessarie per porre in essere un progetto basato su di un microcontroller. Mediante un sistema di sviluppo si puo editare il programma, memorizzarlo, cancellarlo se la memoria lo permette, compilarlo, assemblarlo, eseguirlo in tempo reale e farne il "debug", owero la messa a punto. Per poter eseguire queste operazioni e necessario uno scrittore/cancellatore, un insÏeme di periferiche tipiche, da collegare ai piedini di l/O del microcontroller,
e un pacchetto software contenente l'editor per scrivere il programma, rl compilatore, l'assemblatore, il simulatore e il proqramma di comunlcaI'alimentazione
zione e controllo. Per questa descrizione ci siamo basati su un sistema
disviluppo economicamente accessibile, efficace e semplice da ultlizzare, denominato MICRO PIC TRAINER della ditta "MSE: Microsystem Engineering".
destinato ai PIC della gamma media, con un massimo di 28 piedini, fra cui troviamo anche il PlC16FB4. Nella figura si puo vedere l'insieme dei materiali che compongono il MICRO PIC TRAINER. Ă&#x2C6;
; $
f
lnsieme dei materidi che formano il sistema di sviluppo MICRO PIC TRAINER
. .'.,
"r,,'
| .',.,i',.,,'.
.,t,,.1,,....,,',
Nella tabella seguente sono riportate le caratteristiche e i componenti principali di cui è composto il MICRO PIC TRAINER.
2. - Frequenza di lavoro standard da 4 MHz, che può essere cambiata sostituendo il cristallo di quarzo.
4, - Cinque ingressi digitali implementati con cinque
commutatori,
Scheda MICRO PIC TRAINER
questo connettore si puo espandere verso l'esterno il N/ICRO PIC TRAINER, permettendo la connessione di numerose schede di espansione, sviluppate dal fabbricante stesso, oppure con le schede sviluppate dall'uti-
6, - Otto uscite digitali collegate a otto diodi LED o ad un display
ltzzaTjre. 8. - Possibilità di collegare e scollegare le periferiche mediante
lumpers.
Quando si lavora ad un progetto basato su di un microcontroller, uno dei compiti piu comuni è la stesura deì programma, e la verifica della sua efficienza. ll progetto si divide in moduli, e la stesura del software che controlla ognuno di loro, propizierà ìl risultato
10. - Circuito scrittore "in circuit". Permette di scrivere un PIC montato su
uno qualsiasi degli zotcoli a disposizione, ll PIC'!6F84 si può scrivere, cancellare e riscrivere
tutte
le volte che si desidera,
senza toglierlo dallo zoccolo.
12. - Connettore DB25 a 25
del
f
ina le.
Per verificare l'idoneita delle istruzioni di ognì modulo, dobbiamo provarle ed eseguirle in tempo reale sulle periferiche o sui dispositivi da gestire. ll sistema di sviluppo MICRO PIC TRAINER, collega e scollega ai piedini di l/O del PIC le periferiche di cui dispone: commutatori, pulsanti, potenziometri, diodi LED, display a 7 segmenti, e anche un display LCD. Inoltre tramite il connettore PICBUS, è possibile
fili per il collegamento con la porta parallela
PC.
14. - Tutti icomponenti che compongono il MICR0 PIC TMINER sono
montati su di un circuito stampato professionale, a doppia faccía, con fori metallizzati, ampiamente serigrafato, di dimensioni EUROCARD da 100 x 160 mm. lJinsieme può anrhe essere acquistato in kit, da montare.
il controllo del sistema di sviluppo si realizza per mezzo del PC, al quale si collega tramite la porta paral-
lela. Dispone inoltre di un connettore chiamato PICBUS, tramite ìl quale sono portati aìl'esterno tutti i
segnalì di l/O e l'alrmentazione del mrcrocontroller. Con
aggiungere qualsiasi componente esterno. Dato che ìl dispositivo e collegato alla porta parallela del PC, quest'ultimo è utilizzato per editare, compilare, assemblare e simulare i programmi. Dopodiché il programma oggetto si scarica nella memoria del PlC. Infine si esegue questo programma sul sistema di sviluppo, e si analizzano i risultati ottenuti sui dìspositivi del mondo reale, che sono le periferiche che abbramo collegato ai piedini di l/O. Alla vista diquesti risultatisi può valutare se ilsoftware che abbìamo scritto funziona o meno, passando alla suc-
;
cessiva fase
di messa a punto
e
alla ripetizione del processo.
'l: : :t: ".1,'i: l. ::,'i:::, i :': : y
:l
:: t: :!i!: ;''i:';.';;1,'ii,.
:;.:,.1: :
1;
Anche se sulla scheda del MICRO PIC TRAINER ci sono solo due zoccoli da 1B e 28 piedini, esistono diversi adattatori che permettono
di lavorare con i differenti modelli di PIC e di piedinature. Come riferimento ricordiamo che l'adattatore "2OC0603" adatta i PIC a 28 piedini con drmensione 0.6" alla
dimensione 0,3"; invece lo "7OC8lx" è un kit di adattamento ner I'tiiltzzo dei PlC16t87x. Raccomandiamo l'uso degli
"a forza di
zoccoli
",
nulla
inserzione
che dispongono di -^.^ iI {^.i ^ 'acilita OPtE tUI I C
r^,,-r-^ |EVC Lt IE
serzione
e
l'estrazione
dei
una l,in_
Collegamento del sistema di sviluppo alla porta parallela del
Grazie al connettore di espansione PlCBUS, è possibile collegare al MICRO PIC TRAINER una serie di schede, alcune delle quali sono descrrtte di Seguito, e che offrono molteplici possibilità di sviluppo.
MICRO PIC TRAINER PLUS Basata sul collegamento con il bus l2C permette l'impiego di nuove periferiche, come le tastiere matriciali, un visualizzatore da 4 display a 7 segmenti, convertiton AD, clock in tempo reale, espansione della memoria RAM non volatile, nuove porte di l/O, ecc.
MlcRo Plc ro Meî'te a d snos'z,onp do'l'r,rilizz,'tnro norifori6le industnalr come motorì DC, microrelé, cicalini p ezoelettrict, sensor ottici, controlli di illuminaz one, ecc lVì5x84 Scheda control a'ta da un PIC 1 6FB4 e adatÌabrle tramite I connettore PICBUS, orientata a control o di motori
DC c
PAPeadre's a'tri senso'r. F ascneda n"r.rinale
del microrobot PICBOT-2.
ii # ÉÌi:l +: ;i r--, i4,i {; ii: s. j;Tix i'.il,i{!t i.! ii;{{." i'fi;":,iri,,! g fi
:i
;i Í:i f . í
.:'
i-
PC.
PlC.
Oltre al manuale dell'utilizzatore, realizzato in rtaliano, per i -ostrr lettori, che accompagna il sistema d svilup-
po e che contiene sezioni sul montaggio, messa in marcia, installazione del software, funzionamento, modulo LCD e tutorial per realizzare i primi progetti, si possono
trovare su Internet gli aggiornamenti del software e le ultime novità consultando il sito: www.microcontroller.com. Per fornire a professori e ad autodidatti un metodo pratico e chiaro per gestire il N/ICRO PIC TRAINER, la ditta costruttrice ha sviluppato un "corso di progetto p.atico con il PlC", in cui la prima parte e dedicata al PIC'1 6FB4 con esercizi semp ici, e la seconda parte proennlir:.inniìt FJtu .',--nnnA Irn: cnllaz -, ana ,, di realtz^i,' dvdtìtaIe -, dpfJilLd4uf
zate con il
PIC
16F873.
Anche l'opera edita da N/c Graw-Hill "Microcontroladores PlC. Drseno Préctico de Apiicaciones" e scritta da Jose Vl" Anguìo, Susana Romero e lgnacto Angulo, tltlizza ll MICRO PIC TRAINER come strurnen-
to base pe' l'esecuzione d, turri g1 ese.c z e g i esemp che contiene La prima parte di quest'opera gurda I let+^"^ - Pr -^^.^--t) con il plC16FB4 ^"i*^ Lwrq o r w oPPruLLrr ll secondo ibro è più avanzato, ed è dedicato alla presentazione teorica e pratica dei moderni mic'ocontroller PIC 16FBlx e all'insieme di schede che ruotano attorno al MICRO PIC TRAINER Inoltre e anche consigliabrle il libro " Microcontroladores PlC. La solucion en un chip" edito da ITP
l,iil+r.ee;+:É{,t$ ',T+
ari+'1#*++}#:
#+nÈ
+,€e*+$È.ÈÉ.+ #SÈ
Ée+r-. *È:sr$s,$,É*#
Paraninfo e scritto da José M" Angulo, Eugenio Martín e lgnacio Angulo.
Nella parte dedicata alle
applicazioni pratiche, sono descritti sia il MICRO PIC TRAINER che le altre schede.
:;i-
l,r i- íi".-; 1r a,:Ì'i
i
ii:j i i i!:, La scheda dei prototipi, come si può osservare nelìa fotograf ia, dispone di una zona libera con fori presta- 0r5r.dnza ^^-+; -i+,,-+i ^lia+rngnalt norstTua| a malizzala, dove si possono montare i dispositivi da pìlotare con rl PlC. Nella zona premontata, zoc- ._L--t è situato - ----- lo --, r't prototipi Scheda : --- dei ---:colo che conterrà il PlC, e la ;.:i-
:
con alcuni componenti di un'applicazione.
sua circuiteria fissa, formata dal cristallo diquarzo con isuoidue condensatori, ilcircuito di Reset e lo stabìlizzatore di tensione. Esiste una scheda dei prototipi per iPlC da 18 piedi-
ni che si chiama MPIC-18M, e un'altra destinata ai PIC da 28 e 40 piedini, denominata MPIC-28/40M. Dopo che il programma è stato messo a punto sul
sistema
; , ,
di
svilunoo MICRO
PIC TRAINER ed è stato scrrt-
to nel PlC, quest'ultimo viene
montato sulla scheda dei nroîoîini clove îramite i suoi |\,IvLv||H|, piedini di l/O, pilotera i dispo-
sitivi periferici definitivi. In questo modo si disporrà di un prototipo del progetto con prestazioni professionali,
r ' ,
p rli h:<<n nrozz6 I OUìUltO Ul L 6rniÀi+: uoJJv ylL44v
montaqqio.
In modo complementare, lngeniería de Microsistemas Proora.nados Sl fornisce due kit di componenti e un manuale con eserczr per svrIrrnnare una serie di progetti
con il MICRO PIC TRAINER e le schecle clei orototipi. ll kit di inizio si chiama "KlT DE
IPROYECTOS BASICOS" C nrello avan.zato " KlT DE
:;,....,.. Scheda dei prototipi per progetti basati sui PIC della gamma media
::
PROYECTOS TíPICOS".
ti:a
!r''t,'t:
II proto PIC 2, scrittore di PIC : -
,1
':
nche se le basi fondamentali dell'elettronica attuale sono le stesse che la accompagnano dalla nascita, 50 anni fa, il suo stu-
sulla programmazione, che ha semplificato la parte relativa all'hardware introducendo e sviluppando un nuovo componente: il software.
Comunque esistono numerosi prodotti elettronici notevoli cambiamenti.
I semiconduttori e in particolare ì transistors,
che
sono i più caratteristici tra i componenti microelettronici, hanno ridotto moltissimo le Ioro dimensioni. e ora ne possramo disporre a milioni sulla piccola superficie di un
chip di un circuito integrato. ll loro utilizzo e basato
che non sono programmabili, perché anche se i microcontroller lo sono, devono poi essere collegati a dispositivi semplici per sviluppare le applicazioni commerciali. Per facilitare lo studio della moderna microelettroni-
ca in modo progressivo, pratìco e modulare, descrivere-
mo uno strumento didattico professionale che, oltre a supportare un programma proprio di autoinsegnamento sperimentale nelle principali aree dell'elettronica e deì microcontroller, serve come laboratorio e banco di prova
per montare,
modif icare,
moftoro A nrntn c noffe
in
marcia qualunque tipo di progetto commerciale o industriale in modo rapido, economico e srcuro.
Sotto la denominazione UNIVERSAL TRAINER della MSE:
Microsystems Engineering,
si
presenta un laboratorio di sperimentazione contenuto in una valigetta leggera e facilmente trasportabile che contiene tutti i dìspositivi e circuiti princìpali che richiedono il montaggio ed il funzionamento di qualsiasi proi
Laboratorio di microelettronica e microcontroller UNIVERSAL TRAI NER
getto basato sulla microelettronica o sui microcontroller. Come si può vedere nella fotografia, dispone di una zona con una scheda protoboard per il montaggio dei circuiti senza saldatura e, attorno. vi sono raggruppate la maggior parte delle periferiche e dei circuitì funzìonali comuni a queste applicazioni, accessibili anche loro
mediante cablaggio a pressione. I sistemi e r blocchi oiù imoortanti dell'UNIVERSAL TRAINER sono descritti nella tabella sequente.
. Alimentatore ad uscita variabile positiva e negativa
.
Generatore di funzioni
.
Potenziometro regolabile
Dettag I io del col leg a mento dei componenty util zzati in un esperimento
.
Sezione da 2 pulsanti
.
Cicalino piezoelettrico
elettronica. Per raggiungere questo obiettivo formativo, "lngegnieria di Microsistemi Programmabili S.1." ha creato sette moduli specializzatì nell'insegnamento di altrettante sezioni che coprono l'elettronica moderna e che sono elencate nella tabella.
. Valigetta trasportabile
MODUL0 2: SEMICOi,IDUTTOR|
MODULO 4: MICR0CONTROLLER I (PlCf6F84)
Utilizzando la tensione che fornisce l'alimentatore del laboratorio, i segnali dei generatori di funzronr e
del generatore logico, le periferiche disponibili e la zona per il montaggìo senza saldatura, si possono costruire e provare rapidamente schemi elettronici
M0DUt0
6r AMPilFICATORI
0PERAZIONALI
comolessi.
I ij
ini,irij"iti.if : fj irt !; i-'E i: Í, ::,!,i1 5
:niiiÈ:.rLi
i
j ij
:ii *,
{-.,
s':r
_l-
e.
;.,
f UNIVERSAL TRAINER non serve solo da supporto per i montaggi e i progetti dell'utilrzzatore. ma costituisce anche un eccellente banco di prova per inizrare a familiarizzare con le aree più rappresentative della micro-
i:,,'igt.,ri+++Ì,ur:l*Ée*+ae;+lii# #;'tÈ,t'+É+t+È!-f:É:-.;.Èg'íitj;i!,
Ognuno di questi sette moduli è composto da: . Una serie dr schede estraibili a colori contenenti gli esercizi e i progetti proposti per I'insegnamento del corrispondente tema trattato nel modulo. . Scatola di plastica contenente i componentì elettronici necessari per il montaggio degli esercizi dell'opera sull'UNIVERSAL TRAINER.
F?;lnF':é+lt'Íi:r+
NilICROCONfROttER
P58
L'insegnqmento dell'eleltronico moderna
collega il PlCl6FB4 ai circuiti funzionali e alle periferiche presenti sul laboratorio, e si sviluppano 17
progetti
di
applicazioni
Nel Modulo 5, basato sul P|C16F873, sono conte-
nuti dei progetti di difficoltà maggiore, compresa la gestione delle periferiche più comuni, come
le tastiere matriciali e ICD Cnmp tutti gli altri moduli, anche
i
dìsnlav
questi contengono Scric
serie
rli srherlc ron oli cscrcizi e imatertali necessarl npr il mnntennin
degli esperimenti proposti sull'LJNIVERSAL TRAINER, facenti parte del modulo úe tratLa di eleLtronica digitale.
.
Dischetti con programma per quei moduli che lo
richiedono.
ll programma parte con I'insegnamento, nel Modulo 1, dell'elettronica digitale. Nel Modulo 2 si sperimentano e studiano i semiconduttori, diversi tipi di diodi, la
1,
di schede a
dove sono nresentatl
montarli sull'UNIVERSAL TRAINER e un dischetto contenente i programmì sorgente per tutti gli esercizi. Sul sito lnternet: www.mìcrocontrolladores.com troviamo costantemente nuovi esercizi, modrfiche a quelli
proposti, aggiornamenti dei software e programmi,
Nel Modulo 4 si inizia lo studio dei microcontroller, concentrandosi sul le applicazroni con il PlC16F84.
ll Modulo 5 approfondisce la gestione dei microcontroller, con esperimenti più avanzati, basatr sul PIC 16F873 ll Modulo 6 copre le funzioni e le applrcazioni degli amplificatori operazionali e, infine, il Modulo 7 si dedica alla manipolaziologici
programmabili, come quelli del tipo PAUGAL.
I
Moduli
4 e 5 che completano
I'UNIVERSAL TRAINER insegnano
progetto
il
e la programmazione dei
microcontroller PlC. Nel Modulo
4 si
I
progetti, una scatola con i materiali necessari per
rettifìcazione e gli alimentatori. . ll Modulo 3, f ocalizzalo sull'elettronica analogica, fornrsce numerosi esercizi e montaggi con i transistor.
ne e ai progetti con circuiti
una
colori
Montaggio di un progetto basato su di un PIC ne\|'UNIVERSAL TRAINER, utilizzando il PROTO PIC 2
e
novità che possono essere liberamente visionate. All'interno della scatola con il materiale per il montaggio degli esercizi dei Moduli 4 e 5, deve esserci uno scrittore di PlC. Per coprire questa esigenza di scrittura dei programmì nella memoria dei codici del PlC16F84 e del P1C16F873, sono disponibili due opzioni. Per gli utenti che dispongono dello scrittore del PIC esistente sul MICRO'PlC PROGRAMMER o il MICRO' PIC TRAINER, descritto in precedenza, si offre una scheda di adattamento a ouesti tramite il connettore PIC BUS.
Questa scheda, che si adatta ai menzionati scritto-
ri esterni e si inserisce nella scheda protoboard del laboratorio, viene chiamata PROTO'PlC. Per gli utilizzatori che non dispongono di scrittore di PIC viene fornita un'altra versione che comprende la scheda PROTO' PlC2, la quale contiene su di essa uno scrit-
Tramite un connettore D825 la scheda PROfO PIC 2 si collega alla porta parallela del PC, che ne gestisce il funzionamento. Con ouesta scheda si oossono scrivere iprogrammi che sono stati editati, compilati e assemblati sul computer. Per questa operazione esiste un programma di comunìcazione tra il PC e il PROTO'PIC 2 con il quale si scarica il programma oggetto residente nel PC nella memoria di programma del PIC che si trova sulla scheda. I piedini del PROTO'PlC 2 si inseriscono
nei fori della scheda protoboard e tramite questi, mediante fili inseriti a pressione, si collegano con le periferiche dell'UNIVERSAL TRAINER o con quelle mon-
tate sulla propria scheda. Senza bisogno di modifìcare l'hardware, né muovere il PIC dallo zoccolo del PRO-
tore di PlC. Questa scheda si collega alla porta parallela del PC, il quale controlla il suo funzionamento e il processo di scrittura e, dall'altra parte, viene inserita sui
TO'PlC 2, si puo riscrivere un nuovo programma e verificarne il funzionamento immediatamente e sur dispositivi reali che possiamo gestire. La scheda PROfO'PlC2 serve come scrittore di PIC della gamma media, da 18 a 28 piedini, e come elemento di interfaccia rapido per
À:l nrrll^ -^ll^^fnri rLrrLvu 6p6rinhn:rÀ rvr I doll: vLilu <rhad: VrUtUUUdlU, Udl qUdltr LUllCVd dispositivi presenti sull'UNIVERSAL TRAINER a quelli esterni che sì possono aggiungere.
collegare componenti montati su una scheda protoboard, e collegati mediante fili inseriti a pressione nei fori della protoboard stessa.
i I
,.
........,. Scheda PROTa PIC 2, che
coytille
il OroOryo s:rittor: di
llc
Oer realizzare i
i:-'n1:i...,:'!;i'4::],:.lt+t,:!];4Ì].í..;i'.'t:t.'u!.r:i!;lrli"'i;.lu,'.li.;-:i11;;':i',1,';,;.l1.;|,
proget! dei Modult 4
1
5
! ;
MICROCONTROTLER Un pioniere in microroboticei
Altri microcontroller per microrobot: il 68HC77 di Motorola I microcontroller MC68HC11 è stato uno dei preferiti dai progettisti di microrobot. Le sue nrestazioni e le sue eccellenti caratteristiche tecniche lo rendono molto adatto per questa L
Yr!J!vL'v'"
fia, contiene il circuito incaricato della gestione dei motori e dei restanti sensori e attuatori.
'
tecnologia. Un esempio è rl microrobot TRITT. mostrato nella fotografia in basso, progettato e commercializzato a partire dal 1997 dalla ditta MICROROBOTICA S.L.
La struttura del TRITT è modulare, Ia sua parte elettronica è configurata sulla base di varie schede sovrapponibili, e la scheda che occupa la posrzione superiore è quella che contiene il 68HCl1 e la circuiteria ausiliaria. La scheda inferiore della fotoqra-
di questo microcontroller è di 16 bit, pero il bus dei dati esterno, utilizzato per collegarlo al resto dei componenti del sistema, è di sole 8 linee, per potersi adattare ai dispositivi che utilizzano questa dimensione del byte, così comune ed economica. L'architettura è di tipo Princeton, nella quale la memoria dei dati e quella del proqramma sono unite. Nella tabella sottostante sono La struttura interna
Memoila di proEamma: 512 x 8 bit EEPR0M
Alimentazione: da 3 a 6 V nominale 5 V
Temporizatore da 8 e da 16 bit
Porta di comunicazione sincrona SPl
Interrupt in tempo reale
Microrobot
TRITT
costruito attorno al microcontroller 6BHC| 1 di MOTOROLA.
Software in ROM per caricare nella RAM un programma esterno.
riportate le principali
caratteristiche
modello 6BHC 1 1A1 ,, ; :, i ,i. :,t
MODA MODB
del
.,,.
.
,
ll MCGBHC11 è di, sponibile in commer-
cìo in contenitore l)l(
(
.lr
\,/ J-
nrn V"'
rRa
ffircffi XTAT EXTAL
E
XIR-a
RESET
'
l
ruffi
ó r rn ",
48 pin Questi nier-lini clovnnn qrrn."f, DIP da
qR {r rnzinni n^rtrró Pv, rq,L dif{oranti ur rErcru, nar Lur l:rc PEr rrri
maggior parte di essi at,,^--^ -il^ ^--^t,,^ asS0tve dile 0tver5e {,,^-i^^i lulf zlut|
@I
t,
-r--==
-ll,-,,du^"-,i^ rc dil 9taz
silio di un multiplexer
interno. Nl^ll^ l\elld
basso
+i^,,.^ i^ I 19Urd lrì
e riportata la
nionlinrtrrrr
NONONO
É------É
É------f
:
H------H
ÈÉ
-IEboNo dd
*à
r' .,
Struttura interna del 6BHC | 1 con i blocchi che lo configurano e i relativi piedíni
nar il rnn-
tenitore PLCC montato sul TRITT. ll fatto che ogni pie-
I pin del microcontroller sono raggr,uppati in insiemi
dino svolga drverse funzioni, obbliga a fare molta attenal progetto dell'hardware, perche qualunque errore. potrebbe causare ìa rottura del chip. Molti dei segnali di uscita sono a "collettore aperto", e in questi casi si raccomanda di mettere una resistenza di "oull-
che realizzano le stesse funzioni. come si ouo vedere
zione
up" da 4K7.
< ó
' ;^1: 1e < !!
:i-;ii's'"ì[ii
*zzzz " q<<
,
<
.PE5/AN5
XTAL
PE]
PC ]
/ADDR ],/DATAI
PC2
/
:' , ',
/ANI
PE4lAN4
/DAI A2
]
PC3/ADDR3,/DATA3
I
PEO/ANO
Resel:
VSS
:
RESET
I
9 , Comunicozione seriole sincrono {SPl): SCt, MISO, MOSI e SS 10 , pou" di l/o: PA0-7, PBo-7, Pco-7, PD0-3 e I I : Conoli del convertiiore AD: 12: Piedini dei bus esterni: AD0-7, A8-Al 5, AS e
PS0/ADDR8
AN0-7
PE0-3 R/W
:
.
:
ì
) :
,
'
l
:
)
:
1
|
:l :
PC5,/ADDR5,/DATA5
]
PB2lADDR]
PCólADDRó/DATAó
]
PB3lADDRI I
ADDRT
Alimentozione: VDD e Clock: EXTAL, XTAL e E
PB] /ADDR9
PC4/ ADDRA/Dl\1A4
/
I 2 3
4 , Comunicozione seriole osincrono (SCl): TxD e RxD 5 , Interrupt hordwqre: lRQ, XIRO, ICQ-3, PAI e STRA ó, Selezione del modo di lovoro: MODA e MODB 7 Comporotori: OCI-5 8 lmput Copture: lcl -3, PAI
PCO,/ADDRO,/DATAO
PC7
:'
GRUPPI FUHZIONAII DI PIEDTNI
. ì-.
ADDR2
dalla tabella.
O
PB4IADDRI 2
/DAfA7 r
.xtRa^
PB5/ADDRl3 PBólADDRI 4
PPE
PBZIADDR] 5
Ò
PAO/ C3
PD0/RxD
,'ZÒ41;!?vvvgvv \< <: Fsr-òE <ìilflff "ÒÒdùxxxY_ N-VVYà < d d r (l d<<<ó dÀÀ<
Piedinatura del 6BHC1 1 nella versione con il contenitore PLCC da 52 pin
Nello schema della figura in alto è riportata l'architettura interna del 68HC11, con i diversi blocchi che lo compongono e i relativi pin. Nella fotografia della pagina seguente, vediamo la scheda di controllo del TRITT, nella quale possiamo
notare il microcontroller nella versione con contenitore PLCC, circondato dalla circuiteria ausiliarìa e dai connettori dr adattamento.
farchitettura del 68HC11 mostrata nello schema e utilizzata in molti modelli di questo microcontroller, i quali si differenziano fra di loro prinprecedente,
IT'IICROCONTROLLER Un pioniere in microroboticer
ryryr
ro -
ffi '$,î."
mre
@t's"" E!$ffi.ir;*"
ro ffi*t* ffi ffi**t*"
ffi Effiffi ",::î'
Configurazione della mappa di memoria per i differenti modi di funzionamento del 68 HCI Scheda di controllo del TRITT in cui si può vedere rl 6BHCI
l*"l*:f,'
1
1
(512), dai registri di controllo e da una ROM dove risiede un programma che si esegue alla partenza. RAM
ROM
E**0
ryèo
?5+
tl;.:.j :|: .: :
8k
EPROM
EEPROI\,I
0 o
0
srz
o
o 512
t't, '0
O
0
,l:,4k
0
-..,.O
4k
0 0 0
o
0
0
0 0
0 512
0
5t2
l2k
512
,
ì:.:O. a. F:::izt i-*,]i?h
.0
..,,
2', MODB
Circuito espanso, = 'l).
o
"expanded" (N/ODA =
0
0
2k
.t,,t.ó
5t2
::'.....*U
512
è:ìrlììrì:,:-,...
o
512
i:i:Ét-'
Tabella con i diversi modelli del 6BHCI 1, che si differenziano per le diverse capacita della loro memoria
cipalmente dalla capacità della loro memoria, come puo vedere dalle relazioni della tabella in figura.
::, A seconda dei livelli logici che sono applicati ai piedini MODA e MODB, il 68HC'11 puo lavorare in 4 modi diff
erenti:
1". Circuito unico o "single chip" (MODA = 0 e MODB = 1). Come si puo vedere dalla figura, la mappa della memoria è formata dalla RAM (256), dalla EEPROM
Schema semplifícato dei collegamenti del 6BHCI 1 per il funzionamento in modo circuito unico
:
MICROCONTROTLER Un pioniere in microrobolicei
In questo modo oltre ad avere accesso alla mappa del circuito unico si puo anche accedere agli induizzi di un'eventuale memoria esterna. Le porte B e C supportano i bus di espansione. Si puo disabilitare la memoria interna e lavorare solo con la memoria esterna, che dovrà contenere i vector di interrupt. 3'. Circuito speciale di Bootstrap (MODA = MODB = 0).
drfferenza deì circuito unico i vector di interrupt risiedono in una ROM speciale, chiamata "ROM di avvio". Alla partenza viene eseguito questo programma che rimane in attesa di ricevere informazioni tramite la porta seriale;
A
nrró<ta
nrnrodrrr:
-
--,ve per scflvere un <or'
pro-
gramma nella RAM dall'indirizzo 00 a FF. 4". Circuito speciale di Test (MODA =1
e
Questa versione espansa del microrobot TRITT puo ptlotare
MODB = O) molti sensori e attuatori, grazte alle numerose linee di l/O del 6BHC1 1. Funziona come nel modo bootstrap, in piu si puo accedere alla memoria esterna e anche comparatori, gli Input Capture e gli accumulatori di ad alcuni registri protetti. E utilizzato nelle prove di fabimpulsi. brrca. |LO - ^^-+^--"^- t'indirizzo esadecimale 'l 000 della precedente pagina il è riportato Nello schema della PUr LO n^ VLLUPO zona dei registri; se si scrive in questo induizzo il valore collegamento semplif icato deì piedinì principali del uscita. sr rifletterà sulle corrispondenti lìnee 6BHC11 quando funziona in modo circuito unìco I
di
loncrondn ,' Sia il funzìonamento che la gestione e la programmazione del 68HC11 sono molto diversi del microcontroller PlC. La porta A del 6BHCl'l ha 8linee, delle quali 3 funzionano come ingressi e 4 come uscite, la restante è configurabile sia come ingresso sia come uscita. Inoltre queste linee sono condivise da altre risorse, come i
nrpqt: nosizione riceviamo l'informazione
dai tre pin che funzionano come ingressi. Di consedrrrante nrrpqta fr rnzinno i disnositivi interni uu "-q, ynt?n7à associati a questi piedini sono scollegati. Nella fotografia si mostra una variante del microrobot TRITT che supporta moìtissìmì sensori e attuatori, i quali sono con-
trollati perfettamente dal 68HC11, grazie alle
sue
numerose linee di l/O.
Un esempio della programmazione delle linee della nar+rtd A A .hirr;rì Ll lldrrd iJUl
rl In++^.^ rcLturc dr
lr rd cnmnliri+r )cll vllLlLo
Ài nrrocin ul 9uE)Lw
nrnPlu-
ce5so.
Programma per accendere un diodo LED montato sulla linea PA6:
ORG
$0000
;ll simbolo $ rapprerenta il valore esadetimale
LDA
#40
;ll regifro è caricato con il valore 40
STAA
$1000
;5i scrive sull'indirizo $1000 ehe corrisponde ;alla Porta A, con PA6 =
clcL0
BRA
CICLO
;Generiamo un "salto su se stesso" provocando ;un cklo infinito.
Fotografia della scheda di controllo del motore e sensori del mrcrorobot TRITT diseqnati per MICROROBOTICA S.L
END
1
NilICROCONTROLLER
P
óI
Micro'PlG froiner Plus
Micro'PIC Trainer Ptus a scheda MICRO'PIC
TRAINER PLUS è un modulo opzionale di espansione del sistema di sviluppo MICRO'PlC TRAINER descritto in precedenza. Entrambi i prodotti sono stati progettati dalla Ingeniería de Microsistemas Programados S.1., che li commercializza in tutto il mondo. Lo scopo di questa scheda e permettere l'espansione di diverse periferiche, molto comuni nelle appltcazioni basate sui microcontroller, per poterli controllare tramrte il MICRO'PlC TRAINER, con il quale si accoppia
ditta
grazie al connettore PICBUS, che ha 26 linee e che trova sulla scheda.
Per facilitare l'utilizzo congiunto
sr
di questi due
moduli, è possibile acquistare il MICRO'PlC LAB
nel sistema di sviluppo MICRO'PlC TRAINER i seguenti dispositivi: 1. Canale di comunicazione seriale RS-232. 2. Tastiera matriciale 4x4. 3. Barra di diodi per visualizzare lo stato logico dei segnali più significativi 4. Rete di periferrche comunicanti tramite il bus l2C.
5. Vrsualizzatore da 4 display a 7 segmenti pilotato dal SAA1064 02Ò. 6. Quattro canali di conversione A/D e uno D/A con ìl circuito 12C PCFB591 7. Porte di l/O digitali supportate dal PCF8574 (l2C). B. Clock/Calendarìo in temoo reale oiù RAM non volatile grazie al PCF8583 (l2C).
PLUS,
un drspositivo che su una scheda di metacrilato supporta il sistema di sviluppo MICRO'PlC TRAINER, la scheda
di
esoansione delle oeriferiche MICRO'PlC TRAINER e un trasformatore professronale che alimenta
La scheda MICRO'PlC TRAINER PLUS ha una dimensio-
ll MICRO'PlC TRAINER PLUS, permette di realizzare e sviluppare progetti basati sui microcontroller PIC della gamma media, aggiungendo alle periferrche esistentì
ne normalizzata da 100 x 160 mm, Eurocard. È alimentata con +5 VDC che riceve tramite le linee del connettore PICBUS, Ie quali arrivano dal sistema dr sviluppo su cui si trova il microcontroller. Nella figura è riportato lo schema della scheda, che viene accompagnata da un Manuale di Utilizzo, il quale
Sistema MICRO'PlC LAB PLUS.
Scheda MICRO'PlC TRAINER PLUS
PLUS
tutto il sistema a 220 YAC. come si ouò vedere fotograf
nella
ia.
N:oo
I
|
J
:BAT
I
Ni-cd 3.óv
s*me
ECO ló250Oó
:l
5--l
D3
D2
QI scroT
UT
sAAr oó4
Dir:OlltOltr/w
a:
è"".."$. sA3ó-l I
Schema generale della scheda MICRO'PlC TRAINER PLUS
descrive tutte le sue parti in modo approfondito, numerosi esercizi, programmi e routines tipiche. Tutti i programmi sono contenuti in un dischetto allegato. La maggior parte delle periferiche contenute in questa scheda sono controllate tramite il bus l2C, cui si collegano i seguenti circuiti integrati: - SAA1064: Controller per 4 display a 7 segmenti. - PCF8591: Convertitore D/A e A/D.
- PCFB574A: Porta da B linee di l/O digitali. - PCF8583P: Clock/Calendario + RAM non volatile.
Nella figura sono riportati i collegamenti della tastiera matriciale 4 x 4 con i piedini del microcontroller, tramite le lrnee che arrivano dal connettore PICBUS del sistema dr sviluooo MICRO'PìC TRAINER. Osserviamo che la
tastiera è controllata tramite le B linee della porta B (RB7 - RB0) del microcontroller. ll software di applicazione configura le linee RB7 - RB4 come uscite, che sono attivate in modo sequenziale, applicando un livello attivo ad ognuna delle file della matrice. Le linee RB3 - RBO sono configurate come ingressi che ricevono l'informazione delle colonne della matrice, e vengono lette per determinare se qualche pulsante è stato premuto. Quando il mìcrocontroller non dispone del bus 12C implementato sul chip, come succede nel caso del PlC16FB4, il software incaricato di gestirlo utilizza i pin Schema del canale seriale RS-232 basato sul circuito
:ntegrato
MAX232
16 sono riservati, lasciando Iiberi per l'utente 240 byte.
Schema dei collegamentl della tastiera
RB6 e RB7 per implementare le linee SDA e SCL. Se
iì
PIC ha il bus 12C integrato all'interno, i due segnali sono supportati dai piedini RC4 e RC3. Per realizzare la selezione del tipo di implementazione del bus l2C via
ll PCFB5B3P risponde all'indirizzo di 7 bit del bus l2C'. 1010000, dato che il pin 3 (A0) è collegato a massa. ll pin 1 (OSCI) è l'ingresso degli impulsi che si applicano come frequenza standard al clock, e che nrrÀ accoro di (fì f.lz C di 32.768 HZ, genefati da Un cristallo di quarzo montato sui piedini 1 e 2 (OSCO). ll piedino 7 (lNT) si attiva con un livello basso, nel -i ^"^,1,,--,,^ -ll-.*^ ---^ ^,,^proouca un arlarme caso sl o una +amnari, tempor|zzaztone. puo dispositivo si alimentare con una Questo batteria ricaricabile al Ni/Cd, quando c'è una mancanza nell'alimentazione principale Vcc. In presenza della tensione Vcc, l'alimentazione arriva tramite il diodo D5, e nello stesso tempo si ricarica la batteria tramite lo stesso D5 e R16. Se manca Vcc la batteria mantlene l'ora nel clock/calendario e i dati nella RAM.
software o via hardware, si debbono utilizzare i jumpers J1 e J2, che commutano isegnali SCL e SDA.
:,,' i ,.,.i: .,.i1,,,.',; i j,rf-r.,1;t., Nello schema della figura possiamo vedere che e stato |
basato sul circuito MAX232 (U5), il quale ha ii compito
di convertire i livelli TTL, presenti sul pin 'l '1 di trasmissione (Tx)a livelli logici RS-232, che siottengono sul pin 14 (TxD) e si applicano al connettore CN2, per il loro ulilizzo esterno. 1
i i-];-:f , i.,.ì ;. r"
a',,,i
i,:;:i
i;;
1:,t 1;,, fr.;:.
PCF8583P
Adr.: IOIOOOOT/w
jii
ll dispositivo PCFB583P adattabile al bus l2C, contiene un clock/calendario in tempo reale, con funzioni orarie tipiche, più allarmi e temporizzazioni. Inoltre inclu-
de una RAM statica da 256 byte dei quali
i
primi
Schema dei collegamenti
del clocklcalendario + RAM contenuto nel PCFB5B3P
È+è
È
+
g+r'i Fll#'È-g=Èl
È
+É+;,=r
"$.-$a+e:
P62
MICROCONTROTTER Micro'PIC lloiner Plus
Basato sul circuito integrato l2C SAA'1064, sulla scheda si controlla un visualizzatore formato da 4 display a 7 segmentr. linduizzo a 7 bit che gli corrisponde, ha i 5 bit più significativi programmati in fabbrica, mentre i 2 restanti prendono un valore che dipende dalla tensione applicata al piedino 1 (ADR). Se il pin e collegato a massa, i 2 bit assumono il valore 00; se si colìega al positivo il valore sarà 1'l; se si collega ad una tensione
U4 PCF859 r
Adr.:l
OO! OOOr/w
crrì A1 :À ,,n: n:ri: : J/u ?/9 \/rr -^ll^n: du v!L ilil ri:lnr^ vorvrc )drd u I c^ .^ )tr .i)t Luilcgd u|d vatto a tensione di 5/B Vcc sarà 10.
_--l I
GND
lrhama r'lai rallonamanti
del PCFB591 che conttene un convertitore D/A e un altro A/D.
I
ll dispositivo l2C PCFB57 44 fornisce al siste-
UI
sAAloó4 Adn:Ol I lOl lrlw
ma un'ulteriore porta da B linee di l/O digitali. Risponde all'indirizzo da 7 bit: 0 - 1- 1 - A2 - 41 - A0, che in questo caso, essendo collegati a massa i piedini 42, A1 e A0, si converte nell'indirizzo0 -'1 -'1 - 1 - 0 1
DIGI
.:::
,
,l
rJllili::l ri'
l:
'rttì;:il:l'
-0-0.
l
I 5436-l t
sA3ó- t t
e nerifcrichp da rontrollare tramite
linee di l/O sono pilotate con dei diodi
le
LED
che visualizzano il loro stato, anche se sono -++i,,^ con -^^ l^^i-^^^-+ rogrca negdLVa, arlve \ehoma dpi rnllonamanfi del modulo visualizzatore tramite tl circuito tntegrato SAA1 064.
L'informazione da visualizzare
è multiplexata
sui
digìt del visualizzatore. ln primo luogo sulle linee P1-PB appare il dato per il digit 1 e su P9 -P16 per il digit 3. ln cpnrrito cr rnrrcqtp linpc,arrirr: il d:to npr i rliai ) p L rispettivamente. ll processo è automatico e sequenziale, e avviene ad una velocita tale che i4 display sembrano attivi tutti insieme, mentre in realtà lo sono sola-
U4 PCF8574A lll* Adr.:Ol ì 'l OOOr/w
monta alro nor \/nlt2
Questo modulo è basato sul circuito integrato 12C PCFB591, che è Eià stato descritto in modo
approfondito in precedenza, quindi riportiamo solo lo schema dei colieoamenti sul MICRO'PlC TRAINER PLUS
Schema dei collegamenti del dispositivo l2C PCFB574A che forntsce a/ srsiema una porta di B linee di llO digitali.
II nano favoloso ,l
.,
i'l l
i'i,lr ri i i
All'interno della grande varìetà di modelli di microcontroller PIC esiste una "casta" soeciale che riceve il soprannome di "nano". Sono chip portentosi che con-
tengono un computer completo, anche se misurano poco piu di mezzo centimetro di lunghezza per ancor meno di larghezza, ed hanno solo B pin, quattro per lato. Hanno una dimensione mìnuscola, dettaglio che si può apprezzare nella fotografia, dove si compara ad
Monty dispone di una pinza su uno dei due bracci, che è controllata da un PIC nano.
, ' , ' Un PIC nano confrontato con una comune chiave
cole dimensioni, anche il numero deìle risorse interne come la capacita di memoria e minimo. Le sue prestazioni, unite ad un giusto prezzo, rendono ideali i PIC nani per governare prodotti semplici. Ecco il motivo per cui è stato scelto il nano PlC12C50BA per controllare la pinza che possiede Monty in uno dei suoi bracci, e con la quale potrà prendere, trasportare e depositare oggetti.
i'
,1,
J:t,:::,,!;)
t.,:':lt!.,,t':,
i-,.'i:,:';':, l.':'::::, iilii,,\'tt'i!
Per poter inquadrare i nani nella grande famiglia dei PIC .\ ot l^++^ -l tcLLUuna comune chiave. Questa caratteristica da to re un'idea delle possibilità di questa fami-
ripassiamo la distribuzione della medesima. La famiglia
nlia' orazie alle srre ridotte dirnensioni sarà possibile ottenere da questo sempli-
ce oggetto un potente controller, il
ftIODEtIO
quale, introducendo la chiave nella serra-
tura, riceva l'alimentazione necessaria pscnrire il nrooramma scrìtto in nor |!,.'y'"y' memoria, permettendo così di pilotare un insieme di periferiche quali relè,
CARATIERJSTrcHE
FEl,4egXe nC I2C5XX
33 isfruzioni da 12 bit
ellCl2cXU
35 istruzioni do 14 bit
:P€tóeXX
motori, luci, ecc.
I
.Pr€lFcxx
58 istruzioní do I ó bit
Ptctscxx
77 \struzionido Ió bit
:
Questo piccolo dispositivo dispone di
tutte le risorse e riunisce tutte le caratteristiche tipiche dei PIC che abbiamo studiato sino ad ora. Come è logico, viste le pic-
i Tabella con
i quattro grandi gruppi di microcontroller PIC da B bit.
ii,iii,,i:;:t:.:;,;tt:1.ltt:1,,11i!y'ot:itiili,;.i;i'rr'',;ì:;.:i!;i,t:t
lit:i:tr,;.,
dei microcontroller PIC da B bit si divide rn quattro grandi gruppi, rhe si diversifir:no ner porenza e prestazront, e <nnn )vr rv rrinnrtrii rPUr to Lr rnoll. tgilq
rho Lr rs
figura a lato.
Analizzando la tabella della fìgura osserviamo che nella gamma A--^ *^..J;^ Ireild ^^ilud5e e ilreurd Cl
sono due modelli che rispondono alla nomenclatura PlCl 2C5XX e PIC'1 2CXXX. risoettivamente. Questi modelli sono pertinenti alla casta dei nani e sono caratlerizzali da un contenitore con soli 8 pin. Oltre a oueste due serie il costruttore MICROCHIP Scnrp rn: politica di potenziamento di questi piccoli microcontroller, sviluppando nuovi modelli dotati di memoria FLASH ed EEPROM dei dati, come iPlC1BF0l0 e P|C18F020.
microcontroller PIC da 8 bit sono carattenzzati dal possedere un repertorio di 33 istruzioni da 12 bit cadauna, ron rne frpnttpnz: masSima di funziOnamento di 4 MHz.'Ci sono solo due livelli nello stack per memorizzare gli indirizzi di ritorno al programma principale, il contatore di programma puo essere da 9 bit oppure da 11 bit e il numero delle risorse interne e delle linee di l/O è molto limitato. Nella figura in basso a destra sono presentate le principali caratteristiche dei due modelli fondamentali (PlC12C50B e PlC12C509) e delle loro variantr PlC12C5XX. La lettera C indica che la memoria di proI
9-t I
ffiffi
ilt
tNDtRtzzt
ffiffi -<9-l ì
ffi
ilffiiffiX
mro "o'"
CODICE r a ! z
tsrRuztoNE
ffim lt
o
Controllo della memoila di programma nella gamma base.
gramma è EPROM, le lettere CR che è RON/ e le lettere CE significano che si dispone di memoria EEPROM dei dati non volatile. Questi PIC dispongono di un Watchdog o WDT, sono alimentati con una tensione compresa fra 2,5 e 5,5 VDC e consumano 2 mA quando lavorano a 5 VDC e 4 MHz. Anche se hanno solo B pin gestiscono 6 linee di l/O utilizzando la funzione multiplexer su alcune di esse, così come mostra il disegno della piedinatura, che è compatibile con quelli della gamma media. !, ,"
lPlC "nani" a 8 bit della gamma media sono divisi
in
quattro modelli fondamentali; si chiamano P\C12C671, 672, 673 e 674. La loro principale differenza risiede nella capacità dì memoria e nella disponibilità o meno della memoria EEPROM per memorizzare i dati in modo non volatile. Inoltre dispongono di convertrtore A,/D a quattro canali e dì interrupt: carenza importante nei nani della gamma base. I nani della gamma media possono funzionare ad una frequenza massima di 10 MHz, g
+* GP2TOCKI/ANz/INT 7.g GPl,/ANlAner g
Vou eIk Zb? GPs/OScl,/CtKlN * GP4IOSC2/AN3ICrKO|..IT
+'-F
GP3/MC-IRAPP
Ptcr2c508A Plcr2c509A Plcr2cRso9A PlcI2CE5lS Prcr2cE5r9
#
5#
GPO/ANO Vss
3B
-a
4e
ir",'iiii,
Ptcr2c672
Prcr8F0l0 Plcr8F020
Ptcr2cEó73
Ptcl2cE674
Piedinatura dei PIC nani, uguale per i modelli di tutte le gamme
:I
o l':ltr: nar iri:ti
ln
:: i 1 2 -Iti!F$9Rf*.--i Fr(fJs[ArvlrhArA hto; j ____^.. iimmiuHmjruoutuzAl CANAU questo modo è posTREGIUENZA icAltAUi RAMi LINEE LrNEE 'jFREauENzA ,nE||.r MoDEro vÉ*v pRdtidiffrÈÉ ; _.qn nMERS AID ltAX. ltAlc tlo ROÀ,r Rofil EEPROÀ'I EEPRoM EPROfr4 EpRotr,t I VO i brbi,i Io br|ti hÉ* ; , hrr* i I!-ryi i ,** i::l*9l I 1*-1-"i 1J:,.J sibile accedere :
*
12; 128 l9n ldl4x14 *i+ j tlg lirt irusxra 3584 ,2048xt4 t:lod:z rse4 Hg/?tr.,Èn lóx8 I ,r, I rO2ar,ri t2có23 rzc2 rO2a,,ri *t*" l29xz4 Si84 204Sr(14 lóx8 I28 ,2Ctí71
.
t..
ó ó ó ó ,
--i -P l$dù | t0#ù
8 do s
lrft I tit
1 bit 1 bit lotrt+h I ds I bit I lotrt+lz l0ÀiFh I do I bif 4
l0lùb lolitt r^llrL
I
r l-ol.:.
I
do
f
, 1
.
caratte-
ristiche.
,ri.,'iii';-l
il::::i"t ::,':.:, itt:':";i.':)::t:. -;,i: r,
I
dell'architettura dei PlC12C5XX sì può scomporre
in
l
,
:
l
:
cinque grandi blocchi: :
'1". Memoria di programma EPROM. Memoria dei dati RAM.
2'
3"
ALU.
4". Clock e risorse associate. 5". Linee di l/O e funzioni ausiliarie. Come tutte le altre, anche la famiglia 12C5XX è costruita sull'architettura Harvard, in cut ci sono due memorie indipendenti, una per contenere le istruzioni,
tlEi4(nn ìioDEtto
PRC)GR/AISIAAúI
dollo
sog ,u *"ro, u o oronrutt, . o,','rljt r)t: bit cadauna e neì 509 è di 1 024 indirizzi da 12 bit. La memoria RAM dei dati di questi due modelli è di 25 o 41 bytes, a seconda che si tratti del 508 o del 509. registri specifici che formano l'area SFR della memoria dei dati, occupano le prime sette posizioni dalla 00 Hex alla 06 Hex, i registri di utilizzo generale partono dalI'indirizzo 07 Hex. Lo stack ha solo due livelli e non dispone di flag di overflow, è quindi compito del proI
;
l
Conosrpnr^lo oia il PIC 16F84, che e il cervello di Monty, è molto semplice analizzare e interpretare l'arch tettura dei PIC nani, dato che hanno meno risorse e sono dotati di memoria di capacità inferiore. Lo schema generale
nrroll:
J::tl';
l ''
'i i''l '': t,rt ..,.t,t!, ;1;.tti: ;..1I:Ì i::; ;1;,:,.'i'. 't,i'i: Ne|lapoliticadipotenziamentodeiprodottidotatidi memoria FLASH, MICROCHIP ha lanciato sul mercato una coppia di modelli dotati di questo tipo di memoria diprogramma,capacidifunzionareadunafrequenza dì 40 MHz. Nella tabella in basso sono riportate le caratteristiche più importanti.
.^n
istruzioni, vale a dire
Tabella con le principali caratteristrche dei PIC nani della gamma medja
nella tabella della figura sono riassunte le loro
simultaneamente alle due memorie. La dimensione dei byte della memorìa di programma è EPROM, coincide
grammatore controllare che non debordi quando si producono gli annidamenti ne le subroutines. Sono ammessi solo due annidamenti, dato che con il terzo lo stack perde uno degli indirizzi di ritorno e cade iì sistema logico. L'indirizzamento delle istruzioni arriva sempre dal contatore di programma, mentre quello della memoria dei dati può essere "diretto" quando I'indrrtzzo è contenuto nel codice dell'istruzione, o "indiretto" quando l'indirizzo del'operando e contenuto nel regtstro SFR. Per realtzzare le operazioni logico-aritmetiche, la ALU riceve due operandi da 8 bit. Uno arriva dal registro W e l'altro è un letterale immediato, o arriva dal bus dei dati tramite qualche risorsa interna. ll risultato è caricato nel registro W inoltre il registro di stato si carica con il valore dei flag che segnalano condiztoni particolari del risultato. Infine è interessante notare che questi PIC nani, con
un contenitore da soìi 8 pin, mettono a disposizione dell'utente sino a 6 linee di l/O, denominate GP0:GP5, .,+;ri---^^r^ -r-, ^e f unzioni il ^^" orLurl ut|tLLot tuu ptrr multiplexaggio.
:
Così come succedeva
nel
PlC16FB4, i nani dalla gamma base utiìizzano la tecnica della segmentazione nell'esecuzione delle istruzio-
ni, per cui dividono il compìto Tabella che raccoglie le caratteristrche
piit importanti dei
PIC nani con memoila FLASH
del
processore in due stadi. Nel primo si realizza la ricerca dell'istruzione suc-
:;t'i1:i,-,
P64
f
DrRrzzoru
BUsDAîl
ry*
ffi#
ffi
coDrcE |5TRUZ|ONE | 2
fil
ceo
ocr
Efonnarc
INDIRIZZAMENTO DIRETIO
\ 5.
ffi
INDIRIZZAMÉNIO |ND|RETTO
ffix g'
omzmnzu*
filerTmz
\8
lrÌl o"s/oscrz.r*,t
ilffix \
ó
\8
r3
m
mgrm
MCLR* VDD
am' \8
V55
Architettura interna dei P/C12C5XX
cessiva e nel secondo si esegue quella in corso. Questo
parallelismo implicito permette che tutte le istruzioni, eccetto quelle di salto, si realizzino in un ciclo di istruzioni, che equivale a quattro cicli di clock. Quindi se il microcontroller funziona a 4 MHz, tutte le istruzioni, eccetto quelle di salto, impiegano un microsecondo ad essere eseguite. Le istruziori di salto impiegano due
di uscita dell'oscillatore e collegamento del cr stallo di attArT^ GPE fr rnzinn: .^mo rrcritr dal ,",, ._rC€SSO[e € -,, nrn connessione del cristallo di quarzo. Inoltre GP0 e GP1 sono incaricati di ricevere idati in serie e gli impulsi di clock per la sua sincronizzazione nel modo di proqrammazione seriale del dispositivo.
microsecondi.
i.;;'t,i:, t',;i,t;. 1:''. j l'ir'ii' i' iri i'i :ii rl j!) ll':; 'l: ,:,
I cinque modelli di PIC nani della gamma base (508A, 509A, CR5094, CE518 e CE519) hanno la piedinarura rrportata nella figura, nella quale si può vedere che solo quattro pin hanno una sola funzione, mentre I restantl quattro ne supportano diverse, multiplexate nel tempo. I pin 1 e B ricevono l'ingresso della tensione di alimentazione: VDD che è l'alimentazione positiva e VSS che è la massa. I restanti 6 pin si possono configurare come ingressi o uscite, ad eccezione di GP3 che funziona solo come Ingresso.
Questo pin supporta altre due funzioni: la prima come MCLR# (richiesta esterna del Master Clear Reset) e la seconda come ingresso della tensione speciale per la programmazione, VPP GP4 svolge anche la funzione
t
:': i!:
t1-',
1,,.'
t;'ili
l',: :;,ìt'i
i
Voo-
|
GP5/OsCl/CrKrN- 2 GP4IOSC2.3 GP3/MCLR/VPP* 4#ff,l
Prcr2c508A Prcr2c509A Ptcr2cRs09A Ptct2cEStS Prcr2cESr9 Piedinatura corrispondente a tutti i PlC12C|XX
It PIC1 2C508A al['i nterno 1;f
i
,
lPlC nani da R nin dìverse cose in comune: fra Y"', hanno "" nr raqto vuqjLc,
lo rc nrinrin:li prilrLrvoil
cnnnlu illl rnntonitnro Jvr LUI lLcl llLUlc 6 c lq ld 5innlinrr"rr Plcullldtuld.
Le differenze sono dovute alla capacita della loro
ITMRo+WT i
6
2.5-6,25YDC
)
4MHz :
Spin
memoria, alla disponibilità o meno del convertitore A,/D, alla possibilità digestire interrupt e al repertorio di istru-
zioni a
cr
ri risnondono secondo l'annartenenza
alla
| À^ll. h-<e diqn^nnammr h:ca a moÀi: ^.^i il ucilo 9drìrr ro uo)q ur)purr9d| il |d ud)tr u r rcuro. I rìdr
gono dr un repertorio di 33 istr;zioni, mentre quelli
ria di progranma e
della gamma media supportano due istruzioni in più.
istruzioni da 12 bit ognuna. La memoria dei dati RAN/ disnnnp soln di 75 hvte nor qrririere nnerandi di utilizzo npnerale e I inclirizzi ner ,i reoistri snecifiri di controllo. , 'y,-. Funziona con una tensione di alimentazione compresa fra 2,5 e 6,25 VDC, supporta un temporizzatore da B bit chiamato TN/R0, un Watchdoq (WDT) e puo lavorare ad una frequenza massima di 4 MHz. Non dispone di intcrrr rnt Tr rtto lo r:r:tteristirhe csnostp ,annaiOnO Sintetizzate nella tabella della frgura. L'architettura dei PIC nani è già stata descritta in modo generale, e in essa si e messa in rilievo l'indipendenza fra la memoria di programma e quella dei dati, tipica dell'architettura Harvard.
ditipo
EPROM e puo contenere 512
,
íi i i +,; l,: 1 t;1 ;' !t; i. ì íj :';r ir i ; : :"il;l-;;:,;';,fi i'.ri +,il
i,;
F:t:sraf::
ae! elcr
zcllsf
Dato che conosciamo gia il nostro vecchio amico PIC'16F84 e vista la grande somiglianza, lo studio e la programmazione dei PIC nani risulterà un lavoro piu semnlice Perche e stato scelto il nano PlC12C508A? Ci sono due ragioni molto logiche: la prima e che entrambi si assomigliano parecchio, oltre ad essere molto dif+"-i ^^'-^^ ro '^-^^'rtu)t, l' )Elvr ruo vgr lr rtr è il microcontroller che si utiliz^:r^+-.^ rrhp N,4ontv nossiedp /d pEr pilutorc ro ^;^--l rs rvrvrrLy Pil 40 Lr PUJJTEUq in uno dei suoi bracci.
l:i i-
t i, r,i ir'i 1 li1 1.; !
1
!''l'
ll PIC'l2C50BA con cui si controlla la pinza del braccio di Monty, possiede una memoria di programma capace di contenere 512 istruzioni da 12 bit. La dimensione degli indirizzi della memoria coincide con quella delle
.-i
oooonffE{ffi MEMORIA PROGRAMMA
## =re
I
,rmm
H=
tt Dalla nostra descrizione generale dei PIC nani, abbiamo visto che fra i nani della gamma base, il PlCl2C50BA è ouello che ha meno caoacità di memoria: la sua memo-
Struttura interna e tndirtzzamento della memoria di programma del PlC12C50BA.
i....r.
...
..:: .- ..
:;,r1ii +'!iii:i! ?'Í,,l,liX+,i!:+l'l
- -;
istruzioni, per cui il contatore di programma si incrementa normalmente, ogni volta che ne viene eseguita u
na,
Gli indirizzi di ouesta memoria si estendono da 0000
Hex sino a 0'lFF Hex, come si può osservare nella figura. f altro nano della gamma base, il PlC12C5094, ha il doppio di capacità, per cui ilsuo range di indirizziva da 0000 Hex a 03FF Hex. i i r ,.l , l: . , ! , ." ji; ,;t ,i 'i : ,1 , ,;,, ':,rt, ;i :l',iti l! ,, ;: :.1
.
'1 .1
,:,
..
:
t :t .
t.
l1
t
','
occupa l'induizzo 00 Hex, non esiste in realtà, perche non è implementato fisicamente. Si fa riferimento a questo registro quando si punta ad un operando in una istruzione con indirizzamento indiretto, pero in questo caso I'induizzo dove si trova l'operando si ottiene dal contenuto del registro FSR, che occupa l'induizzo 04 Hex. All'indirizzo 01 Hex c'è il TN/R0, owero il valore che si carica neì TMR0 per iniziare la temporizzazione. Gli B bit meno signìficativi del contatore di programma sono contenuti nel registro PCL, all'indirizzo 02 Hex.
:
ll PlC12C50BA dispone di un solo banco di
memoria (Banco RAM 0) per scrivere i dati. Questo banco ha 32 tnduizzi da un byte dì lunghezza ognuno. ll suo range di indtrizzi parte dall'indirizzo 00 Hex sino a 1F Hex. Dei 32 registri della RAM, i primi 7 sono dedicati ai registri di controllo del processore, questa zona viene definita zona dei Registrr Specifici (SFR), mentre i rimanenti 25 sono di utilizzo generale (GPR). La distribuzio-
.lellp nrime ^^ E^ tt---^^^--i^-^ I o))E9llc4lwllE usils JsLLs Pr il rrE sefie Ilc
nosiztonl Sono l.Jv)rz
, ',
' ' ' . ,
]
Uno dei registri piu utilizzati nei programmi, è il registro STATO, che si trova all'indirizzo 03 Hex.
di
STATO
(lNDlRlzZO 03 Hex)
a
riportate nella figura in basso. :,
;'i;;'1':
| '',
,,;
lt:
Distibulone dei bit del registro di STATO
"..
e nrime sette
nosizioni della RAM funzionano come registro di controllo del microcontroller, e i bit di ognuna gov€rnano le funzioni piu importanti delle risorse del processore. Abbiamo già conosciuto la maggioranza di questi bit occupandoci del PIC 16F84.ll registro INDF, che I.-Y,.,YvJ|1|v
-l
Degli otto bit di cui è composto, il penultimo non ha nessuna funzione. Dei rìmanenti, 5 sono di lettura/scrittura e due si possono solo leggere (TO# e PD#), secon-
do quanto rrportato nella figura in alto. Di seguito analizzeremo le funzioni dì ognuno dei bit del registro di STATO.
di riporto e resto (carry e borrow) Nell'istruzione di somma ADDWF, questo flag va a
C: Flag
l
1
quando c'è del riporto nell'ottavo bìt, e nella sottrazione SUBWF va a zero quando c'e del resto nell'ottavo
sFR (7)
__lî
brl.
Nell'istruzione di rotazione RRF, si carica con il bit meno significativo dell'operando, e nella rotazione RRL sr carrca con il bit piu significativo dell'operando.
I l
I
I
GPR (25)
DC: Flag
di riporto e resto intermedio
Nell'istruzione di somma ADDWF va a 'l quando c'è rrporto nel quarto bit (operazione con BCD), mentre nella sottrazione va a zero quando c'e resto nel quarto 0rt.
7: Flag di risultato zero Organizzazione della memoria dei dati RAM del
PIC1
2C50BA
Va a 1 automaticamente quando un'operazione logicoaritmetica dà come risuhato zero.