View
231
Download
4
Category
Preview:
DESCRIPTION
Tutta la raccolta in versione torrent al link: http://www.tntvillage.scambioetico.org/index.php?act=showrelease&id=192104 Su Issuu c'è la raccolta completa. Cerca "Monty Peruzzo Editore".
Citation preview
MICROCO
Registri dedicatialla EEPROM
er gestire in lettura e scrittura le 64 posizio-
ni della EEPROM del PlC16FB4, si utilizzanoouattro reoistri dell'area SFR:
EEDATA: Contiene il dato da scrivere o il dato letlo,
EEC0N2: Si utilizza come dispositivo di sicurezza durante la scrittura.
EÈADR (09 BANCO O}
\"
EEDATA (08 BANCO 0)
EECONT {08 BANCO r)
EECON2 {09 BANCO r)
Registri incaricati di realtzzarele operazioni con la memoria EEPROM
La lettura di una posizione della EEPROM inizia carican-do in EEADR l'induizzo a cui accedere, Successivamente
si pone a 1 il bit RD del registro EECONl. Nel cicloseguente il dato letto è disponibile in EEDATA. Questodato permane nel registro sino al realizzo di un'altraoperazione di lettura o scrittura nella EEPROM.
slufus
eesdr
eedoh
eeconl
bd
movlw
movwf
btbsf
bcf
movf
Creore un progrommo per leggere l'indirizzo 0C Hdello EEPROM e deposiiorlo nel regislro W.
;rd = 0 per ocedere ol bonco 0
lv=0cP = eeodr
;rp0 = | per occedere ol bonco I
;rd= I perleggere
,'rp0 = 0 per oaedere ol bEnco 0
;eedoh = w
Per scrivere un dato in un indirizzo della EEPROM, dob-biamo seguire una sequenza di istruzioni in cui parteci-pa in modo speciale il registro EECON2. Questo regi-stro, che in realtà non è implementato fisicamente,
assume solo una funzione di sicurezza, caricandosi con
ivalori 55 H e AA H in sequenza. Questo evita interfe-renze durante la lunga operazìone di scrittura, che a
volte dura fino a 10 ms.
ll ciclo inizia caricando in EEADR l'indirizzo dellacella e in EEDATA il byte da scrivere. Se decidiamo chedurante il processo di scrittura non si possono accet-tare interrupt, si deve mettere il bit di enable globalGIF - O In nrrpctn modo si evita che durante l'onera-,, I YvLJLv 'LL
I vVL' u
zione di scrittura, la CPU venga sviata verso un'altraroutine al verificarsi dell'interrupt. In seguito dobbia-mo autorizzare la scrittura, mettendo il bit WREN = 1
nel registro EECON'1;poi dobbiamo includere nel pro-gramma una sequenza di istruzioni che caricano in
primo luogo il valore 55 H in EECON2, in seguito AAH nel medesimo registro. Terminata questa sequenza,si pone il bit WR = 1 in EECONl e si inizia la lungaoperazione di scrittura.
0x03
0x09
0x08
0x08
Euquequ
equ
shfus,rpO
0x0r
eeodr
shfus,rpO
eecon!,rd
shfus,rp0
eedofo,w
MICROCONTROLLERMemorier dei deiri EEPROilI [lII
Quando termina la scrittura, nel registro EECONl il
bit WR sarà uguale a zero, e I flag EEIF a 1. Questo flagsi pone a 1 automaticamente, al termine del ciclo di
scrittura e, leggendolo, possiamo quindi sapere se il
processo è terminato. ll flag EEIF dovrà essere poi reset-
tato dal programma.
Dopo ogni ciclo di scrittura è raccomandabile verifi-care l'indirizzo della EEPROM, per vedere se e stata
scritta correttamente.
Creore un progrommo per scrivere il volore Oxff
oll'indirizzo dellq EEPROM 0x32.
Si suppone che primo del progrommo si siono specificoie
le direftive che ossegnono oi
regislri di controllo impiegoti gli indirizzi corrispondenfi
{eeodr, eedolo, slolus, inlcon, eeconl, eecon2}.
Tabella con i valori che assumono i registri che gestisconola EEPROM dopo un Reset.
(x: sconosciuto, u; non cambia, q: dipende dalla condizione).
sempre valore zero in caso di lettura. Infine i bit RD, WR,
WREN, ed EEIF del registro EECONl, prendono un valo-
re casuaìe dopo un POR oppure un valore che dipende
dalla condizione precedente (q) se il Reset dipende da
altra causa. Nella tabella riportata qui sopra si riassumo-
no i valori di questi registri dopo i vari tipi dr Reset.
I principali fabbricanti di circuiti integrati e di memorie,
offrono EEPRON/ con differenti capacità. Microchipdispone di tre grandi famiglie di memorie EEPROM:
tamiglia 24xxxx: Memorie EEPROM per bus I2C a due linee.
5CA
5CL
Adattamento delle memorte EEPROM 24xxxx per bus 12C
alle linee di l/O dì un microcontroller.
Gt2c
&.egisfre
EEDATA
Vc!*ea dapoRest*f FOR
xxx xxxxxx xxx---O xO(Xt
lfclore de:peshr? Rese9
UUUU UUUU
UUUU UUUU
---O qOOO
. EEADR
;EÈCONI
bcf
movlw
movwf
movlw
movwf
bsf
bcf
bsf
Sequenzo di scritturq
;rp0 = 0 per occedere ol bonco 0
iw = 0x32
P, = eeodr
iw = 0xff
ry = eedoto
ppO = | per occedere ol bonco I
;gie = 0 per proibire inlenupf
ryren ' I per permellere lo scrilfuro
nello EEPR0M
,n* = 0x55
ff = eecon2
iw = Oxoo
;w = eecon2
ryr = I inizio ilciclo di scrilluro
movlw
movwf
movlw
mowvf
bsf
shfus,rpO
0x32
eeodr
uxIT
eedqta
slofus,rpO
inlcon,gie
eeconl,wren
uxcl
eecon2
Oxo
eeeon2
eeconl,wr
I bit dei quattro registri che partecipano alle operazioni
della EEPROM, prendono dei valori predeterminati
dopo il Reset. Questi valori possono essere diversi se il
Reset è dovuto al colleqamento dell'alimentazìone(POR) o ad altra causa.
Dopo un Reset provocato da POR (Power On Reset)
i bit dei registri di EEDATA e EEADR prendono un valo-
re casuale (x) oero se il Reset è dovuto ad un'altracausa, i bit non cambiano valore (u). ll registro EECON2
non è implementato fisicamente, e i suoi bit hanno
Voo
TNICROCOlllemoriei dcrl CCPROfrfi
R
Collpoamcnh rlplle memnrie LIPROM 93r<xralle linee di l/a del microcontroller.
In queste famiglie è sufficiente riservare due o tre filiner realizzare l'interscambio d'informazioni con la
memoria EEPRON/. Questo aspetto e molto importantequando si collega uno di questi dispositivi ad un micro-
controller con un numero limitato di linee di l/O, per
ampliare la sua memoria. ll trasferimento si realizza in
sprip spnrrpndo rrnn dei nrntnrnlli :hitrr:lj deil'indu-'stria, come illustrato nella figura.
Nella famiglia24xxxx predisposta per il bus l2C esi-
stono dispositivi come la 24C00, che ha una capacita
di soli 128 bits, raggruppati in bytes, con una ve'ocitadr scrittura di 4 ms e una frequenza di 400 KHz, ed
altre come la 24\C64SC che dispongono di 64 K bitscon rn tcmno di srrittrypS di 5 ms e 400 KHz. Entrambii modelli supportano '1.000.000 di cicli di
scrittu ralca nce I latu ra.
Della famiglia 93xxxx rlcordiamo il modello 93AA86,--^--;+- ^ri 1É Khits rrn temno di srrittura di 5LUI I Ul lo LovoLlto ul I u r\urLr, uil LLr I rpv ur rLl
ms p lna f reouenza di 2 MHz. La tensione di alimen-tazione puo essere compresa fra'l,B e 5,5 VDC, e il
numero di cìcli dr scrittura/cancellazione garantito è di
1 .000.000.Della famiglia 25xxxx, progettata per supportare il
protocollo SPl, sprcca il modello 25LC640, con 64 Kbits
di capacita, una velocità di scrittura dì 5 ms e 2 MHz di
Collegamenti di otto memorieEEPROM 241C64 per ottenere una capacita di 51 2 K bits.
frequenza, tensione di lavoro fra 2,5 e 5,5 VDC con
1 000.000 di cicli di scrittura/cancellazione.
In alcuni casi sono necessari grandr quantità di
EEPRON/, e per queste situazioni si possono configura-re insiemi di dispositivi controllati in modo indipenden-te da diverse linee di indirizzamento, che utilizzano gli
stessi l/O del microcontroller. Nella figura e mostrato un
circuito formato da otto memorie da 64 Kbits ognuna,per ottenere un totale di 512 Kbits.
DO/DI
CLK
c5
ffii:.ÉllSilllllEL Algzlrtrurffi ^^]ilffi, Az
I:* DIREZIONEsr*ah
-7:
VDD
t2c
G'*,.,
Gi'sPl
Collegamenti della memoriaEEPROM 25xxxx per il bus SPl, ad un mtcrocontroller PIC
'i ;:, ;, r,':,,,.'',,',i,,1 ::,t:rr].: .,'.'rr.,.:::.,
Ppr nntpr d:rp rrn'ìde,e delle immense nossihilità di uti-vvJJr u
lizzo che hanno le memorie EEPRON/, presentiamo un
caso pratico. Abbiamo scelto un gioco sviluppato conun PIC 1 6FB4 che controlla una tastiera e un vtdeo LCD.
ll Lingo Numerico è un gioco nel quale bisognaindovinare un numero di 5 cifre generato in modocasuale dal gioco stesso. Con questo scopo, il micro-controller comunica al giocatore, tramite l'LCD i digitche sono stati indovinati, e che occupano la posizione
corretta, e quelli che sono stati indovinati, ma che nonoccu0ano la oosizione corretta.
Esistono due livelli di difficoltà che si differenzianoner il temno tnf,rlp di rrri si disnonp npr indovinare il
numero giusto. Se si indovina il numero prima che il
tempo sia scaduto, sul display LCD appare la scritta"HAl V|NTO", seguita dal punteggio, che equivale al
numero dei secondi che mancano allo scadere del
tempo massimo.
Schcma elefrrtr o dell annltcaz,one.
ln ouesta annlicazione si utilizza la EEPROM moltofrenttentemente ad esemnio qerve npr memorizzare siail nnme di ri:srr rn niocatore sia il nome del crrocaîore
che ha preso piu punti, pero noi abbiamo pensato ditiilizzarlz nor <rrirroro ìn nnni n:r+it: il nrrma"^ .a."îl^u-rtLLut ru pLr rLr rv!.L I w9ril PorLtLo il f tuItctu Ld)udtcnanar2t^ el;l ninrn
Lo schema elettrico e molto semplice. Le B linee della
Porta B supportano la tastiera matriciale 4 x 4, RB0-RB3
le frle e RB4-RB7 le colonne; inoltre queste linee servo-
no, in forma multiplexata, per trasferire informazioni al
di<.nl:v ICD lremrtp i cr rni innrocqr DO-D7 RAO RA1 o
RA2 nestisrnrn ispnn,rli di controllo del LCD.
Routine per colcoloreil numerb cosuole.Ogni volta che inìzia una partita, il Lingo Numericogenera un numero casuale di cinque cifre che deveessere temporaneamente memorizzato negli indi-rizzi della EEPROM che vanno da 10H a 14H. Ognicifra viene memorizzata con il suo codice ASCll, eIa routine fa uso del Timer 0. situato all'indirizzo00H della EEPROM, e delle variabili DATO_A e
DATO_B della memoria RAM"La formula oer calcolare il numero casuale uti-
lizza il valore del Timer 0, che cambia continua-mente, inoltre utrlizza un " numero base" chedipende dal vaìore orecedentemente calcolato.
Questa formula è Ia seguente:
Numero cssuqle = (Numero bose' I73 + 49 + Timer 0) %10
Di seguito riportiamo Ia routine corrispondente in
cui sono presenti molti commenti.
RAND dÍ EIADR ;Punlotore oll'indkizo del "numero hse" nello EEPROM
P34 NilICROCONTROttER
r ît.I f-------------- i.: I !"*--*-::;\_t_t_t_r*l*t&ta1
ro '1P "1f "lf :1 .-.
fo etfo clÉ ùtfo +t,.
=-r=T=T=TapqpqpqFq, l, ,! t' ,!i-
f*!o"P*P*.'.
TASIIERA MAIRICIALE 4X4
.!,,
-:::Èi6if-ffi"ilFffiI | <'!.J'j,{:
In*, f IJ*--
movlw h'10
movwf fSR
bí $Alus,s
bsf ÍEDATA,RD
M SIATUS,s
movf EEDAIA,W
movwf DAIO-A
R_8UC movlw h'lfsubvrf FSR,\{
btfrc STAIUSF
golo l+lN
mov{w d'173'
movwf DAÍ0-B
R-À{U oddwf DAT0-A,W
decfsz DAIO-8,F
goto R-MUI
oddh d'49'
oddwf TMR0,W
movwf DAI0-A
R-DIG oddlw' d'10'
btfis SIAIUS,ÍC
goto R_DIG
oddhv h'39
movwf lNtr
iid' t$Rl
oolo R BUC
R tlN movf DAI0 A,W
l,lovwf IEDAIA
Coll GÎAI.E
flefurn
;Selezioniomo il Bonro I
Éomondo di leturo
;Selezioniomo ilhnco 0
f,orliomo il numero bore in DAIO-A
,'Vedfichiqmo seà sbto kminob ilnumero
;['hrminob?
;5i
fork{iomo DATO-B on ilvolqe 173
;Sommo di DAIO-A con W
f,'sloio somrnob 173 Yolh DAIO-A?
;lS
;Si; Sommo 149 ol numero
;Sommo il volqe del Timer 0
;Si stobilisre il nuovo numero bose
;5i sommo I 0 o W sino o che non genero riporlo
Suesto fo sì che il numero sio do 0 o 9
;5i converle in ASCII il numero
;5i conhollo lo posizione oll'inlemo del numero
;Si intremenh lo psizione del numerorl,
;)r npeE srno 0 J volle
;Scritluro del nuovo numero bose nello EIPR0M
;5i coriro il nuovo numero bose in W
;Porliomo il nuovo numero nello EEPR0M
inrrm J',.r', r;nai'r"' oorllJn irp*ol.l
MICROCONTROtLERUtilizzo e progrclmmclzione deller EEPROIiI
I m pa ri a m o ad uti tizzarele EEPROM
computer e i sìstemi informatici attualmente uti-lizzano le memorie come elemento base per
supportare le loro applicazioni. f importanza diquesti dispositivi è enorme, e imparare il loroutilizzo è fondamentale a tutti i livelli. Fino ad
ora abbiamo studiato la struttura e i registri che con-trollano la memoria EEPROM del PlC16FB4. Si tratta di
fare un passo in piu, e imparare ad utilizzarla mediantei programmi adeguati.
Anche se la programmazione del PIC e ancora infase di apprendimento, dato che abbiamo solo iniziatoad utilizzare le istruzioni principali del microcontroller,crediamo che sia di notevole aiuto, una volta studrato a
fondo un dispositivo, provare ad assimilare le routinesche lo devono governare. Non importa se non capiremo
tutte le parti del progetto, quello che intendiamo fare èmostrare pezzi dedicati a leggere e scrivere la EEPROM.
Concentriamoci su queste parti.
lllustreremo ora un progetto che ha una vasta applica-zione negli stabilimenti, per gestire gli ingressi del per-
sonale. Lo svilupperemo sopra un potente ed economr-co sistema di sviluppo chiamato "Micro'PlC Trainer",che è stato progettato e commercializzalo dalla ditta di
lngegneria di Microsistemas Programados S.L.
Un sistema di sviluppo è uno strumento fondamen-tale per la realizzazione di progetti, che in questo caso è
stato dedicato ai microcontroller PIC della qamma
P35
Le memorie sono un chiaro esempro di circuiti ad alta scala di integrazione
,il..,,,,,,,,,,,,,"',",,''.,,.,,,.,,'," *t :@*.-:ì.ìì:rrtr,r:rir:i:l:.,:,:2lR,,t,tî*F*tr,.3 NilICROCONTROTlER
tuffi4lwffidw# Utilizzo e progrdmnrcrzione dello EEPROll,t
:Il:;:
$
J
Fotografia del sistema di sviluppo Micro'PlC Trainer.
media. Sostanzialmente è formato da tre elementi:
1) uno scrittore/cancellatore di programma del PlC,
2) un insieme di periferiche utilizzate nelle applicazioni
con microcontroller, 3) circuiteria ausilraria che com-nrondp :limpnt:tnrc rircuito di Reset e crìstalìn di nrrar-vrL I rvL
zo. La scheda Micro'PlC Trainer e collegata alla porta
parallela del PC e si controlla facilmente dal computercon il software che la correda.
Data l'efficacia e le possibilità che off re questo stru-
mento, dedicheremo più avanti una sezione completanpr dpscriverne le caratteristiche e l'utilizzo.
Si vuole emulare il funzionamento delle note macchine"ELIN/INACODE" che sono usate in molti esercizi com-
merciali per ordinare le file dei clienti. Nel nostro caso,
come video informativo utilizzeremo un display a sette
segmenti. Sarebbe stato meglio ulilizzare il display
LCD, di cui dispone anche il Micro'PlC Trainer, pero
data la sua complessita, ne parleremo più avanti. Sopra
il display sara mostrato il numero corrispondente al
turno attuale.
^ LL:--^ - 'J:-^^-i-inne lrn nrrlsante rhe una voltaHUUldlllu d ul)Pu)lzrvr rE ur I purJcr rLc Ll rq/
premuto, incrementa iì turno e prepara al seguente.
Questo pulsante chiamato RAO e collegato alla linea 0
della porta A.
In questa applicazione dovremo risolvere il proble-mà .hp qnrflp npl rasn 6j; Una mancanZa momentanea
di energia elettrica, o allo scollegamento involontario
deila nacchina. Con questafinalira sr imnrpo: la'rremo-ria EEPROM del PIC 16F84,
che memonzza l'ultimon u me'o visu a liz,,a ro, in
modo che in caso di man-
canza di al,mentazione, per-merto eli rinrandere î^..^++1tttc{Lq ut rPtcttuctc LUrrrrrc-
mpnlp il rnnlpnnin con:lritnrno dell'enerai: Comenllnîn di n)rton7) roncida-PUrrtv ur vq LErrzq !vr Jiug-
ri:mn rho nrr:ndn <i inizi: l:rrurrrv Lr rr, vuurruv Jr il ll4lo lo
^.i--,,^l+- l- ----l^,,p|md vorLd, td mdccn na Inl-
zi: il rnntennìn d: O
N r^l - -^^, ,^^_- r^rle iStrUZiO_t\cilo )cquErrzo uclni, prima di iniziare rl pro-
gramma prìncipale, esistono
una serie di blocchi e di soubroutines che descriviamo
dr seguito:
1o. Intestazionelnrlr rflo lo dirottirio 661 l'-..^-hlar l: lihrari: doi ranictriilrLruuL rL uilLLLrvL VLr lO))Cl llUlEf, lo llUlEllo uLr rLyrJLl I
interni del PIC e le relazioni delle etichette utilizzate.
2o. Subroutine EE_WriteÈ una ruotine incaricata d scrivere un byte caricato ini-
zialmente nel registro EEDATA nella posizione ountatada EEADR
3o. Subroutine EE_Read
I eooe il dato ountato dal contenuto di EEADR e lodeposita in EEDATA.
4". Tabella di decodifica TabellaÈ una ruotine che converte il codice BCD, presente sui
4 bits meno significativi del registro W, nel codìce adat-
to per essere visualizzato sul dispìay a sette segmenti.
5o. Subroutine di ritardo Delay_20_msRaslizza rrnr iomn^r'pzaztano rli 7O m< 56p nliminrrnI\EOlfZZq Utlq LEtttvwttLLoLlvllE ul 4v lll) Pql EllllìllldlE
l'effetto di rimbaìzo tipico dei componenti elettromec-canici, come il pulsante RAO.
6o. Programma principaleln questo programma si gestiscono i blocchi precedenti
per risoìvere l'applicazione.
EE Write
Tobello
p=lóF84
"Plóf84.lNC',
0x0c
sTAruS,RPO
EECONI,WREN
b'0l0t0t0l'EECON2
b't0!0l0l0l'EECON2
EfcoNl,wR
EECONI,WREN
EECONI,EEF
Woit
IECONI,EEIF
STATUS,RPO
STATUS,RPO
EECONI,RD
STATUS,RPO
Conhtore
;EE-WRITE: E uno routine che scrive un byle nello memorio EEPROM. lindirizzo sqrù contenuto nel registso;EEADR e il doto è stotro precedentemente introdotto in EEDAIA
list
lntlude
0x00
inizio
0x05
org
gob
or9
;Tipo di processore
;librerh con definizioni dei regiski inlerni
;Definisce lo voriobile conlqlore
;Vector Reset
Solto per solvore il veffore di inlenupf
;Seleziono il boncol
;Permesso di scri*uro nello EEPROM
;Sequenzo di sicurezzo, si coriro 55 e oo in EECON2
;Ordine di inizio dello scritluro
/mpedisce nuove scritlure
;Testo il flog per vedere se lo scrifuro è terminoh
;Lo scrilfurq non è lerminolo
;Lo scrilfuro è lerminoh e si resetto il flog
;selezione del bonco 0
;Seleziono il boncol
;Ordine di lefiuro
;Selezione del bonco 0
;Disposizione sullo tobello in bose ol PCI e W
;Digit 0
;Digit I
;Digit 2
;Digit 3
;Digit 4
;Digit 5
;Digii ó
;Digit 7
;Digit I;Digit 9
Woit
bs{
bs{
movlw
mowvf
movlw
movwf
bsf
kfbtfss
golo
kfbcf
relurn
oddwf
redw
refiw
reilw
reilw
reilw
retlw
retlw
retlw
retlw
retlw
PCt F
b'00llltit'b'000001 l0'yor0r r0r Ib'0t00t I I I'b'01 I00l l0'b'01 l0l t0t'b'0lllll0t'b'000001 I I'b'olillilt'b'0t l00t I I'
;EE-Reod: Rouline che legge un byte nello EEPROM. Nel registro EEADR si corico |'indirizzo dove ondqre o;leggere, e in EEDATA si corico il dotro letto.
EE Reod btbsf
bcf
refum
;Tobello: questo routine converb il codice BCD presente nei 4 bit meno significotivi del registro W nel formoto;qdqtto od essere roppresenhto nel disploy o 7 segmenli. ll codice di 7 segmenti, riiorno onche nel regisho W;con l'isfuzione retlw.
1qi1l]!1!1]!1!!]*R!t!{lul!utiutSili;!]ii::].]::]g: ìrlillìììììì;ìiìììì;:i:*Nrìt::::1,ura::]:]:*stsuìrì:uutììt:u1tffi r:9u,rrrl
,,,,,fl,,,****o*PI TNICROCONTROTTER
Utilizzo e progrermmqzione dellcl EEPROM$iÌi
ItÌ
.,111Ì
,,j.::t
1:11i'
Deloy_2O_ms: Si lrotlo di uno routine che lemporizzo 20 ms per eliminore l'effetto rimbqlzo. doi dispositivi elet-tromlcconici. Se il PIC lovorq o 20 MHz, il TMRO si increménh ogni microsecondo, quindi contondo 20.000microsecondi otterremo un lempo equivolenle q 20 ms. Se sceqliomb il volore di 128 per il divisore di frequen-zo, il TMRO dovrà contqre l5ó impulii che equivolgono o Ox9cin esodecimole, e dolo èhe il TMRO è oscendente,dovrò essere coricoto con il suo complemento o l, cioè 0xó3 in esodecimole.
Deloy_20-ms
Deloy-20_ms_l
lnizio
Woil_O
Woil I
INTCON,TOIT
0xó3
TMRO
INTCON,TOIF
Deloy_20_ms_l
IMCON,TOIF
PORTB
STATUS,RPO
TRISB
b'0001 1 'il 1'
TRISA
b'000001 t0'OPTION-REG
STATUS,RPO
EEADR
EE_Reod
0x09
EEDATA,W
STATUS,C
Ini_0
lni_l
Contotore
!oop
EEDATA,W
Contolore
Contolore,W
Tobello
PORTB
PORTA,O
Woit_O
Deoly_20_ms
PORTA,O
Woit_l
Deoly-20_ms
Conlolore,F
,10
Conhtore,W
sTAÎU5,2
Contofore
Contotore,W
EEDATA
EE_Write
Loop
Ini_0
Ini_l
Loop
bcf
movlw
movwf
clrwdt
btfss
goto
bcf
return
chf
bsf
clrf
movlw
movwf
movlw
movwf
bcf
chf
coll
movlw
sub#btfsc
golo
goto
clrf
golo
movf
movwf
movf
coll
movwf
clrwdt
btfss
goto
coll
clrwdt
btfss
goto
coll
incf
movlw
sub#btfsc
clrf
movf
mowvf
coll
golo
end
;Metle o zero il flog di overflow del TMRO
;Complemenlo o I di 15ó {0x9d
;Corico il IMR0
;Refresh delWokhdog
;Verifico se il TMRO ho finito
;Non ho finilo
;|l TMR0 ho finito, si reseth il flog
Jnizio del progrommo principole
;Concello il lotch di uscito dello Porto B
;Accesso ol bonco I
;Configuro lo Porto B come uscito
;Configuro lo Porto A come ingresso
/mposto il divisore di frequenzo del TMR0 o ,|28
;Seleziono il bonco 0
;Corico l'indirizzo 00 in EEADR
;Legge il byte dello EEPROM
i
;E moggiore di 9?
;E moggiore di 9 e si pone o 0 il contolore
;Non è moggiore di 9
;Metle o zero il conlotore
;
;lniziolizzo il contotore
;€onverte il contotore in codice o 7 segmenti
;Visuolizzo sul disploy
;Refresh del Wotchdog
;RAO = l?
;Nonèo l,ofiendere
;Temporizzozione per eliminore il rimbolzo
;Refresh del Wotchdog
;RA0 = 0?
;Nonèo0,ottendere
;Eliminore il rimbolzo. C'è stoto un impulso
Jncremento il conhlore
;
;ll contotore è moggiore di 9?
;5i è moggiore di 9. 5i pone o 00
;
;Memorizzo il nuovo volore del conlotore nello EEPROM
;Fine del progrommo
Le risorse ausiliarie
I PIC 1 6F84 ha il soprannome di "f ratellopovero" della famiglia. Ha poco di tutto, ma
nonostante questo, e molto piu utilizzatodei suoi fratelli, che hanno più risorse. Ha
avuto grande successo e la spiegazione arri-va dalla sua semplicità, economia e media delleca ratteristiche.
Prima di passare a studiare gli interrupt, così vitalinelle applicazroni del mondo industrrale, abbiamo con-siderato molto interessante fare un piccolo ripasso dellerisorse ausiliarie e comolementari che circondano il
Rlpasso
+Voo
Circuito base per generare un Reset premendo un pulsante
nostro m icrocontrollerMonty. Queste risorse
che funzìona come cervello di
sono:
-I
{POR), per attivazione del piedino MCIR # e per overflow del WDT.
38 La parola di configurazione.
ll Reset inizializza il sistema, e
il processore inizia ad eseguireil programma dalla primaistruzione, partendo da unostato noto di tutti i registri. È
un avvenimento vitale a cui si
arriva nelle seguenti situazio-ni:
1'. Quando si desidera provo-
carlo esternamente.2o. Quando si collega l'ali-monfrzinna nar lr pImavolta.
3". Quando il programmasr e "piantato" e voglia-mo che ricominci dal prin-c rp ro.
4". Quando trascorre un certotempo in stato di riposo.
L'applicazione deì livello logi-co basso al piedino 4 del PIC
genera un Reset. ll circuito più<omnliro rho normotto ì: c":JLr I rPilLL Lr rL PLr I r rL LLg lo )uo
attuazione è mostrato nella
figura.
îlt1#.|||24;waa.aa/ataaaaiait.aaa
REGISTRO DI STATO
IRP RPI RPO TO# PD#
in stato di "riposo", oppure stia funzionando in
modo normale, quindi eseguendo delle istruzioni. Nel
primo caso il bit PD# del registro dì Stato si pone a 0eil bitTO#a1
Quando l'attivazione del l'MCLR# si origina col pro-
cessore funzionante in modo normale i tre bit meno
significativi del registro di Stato passano a 0 e i rìmanen-
ti non cambiano, così come è rappresentato nella figura
IRP RPI RPO TO# PD# DC
x: Indeterminoto
ir"", ,,n, ì*,r'ior," o r' 0,",
u: Non cqmbio
Quando si produce un Reset per I'attivazione del pin MCLR#, il bit PD# del registro di Stato si pone a 0
REGISTRO DI STATO
IRP RPI RPO TO#
u: Non combiq
PD#
Valore che prendono i bit del registro di Stato quando si attiva MCLR# durante il normale funzionamento del microcontroller
Premendo il pulsante e originando tl Reset, puo
succedere che in quel momento il processore si trovì :,', ,,. ,
ln questo caso la reitiztalizzazione del processore si pro-
duce quando si collega per la prima volta l'alimentazio-ne. E chiamato Reset per POR (Power On Reset).
Questo Reset è generato con un leggero ritardorisnptln :l momentn doll'ennlir:zinnp doll'alimenla-I rrvL LLv
zione, con il f ine di permettere che la tensione dell'a-limentazione stessa sì stabilizzi al suo valore nomina-le. È un ritardo di 72 ms qenerato dal temporizzatore
REGISTRO DI STATO
.aa-.t*ffi |ffial*,ia1tt:aLttiltlltLa
PWRT (Power-up Timer) Inoltre con l'obiettivo di
ottenere la slabilizzazione della frequenza del funzio-namento del sistema, si aggiunge un altro ritardo di
1.024 impulsi del segnale applicato in OSCl. Lo pro-
duce il temporizzatore OST (Oscillator Start-up Timer).
Cosi quando si inizia l'esecuzione delle istruzioni, la
f requenza di lavoro e stabile. Come si vede nella figu-ra, dopo che si e prodotto questo tipo di Reset, ibitPD# e TO# restano disattivati, sarebbe a dire a 1, nel
registro di Stato.
.l , ,. :: .,:, l:: , ri. l',,; .
Come ricorderemo il Watchdog (WDT) è un contatoreche si incrementa al ritmo della frequenza dell'oscrllato-
re principale, e quando va in overflow origrna un Reset.
ll WDT viene caricato con un valore, ed entra ìn funzio-ne all'inizio del programma. Prima che vada in over-
flow, lo si deve resettare mettendolo a 0. Se il flusso di
controllo entra in un ciclo infinito, o rimane in attesa di
un segnale che non riceve, il Reset del WDT non arriva
in tempo e l'overflow reinizzializza il processore.
lloverflow del Watchdog si puo originare quando il
processore f unziona normalmente o quando si trova in/,.+.^/.Jt\!,t' ;^ .+-t^ ^1,,5Ldruuy , IrsLdL(J ur Iposo.
ll bit TO# del registro di Stato va a 0 quando il
Respt e stato nrovocato dall'overflow del WDT. Nelle
figure annesse possiamo apprezzare la differenza dei
valori che prendono i bit del registro di Stato, in
accordo con lo stato del processore quando il WDT va
in overflow.
Molte volte r sistemi basati su microcontroller devono
rimanere inattivi per molto tempo, aspettando che^,,-r-,,^^ ri f ---;- r-,,^.Àre c)|es,tn e il r:so delle mac_\-.luolLullu ll loLLlo lovvrorL. vuL)rv L il Lqrv \
chine distributrici di prodotti vari come caffe, bibite,
srgarette, ecc. Durante lunghi perrodi di tempo queste
macchine non fanno nulla, fino a quando un cliente sì
avvicina, introduce una moneta e chiede qualcosa. Con
lo scopo di ridurre al minrmo il consumo di energia, si
induce il microcontroller ad un sonno profondo, nel
^"^r^ r- -"- -++;"r+r À 'idotta notevolmente. ll PIC che èrludrc rd )ud d LUVTLd ( |
in questo stato di riposo o di basso consumo, si suole
dire che sta dormendo
IRP RPI RPO TO# PD# DC
u: Non combio
,otrl', ,, ruì* reg s;tro di stato i,r,uro:o *0,,
IRP RPI RPO TO# PD# Z DC
u: Non cqmbio:li
Registro di Stato dopo il debordamento del Watchdog quando il processore e in stato di "riposo".
c
REGISTRO DI STATO
REGISTRO DI STATO
PAROTA DI CONFIGURAZIONE
Struttura interna della parola di configurazione.
Per produrre questo stato di relax, basta eseguire ì'i-
struzione SLEEP Pertanto si ottiene che l'oscillatoreprincipale e le linee di l/O si congelano mantenendo il
<rr^ (f:tn nrororlonto
Per togliere il processore dallo stato di riposo esisto-
no due alternative: attivare esternamente il piedino
MCLR#, o fare in modo che il Watchdog vada in over-
flow, se è rimasto attivo quando si entra nello stato di
riposo, visto che non si eseguono istruzioni e non rice-
ve refresh. Un'altra possibilita per togliere il processore
dallo stato di riposo, consiste nell'annullare l'alimenta-zione per ricollegarla nuovamente, producendo un
Reset POR.
' r : ' ', ' '
La parola di configurazione occupa una posizione spe-
ciale della memoria di programma FLASH, la direzione
2007 ll, icui '14 bit regolano le funzioni vitali del pro-
.pssore l'oroanizzazinno di nrrpstn indirizzo della
memoria è presentato nella figura.| 10 bit meno significativi, denominati tutti CP
(Codrce di Protezione), sono incaricati di proteggere
l'accesso alla memoria dei codici. Se CP è 0le rstru-
PAROTA DI IDENTIFICAZIONE
zioni del programma non possono essere lette, al
contrario. se CP è '1 il programma memorizzato nella
FLASH si puo leggere. Con i due bit meno significa-tivi, FOSC0 e FOSC 1 , si determìna il tipo di oscillato-re che ulilizza il processore, secondo la seguentecod if rca:
ll bit WDTE abilita o disabilita il funzionamento del
Watchdog. 5e il WDTE è a 1, il Watchdog entra in
f unzione. In ultimo il bit PWRTE# abilita il temporiz-zalore PWRI che ritarda di 12 ms il Reset per POR,
per dare il tempo alla tensione di alimentazione di
stabilizzarsi. Se PWRET# è a 0, lavora come tempo-rizzalore.
ro
Sono quattro posizioni della memoriaFLASH che occupa n o induizzi compresi f ra
la 2000 H e la 2003 H. Sono solo accessi-
bili in lettura e scrittura durante rl proces-
so di memorizzaztone del programma.
Dei '14 bit della parola di identificazione,sono validi solo i 4 meno significativi, e rn
essi, il programmatore puo scrivere codici
di identificazione, numeri di serie, dati
sulla fabbricazione, modelli, ecc. Nella
figura si possono notare i bit validi per
ogni posizìone.
2000H2001H2002H2003H
RC1 I
XT0
Nelle parole di identificazione sono validi solo i 4 bit meno srgnificativi
P39
:
PROGRAMMA PRINCIPALE
CALL SUBROUTI
Operatività di una chiamata a subroutine
i:!i
PROGRAMMA PRINCIPALE
ROUTINE DI INTERRUPT
Un interrupt è un awenimento asincrono che si produce in modo imprevedibile.
RETURN
Che cos'èun interrupt?
'-r't
una fermata del programma in
" f:<o fli o<err lzinnn nar ..1+.r^roJE ur LJLLU4lul lc, Pcl )oltdlc,+ÉrA=É,i:i' '" " a realtzzare una routrne spe-;ft,
crale che riguarda la causa che
ha prodotto l'interrupt. Una,,^r+- -^*^r^+-+- r- rOutine dediCatavutLc LUt I tPtE tc Lq ro
all'interrupt si rìtorna al punto di par-
tenza del programma principale. Si puo
dire che l'interrupt ha le stesse conse-nrpnTp d, rrna "rhi:mata a subrouti-ne". Quando in un programma trovia-mo un'istruzione con CALL SUBROUTI-
NE 1, iniziano una serie di azioni, che in
forma riassunta si riducono ad un salto
all'inizio della subroutine e quando sara
stata eseguita la sua ultima istruzione,
che è quella di RETURN o ritorno, si
torna all'istruzione che segue a CALL
SUBROUTINE 1. Nella figura si puovodoro nr:fir:monto il componameîrodella chiamata a subroutine.
l'imnieoo delle srrbroutine evita di
ripetere nei programmi alcuni procedi-
menti di uso frequente. Invece di ripe-
terli tante volte quanto serve, si scrivo-no una volta sola in forma di subrouti-
,i .i ^--^^^ î++rî,,^,-^ ,,^- -A:-I tc, d Lur )r dLLcuc oLU ovcr)u ur ro Lrro-
mata (CALL).
,r, .lli. liiit:i-r.l r'.i tt,,:,, j,l:,i,t.j
Una chiamata a subroutine e una rottu-ra del flusso del controllo delle istruzio-
ni del programma principale, di formasincrona. 5i sa quando viene prodottanorrhp psnliritampntp invocata con l'i-struzione CALL.
Un rnterrupt è una rottura "asincro-
na" del flusso di controllo. Non si sa
quando avviene perche le cause dell'o-rigine sono dovute a circostanze non
'?;i:{:1:1r1 ,t"l
previste nelle istruzioni del pro-
gramma. Ad esempio, una
causa che provoca un Interrupt:l nrnressnre e l'ettivazione
mediante un livello logico alto,
di un piedino del microcon-
troller.Orrpstn livplln altn ootrebbeYULJLV
essere prodotto da un compa-ratore, che riceve come ingres-
so il segnale analogico di un
sensore di temperatura; il vaio-"^ ...l^l .^^^-l^ h- .,,^^"-+^ l-tc uct )c9trdrE Id )uPcrdru rd
tersione di riferimento, perche
la temperatura a sua volta ha
superato la soglia prefissata. llvalore della temperatura varia
in modo imprevedibile A seconda dell'antenna che ha rtlevato l'ostacolo si produce un interrupt differente,con le corrispondenti strategie.
Gli interrupt costituiscono il procedimento più rapido
Prendiamo ad esempio il microrobot a sei gambe
che cammina, mostrato nella figura, con una coppia di
antenne frontali che funzionano come sensori e che
rilevano gli ostacoli sulla traiettoria.ll microrobot a sei gambe e controllato da un micro-
rnnirnllor rho o<on1o 1n nrnnr:mm: nrinrin>la inr:riJn programma pflnclpàte, ilìLd|-cato del movimento degli arti meccanici, per seguire
ed efficace del microcontroller per il trattamento degl
eventi del mondo esterno
Se oualche oarametro o circostanza ha influenza
sullo sviluppo del programma, l'rnterrupt è il mezzo con
cui il microcontroller lo qestisce immediatamente. La
parte di programma dedicata alla gestione di questo una trarettona.Se ad un certoevento si chiama "routine di interrupt" punto del cammino, l'antenna di
sinistra tocca un ostacolo,viene aoolicato un livello logi-rn :lin :À rrnn Àai niorlini nlolLU OtLV OU UItV UEt PtEUil il Ugl
microcontroller, e viene gene-
. rato un interrupt.A quel punto viene abban-
donato il programma princi-^-r^ ^ -; --r+- -! Una fOUtinePO|E, s Jr )Orrq ou
, che si chiama RUT_SX, che
contiene una procedura perraaltzz=ra lr c+rarógia di fetfO_
marcra e aggrramento, per, evitare l'ostacolo. Nel caso il
. contatto fosse avvenuto sul-
'l'antenna destra, il livellolooico sarebl-re stato applica-to ad un altro piedino, e--"^l-.L.^ a+-+r l-n:i -+- l- .^,,)dtcuuc )tdLd tdilLtdLd td tuu-
tine RUT DX con un'altraL? antenn:, o flli, front3li
lel microrobot, funzionano come sensori per la rilevazione degli ostacolr strategia per aggirare l,osta_
PROGRAMMA PRINCIPATE
RUT SX
1
i
:
RETURN i
RETURN
RILEVATORE DESTRO f_
RUT DX
' -,':
colo sul lato destro, come si può vedere nella figura. In
questo esempio si producono due interrupt differenti,perché ogni antenna del microrobot fa riferimento ad
un piedino diverso del microcontroller, questo permettei salti a due routine distinte.
dalla subroutine, o dalla routine di interrupt, comeespresso graficamente nella figura.
Lo Stack è il luogo dove si depositano tempo-ralmente gli indirizzi di ritorno al programma prin-c ipa le.
,;,1''it 1" ,:,1i ',.;''' ''.n'i,ir,,i;,
Per rendere possrbile il corretto funzionamento degliinterrupt, è imprescindibile l'utilizzo dello Stack. Comericorderete, è un insieme di 8 registri, dal livello 'l al
livello B, che funzionano con una struttura LIFO (ultimo
ad entrare, primo ad uscire) associata al PC.
ldati in arrivo dal PC sono caricati nel livello 1, e
quelli scaricati in uscita verso il PC sono ancora quelli
del livello 1, come si vede nella figura.ll carico del valore del PC nello Stack avviene in
*^,.1^ r,,+nm r+irn ^r r>nrin ci oconr ro r rn' j5{pg7 jgpgItuuu duLUrroLrLU,9ucruv )r sJE9uE url
CALL, o quando si origina un interrupt. Anche lo scari-
co del livello 'l dello Stack sul PC avv ene in modo auto-matìco, quando si esegue l'ultima istruzione di ritorno
scARrco
STACK
Lo Stack ha una struttura LIFO.
L'ultimo dato cartcato nel livello 1 sarà il primo che uscira
ll carico dello Stack si realizza in modo autamattco con. I'Btruzione CALL o con un interrupt. Anche lo scarico awtene
in modo automattca,con I'istruzione di ritorno dalla subroutine o dall'interrupt.
Dato che dispone di otto livelli, dobbiamo fare
attenzione affinché non debordi quando si producono
annidamenti, ed e necessar o memorizzare piu indiizzi, di ritorno.
Non si possono scrivere piu di otto indirizzi di ri-, torno., N/olti Stack con un numero di livelli limitato, dispon-
' gono di un flag che ci awisa quando sono pieni, pero
li;#rr1rr,+:tir*,i, ,É :i::;:.È.rlr.:i,î4'i +..iìÉ+ lÉ:-s.{-+l*f iii;f:irj-"q';t;*rÉ+i:r
tl,
t
LIFO
Gonceffi e:I!O ilTICROCONÍROLIER
opernlivitù degli interruplììììirìl\iqs:wilgf rlslùiiiMtrilì:sì*úessiiÌÌùiìiwr*ir;
questa risorsa non e disponibile nel PIC 16F84, restaquindi responsabilità del programmatore vigilare sunr ro<tn f:ttn
14, 5i origina I'intenupt e viene acquisito dal processore.
34. ll PC si carica ron il valore del Vector di lnterrupt, che punta la prima
istruzione della routine dedicata all'intenuot,
54. Quando si esegue I'ultima istruzione della routine, che è
RETFIE (R|TORNO), il valore del livello 1 dello Stack viene caricato nel PC,
si ritorna al programma principale nel punto dove lo si è abbandonato.
Nel PIC 16F84 il Vector di interrupt contiene l'indiriz-zo 0004H della mappa di memoria del programma,invece il Vector di reset contiene l'induizzo 0000H.
Orro<tn imnlir: rhe l'inizin dol nrnnr:n,,,,r,,__ r,_y,_,,lma pfln_cipale avvenga all'indirizzo 0000H, e che quattrorndirizzi dopo, inizi la routine dedicata all'inter-ru pt.
E chiaro che il programma principale "coprirebbe"
le istruzioni della routine di interrupt, per evitare que-
sto si colloca in entrambi i vettori un'istruzione di saltoincondizionato GOTO, che trasla l'inizro del program-ma principale e della routine di interrupt ai punti cor-retti.
In generale, all'rndirizzo 0000H, si colloca un saltoall'indirizzo 0005H, salvando ìl Vector di interrupt.Normalmente i'inizio di un programma per il PIC è fattocome rl seguente:
goto inizio; All'indirizzo 0 c'è un'isfuzione di salto a "inizio"
tntzt0 bsf 5TATU5,5; Prima istruzione del programmaprincipale
Negli altri modelli di processori, ad esempio quelli dalla
ditta INTEL, gli interrupt dispongono di diversi Vector di
interrupt, non solo di uno come nel PlC.
Essi gestiscono una tabella di 256 Vector di
Interrupt, come mostrato dalla figura.ll vantaggio di disporre di tanti vettori, sta nel fatto
TABELLA DEI VECTORDI INTERRUPT
Tabella con 256 vettori differentidi interrupt, propna di alcuni processor; di INTEL.
che si possono trattare in forma differenziata le distin-fo a2rrca rho nonar:nn nli iniarrr rnl
Nel PIC 16F84, esiste un solo Vector di interrupt per
ìe drverse cause che li provocano, quindi le routinededicate ad essi iniziano in modo uguale per tutti.
La prima cosa da fare sarà verificare quale sia statal: r:tt<: doll'intorrr rnt nar derri:ro il flrrccn nli_, program-ma alla routine dedicata a quella determinata causa;per questo ogni diversa causa di interrupt dispone dirrn fl:n dodir:fn
iu!u1aìììììììììììììììììtùltrtuìtaiuiu:nt!t
Utilità delf interrupt
.i,'ll'T ._- ossiamo montare su Monty un finecorsa
. -.ostacoli sul suo cammino, come si puo vede-
fi re dalla figura. Uideale sarebbe che quandoil sensore chiude i suoi contatti, il processo-
re abbandoni il programma principale in esecuzione perentrare in una routine specralizzata, che ad esempio lofaccia retrocedere di un centimetro, girare di 90', avan-
zare di qualche centimetro, girare nuovamente di 90" econtinuare il suo percorso.
ll tempo che deve trascorrere fra l'attivazione delsensore e l'esecuzione del programma specializzatonella manovra anti-ostacolo, deve essere minimo. La
cosa migliore è utilizzare un interrupt, per questo ènecessario progettare un circuito per fare in modo chesubito dopo che ilcontatto difinecorsa siè chiuso, arri-
ffi
" ::: i ;:;::.: .,:. :, : :.,:: ì
.
,.:*Í:!211Hi$i*1]*i$llliiì"lfill;;a,
ll finecorsa anteriore serve per rilevare qli ostacoli
" l
, '' t
'
euando si chiude I'interruttore di finecorsa, si genera un fronte di discesa che si appltca al piedino INT e causa un tnterrupt
':*._.,,r,
vi un livello logico basso al piedino RB0/lNT del
PIC 16F84 che è quelìo dedicato alla richiesta esterna di
interrupt. ll fronte di dtscesa che si produce collegando
a massa il piedino quando si chiudono i contatti del
sensòre, produce l'interrupt, come sì puo vedere nella
fìgura.Utilizzando un interrupt, nello stesso momento che
il f inecorsa rileva un ostacolo, si attiva l'interrupt con la
routine associata ad esso. L altro modo consiste nel col-
legare il livello Iogico prodotto dai contatti del sensore,
ad una linea di ingresso normale che il processore
dovrebbe testare in continuazione, per conoscerne lo
staro.
Questo suppone, oltre alla perdita di tempo dovuta
all'esecuzione del test durante il programma principa-
le, un'attenzione non immediata alla situazione visto
che la CPU nel programma principale realizza anche
altri compiti oltre all'ispezione della linea di ingresso
che fa riferimento al sensore.
Uinterrupt è il metodo più sicuro, rapido ed effica-
ce, per reagire agli eventi esterni che influenzano l'ela-
borazione del programma princìpale.
Dooo aver completato l'istruzione in corso di esecuzio-
ne, se il PIC accetta un interrupt, sviluppa i seguenti
oassi ooeratìvi:
2o) Nel PC viene caricato il valore del Vector di intenupt che è all'indirizzo
00M H, dove inizia la routine dedicata all'interrupt.
4o) [a routine dedicata all'interrupt inizia tealizzando due compiti
importanti:
a) lndaga sulla causa che ha generato l'interrupt, e per fare questo
controlla i flags
b) Scrive nella memoria dei dati RAM, area GPR i valori di alcuni
reqistri del processore, con i valori relativi al programma principale.
Nel caso in i:ui questi registri fossero utilizzati dalla routine di inter-
rupt, i loro contenuti subirebbero delle modifiche, e al momento di
toinare al programma principale non si disponebbe più delle stesse
informazioni di quando lo si era lasciato.
RETF;EPC-<-UVELLO| (STACK)
i,,,,,.,,..",..,,.,.... ".,..".,..,..",..".",..,,..,,iOrganigramma del trattamento di un interrupt nel PlCl 6F84.
l. ii.j:i,ir í::! j. :.:i'; Í I i;:iii,r ì.r :i
Ci sono quattro cause che possono generare un inter-rupt nel PlC16F84;
FINE
:J:
lnlerrupt
PC+-UVELLO I TSTACK)
PC <- O4 (Vertor Reser)
ROUTINE DI INTERRUPTle Indogo sullo cquso2e Sqlvo i vqlori dei registri3e Risolve lo cquso
il.rîr;:itr,î r overflow iltemporizzatore TMR0. tlsuo contenuto pasu
4a. Quando termina il ciclo di scrittura di un bpe in un indirizzo deÌlamemoria EEPROM dei dati.
Una delle difficolta intziali che presentano questefr rnzinni ò rho nrr:lrrn^"^ "i. l. --".- -L^ l^y--,-, ìque std ta causa cne na oflgtna-to l'interrupt, la routine dedicata inizia sempre all'indi-rizzo del Vector dr interrupt che è lo 0004 H. Altri pro-cessori dispongono di un Vector di interrupt per ognlcausa che li produce, con il PIC 16F84 non c'è altrasoluzione che inrziare indagando quale sia stata la
causa dell'interrupt, testando i flags corrispondenti, e
indirizzando il processore alla routine corretta.
i i . l tl''i : : í t;i i' ; :,.'i i'1 1..1 i:, 1. :,'i. irj i i:.i:i'il:,X, i í: t:'
A volte molti programmi non necessitano di interrupt,e quindi non li usano.
Per oresto mnf ivn deve esistere Una Chiavp ncnpr;-le che permetta o proibisca gli interrupt nel loro insie-me.
Nel PIC 16F84, esiste un registro di controllo dell'a-rea SFR della RAM, chiamato INTCON, che regola il
funzionamento degli interrupt. ll bit più significativo di
INTCON
t-,".-"--"----.-"="- "ill bit piit significativo del registro INTCON è quello che permette o proibisce globalmente le quattro cause di interrupt
ffiH$ fi**É*trH+sÈFÉ d*E tr.ff E SF,ffi,gè
.-l-Inlerrupf
p€+_ STACKGIE=0
PC= 0004{Vecfor di inferrupt)
Rouline di serviziodell'interrupt (RSI)
5i memorizzo iregistri do modificqre
5i determino lq csusodell'inlerrupt
Solto ollo routine diservizio corrispondente
Si recuperono i vqloridei registri memorizzqti
Siconcello ilflogdi inierrupt
Ritorno (RETFIE)
PC+ STACKGie= I
Organigramma dello sviluppodr un interrupt tenln!1 co,nt1 dell funzion.e di GIE_
INTCON è chìamato GIE (Permesso Globale di
Interrupt).Se si scrive questo bit e si pone GIE = 0 tutti gli inter-
rupt saranno disabilitati, e il processore non ne accet-
tera nessuno.
Al contrarìo se scriviamo GIE = 1 il processore accet-
terà qualsìasi interrupt che si genererà, e ll programma-
tore potrà lavorare con essi.
Ogni interrupt dispone di un bit partrcolare di abili-
;,:t i' ::i;,.,:t1
tazione, che deve essere attivato se si desidera che al
prodursi dell'interrupt, il processore lanci le fasi del suo
sviluppo. Nell'organigramma della figura, si approfon-
discono le operazioni dello svìluppo di un interrupt,
tenendo conto della funzione del bit GlE.
Nella figura possiamo osservare che quando si
accetta un rnterrupt, il processore pone automatica-
mente GIE = 0, per evitare che durante l'elaborazione
della routine dedicata a questo interrupt, se ne produ-
cano altri nuovì.
Compìetata la routine dt interrupt ed eseguita
l'ultima istruzione RETFIE, che è quella di ritorno al
programma principale, iì bit GIE riprende il vaìore 1,
dato che ritornando al prìncipale, bisogna fare in
modo che gli interrupt possano nuovamente essere
accettatt.
iu
=ir.iil
5i cqncellqilflog
di interrupt
finterrupt esterno
elle quattro possibili cause dr interrupt che
ammette il PlC16F84 ce n'è una che gli per-
"nette di restare in contatto permanente con
glì avvenimenti che succedono nel mondoesterno.
Orrpctn intprrr rnt c sunnortato dal nipdinO 6 delYvLJ(v
microcontrolìer, e si chiama RBO/INT. Si tratta dr un pie-
Per fare in modo che il piedino RB)/INTsupporti richieste di interrupt esterni, i bit GIE e INTE devono valere 1
dino multifunzione, che puo essere utilizzato in duemodi differenti. In primo luogo puo funzionare come
linea di ingresso/uscita digitale (RBO), nel qual caso si
comporterà come ingresso se nel bit O del registro di
configurazione TRISB avremo caricato un 1, mentre
sara un'uscita se nel suddetto bit avremo scritto uno 0.
lnoltre può f unzionare come linea di
richiesta di interrupt esterno (lNT).
Per fare in modo che questo pie-
dino possa ricevere la richiesta ester-na di intprrr rnt dpvp pssere abilitatoper questo lavoro, per questo scopo
è necessarìo mettere a 1 il bit di
Permesso Globale di lnterrupt, GlE.
Inoltre bisogna abilitare anche il per-
messo particolare di questo inter-rr rnt mettendo a 1 il bit INTE.'-F', "
Sia GIE che INTE si trovano nel
registro INTCON che occupa l'indi-rizzo 0B H del banco 0 e il correlati-vo del banco 1, come illustrato nella
figura.
ll piedino RB0/lNT puo generare un interrupt quandoad esso viene aoolicato un fronte di salita o di discesa.
Un f ronte di salita consiste nella transazione di tensio-ne dal basso verso l'alto, mentre un fronte di discesa ela transazione inversa.
Per selezionare il tipo di f ronte, il
PIC'16F84 dispone del bit INTDEG,
situato nel registro OPTION, che
^(^.ttrlA I'inriirizza R1 h del banco 1.vLL u vu
Quando INTDEG = 1 il fronte attivosarà quello di salita, mentre quandoINTDEG = 0 il fronte attivo sarà quel-
lo di discesa, come indicato nella
fig u ra.
Lo schema elettrrco riportato nella
figura della pagina seguente, corri-
sponde ad un generatore di fronti per
attivare il piedìno RB0/lNT.
Ulilizza due porte invertenti 74L504 che, grazie al
particolare collegamento, costituiscono un filtro anti-rimbalzo per il pulsante del circuito. La rete R-C con-
trolla la durata dell'impulso che contiene i due tipi di
f ronti.
tat
\-INTDEG= I '| . _-!
INTDEG= 0 l-
07
INTCO N
OPTION
ll bit INTDEG del registro OPTION determina il fronte attivo sul pin RB)/INT.
,.:'.1:
p 43
Voo--+5VD€
rok
I N4r48
Circuito che genera l'impulso di una durata determinata, per provocareinterrupt in modo ciclico.
Onni vnlfa rhp ci nenera Un fronte attivo srrl ninJvr vrr I
RBO/INT programmato per ricevere interrupt, e questoyiono nonor:tn rrn fl:^ inrrrir:in Ài cannrllyp n1o(t:vr!rrL VLrrLruLv, urrrruV lllLollLoLv ul )EVIlOlols Vuq)Losituazione si oone automaticamente a 1 .
Si tratta del flag INTF del registro INTCON comemostrato nella figura.
Da quanto esposto sinora deduciamo che per farein modo che si produca un interrupt esterno, e neces-
sario che il bit GIE = 1, che il bit INTE = 'l e che il pin
RBO/INT riceva un fronte attivo. Tutto questo fa sì che il
bit INTF = 1 . Nella figura è mostrata la logi-ca di controllo che è dedicata alla genera-
zione di questo tipo di interrupt nel
PIC'I6FB4.In sporrito desrriviamo con alcuni com-
menti un piccolo programma per gestire
l'interrupt esterno impostando il fronte di
discesa come fronte attivo.
INTERRUPT INTFESIERNI INTE
INTERRUPT
Logica di controllo corrispondente al circuitodi generazione degli interrupt esterni.
I Dentro la ruotine di interrupt e prima di
ritornare al programma principale, il pro-grammatore deve necessariamente riportareil flag INTF = 0, altrimenti subito dopo l'i-struzione di ritorno RETFIE, torneremo a
bcf OPT|0N, intdeg INTDEG = 0, fronte di discesa
bd |NTCON, gie ;GlÈ = 1, Permesso Globale di Interrupt
bcf |NTCON, intf ;INTF = 0. Ci assicuriamo che il flag sia a 0
SEGNAIATORE
PUI.SANTE
DI RESET
4I
47
ll bit INTF è un flag che viene messo automaticdmente a 1 quando si produce l'interrupt esterno
INTCON
ripetere il processo di interrupt, quindi il flag INTF sarà
ancora a 1.
:,,l;:.,.,,,, i .t,:,;r",rt.l.',t I
ll meccanismo di interrupt ricopre un aspetto vitale nei
sistemi di controllo industriali. L'interrupt è il metodopiù rapido ed eff icace per porre in comunicazione I pro-
cessore con il mondo esterno.
Ogni volta che si produce un evento fisico nell'am-biente reale da controllare, ad esempio l'innalzarsi dellatpmnor:trrra di rrn forno oltre ad una determinatasoglia, un sensore trasduce il parametro temperatura in
una grandezza elettrica proporzionale, convertendolain una tensione capace di attivare uno dei piedini di
interrupt che ha il microprocessore, awisandolo dell'e-vento che si sta verrficando.
La risposta della CPU e immediata: sospende l'ese-
cuzione delle ìstruzioni del programma in corso, salva in
una zona della memoria chiamata STACK l'rndirizzo di
abbandono del programma e carica nel PC un indirizzo
determinato a cui salta per eseguire una routine che
sarà incaricata del trattamento e risoluzione del proble-
ma che ha generato l'rnterrupt. Nell'esempio che abbia-
mo commentato, la routine che fa riferimento all'inter-rupt, potrebbe ridurre l'ingresso del combustibile al
forno rn modo che questo si raffreddi e la temperaturatorni a valori adeguati
Nel momento in cui si abbandona questa routine, si
ricarica I'indirizzo di ritorno dallo STACK, e si torna ad
eseguire le istruzioni del programma principale dalnrrntn in rrri lo si e :hbandOnatO
| - ,.^.- i-^^.+-^-r dpnli inip"rrrnt ri<,iede nella lOfOLd vEto riltvwt torr4o uE9il ilitE ruPL rr)rquc.-^;,1 . -^-,,^;-.-i^^^ ,.li ^,,.1. ..i .^^--li. +'.,-. ^.+^"'dp,ud LUlllul llLdzlul lc ui 9udl)rd)l ol iul lldllc l)lLo E)tq -
na che succede nel mondo reale al processore, in modoche ouesto oassr al loro trattamento. La rilevazione di
qualsiasi anomalia quando sr usa un interrupt, provoca
ii trattamento immediato delJ'anomalia stessa, medran-
ie 'esecuzione d ;r'a rout ne preposta peryisolvere la
srtuaztone.
' ,,. ':
INTEL, rl pion,ere dei rrrc'oprocessori e fabbricante deiPantirrm rho onrrin:nni:nn i nn<trr nor<nn:l anmnrtAr
ha implementato in essi un meccanismo di trattamentodegli interrupt eccezionale, la cui flessibìlità e varietà lr
rendono i oiù ootenti del mercato.
INTEL fabbrica anche microprocessori che gestisco-
no dati a otto bit. così come il PlC. Si tratta del model-
ll processore INTEL
dispone di uno straordinario meccanismo di interrupt.
lo 8085, che è stato commercializzato dal 1976 e anco-
ra oggi è uno standard industriale.
Dato che il fabbricante oriento l'8085 al settore dei
sistemi industriali dedico un insieme di cinque piedini
per supportare le richieste di interrupt per I'hardwareesterno. Questì piedinr sono:
RST 7.5
R5T5.5
Alcuni dei piedini di interrupt dell'8085 si attivanomediante ifrontie altri con livelli. Inoltre ognuno ha un
propr,o grado di prio.ta. la orio'ita oiu ai[a e del TRAP
a cui seg.rono, in ordine decresce.îe, la RST 7 5, RS'
6.5, RST 5.5 e INTR.
Questr interrupt si classificano in due gruppimascherabilì e non mascherabili. Quelli che sono
mascherabili hanno la proprieta d essere gnorati dalla
CPU quando vengoîo attivati, nel caso che un bit spe-r:le sitrr:to in rrn reoistro di controllo sia stato messo
a zero.
Questa caratteristica permette al programmatore,
scrivendo e cancellando questo bit, di accettare o igno-
rare l'interrupt in parti vitali del programma.
Gli interrupt dell'8085 sono vettorializzati, il che
suppone che quando sono accettati ognuno carichi sul
PC un indirizzo specifico della memorìa, origrnando un
ooÉ^€ó{ó*-ooóA€ol4ò-nóófió-nróqn&1À&^NÀNtu
IY'tó
o*N-tooÀ€ooetó€s9À@
LJ U LI L' U U U IJ U UU U U U U U U U U U
<{d <
Diagramma dei piedini dell'8085
salto del flusso di controllo a quella oosizione dove si
suppone inizi la routine che riguarda detto interrupt.Nell'8085 ogni piedino di interrupt dispone di un suoproprio induizzo vettorializzato, così si differenziano le
diverse cause che provocano gli interrupt e si assegnaad ognuna una routìne indipendente.
Nel microcontroller PIC esiste solo un Vettore diinterrupt, che ha assegnato I'induizzo 4 della memoriadi codice, per tutte le cause di interrupt. Qualunqueinterrupt che si produca nel PlC16F84, fa sì che il PC
passia puntare I'indirizzo 4 e ad eseguire il programma
che inizia in questa posizione. Generalmente nell'indi-lzzo 4 si usa mettere un "goto" all'induizzo vero di ini-zio della routine di interrupt.
Dato che le cause che provocano gli rnterrupt pos-
sono essere diverse, il loro trattamento deve essere
fatto in modo individuale, per questo all'inizio dellaroutine di interrupt in un PIC inizia la verifica di cosa ha
originato l'evento in modo da poter scegliere la routinecorrispondente.
{:i *. * i. {ìÌ H i: E * t+ g, ;s 5 t s: E J {+ *|,{ {.i I'd,.x l4 il hl "i i.l
ii *. + i"i i' +li:È: ft 5t È..{ PF *É'iF- H i'j f l,} ii L L $i*;Ìr i:TRAP
Si tratta di un interrupt non mascherabile, quindi la CPU
lo accetta sempre indipendentemente dallo stato del bitdi maschera. A questo corrisponde un vector che indi-rizza il f lusso di controllo alla posizione di memoria 24Hex. È sensibile sia sul fianco sia al livello.
F otiello di maocrior nriorira di ronsenrrpnza se arri-vano diverse richieste di interrupt contemporaneamen-te, il TRAP e il primo che vrere gestito Generalmente e
impiegato per far fronte a situazioni estreme, come la
mancanza di alimentazione. che 0ermette l'entrata in
servizio della fonte di alimentazione alternativa o dellebatterre di sicurezza.
RST 7.5ll piedino che attiva questo interrupt è sensibile al f ron-te e gli corrisponde un vector il cui indirizzo e 3C H. È
un interrupt mascherabile, che puo essere ignoratoquando il bit di maschera situato in un registro di con-trollo e messo a zero. Ha una priorità inferiore a quelladel TRAP
RST 5.5 e RST 5.5Entrambi i piedini si attivano quando viene applicatoun livello logico alto, che deve essere mantenuto fino a
alla RST 7.5 e i vector che hanno assegnatr sono al 34H e 2C H, rispettivamente.
i .: ,l 'l r: - - :-. :r
i1 Ì ir.r il f it i:.. í j l_+ ì, Íri
INTEL, non soddisfatta dalle precedenti richieste diIntérn rnt oqtorn: no ILrLL,,,qr ,,= ,la introdotta una speciale, il cuimeccanismo viene solo impiegato da questo fabbrican-te, che permette di saltare fino ad otto routires diffe-renti con il solo piedino INTR.
Inizialmente INTEL ha rntrodotto nel repertorio diistruzioni la chiamata RESTAR n, il cui mnemonico eRST n. Dato che n puo valere otto valori da 0 a 7, daorioino : otto rodiri ,^l; istruzioni corrispondenti a RST0,
1,2,3,4,5,6 e 7, ognuno dei quali e composto daisnli otto hit Fspnrrprdn nrpctp ictrr rzioni ci nrodUce Un
salto agli indirizzi n x B, ossia, alla 0, B, 16,32, ecc. Dal
programma, e in forma sincrona, si puo saltare a que-sti indirizzi di memorra, in ognuno dei quali si puo dare
inizio ad una routine differente.INTR è il piedino di richiesta di interrupt maschera-
bile di priorita minima. Quando la CPU genera due ciclidel bus di lettura, iquali sono attrvati indicando il pie-dino INTA (Riconoscimento di Interrupt). Nel secondodei cicli, la CPU legge gli otto bit presenti nel bus dei
dati (DO-D7) e li interpreta come il codice dell'istruzio-no (orr ronto rho dovo1 ,L JLyuL, ,LL !, ,L ucvc e Se QUI[e .
Se il codice che introduce tramite il bus dei dati il
richiedente corrisponde con uno degli otto dell'istru-zione RST n, si produrrà un salto agli otto indirizzi pos-sibili ln x B).
Questo fa sì che il PC si carichi con uno degli ottoinduizzi e inizi l'esecuzione della routine applicata a
partire da esso.
:rz^ - oi* >^
'-: à;l# X E ú e 6 N -A c J JIw ú
^ -lolq t ^ ->fIUlccYoÌCil<;<<<dd
- RF O O d ú o ú dt< O - N ó e 6 6 È ox x :) O; { - o o *l> ó O ó ó ó O O O -oO 6 -'c( - > p ZIZ664-'
i che la CPU non lo accetta. La loro priorità e inferiore
à.;ii:,,{eÈÈ?:f=s=c?+;rtgEE+aet+È r**+eÈ:,t:,-rr,lr+;rii]4F +;!Ír;':'+"ii!fÈ::,
finterrupt per overflowdet TMRO
':' :.'i
' :,i.1 i
La misura del tempo è unodei lavori piu comuni nelle-^^ri---i^^i i^r,,-+fiali.cl.rpilLo4rur il il ruu)t
Nella fotografia è mostratoun robot scalatore a sei
^-*L-^ ^^. l- --l^l-+,,qam0e, per ra saroaTura 1n
verticale nelle costruzioninavali (REST) dell'lstitutodelle Automazioni Indu-striali del CSIC, nel quale la
lemporizzazione nel movi-mento delle sue articola-zioni è fondamentale per'l'esecuzione dei suoi com-prtr.
In una sequenza dr
tempi all'interno di un pro-
cesso chimico si puoapprezzare l'importanza e
ìa necessita dei temnoriz-zatori. Durante 3 ms si
dorio :nriro 1162 pl6ff16r,rluLvL uVrilL urru LrLLrrUVdl-
vola per aggiungere un
determinato prodotto ad
una miscela in preparazio-no Alln (toqq.\ tomnrl''rJ Pefun periodo di 2,6 ms,
un'altra elettrovalvola:^.,-\ ^--^-^ -++i.,-+-uuvrd essere druvdLd per
inserire una certa quantitàdr un determinato liquidonella miscela. Dopo 20 ms.li :ttoq..a noro<<:ri"------,, per
miscelare entrambi i pro-
dotti, si procede allo scuo-timont^ nor 1) 6q n; rnc+rLilrrLrrLv VLr r- rrrJ. VUtr)LO
c urd )tr\-1ucr rzd ourLUdrc
:,,::
::i
Robot scalatore a sei gambe per la saldatura Ìn verticale nelle costruztoni navali (REST)
(lstituto dell'Automazione lndustriale del CSIC).
Temporizzqlore
Coriro ilvolore nel registro
Decremenlo
Èoa
Fine
Organigramma tipicoche presenta la strategia che segue la CPU quando si dedicaalla misura del tempo.
nello sviluppo di un processo industriale, e in essa i
tempi sono un fattore fondamentale. ll processore può
misurare facilmente il tempo; il controllo è effettuato in
base alla frequenza dì funzionamento e al tempo cheimpiega ogni istruzione ad essere eseguita. Così, ad
esempio, un PlC16FB4 lavorando con un cristallo di
quarzo da 4 Mhz e un oscillatore XT, ha un periodoT = 250 ns. Per eseguire un'istruzione normale servonoquattro periodi, ossia. 4 x 250 = 'l .000 ns.
Le istruzioni di salto impiegano il doppio. Quando la
CPU si dedica a contare il temoo oeneralmente lo fa
I tempoilzzatori sono contatoriascendenti o discendenti che funzionano in modo autonomo,e che dispongono di flag che awisanoquando arrivano al massimo o attraversano lo zero
caricando prima il registro con un determinato valore,
dopodiche lo decrementa e verifica se è arrivato a zerc,ìn caso contrario torna a decrementarlo e a ripetere la
verif ica.
Quando arriva a zero significa che e passato il tempoche doveva contare. Nell'organigramma della figura si
puo vedere la strategìa impiegata dalla CPU nel con-tonnin dal tomnn
Anche se la CPU ouò realizzare il comoito di misura-
re il tempo senza alcuna difficoìtà, mentre esegue que-
sto lavoro non può fare altre cose.
Di conseguenza, destinare il processore alla misura
del tempo significa privare di supervisione e di attenzio-
ne il programma principale.
I temporizzatori sono contatori che si caricano con
un determinato valore all'inizio del conteggio, e auto-maticamente si incrementano o decrementano fino ad
arrivare al massimo valore o arrivare a zero, momentonel quale comunicano l'accaduto al processore, che nel
frattempo in parallelo può eseguire altre istruzioni del
programma principale.
ll temoorizzatore TMR0 è un contatore ascendente a B
bit che oassa a 00 H ouando arriva al massimo valore dirnntenoio FF H Orrpsta tranSiziOne è chiamata Over-
" ,,. YUL-
flow.Nel caso del TMRO il suo valore si incrementa al
ritmo degli impulsi di clock che sono applìcati al piedi-
no RA4/T0CKl o tramite I'oscillatore orincioale ìnternocon la frequenza Fosd4.
Quando il valore del TMRO passa da FF H a 00 H il
flag T0lF, che è il bit 2 di INTCON, si pone a 1 automa-ticamente.
TEMPORIZZATORE
FIAG
MICROCONTROLTERfer misurrr del tempo
IMPUTSI ESTERNI
TOCKI
T.
l', IMPUI.SI INTERNI
FOSC/4
lngressi degli impulsi at TMR7 e situazione del flag al suo overflow.
Per fare in modo che il processore sappia quando il
TMR0 va in overflow, deve testare frequentemente lostato delfìag T0lF. ll check di questo bit suppone un'at-tenzione costante, quindi una perdita di rendimento.Per sapere immediatamente quando awiene l'overflowdel TMR0 è molto più efficace generare un interrupt al
momento ìn cui awiene.Per fare questo e necessario abilitare I'interrupt del
temporizzatore, il quale implica di porre il bit GIE = 1,
che è il permesso Globale degli Interrupt. e dopo atti-vare il bit di permesso dell'interrupt del TMR0, ossia,
scrivere un 1 in T0lE, così come si vede nella fiqura dellan:nin; <onron+a
,, , ,;. , ,.t . , li ,
Per calcolare il tempo che misura il TMRO, bisognaconoscere il valore che si carica inizialmente in esso,
dato che e ttn reoistro che ncrr na l'indiriTTo '1 del
banco 0 dell'area SFR della memoria dei dati RAM.
Questo valore espresso in decimale, lo chiameremo N;
bisogna anche tener conto della frequenza di funziona-mento de1 processore così come del range programma-to per il Divisore di Frequenza, in caso di un suo utiliz-zo. La formula che determina ouesto temoo è:
Tempo = 4. Tosc . (256 - N) .
. Range del Divisore di Frequenza
EsercizioConsideriamo un PIC'16F84 funzionante con cristallo diquarzo da 4 Mhz. Supponiamo di caricare il TMR0 con
INTC O N
il valore decimale 56, il Divisore di Frequenza sarà asse-
gnato alTN/R0 e sarà programmato con range di '1:32.
Calcoleremo il tempo di misura del TMR0 sino al suo
overflow:
Tempo = 4 .250 ns . (256 - 56) . 32 = 6,4 ms
I , : : t: : : 'l :
La famiglia x86 di INTEL, alla quale appartengono i
moderni Pentium, dispone di un meccanismo di altaqualità e versatilità per supportare gli ìnterrupt esterni.È interessante analtzzare le alternative esistenti nei pro-
cessori più utilizzati e verificarli con quelli dei PlC.
Per gli interrupt esterni la famiglia x86 utilizza duepiedini: NMle INTR. Ognivolta che uno di essi e attiva-to con livello logico appropriato, la CPU ferma il flussodi controllo, sospende l'esecuzione delle istruzioni nelprogramma principale in corso, salva nello Stack l'indi-rizzo di ritorno, e salta ad eseguire una routine incari-cata del trattamento della causa che ha oriqinato l'in-rerru pI.
Esjstono 256 vettori di interrupt che danno accessoa 256 routines differenti. Ouesti vettori sono indicatinella tabella degli ingressi che si chiama IDT (Tabella di
Descrizione degli Interrupt).
Questa caratteristica determina una differenza fon-damentale con i PIC che dispongono di un solo vettoredi interrupt per tutte le cause che possono originareuna richiesta di interrupt.
Nel PlC16F84 il vettore di interrupt occupa l'indi-rizzo 4 della memoria di programma e dato che è
comune a tutte le cause, il primo lavoro che realizza
TMRO
["+ ft'+ È €-,.i.É;r.rlg ;14+at iir".+;:'Èe;{: J,"É; j:
INTERRUPT
Quando il TMR) va rn overflow il segnalatore T)lF si pone a 1 automaticamente e st
genera un interrupt sempre che i bit GIE e T)lE valgano 1.
la rouiine è verificare ouale di essa ha oenerato larich iesta.
Nelle 256 routines di rnterrupt possibili nel proces-
sore x86 a cui si fa riferimento mediante gli ingressi
della tabella lDT, ce ne sono alcune che sono destinate
a risolvere sempre la stessa causa di interruptAd esempio, l'ingresso 0 della IDT è riservato per
rìsolvere una routine che riguarda gli errori che si pro-
ducono nel compiere le operazioni di divisione con le
istruzioni DIV e lDlV.
i rrn,r,rì oi-;;";,::;: t;t;r;; :; : ;irr;;n;r;r*:: ;r',;piedini riservati agli interrupt esterni NMI e INTR.
.,;
!
Si tratta di un interrupt esterno che
si produce attivando il livello logicoapplicato al piedino NMl.
Si rhi:m: infprrrrnt "non masche-r:hilo" nar16,ó o <om^r^ î..^++î+^rouilE PsrLr rE c )qrrlPlg oLLELLo LU
-^,, ; r'oaila LHU. r or pflorla arla, e quan-do avviene ha accesso tramìte il
\/o.tAr n innrocqn ? dall: +:haìl:vg!Lvr v ilryrsJJv z uEllo LouEìlo
IDT.
È un interrupt asincrono perché
non si conosce il momento in cui si
origrna, dato che dipende dalle con-,.Ji-;^^i ^ r-; ^-"-"-^tri del mOndOut4tvtil E uor PorqrrrEl
esterno.
,', I 'r I I ',', | '
ln un caoitolo orecedente abbiamo analizzalo il com-portamento dell'interrupt INTR del microprocessore a
otto bit 8085. Era capace di accedere fino a otto routi-nes differenti. Nella famiglia x86 il piedino INTR puo
dare accesso a qualsiasi deìle 256 routines che si sele-
zionano agli ingressi della lDT. Quando la CPU accetta
la richiesta INTR genera due cicli di bus dì lettura, il
secondo dei quali realizza la lettura del valore binario
depositato neglì otto bit meno significativi del bus dei
dati (D0-D7). Questo valore e interpretato dalla CPU
come ingresso della IDT con la quale risolvere la richie-
sta che arriva da INTR. ln questo modo, con un solopiedino, si possono utilizzare tutte le 256 routines di
interrupt possibili.
L interrupt INTR è "mascherabile", questo significa
che viene ignorata la richiesta quando il flag di masche-
ra lF vale zero. Questo flag lF è indicato nel Registro di
stato insieme ad altri flag deì sistema.
Questa caratteristica ha la sua importanza nella
costruzìone dei programmi. Generalmente medrante il
piedino INTR la CPU si dedica alle periferiche e alle
risorse secondarie. Se in un pezzo di programma prin-cipale si risolvono azioni fondamentali per il buon fun-zionamento del sistema, non conviene che questo
oezzo interromoa la sua esecuzione a causa di una
richiesta a bassa priorità. Per evitare tali richieste si
pone a zero il flag lF all'inizio di questa parte di istru-
zioni, proibendo gli interrupt in arrivo da INTR. Dopo
aver completato la zona pericolosa del programma, si
torna a mettere a 1 il flag lF con il quale si accettano
nuovamente gli ingressi degli elementi secondari attra-verso INTR.
ès&acÈ9eùatog6qv9ú ctg ra rrt a!{ tlt lE *rr a4 rlr il' lat rt? t:t&l'$s990ó*${rsso{}l.gg rt l'. {tú lta ygt Vat $a x.3t Att at* Àat lll ?{Co6*€óltó*60(}('óo
,,! ,,* ** *f rl* v3s vfg trr vg5 r*, *l* lfi vst 0t*ètu
va5 1{{ 3?t9lrg
09t Etr *8{co9
6!t Fft Ytrtt9('s
vec Yef tltg&a
vE ti* \.f;o(}g
stú 9t1 tr*e{o
vtt *n Dltó{t{,gtt *!* lta
t'90*f r*c ltsó3
Y{d l|*t vgggs*
vlt r{ x€99?
Yff ,mf Hc
oaaMi XrÀ FrAE{ló{rc
Ygi 8a,s?f,i€rfYóó{l
1.rc s6f locff{'69
ert* Yflt Ytlag9e9g{lt*€ll9ó9l./r,* r.i ve c Íe* @{e.Ílr €t &{ v*t 0? Ycf ù1Ù *1, $l{E*ù0c{*cotsltocc
t(:$lfta**lrf titt l* rf rratrlgl v* *t ot v* 3lr 0Íloago<t{tG{rltr}o{'l}ty[e vt!||$a{&rre4}v*| ltt à! 9t t{ t{ t{.sral at*
Superficie
metollicq
Interrupt per cambiodi stato in RB7:RB4
na delle quattro cause che generano l'inter-rupt del PlC16F84. è il cambio di stato logi-co in uno dei quattro ingressi più significati-vi della Porta B (RB7:RB4).
Se ad un determinato momento in una diqueste quattro linee, configurate come ingressi, cambia
INÎERRUPT RBIF
RB7:RM RBIE
ATIR,E
CAUSE DI
INIERRUPT
Quando cambia Io stato logico di una delle linee RB7:RB4
della Porta B, se i bit GIE e RBIE
sono uguali a 1 si produce un interrupt.
lo stato logico, il flag RBIF passa a 1,
e se il bit di permesso di questo inter-rupt è attivo (RBIE =1) si genera un
interrupt. Come per le altre cause di
interrupt, per fare in modo che l'e-vento sia accettato, è necessario che
il bit di Permesso Globale di Interrupt,GlE. sia a 1.
Lo schema logico della f iguraesprime in modo graf ico quantodescritto.
Questa strana causa di interrupt è
stata sviluppata per gestire al megliole tastiere matriciali, molto diffusenelle applicazioni con i microcontrol-ler. La tastiera è un disoositivo oer
IECIADORBO RBI RB2 /Ir
IUSCITEDAt PIC
, COLONNE FI1I' (uscrTE) (TNGRESST)
.
:
Struttura e collegamento della tastiera matriciale ai piedini della Porta B del PIC
inserire informazioni, facile da gestire. di ridotte dimen-sioni ed economico.
Una tastiera molto comune è quella a 16 pulsanti,configurata in una struttura matriciale composta da 4linee per 4 colonne.
I pulsanti sono situati sull'incrocio delle linee con lecolonne, quando si preme uno di essi si chiude il con-tatto fra la linea e la colonna che formano l'incrociocontrollato dal suddetto pulsante. Quando non ci sonopulsanti premuti, le linee sono elettricamente isolatedalle colonne.
In pratica queste tastiere dispongono di 8 terminalidi collegamento, 4 corrispondono alle file e si collega-no con le linee RB7:RB4 della Porta B, che devono esse-
re configurate come ingressi digitali.Gli altri 4 terminali corrispondono alle colonne della
tastiera, e si collegano ai piedini RB3:RB0 della porta B,
che devono essere configurati come uscite digitali diinformazioni dal microcontroller. Nella figura si mostra-no i collegamenti delle file e delle colonne della tastie-ra con le linee della Porta B.
INGRESSIVERSO It PIC
R84
RB5
:RBó
INTERRUPÍ
: t jtl.rtt'f:.i:,a t::;tjl;,':t!,4+llli,;r;':rlt
Per esplorare la tastiera e rilevare il pulsante premu-
to si applica il seguente metodo: il microcontrollerdeposita nelle 4 linee di uscita digitali (colonne) un codi-
ce formato da tre livelli logìci alti (1)e un livello basso(0). Ad ogni scansione il codice sposta la posizrone del
livello logico basso in modo sequenziale, su ognunadelle 4 colonne collegate a RB3:R80. Quando non c'è
nessun pulsante premuto, le file essendo isolate dalle
colonne, sono "in aria" e introducono un livello logico
alto, dovuto ad una caratteristìca costruttiva pro-
pria della tecnologia TTL. In questa situazione,quando si leggono gìi ingressi digitali, che sono lefile della tastiera, avremo quattro uno. Nel caso
venga premuto un pulsante, quando il livello
basso che esce dalle colonne, coincide con l'in-crocio fila-colonna del pulsante premuto, per la
fila corrispondente entrerà un livello logico basso,
grazie al quale si potrà localizzare immediata-mente il pulsante che è stato premuto, perché si
orodurrà un interruot.
: !;i.:,1, t,iii;: ;,,
lì metodo usato per la rivelazione del pulsante
premuto, ulilizza il livello basso come livello atti-vo, mentre quello alto è considerato inattivo.
Dalle quattro colonne collegate alle uscite
RB3:RBO escono quattro livellì logici, uno attivo,
o basso, e tre inattivi, o altr. Se c'è un pulsante
premuto nella colonna che ha il livello logico
basso, la fila di incrocio riceve questo livello, che
arriverà su una delle linee RB7:R84. Se non ci
sono pulsanti premuti, le file restano isolate dalle
naa fnas fRBó +nez f
TASTIERA
IAI
RBI
Quando dalle colonne esce il codice 1 1 10,
se il pul.sa.nte premuto è E sulle file si ryceve il codyce 01 1 1
q,..F+ 3rt::È+::r;.i:.,+,ÉlÌi1Í +Èirt*rE+.ÌÉ !ÍlriìrÈ+.ÈÉ+;t+-4:,ilrri,r*/l
colonne, ed essendo sospese in aria, si comportanocome se su tutte arrivasse un Iivello logico alto. ll livel-
lo basso in uscita da una delle colonne, viene spostato
in modo sequenziale da una all'altra, e quando arriva
alla fine il ciclo si ripete da capo. Dato che si conosce
sempre da quale colonna si sta facendo uscìre il livello
basso, basterà conoscere la fila da cui detto livello viene
ricevuto per riconoscere il pulsante di incrocio fra fila ecolonna, come illustrato nella frgura.
.:
RBO
I
o
I
I
o
I
I
o
I
I
o
I
t
I
I
I
xB4
t
o
o
o
I
I
I
I
I
I
I
I
I
I
I
o
COLONNI{usclrE)
R33 RB2 RBI
tIotttrrorotltl
rtolotttllrororltl
lorotloìtolrort
CODICE HEX
7D
EE
ED
EB
DE
DD
DB
BE
BD
BB
7E
7B
77
87
D7
E7
lotîRB2 RB3
I
tRBO
Tabella dei codici per verificare rl pulsante premutoin funzione della presenza del livello logico basso nella fila e nella colonna.
li programma di scansione metterà ciclicamente
nelle colonne i quattro codici che possiedono un solo
livello basso: 0111, 101 1,1 101,'1 1 10.
Per ognuno di questi codici in uscita viene verifica-to ouello rhe si rireve dalle file che f unzionano come
ingressi digitali.Se tutti gli ingressi sono a livello logico alto, signifi-
ca che nessun pulsante della fila da cui sta uscendo lozorn à <t.rfrr nrtrmrrtn Nel momento in CUi vrene nre-
muto un pulsante, nell'ingresso corrispondente all'in-crocio fra la fila di questo pulsante e la colonna da cui
sta uscendo lo zero, apparirà un lìvello logico basso.
Si puo facilmente compilare una tabella che stabili-
sca il oulsante oremuto in funzione della fila e della
colonna che hanno il livello logico basso, come propo-
sto dalla fiqura.
ijiili#iiili o ' I
ijliilt'*É ' ' I
iilli* ' ' I
iiÍlì:*#' ' r
i:iiir${ijji r r o:iili:i$#' ' o
i.$ii.,* r r o
,.jr1.;r* r o I
{;,.,.1*-1.i-. r o I
ril::*: r o I
:,,iì:+=:l.i o t t
.*a:.'" o r t
,,1frÈ.-:l. o r r
:.:.1l.;,,O1 :. I O I
lì,'..1',1:€È,: r r o
1ì11$ r r I
Per sfruttare i beneficr dell'interrupt, si collegano le{ir^,.J^rr- +--+i^.- -: ^;.dini RB7:R84, che saranno con_| ilc uEilo Ld)ucr o d I prc
figurati come ingressi. I terminali delle colonne si colle-gano ai piedini RB3:R80, che saranno confìgurati comeuscite. Sr pone GIE = 1 per abilitare gli interrupt ingenerale, e anche RBIE =1 per abilitare l'interrupt per
cambio di stato logico nelle linee RB7:RB4. Un sempli-ce programma inserirà in modo sequenziale i codici con
un livello basso sulle uscrte RB3:R80, che sono colleqa-te alle colonne Tutto qui.
Quando si premera un pulsante cambierà lo statologico su di una delle linee RB7:RB4 e si generera un
interrupt. Quindi si salterà ad una routine che inizia dal-l'induizzo 004 della memoria di programma, e comeprima cosa si verifica quale delle linee RB7:RB4 ha un
livello basso. Con l'informazione della fila che ha rice-
Cntlonsmpntn rli t tn Dla l6FB4 ad una taSttera.
Le linee RB3.RB) sono uscite dalle quali esce rl codice binario,e RB7 R84 sono ingressì da; qudlisi riceverà un livello basso se c'è un pulsante premuto
vuto un livello basso, e della colonna che in quelmomento aveva in uscita detto ltvello, consulteremo la
tabella mostrata in precedenza, per dedurre il pulsantepremuto.
ln commercio si puo trovare una scheda commer-ciale per prototipi, chiamata PIC 18-ME, progettata
dalla ditta Ingegneria de Microsistemas ProgrammadosS.L. per realizzare prototipi in modo sicuro, rapido e
economico. Nella parte superiore contiene la circuiteriaausiliaria, insieme ad uno zoccolo a 1B pin, adatto a
ricevere il PIC'16F84 con il programma memorizzalo. La
parte inferiore e una zona libera con fori prestagnati ed^^-*^ri--^+^ <r r rr ri À rnllon:f: rrn: trctinrrd Pd>>U ttUttlldllLLdtU L LvilLyu(u urld Ld)LlCld
matriciale e un display a 7 segmenti. I collegamentidella tastiera seguono lo schema della tastiera mostra-to in precedenza.
Schema del circuito descritto nell'enunciato del oroqramma.
,l '
. ; , , ' ,",, , "' a't.
Per fare in modo che il lettore si abitui ad utilizzarenella pratica gli interrupt, proponiamo un programma
che utilizza quello prodotto dal TMRO quando va ìn
overflow. ln questo esempio, il TMR0 serve per con-trollare un tempo esatto di 1 secondo, momento in cuiqi opnpr: l'intprrr r.Jf p i: CPI I nrnrodorà ;\ (oll'a-1r^ l'1
-,- Y,zinno rnrri<nnndonte
Per ottenere la temporizzazione di 1 secondo, si
carica il TMR0, con il valore iniziale di '12; in questo
modo l'overflow si produrrà alla fine di (256-12) = 244impulsi applicati al timer.
Questi impulsi arrivano dall'oscíllatore interno del
PlC, che funziona ad una frequenza di 4 MHz, pero
divisi per 256 grazie al divisore di frequenza, rl che sup-pone una lemporizzazione dì:
Temporizzazione = 4 . 250 ns .2M.256 = 62,4 millisecondi
'+i:ti,.t i:,i;iti l:;ì;.t1.,.,,.i41ii.{--.,r,ali:*iÍi,É r-lti#,f'1{i4r]:q,iurì"Lglt?a;,NN{s{r lllirlwsiliriilw
Ptctóx84
MICROCONIROTTERUn interrupt molto particolcre
Listato del programma con commenti
tlST P=15F84
RADIX HEX
;Dhettive per Assembler
;Vector reset
;Salto al vettore di interrupt
;Vettore di interrupt
;Salto all'inizio della routine di interrupt
;Selezione del banco 'l
;Porta B uscita
;Configura M0 e RAI come ingressi
;Configura il registro 0PTl0N
;Seleziona il banco 0
;Abilitazione globale per gli interrupt e per il TMR0
;Grico C0NTA con il valote 16 in decimale
;Carico TMR0 con 12 in decimale
;5e M: 0 salto la prossima istruzione
;SeM0=0,R80=0;lest ru M1
;Se RAO = I si porta RBO = 1
;5eMl=0salto;Saha se RAf = 1
;5eRAl=0,R8=l
;5e RAI = I,RBI = I
;Ciclo infinito dal quale si esce per interrupt
;Decrementa C0t'lTA e salta se vale 0
;5e (ONTA = 0 si carica con 16
;5e RB7 = 0, salta
;5e RB7 = 0 si inverte il valore
;Se RB7 = 1 si inverte il valore
;Si dpristina ll.lTCON, interrupt disabilitati
;Si ricarica TMR0 con f 2 in decimale
;Ritorno dall'interrupt
W EQU 0 ;Etichette
FEQUlTMR_OPT EQU 0x0l
STAT0 EQU 0x03
P0RTAA EQU 0x05
P0RTAB EQU 0x06
INTC0N EQU 0x0B
CONTA EQU 0xl0 ;Contatore ausiliario
ORG O
goto inizio
ORG 4
goto inter
ORG 5
inizio bsf STAT0,5
clrf PORTAB
movlw b'00000011'
mowvf PORTM
movlw b'00000111'
movwf TMR_OPT
bcf STAT0,5
movlw b'10f00000'
mowvf INTC0N
movlw 0xl0. movlw C0NTA
movlw 0x0c
mowvf TMR_0PT
ciclo btfx P0RTM,0
goto ra0_1
bcf P0RTAB,0
goto ralx
ra0_'f bsf PORTAB,0
ralx btfsc PORTAA, Igoto ra1_l
bcf P0RTAB, Igoto ciclo2
ral_'l bsf PORTA8,'|
ciclo2 goto ciclo
inter decfsz CONTA,I
goto continua
conta_0 movlw 0x10
mowrrf CONTA
btfsc P0RTA8.7
goto rb7_1
bsf PORÎAB,7
goto continua
rb7_1 bcf P0RTAB, icontinua movlw b"10f00000'
movrvf INTCON
movlw 0x0C
movwf TMR OPT
retfie
end
Dato che non si arrivaancora ad 1 secondo,si imnipna rnr^onfa-tore ausiìiario CONTA.
che deve essere inizia-lizzalo con valore 'l 6
e si decrementa ad
ogni interrupt delTN/R0, cioè ogni 62,4ms. Arriverà a zero in
16x62,4ms-1secondo (approssima-
tiva mente).
Comporre un program-
ma in linguaggioAssembler per il
PIC 1 6F84, il cui oscilla-
tore rnterno sra contror-lato da un cristallo di
,.1-,4 À,,tLJ-9Uqr4U UO A rVil rZ.
Alle linee RAO e RA1
della Porta A saranno
collegati due interrut-tori AeB,iquali devo-no essere testati conti-n ua m ente, e il lo ro
stato (aperto o chiuso)
riportato su due diodiLED A' e B' collegati
alle linee RBO e RB 1
della Porta B.
lnoltre, un altrodiodo LED sulla linea
RB7 deve lampeggiarein continuazione conun tempo programma-
to di un secondo, cioè
restera acceso unsecondo e snento il
SCCONdO SUCCCSSiVO.
Questo serve per con-trollare il tempo in cui
awiene l'interrupt del
TMR0 che è stato spie-gato in precedenza.
IWCROCONTROLTERlnterrupt per fine scriilurei nellcr EEPROITI
di scrittura netla EEPROM
La delicata operazione
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'alimenta-zione, l'informazione memorizzata nelle sue
celle viene nantenuta; ouesta caratteristicarondp nrroqta momoliS indi-spensabile in molte applicazioni
commerciali.l-nmo ni: dotfn in nraee-sv, |,! y,q
denza. ogni indirizzo di questampmoria nlro esqprc scritto ìn
modo indipendente, anche se
la grande quantità di tempo(relativo) che richiede questa
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.
i1t:ttll1:)l::
I bit di permesso dell'interrupt GIE e EEIE devono essere é 1 per permettere un interruptquando termina la scrittura della EEPROM e il flag EEIF passa a 1 .
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 è assolu-
tamente 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 nellaFFPROIV 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 automatica-mente. Sino a che l'operazione di scrittura non e stata
Per poter conoscere immediatamente la fine delle
operazioni, è raccomandabile attivare un interrupt incur il processore verifichi che le procedure siano termi-nate 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'internodella routine dedicata, prima dell'istruzione di ritornodobbiamo porre il bit EEIF = 0, perche in caso contrarioappena ritornati al programma principale si ripetereb-
be la chiamata alla routine di interrupt. Nella figura e
riportata la situazione dei bit che gestiscono l'interruptper 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 suc-
cessivamente porre EEIF = 0 prima del rìtorno al pro-
gramma principale.
Una buona tecnica e verificare che sia stato scrittonell'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.
illICROCONTROLLER
Schema logico che mostra il controllodella generazione di interrupt per fine scrittura nella EEPROM
. t': l':.,.,:,..,i:'i]." I
ll microcontroller è in continua esecuzione del oro-gramma a cui è stato dedicato, il quale controlla moltielementi esterni che fanno oarte dell'ambiente di lavo-ro. Questi dispositivi sono influenzati dalle caratteristi-che 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 fonda-mentale per lo sviluppo delle sue operazioni, pertanto
dobbiamo verificare continuamente che rimanga all'in-terno'di margini adeguati, un altro fattore fondamen-tale potrebbe essere la temperatura. Sia la velocità di
giro che la temperatura sono valori di cui deve tenerconto 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:
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 adatta-re una di queste possibili cause di interrupt alla gran-dezza esterna che si intende controllare, per interveniresu di essa immediatamente. Nel caso di un sensore digi-tale, che cambia rl suo stato logico alvariare della situa-
nellcr EEPROilI
zìone che sta controllando, come ad esempio un sen-
sore optoelettronico che rileva il passaggio di un ogget-to, si puo collegare direttamente l'uscita del sensore al
piedino RB0 in modo che generi un interrupt. Quandoil parametro è analogico, puo essere necessaria la sua
conversione in digitale, mediante un ADC (Analog toDigital Converter), oppure l'utllizzo di un comparatoreche cambi lo stato della sua uscita se il valore analogi-co supera una soglia determinata. Per chiarire al lettorela gestione degli interrupt sia nell'aspetto fisico che inquello logico descriveremo un progetto basato sul
Ptc 16F84.
. ,, ', ,'t." 't.'.:1,
Prendiamo in considerazione il progetto dì un allarmeantifurto per un'automobile. Per controllare l'aperturadelle quattro porte principali della macchina si utilizza-
no 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 Adel 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 alimentazio-ne, clock e reset.
Schema generale del sstema di allarme antifur-to.
INTERRUPISCRITruRA
EEPROM
EEIF
EEIE
SIRENAI
SIRENA2
P50
Nelì'allarme per l'automobile abbia-
mo un programma principale che si
occupa di configurare le porte per
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-pertura di una porta, o si scollega
l'allarme. Queste piccole operazioni,
si riflettono nell'organìgramma della
figura.L'implementazione, con le istruzio-
ni del PlC, dei blocchi che compon-gono I'organigramma, si realizza coni <onrrpnti n:<<i'
Per chiarire la programmazìone del
regrstro INTCON per l'abilitazione
27pF
i+PoRrA4'#PORTA3t+PORTA21'+POnrAt
frqA A,-Itlv\Ar
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 inter-
na del medesimo.Nella pagina a lato svilupperemo il programma di
allarme, con i gruppi di istruzioni divisi nelle parti prìn-
cipali di cui è composto.
SENSORE ADINFRAROSSI
Schema elettrico semplificato dell'allarme antifurfo
Un buon programmatore ha la capacità di ordinare ìl
lavoro di sviluppo in parti, o moduli, di piccole dimen-sioni. In questo modo al momento di scrìvere le istru-
zioni 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 utiliz-zare gli organigrammi.
€onfiguroporle
Ciclo
!ip' Allorme?
Roulinedi interrupt
Organigramma del programma principale Struttura interna del registro di controllo degli interrupt INTCON.
TWCROCONTROttERInterrupt per fine gcrlftura nellei EEPROilI
PROGNAITTffIA PRIIICIPA1E DI AII.ARThE
Definizione delle caratteristiche e dei registri del PIC
LISTRADIXWF
STATOPORTAAPORTABINTCON
P=16F84HIXEQUEQUEQUEQUEQUEQU
01
0x030x050x060x0B
Definizione degli indirizzi di inizio del programma principale e della routine di interrupt
ORGgotoORG
9otoORG
0inizio4inter5
Configurazione delle porte di ingresso e uscita
tntzto bsfmovlwmovwfmovlwmovwfclrfclrf
STATO,5b'0000 0000'PORTAAb'1111 1111'PORTABPORTAAPORTAB
Bit di abilitazione dell'interrupt
ciclo
movlwmovwfgoto
b'r001 1000'INTCONciclo
Programma principale
INTCON,Ofermareallarme
PORTABb'l001 1000'INTCON
PORTAA,O
PORTAA,OPORTAA,l
PORTAA,lsirena
PORTAAPORTAB,Ob'1001 1000'INTCONciclo
;Ciclo infinito in attesa di interupt
inter
allarme
sirena
btfssgotogoto
clÉmovlwmovwf
bsfNOPbcfbsfNOPbcfgoto
clrfbcfmovlwmovwfgoto
end
fermare
,;.
5r
fimportanzadel consumo
bbiamo un distributore di bibite in mezzoalla spiaggia. Ha avuto una buona acco-
cesso. Pero lr non abbiamo una presa dicorrente, e il distributore deve funzionare
con una batteria, o delle pile ricaricabilr.
Evidentemente è fondamentale che il consumo dellamacchina sia molto basso, per evitare le continue sosti-tuzioni delle batterie, e periodi con mancanza di servi-zio. Inoltre funziona realmente da mezzogiorno fino a
sera, fuori da questo periodo si awicina solo qualchecliente occasionale.
Non c'è attività nemmeno nei giorni in cui manca ilsole, quindi ci sono lunghi periodi in cui la macchinanon funziona.
Per ridurre il consumo sarebbe auspicabile che la cir-cuiteria elettronica consumasse energia solamentequando deve fornire il servizio. ll caso del cellulare, è
simile a quello appena esposto, trascorre lunghi periodidi tempo in cui non è utilizzato, in attesa di ricevere^,,-l-h^ -l-i-*-+-v uorLr rE Lr ild I I to Ld.
Nella maggioranza delle attrezzature portatili ali-mentate con pile, e che non dispongono di energiaelettrica, conviene ridurre il consumo al minimo neiperiodi 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^^^"^;^ ^l^++.;--qr rEruro crctLt tLd.
Questo modo si chiama di riposo o di basso consu-mo, e la corrente di alimentazione tipica, che e circa 2
milliampere, passa ad essere inferiore a 10 microampe-re; questo significa che è possibile alimentarlo con unapiccola pila, che può durare sino a due anni.
Questa caratteristica lo rende molto adatto a quelleapplicazioni in cui ci siano lunghi periodi di inattivrtà in
attesa che succeda qualche evento esterno, come l'at-tivazione 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
STATO RISORSA
Oscillotore principole fermo
WDT
linee l/O congelote
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 com-
pito di produrre gli ìmpulsi di lavoro alla frequenza
Fosc/4.
ln questa condizione il processore non esegue alcu-
na istruzione, né tantomeno funziona ilTMR0 dato che
non riceve impulsi interni.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 modoriposo viene resettato, o reinizializzato, però continua a
funzionare, dato che dispone di un oscillatore proprio
e indipendente. In questo caso i flag del registro STA-
TUS resteranno TO# = '1 e PD# = 0.
Le linee di ingresso e uscita mantengono lo statoprecedente 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 cor-
rente. Vedere la tabella della fiqura.
CONSEGUENZA
Non si eseguono istruzioniNon funziono il TMRO
{RAM/TOCKI collegoto o VDD}
- Si resetto però conlinuoo funzionore
- Montengono lo stoto precedente
- Posso dq 2mAo meno di IOpA
:'l
Il microcontrollore si addormenta eseguendo l'istruzio-
ne SLEEP nel programma e si sveglia, riprendendo il suo
funzionamento normale, per le seguenti cause:
2', Per l'ovedlow del
Quando si attiva ìl piedino MCLR# e ìl PlC16F84 è
stand-by, si sveglia e inizia ad eseguire la prima istru-
zione 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 reini-
zializza.Per determrnare quale delle due cause ha origina-
to il Reset, sì testano iflag TO# e PD# del registro
STATUS, seguendo i valori indicati dalla tabella della
f igura.
Quando si sveglia il PIC si sviluppa la sequenza del
VALORE DET FLAG
PD#=0
PD#= |
TO#=0
TO#= |
Stato e significato dei flag PD# e TO#.
Iemoorizzalore OST rhe ritarda di 'l024.Tosc l'inizio del
f unzionamento normale, con l'obiettivo di dare il
tempo alla frequenza di funzionamento di stabilizzarsi.
. ':.. 1.., 'l'
La terza causa che puo fare risvegliare il PIC avvienequando si verifica un interrupt. Dei quattro possìbili
INDICAZIONE
- Esecuzione SIEEP. Modo riposo
- Si è sveglioto
- È ondoto in overflow il WDT
- Non è ondoto in overflow il WDT
RISVEGLIO CON
STATO DEI BIT
GIE- 0 (tnibizione)
RBIE= INTE- EEIE-- I
PC + | (Successivo o sleep)
PC + 2 (Successivo)
PC + t (Successivo o sleep)GIE= I (Abilitozione)
RBIE- INTE= EEIE= | 0004 {Vector di lnterrupt)
interrupt che ammette il PlC16t84, quella relativa al
TN/R0 non e possibile, dato che mancano gli impulsi,quindi sono valide soÍo le altre tre opzioni (vedi tavolain alto alla pagina seguente).
Quando venne eseguita l'istruzione SLEEP, il PC si
fermò caricato con I'indinzzo dell'istruzione successiva(PC+1).
INTERRUPTI
ISTRUZIONI SUCCESSIVE :
lstruzioni che esegue il PlCl6FB4 quando si sveglia tramite un interrupt a seconda del valore del bit GIE
P52 MTCROCONTROttERll modo riposo
2'. Cambio di stato in uno dei piedini RB7:R84,
Per accettare uno dei tre interrupt e necessario che i
relativi bit di abilitazione (lNTE, RBIE, e EEIE) siano a 1.
ln questo caso quando si attiva uno deiflag di interruptsi testa il valore del bit GlE, che è il bit di abilitazionenlnhrlo donli intorrr rnt"-v" "
Se GIE = 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, sal-
tando alla routine di interrupt.Dato che a volte non sì desidera eseguire nessu-
na istruzione prima di saltare alla routine di inter-rupt, dopo SLEEP si inserisce un'istruzione NOP.
Se si genera un interrupt abilitato a livello indivi-duale 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
or 02 03 04 al a2 03 a4 Qr
t I l l I f 'g ,'
PIEDINO INT
INTF flos(|NTCON <t>)
partire dall'istruzione successiva a SLEEP comemostrato nella tabella della figura.
Quando GIE = 0 e si attiva il flag di un interruptche ha 1 sul bit di abilitazione individuale, può veri-ficarsi una delle seguentì condizioni:
1") Se l'interrupt avviene prima dell'istruzioneSLEEP, 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 vienemesso a 1 e il bit PD# non si cancella.
2") 5e l'interrupt avviene durante o dopo l'istru-zione SLEEP, il microcontroller si sveglierà immedia-îamente dono aver esporrito l'istruzione SLEEP Si
cancella il WDT e il suo Divisore di frequenza, il bitTO# passa a 1 e il PD# passa a 0.
Per assicurare la cancellazione del WDT quandosi esegue l'istruzione SLEEP, si raccomanda di met-tere davanti ad essa l'istruzione CLRWDT.
Nella figura è presentato un cronogramma che
illustra la forma di risveqlio del PIC tramite inter-ru pt.
or 02 a3 04 0l 02 a3 04 Qr 02 a3 a4 ar a2 a3 a4
;,r$ 1,,|'|,,1'l f::1 1 I,,i,I,[.]-']
GIE bit{tNTCON <7>) < PROCESSORE > ':. ::::'..:..:'.t,'
ir.iirìHi-si
-PC
; '"tlfitooìf Insr (PC)= srEEP Inst {PC+l}
'tTJ,fl!ilf hsi(PC-r)
i NoTE i;, 1. XT, HS, o LP sono i modi possibili per l'oscillotore. I', 2. Tost = 1024 lost. Queslo ritrordo non c'è nel modo RC. t
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 sleep. i,
4. CTKOUT non è necessorio in questo modo, però si uso come riferimento. j
Cronogramma del risveglio del PIC al prodursi di un interrupt.
lnsi (PC+l) Ciclo Dummy Ciclo Dummy
MICROCONTROLLER
II Micro PIC Programmer:uno scrittore di PIC
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 memo-
ria 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
in un modello 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 nume-
ro di volte molto grande.
La scrittura del programma sorgente. e la sua suc-
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.
cessiva compilazione, sono fatti su di un personal com-puter, utilizzando i programmi necessari forniti dal fab-bricante 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 questio-
ne, con l'ausilio di un software di comunicazione fra il
PC e lo scrittore.
Per scrivere i PlC, oltre ai dispositivi forniti dal fabbri-cante, ve ne sono moltr altri sviluppati da ditte esterne.
Per questa spiegazione abbiamo scelto il programmato-
{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 PRO-
GRAMMER della ditta "MSE
Microsystem Engrneering ".
Si tratta di uno scrittoredi PIC di gamma media,caratterizzato dalle sue ri-dotte dimensioni, dal bassoprezzo e dalla semplicitàdi utilizzo. Fra i PIC chenro scrivere troviamo ilY""
PlC16F84, e i moderniPIC'l 6FB7x.
E basato su una scneoa
in cui si trova tutta la circui-teria elettronica, compresigli zoccoli su cui inserire il
PIC che si desidera program-mare.
ll sistema comprendeanche un cavo a 25 fili da
collegare alla porta parallela
Fotografia della scheda elettronica del Micro PIC Programmer. Anche se disponesolo di due zoccoli liberi, esrtono molti adattatori per gli altri tipi di contenitori del PIC
MICROCONTR,OLLERUno scriltore di PIC
del computer. Uimpiego di questa porta permette una
maggiore velocità di scrittura e una maggiore protezio-
ne del PC, dato che la scheda dispone di alimentazioneautonoma.
lnoltre è incluso anche un dischetto con il oro-gramma di comunicazione e controllo PICME-PR, e leinformazioni tecniche sull'utilizzo e sul funziona-mento.
Questo programmatore dispone di un circuito per la
stabilizzazione delle tensroni di alimentazione, quindipuò funzionare sia con due pile da 9 VDC che con un
trasformatore da 220/15 VAC e una corrente uquale osuperiore 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 adatta-tori che supportano i modelli a 2B piedini, con conteni-tori di differente larghezza, permettendo l'uso del pro-
grammatore con la maggior parte dei PIC della gamma
media. Per proteggere i piedini del microcontroller
Fotografia dello zoccolo a forza di inserzrone nulla, e un adattatore per un PIC con contenitore diverso.
durante la fase di scrittura, in cui bisogna inserire e
togliere il circuito integrato dallo zoccolo del program-
matore, si possono uttlizzare zoccoli a "forza di inser-zinno nr rll: " rnmo 61 lnlln Ànllr {n+nnrrfir4rvr rE ruro , lvrrs vucllu uEllo luLU9lollo.
' . . ' jt ,
"
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 dischet-
to, in una subdirectory sull'hard disk del PC.
2" Passo: Collegare il cavo da 25 fili fornito insieme
al programmatore alla porta parallela del PC.
3" Passo: Fornire la tensione di alimentazioneallo scrittore, o con due pile da 9 VDC o con un tra-sformatore da 220/15 VAC e una corrente superio-re 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 microcontrol-ler. Dovrà aooarire neì monitor del PC la finestra di lavo-
ro rioortata in fiqura.
I'IICROCONfROttER
Videata di lavoro del aroqramma PICME-PR.
Quando si esegue il programma PICME-PR, sul monitorappaiono una serie di finestre e dì pulsanti di comando,-^^ i ^,,-li -; -++i,,1^^ tt ttté lo fr rnzinni del nrcon I quarì sr arrvano ,. --, tr,ogramma-tore, 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 MODELLOln nrocf: finpctr,a qi cronlip il Pll- rho <i dociÀo'. ^'^rL Jr uLrluEIo PIU-
Ofammafe. F Of OaniZZ=+: in a' ,a++rn ^r, ^^i di modelltvtYutt'LLara ilrquqLLrv gruPpt I
16C6X, 16C62X, 16C7X, 16C84 (16F84). Selezionandouno di questi gruppi appare un menu a tendina, con i
diversi modelli disponibili. Dopo aver selezionato quelloche si desrdera, nella parte inferiore della f inestra si pos-
sono leggere le caratteristiche piu importanti del
modello scelto,
PAROLA DI CONFIGURAZIONETramite 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).
VERIFICADI CANCELLAZIONE
Quando si attiva questa^^-i^^^ +. .++- l-
--opzrone, IUIIa ta memonadel circuito integrato, prima
della fase di scrittura, e sot-toposta a una verifica di can-cellazione.ID/CHECKMediante questa frnestra, si
puo scnvere un numero dr
identificazione che verrascritto nella memoria del PIC
(parola di identif icazione) Inegual modo verra visualizza-to il "Check-sum" delconte-nuto attuale della memoria.APRI FILE
Questo pulsante permette di
leooere il contpnrrto di un
file eseguibile in formatoINTEL.HEX e depositarlo nel
buffer della memoria.
PROGRAMMA TUTTOTrasferisce il contenuto del buffer di memoria e la
Parola di Configurazione attuale nella memoria interna
del microcontroller.
PROGRAMMA PAROLAScrive unicamente la parola di configurazione attualesul microcontroller, lasciando inalterato il contenutodella sua memoria interna.VERIFICA
Verifica il contenuto della memoria interna del PIC con il
contenuto del buffer di memoria. Se viene rilevata qual-
che differenza appare il corrispondente messaggio. Si uti-ltzza per verificare la corretta programmazione del PlC.
LEGGI PIC
Legge il contenuto della memoria interna del PIC e lodenosita 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 CANCELLAZIONEVerifica che la memoria interna del PIC sia totalmentecancellata.ESCI
Chiude il programma PICME-PR e restituisce il control-lo del PC al sistema operativo.
NilICROCONTR L[ERConcetli e utilifer del di sviluppo
It MICRO PIC TRAINER:
un sistema di sviluppon sistema di sviluppo è un insieme di stru-menti hardware e software, che permettonodt realizzare tutte le operazioni necessarieper 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 lopermette, compilarlo, assemblarlo, eseguirlo in temporeale e farne il "debug", owero la messa a punto.
Per poter eseguire queste operazioni e necessario
uno scrittore/cancellatore, un insìeme di periferiche tipi-che, da collegare ai piedini di l/O del microcontroller,
I'alimentazione e un pacchetto software contenentel'editor per scrivere il programma, rl compilatore, l'as-
semblatore, il simulatore e il proqramma di comunlca-zione e controllo.
Per questa descrizione ci siamo basati su un sistemadisviluppo economicamente accessibile, efficace e sem-plice da ultlizzare, denominato MICRO PIC TRAINER
della ditta "MSE: Microsystem Engineering".È destinato ai PIC della gamma media, con un mas-
simo di 28 piedini, fra cui troviamo anche il PlC16FB4.
Nella figura si puo vedere l'insieme dei materiali checompongono il MICRO PIC TRAINER.
;$
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 cinquecommutatori,
6, - Otto uscite digitali collegate a otto diodi LED o ad un display
8. - Possibilità di collegare e scollegare le periferiche mediante
lumpers.
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 fili per il collegamento con la porta parallela
del PC.
14. - Tutti icomponenti che compongono il MICR0 PIC TMINER sono
montati su di un circuito stampato professionale, a doppia faccía, con forimetallizzati, 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 PIC-
BUS, tramite ìl quale sono portati aìl'esterno tutti i
segnalì di l/O e l'alrmentazione del mrcrocontroller. Con
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 fabbri-cante stesso, oppure con le schede sviluppate dall'uti-ltzzaTjre.
Quando si lavora ad un progetto basato su di un
microcontroller, uno dei compiti piu comuni è la ste-
sura deì programma, e la verifica della sua efficienza.ll progetto si divide in moduli, e la stesura del softwa-re che controlla ognuno di loro, propizierà ìl risultatof ina le.
Per verificare l'idoneita delle istruzioni di ognì
modulo, dobbiamo provarle ed eseguirle in temporeale 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, diodiLED, display a 7 segmenti, e anche un display LCD.
Inoltre tramite il connettore PICBUS, è possibile
aggiungere qualsiasi componente esterno.Dato che ìl dispositivo e collegato alla porta paral-
lela del PC, quest'ultimo è utilizzato per editare, com-pilare, 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 otte-nuti sui dìspositivi del mondo reale, che sono le peri-
feriche 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 : ".1,'i: l. y ,'i:::, i :': :
l: :t :: t: :!i!: :: ;''i:';.';;1,'ii,. :;.:,.1: : 1;
Anche se sulla scheda del MICRO
PIC TRAINER ci sono solo due zoc-coli da 1B e 28 piedini, esistonodiversi adattatori che permettonodi lavorare con i differenti modellidi PIC e di piedinature. Come rife-rimento ricordiamo che l'adattato-re "2OC0603" adatta i PIC a 28piedini con drmensione 0.6" alla
dimensione 0,3"; invece lo"7OC8lx" è un kit di adattamen-to ner I'tiiltzzo dei PlC16t87x.
Raccomandiamo l'uso deglizoccoli "a forza di inserzionenulla ", che dispongono di unar^,,- -r-^ -^.^ i {^.i ^ 'acilita l,in_|EVC Lt IE OPtE I tUI I C
serzione e l'estrazione dei PlC.
Grazie al connettore di espansionePlCBUS, è 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'im-piego di nuove periferiche, come le tastiere matriciali,un visualizzatore da 4 display a 7 segmenti, convertito-n AD, clock in tempo reale, espansione della memoriaRAM non volatile, nuove porte di l/O, ecc.
MlcRo Plc roMeî'te a d snos'z,onp do'l'r,rilizz,'tnro norifori6le indu-stnalr 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 tramiteI connettore PICBUS, orientata a control o di motoriDC c PAPeadre's a'tri senso'r. F ascneda n"r.rinaledel microrobot PICBOT-2.
:i ;i Í:i f . í ii # ÉÌi:l +: ;i r--, i4,i {; ii: s. j;Tix
.:' i- i'.il,i{!t i.! ii;{{." i'fi;":,iri,,! g fiOltre al manuale dell'utilizzatore, realizzato in rtaliano,per i -ostrr lettori, che accompagna il sistema d svilup-
Collegamento del sistema di sviluppo alla porta parallela del PC.
po e che contiene sezioni sul montaggio, messa in mar-cia, installazione del software, funzionamento, moduloLCD e tutorial per realizzare i primi progetti, si possono
trovare su Internet gli aggiornamenti del software e leultime novità consultando il sito: www.microcontrol-ler.com.
Per fornire a professori e ad autodidatti un metodopratico e chiaro per gestire il N/ICRO PIC TRAINER, la
ditta costruttrice ha sviluppato un "corso di progettop.atico con il PlC", in cui la prima parte e dedicata al
PIC'1 6FB4 con esercizi semp ici, e la seconda parte pro-nnnA Irn: cnllaz ana di ennlir:.inni ^i,' .',----, ,, -, dpfJilLd4uf ìt FJtu dvdtìtaIe realtz-
zate con il PIC 16F873.
Anche l'opera edita da N/c Graw-Hill "Microcon-
troladores PlC. Drseno Préctico de Apiicaciones" e scrit-ta da Jose Vl" Anguìo, Susana Romero e lgnactoAngulo, 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-+^"^ - ^"i*^ -^^.^--t) con il plC16FB4Lwrq o Pr r w oPPruLLrr
ll secondo ibro è più avanzato, ed è dedicato allapresentazione teorica e pratica dei moderni mic'ocon-troller PIC 16FBlx e all'insieme di schede che ruotanoattorno al MICRO PIC TRAINER
Inoltre e anche consigliabrle il libro " Micro-controladores 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, sonodescritti sia il MICRO PIC
TRAINER che le altre sche-
de.
:;i- l,r i- íi".-;;.:i- i 1r a,:Ì'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-^^-+; -i+,,-+i - ^lia+rn-gnalt stTua| a 0r5r.dnza nor-
malizzala, dove si possono
montare i dispositivi da pìlo-
tare con rl PlC. Nella zonapremontata, è situato lo zoc- ._L--t t :r'- - - ----- : --, Scheda dei prototipi con alcuni componenti di un'applicazione.colo che conterrà il PlC, e la -- --- --:- -
sua circuiteria fissa, formatadal cristallo diquarzo con isuoidue condensatori, ilcir-cuito di Reset e lo stabìlizzatore di tensione.
Esiste una scheda dei prototipi per iPlC da 18 piedi-
:;,....,..
Scheda dei prototipi per progetti basati sui PIC della gamma media
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 progettocon prestazioni professionali,h:<<n nrozz6 p 6rniÀi+: rliuoJJv ylL44v L I OUìUltO Ul
r montaqqio.In modo complementare,' lngeniería de Microsistemas
Proora.nados Sl fornisce, due kit di componenti e un
manuale con eserczr per svr-
Irrnnare 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
PROYECTOS TíPICOS".
ti:a !r''t,'t:::
II proto PIC 2, scrittore di PIC
nche se le basi fondamentali dell'elettroni-: ca attuale sono le stesse che la accompa-
gnano dalla nascita, 50 anni fa, il suo stu-- ,1 ':
notevoli cambiamenti.I semiconduttori e in particolare ì transistors, che
sono i più caratteristici tra i componenti microelettroni-ci, 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
sulla programmazione, che ha semplificato la parte
relativa all'hardware introducendo e sviluppando un
nuovo componente: il software.Comunque esistono numerosi prodotti elettronici
che non sono programmabili, perché anche se i micro-controller lo sono, devono poi essere collegati a dispo-sitivi semplici per sviluppare le applicazioni commer-ciali.
Per facilitare lo studio della moderna microelettroni-ca in modo progressivo, pratìco e modulare, descrivere-
mo uno strumento didatticoprofessionale che, oltre a
supportare un programmaproprio di autoinsegnamentosperimentale nelle principali
aree dell'elettronica e deì
microcontroller, serve comelaboratorio e banco di provaper 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 UNI-
VERSAL TRAINER della MSE:
Microsystems Engineering, si
presenta un laboratorio di
sperimentazione contenutoin una valigetta leggera e
facilmente trasportabile che
contiene tutti i dìspositivi e i
circuiti princìpali che richie-
dono il montaggio ed il fun-zionamento di qualsiasi pro-Laboratorio di microelettronica e microcontroller UNIVERSAL TRAI NER
getto basato sulla microelettronica o sui microcontrol-ler. 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 raggruppatela maggior parte delle periferiche e dei circuitì funzìo-nali 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
. Sezione da 2 pulsanti
Utilizzando la tensione che fornisce l'alimentatoredel 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 elettronicicomolessi.
I :niiiÈ:.rLi ini,irij"iti.if :ij i j ij :ii *, {-., fj s':r irt !; i-'E i: _l- Í, ::,!,i1 5 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 fami-liarizzare con le aree più rappresentative della micro-
Dettag I io del col leg a mentodei componenty util zzati in un esperimento
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.
M0DUt0 6r AMPilFICATORI 0PERAZIONALI
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ì elet-
tronici necessari per il montaggio degli esercizi dell'o-pera sull'UNIVERSAL TRAINER.
. Cicalino piezoelettrico
. Valigetta trasportabileMODUL0 2: SEMICOi,IDUTTOR|
MODULO 4: MICR0CONTROLLER I (PlCf6F84)
i:,,'igt.,ri+++Ì,ur:l*Ée*+ae;+lii# #;'tÈ,t'+É+t+È!-f:É:-.;.Èg'íitj;i!, F?;lnF':é+lt'Íi:r+
Scric rli srherlc ron oli cscrcizi e imatertali necessarl npr il mnntennindegli esperimenti proposti sull'LJNIVERSAL TRAINER, facenti parte del modulo 1,
úe tratLa di eleLtronica digitale.
. Dischetti con programma per quei moduli che lo
richiedono.
ll programma parte con I'insegnamento, nel Modu-lo 1, dell'elettronica digitale. Nel Modulo 2 si sperimen-
tano e studiano i semiconduttori, diversi tipi di diodi, larettifìcazione e gli alimentatori.. ll Modulo 3, f ocalizzalo sull'elet-tronica analogica, fornrsce numerosi
esercizi e montaggi con i transistor.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 degliamplificatori operazionali e, infine, il
Modulo 7 si dedica alla manipolazio-ne e ai progetti con circuiti logiciprogrammabili, come quelli del tipoPAUGAL.
I Moduli 4 e 5 che completanoI'UNIVERSAL TRAINER insegnano il
progetto e la programmazione dei
microcontroller PlC. Nel Modulo 4 si
Montaggio di un progettobasato su di un PIC ne\|'UNIVERSAL
P58
collega il PlCl6FB4 ai cir-cuiti funzionali e alle peri-
feriche presenti sul labo-ratorio, e si sviluppano 17
progetti di applicazioniNel Modulo 5, basato sul
P|C16F873, sono conte-nuti dei progetti di diffi-coltà maggiore, compre-
sa la gestione delle peri-
feriche più comuni, comele tastiere matriciali e i
dìsnlav ICD Cnmp tuttigli altri moduli, anchequesti contengono una
serie di schede a coloridove sono nresentatl I
progetti, una scatola con
i materiali necessari per
montarli sull'UNIVERSAL TRAINER e un dischetto conte-nente i programmì sorgente per tutti gli esercizi.
Sul sito lnternet: www.mìcrocontrolladores.com tro-viamo costantemente nuovi esercizi, modrfiche a quelli
proposti, aggiornamenti dei software e programmi, e
NilICROCONfROttERL'insegnqmento dell'eleltronico moderna
TRAINER, utilizzando il PROTO PIC 2
novità che possono essere liberamente visionate.All'interno della scatola con il materiale per il montag-gio degli esercizi dei Moduli 4 e 5, deve esserci uno
scrittore di PlC. Per coprire questa esigenza di scritturadei 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 connettorePIC 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 utiliz-zatori 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-tore di PlC.
Questa scheda si collega alla porta parallela del
PC, il quale controlla il suo funzionamento e il pro-cesso di scrittura e, dall'altra parte, viene inserita suifnri doll: <rhad: 6p6rinhn:rÀ À:l nrrll^ -^ll^^- irvr I vLilu rLrrLvu VrUtUUUdlU, Udl qUdltr LUllCVd I
dispositivi presenti sull'UNIVERSAL TRAINER a quelli
esterni che sì possono aggiungere.
Tramite un connettore D825 la scheda PROfO PIC 2 si
collega alla porta parallela del PC, che ne gestisce ilfunzionamento. Con ouesta scheda si oossono scrivere
iprogrammi che sono stati editati, compilati e assem-
blati sul computer. Per questa operazione esiste un pro-
gramma 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-
TO'PlC 2, si puo riscrivere un nuovo programma e veri-
ficarne il funzionamento immediatamente e sur dispo-
sitivi 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
collegare componenti montati su una scheda proto-
board, e collegati mediante fili inseriti a pressione nei
fori della protoboard stessa.
,.
!........,. ;
Scheda PROTa PIC 2, che coytille il OroOryo s:rittor: di llc Oer realizzare i proget! dei Modult 4
1 5
i:-'n1:i...,:'!;i'4::],:.lt+t,:!];4Ì].í..;i'.'t:t.'u!.r:i!;lrli"'i;.lu,'.li.;-:i11;;':i',1,';,;.l1.;|,
MICROCONTROTLERUn pioniere in microroboticei
Altri microcontroller per microrobot:
il 68HC77 di Motorola
I microcontroller MC68HC11 è stato uno deipreferiti dai progettisti di microrobot. Le suenrestazioni e le sue eccellenti caratteristicheYr!J!vL'v'" L
'
tecniche lo rendono molto adatto per questa
tecnologia. Un esempio è rl microrobot TRITT.
mostrato nella fotografia in basso, progettato e com-mercializzato a partire dal 1997 dalla ditta MICRO-ROBOTICA S.L.
La struttura del TRITT è modulare, Ia sua parte
elettronica è configurata sulla base di varie schedesovrapponibili, e la scheda che occupa la posrzione
superiore è quella che contiene il 68HCl1 e la cir-cuiteria ausiliaria. La scheda inferiore della fotoqra-
fia, contiene il circuito incaricato della gestione deimotori e dei restanti sensori e attuatori.
La struttura interna 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 cheutilizzano questa dimensione del byte, così comuneed economica. L'architettura è di tipo Princeton,nella quale la memoria dei dati e quella del pro-qramma sono unite. Nella tabella sottostante sono
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
Software in ROM per caricare nella RAM
un programma esterno.Microrobot TRITT costruito attorno al microcontroller 6BHC| 1 di MOTOROLA.
riportate le principalicaratteristiche delmodello 6BHC 1 1A1 .
,, ; :, i ,i. :,t .,,. ,
ll MCGBHC11 è di, '
sponibile in commer-cìo in contenitore l
l)l( ( .lr \,/ nrn ó rnJ- V"' r ",DIP da 48 pin Questinier-lini clovnnn qrrn-."f,
n^rtrró qR {r rnzinniPv, rq,L
dif{oranti nar rrri l:ur rErcru, PEr Lur rc
maggior parte di essi t,
^--^t,,^ -il^ at,,^--^asS0tve dile 0tver5e{,,^-i^^i ^"-,i^ -ll,-,,lulf zlut| 9taz rc dil du-
silio di un multiplexerinterno. :
Nl^ll^ +i^,,.^ i^l\elld I 19Urd lrì r' .,
basso e riportata la Struttura interna del 6BHCnionlinrtrrrr nar il rnn-
tenitore PLCC montato sul TRITT. ll fatto che ogni pie-
dino svolga drverse funzioni, obbliga a fare molta atten-zione al progetto dell'hardware, perche qualunqueerrore. 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-
up" da 4K7.
XTAT EXTAL E rRa XIR-a RESET
| 1 con i blocchi che lo configurano e i relativi piedíni
I pin del microcontroller sono raggr,uppati in insiemi
che realizzano le stesse funzioni. come si ouo vedere
dalla tabella.
:'
GRUPPI FUHZIONAII DI PIEDTNI
I Alimentozione: VDD e VSS :
2 Clock: EXTAL, XTAL e E
. 3 Resel: RESET I
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 : '
9 , Comunicozione seriole sincrono {SPl): SCt, MISO, MOSI e SS l
:' 10 , pou" di l/o: PA0-7, PBo-7, Pco-7, PD0-3 e PE0-3 :
, I I : Conoli del convertiiore AD: AN0-7 ) :
', 12: Piedini dei bus esterni: AD0-7, A8-Al 5, AS e R/W 1 |
:l:
Nello schema della figura in alto è riportata l'archi-
tettura interna del 68HC11, con i diversi blocchi che locompongono 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 contenitorePLCC, circondato dalla circuiteria ausiliarìa e dai con-nettori dr adattamento.
farchitettura del 68HC11 mostrata nello schema
precedente, e utilizzata in molti modelli di questo
microcontroller, i quali si differenziano fra di loro prin-
MODA MODB
ffircffi
ruffi-r--==
@I
-IE-NONONOÉ------f É------É H------H
boNodd
ÈÉ*à
XTAL
PCO,/ADDRO,/DATAO
PC ] /ADDR ],/DATAI
PC2 / ADDR2 /DAI A2
PC3/ADDR3,/DATA3
PC4/ ADDRA/Dl\1A4
PC5,/ADDR5,/DATA5
PCólADDRó/DATAó
PC7 / ADDRT /DAfA7
.xtRa^ PPE
ÒPD0/RxD
ì ^1: *- " ,-. ; ' zzzz1e q < < << ó < !!:i-;ii's'"ì[ii
,'ZÒ41;!?vvvgvv\< <:Fsr-òE <ìilflff"ÒÒdùxxxY_
N-VVYà< d d r (ld<<<ódÀÀ<
.PE5/AN5
PE] /ANIPE4lAN4
] PEO/ANO
I PS0/ADDR8
PB] /ADDR9
] PB2lADDR] O
] PB3lADDRI I
PB4IADDRI 2
r PB5/ADDRl3
PBólADDRI 4
PBZIADDR] 5
PAO/ C3
Piedinatura del 6BHC1 1
nella versione con il contenitore PLCC da 52 pin
IT'IICROCONTROLLERUn pioniere in microroboticer
Scheda di controllo del TRITT in cui si può vedere rl 6BHCI 1
Configurazione della mappa di memoriaper i differenti modi di funzionamento del 68 HCI 1
(512), dai registri di controllo e da una ROM dove risie-
de un programma che si esegue alla partenza.
2', Circuito espanso, o "expanded" (N/ODA =MODB = 'l).
Schema semplifícato dei collegamentidel 6BHCI 1 per il funzionamento in modo circuito unico
@t's""E!$ffi.ir;*"
ffi*t*ffi**t*"Effiffi
l*"l*:f,'
mre
roffiffi
",::î'
ryryr
-ro-
ffi'$,î."
EPROM
0t't, o
'0o
0
0
4k
0
00
.00
l2k
..,, 0
.t,,t.ó::'.....*Uè:ìrlììrì:,:-,...
o
i:i:Ét-'
EEPROI\,I
0
srzo
512
0
0
0
0
0
512
0
5t2512
2k
5t2512
512
Tabella con i diversi modelli del 6BHCI 1,
che si differenziano per le diverse capacita della loro memoria
cipalmente dalla capacità della loro memoria, comepuo 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 dif-f erenti:
1". Circuito unico o "single chip" (MODA = 0 e
MODB = 1).
Come si puo vedere dalla figura, la mappa dellamemoria è formata dalla RAM (256), dalla EEPROM
RAM ROM
E**0ryèo?5+ 8k
tl;.:.j O:|: .: :,l:,4k, -..,.O
o
ì:.:O.a.
F:::izt
i-*,]i?h
:
MICROCONTROTLERUn 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à conte-
nere i vector di interrupt.3'. Circuito speciale di Bootstrap (MODA =
MODB = 0).
A drfferenza deì circuito unico i vector di
interrupt risiedono in una ROM speciale, chia-
mata "ROM di avvio". Alla partenza viene ese-
guito questo programma che rimane in attesa
di ricevere informazioni tramite la porta seriale;nrró<ta nrnrodrrr: <or'- --,ve per scflvere un pro-
gramma nella RAM dall'indirizzo 00 a FF.
4". Circuito speciale di Test (MODA =1 e
MODB = O)
Funziona come nel modo bootstrap, in piu
si puo accedere alla memoria esterna e anche
ad alcuni registri protetti. E utilizzato nelle prove di fab-
brrca.
Nello schema della pagina precedente è riportato il
collegamento semplif icato deì piedinì principali del
6BHC11 quando funziona in modo circuito unìco
,'
Sia il funzìonamento che la gestione e la programma-
zione del 68HC11 sono molto diversi del microcontrol-ler 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. Inoltrequeste linee sono condivise da altre risorse, come i
Fotografia della scheda di controllo del motore esensori del mrcrorobot TRITT diseqnati per MICROROBOTICA S.L
Questa versione espansa del microrobot TRITT puo ptlotaremolti sensori e attuatori, grazte alle numerose linee di l/O del 6BHC1 1.
comparatori, gli Input Capture e gli accumulatori di
impulsi.| - ^^-+- ^ ^--"^- t'indirizzo esadecimale 'l 000 dellaLO PUr LO n VLLUPO I
zona dei registri; se si scrive in questo induizzo il valore
sr rifletterà sulle corrispondenti lìnee di uscita.loncrondn nrpqt: nosizione riceviamo l'informazionedai tre pin che funzionano come ingressi. Di conse-nt?n7à drrrante nrrpqta fr rnzinno i disnositivi interniy uu "-q,associati a questi piedini sono scollegati. Nella fotogra-fia si mostra una variante del microrobot TRITT che sup-
porta 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 dellanar+r A .hirr;rì rl In++^.^ lr cnmnliri+r Ài nrrocin nrn-iJUl td A Ll lldrrd dr rcLturc rd )cll vllLlLo ul 9uE)Lw Plu-
ce5so.
Programma per accendere un diodo LED montatosulla linea PA6:
ORG
LDA
STAA
BRA
END
$0000 ;ll simbolo $ rapprerenta il valore esadetimale
#40 ;ll regifro è caricato con il valore 40
$1000 ;5i scrive sull'indirizo $1000 ehe corrisponde
;alla Porta A, con PA6 = 1
CICLO ;Generiamo un "salto su se stesso" provocando
;un cklo infinito.
clcL0
NilICROCONTROLLERMicro'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 statiprogettati dalla ditta Ingeniería de
Microsistemas Programados S.1., che li commercializzain tutto il mondo.
Lo scopo di questa scheda e permettere l'espansio-ne di diverse periferiche, molto comuni nelle appltca-zioni basate sui microcontroller, per poterli controllaretramrte il MICRO'PlC TRAINER, con il quale si accoppiagrazie al connettore PICBUS, che ha 26 linee e che sr
trova sulla scheda.
Per facilitare l'utilizzo congiunto di questi duemoduli, è possibile acquistare il MICRO'PlC LAB PLUS,
un drspositivo che su una scheda di metacrilato suppor-ta il sistema di sviluppo MICRO'PlC TRAINER, la scheda
di esoansione delle oeriferiche MICRO'PlC TRAINER
PLUS e un trasformatore professronale che alimentatutto il sistema a 220 YAC. come si ouò vedere nella
fotograf ia.
ll MICRO'PlC TRAINER PLUS, permette di realizzare e
sviluppare progetti basati sui microcontroller PIC dellagamma media, aggiungendo alle periferrche esistentì
P óI
nel sistema di sviluppo MICRO'PlC TRAINER i seguentidispositivi:
1. Canale di comunicazione seriale RS-232.
2. Tastiera matriciale 4x4.3. Barra di diodi per visualizzare lo stato logico dei
segnali più significativi4. Rete di periferrche comunicanti tramite il bus l2C.
5. Vrsualizzatore da 4 display a 7 segmenti pilotatodal 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 nonvolatile grazie al PCF8583 (l2C).
La scheda MICRO'PlC TRAINER PLUS ha una dimensio-ne normalizzata da 100 x 160 mm, Eurocard. È alimen-tata con +5 VDC che riceve tramite le linee del connet-tore 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
N:oo I
| :BATJ I Ni-cd 3.óv
s*me ECO ló250Oó
5--l:l
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 colle-gano i seguenti circuiti integrati:
- SAA1064: Controller per 4 display a 7 segmenti.- PCF8591: Convertitore D/A e A/D.
D3 D2
QIscroT
- 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, trami-te le lrnee che arrivano dal connettore PICBUS del siste-
ma dr sviluooo MICRO'PìC TRAINER. Osserviamo che la
UTsAAr oó4
Dir:OlltOltr/w
a:
è"".."$.
sA3ó-l I
tastiera è controllata tramite le B linee della porta B
(RB7 - RB0) del microcontroller. ll software di applica-zione configura le linee RB7 - RB4 come uscite, che
sono attivate in modo sequenziale, applicando un livel-
lo attivo ad ognuna delle file della matrice. Le linee RB3
- RBO sono configurate come ingressi che ricevono
l'informazione delle colonne della matrice, e vengonolette per determinare se qualche pulsante è stato pre-
muto.
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 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
software o via hardware, si debbono utilizzare i jum-pers 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 statobasato sul circuito MAX232 (U5), il quale ha ii compitodi convertire i livelli TTL, presenti sul pin 'l '1 di trasmis-
sione (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.;:. jii
ll dispositivo PCFB583P adattabile al bus l2C, contieneun clock/calendario in tempo reale, con funzioni ora-rie tipiche, più allarmi e temporizzazioni. Inoltre inclu-
de una RAM statica da 256 byte dei quali i primi
Schema del canaleseriale RS-232 basato sul circuito
:ntegrato MAX232
16 sono riservati, lasciando Iiberi per l'utente 240 byte.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 chenrrÀ 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-.*^ ^,,^- +amnari,caso sl proouca un arlarme o una tempor|zzaztone.
Questo dispositivo si puo alimentare con una
batteria ricaricabile al Ni/Cd, quando c'è una man-canza nell'alimentazione principale Vcc. In presenza
della tensione Vcc, l'alimentazione arriva tramiteil diodo D5, e nello stesso tempo si ricarica la batte-ria tramite lo stesso D5 e R16. Se manca Vcc la bat-teria mantlene l'ora nel clock/calendario e i datinella RAM.
PCF8583PAdr.: IOIOOOOT/w
Schema dei collegamentidel clocklcalendario + RAM contenuto nel PCFB5B3P
È+è È + g+r'i Fll#'È-g=Èl È +É+;,=r "$.-$a+e:
P62 MICROCONTROTTERMicro'PIC lloiner Plus
Basato sul circuito integrato l2C SAA'1064, sulla scheda
si controlla un visualizzatore formato da 4 display a 7segmentr. linduizzo a 7 bit che gli corrisponde, ha i 5
bit più significativi programmati in fabbrica, mentre i 2restanti prendono un valore che dipende dalla tensioneapplicata 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 tensionen:ri: : ?/9 \/rr il ri:lnr^ crrì A1 ^ .^ .i -^ll^n: :À ,,n:vatto a J/u v!L il vorvrc )drd u I c )tr )t Luilcgd du u|dtensione di 5/B Vcc sarà 10.
UIsAAloó4
U4PCF859 r
Adr.:l OO! OOOr/w
lrhama r'lai rallonamanti
del PCFB591 che conttene un convertitoreD/A e un altro A/D.
ll dispositivo l2C PCFB57 44 fornisce al siste-
ma un'ulteriore porta da B linee di l/O digi-tali. Risponde all'indirizzo da 7 bit: 0 - 1- 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-0-0.
I e nerifcrichp da rontrollare tramite le
linee di l/O sono pilotate con dei diodi LED
che visualizzano il loro stato, anche se sono-++i,,^ -^^ l^^i-- ^^^-+arlve con rogrca negdLVa,
_--lI
GND
I
Adn:Ol I lOl lrlw
DIGI.:::
, ,l
rJllili::ll: ri''rttì;:il:l'
l
5436-l t sA3ó- t t
\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 sequenzia-le, e avviene ad una velocita tale che i4 display sem-
brano attivi tutti insieme, mentre in realtà lo sono sola-monta alro nor \/nlt2
Questo modulo è basato sul circuito integrato 12C
PCFB591, che è Eià stato descritto in modoapprofondito in precedenza, quindi riportiamo sololo schema dei colieoamenti sul MICRO'PlC TRAINER
PLUS
U4PCF8574A lll*
Adr.:Ol ì 'l OOOr/w
Schema dei collegamenti del dispositivo l2C PCFB574A cheforntsce a/ srsiema una porta di B linee di llO digitali.
II nano favoloso
,l .,
i'l l i'i,lr ri i iAll'interno della grande varìetà di modelli di microcon-troller PIC esiste una "casta" soeciale che riceve il
soprannome di "nano". Sono chip portentosi che con-
tengono un computer completo, anche se misuranopoco 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
Un PIC nano confrontato con una comune chiave
Monty dispone di una pinzasu uno dei due bracci, che è controllata da un PIC nano.
, cole dimensioni, anche il numero deìle risorse interne
come la capacita di memoria e minimo. Le sue presta-
' zioni, 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
ripassiamo la distribuzione della medesima. La famigliauna comune chiave. Questa caratteristica da
re un'idea delle possibilità di questa fami-nlia' orazie alle srre ridotte dirnensioni
sarà possibile ottenere da questo sempli-
ce oggetto un potente controller, il
quale, introducendo la chiave nella serra-
tura, riceva l'alimentazione necessarianor pscnrire il nrooramma scrìtto in|!,.'y'"y'
memoria, permettendo così di pilotare
un insieme di periferiche quali relè,
motori, luci, ecc.
Questo piccolo dispositivo dispone di
tutte le risorse e riunisce tutte le caratteri-
stiche tipiche dei PIC che abbiamo studia-
to sino ad ora. Come è logico, viste le pic-
ftIODEtIO I CARATIERJSTrcHE :
.\ -l l^++^to ot tcLLU-
FEl,4egXe nC I2C5XX
:P€tóeXX ellCl2cXU
.Pr€lFcxx
Ptctscxx
33 isfruzioni da 12 bit
35 istruzioni do 14 bit
58 istruzioní do I ó bit
77 \struzionido Ió bit
iTabella 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, erho <nnn rinnrtrii noll.Lr rs )vr rv r rPUr to Lr r tgilq
figura a lato.Analizzando la ta-
bella della fìgura osser-
viamo che nella gammaA--^ ^ ^^il- *^..J;-ud5e e Ireild ilreurd Cl
sono due modelli che
rispondono alla no-menclatura PlCl 2C5XX e PIC'1 2CXXX. risoettivamente.
Questi modelli sono pertinenti alla casta dei nani e sonocaratlerizzali da un contenitore con soli 8 pin. Oltre a
oueste due serie il costruttore MICROCHIP Scnrp rn:politica di potenziamento di questi piccoli microcontrol-ler, sviluppando nuovi modelli dotati di memoria FLASH
ed EEPROM dei dati, come iPlC1BF0l0 e P|C18F020.
I microcontroller PIC da 8 bit sono carattenzzati dal pos-
sedere un repertorio di 33 istruzioni da 12 bit cadauna,ron rne frpnttpnz: masSima di funziOnamento di 4MHz.'Ci sono solo due livelli nello stack per memoriz-zare 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 variantrPlC12C5XX. La lettera C indica che la memoria di pro-
9-t I
tNDtRtzzt
gramma è EPROM, le lettere CR che è RON/ e le lettereCE 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 VDCe 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 menodella memoria EEPROM per memorizzare i dati in modonon volatile. Inoltre dispongono di convertrtore A,/D aquattro canali e dì interrupt: carenza importante nei
nani della gamma base. I nani della gamma media pos-
sono funzionare ad una frequenza massima di 10 MHz,
g +* GP2TOCKI/ANz/INT
7.g GPl,/ANlAnerg GPO/ANO
Vou eIk 5# Vss
ffiffiiltffiCODICE r a
tsrRuztoNE ! z
ffimlt o
ffiffi-<9-l ì
ilffiiffiX "o'"mro GPs/OScl,/CtKlN * Zb?GP4IOSC2/AN3ICrKO|..IT +'-F 3 B-a
GP3/MC-IRAPP # 4e
Ptcr2c508APlcr2c509APlcr2cRso9APlcI2CE5lSPrcr2cE5r9
ir",'iiii,Ptcr2c672Ptcr2cEó73Ptcl2cE674
Prcr8F0l0Plcr8F020
Controllo della memoila di programma nella gamma base. Piedinatura dei PIC nani, uguale per i modelli di tutte le gamme
:I
Tabella con le principali caratteristrche dei PIC nani della gamma medja
nella tabella della figura sono riassunte le loro caratte- l
ristiche. ''
I'i i''l '': 't,i'i: t,rt ..,.t,t!, ;1;.tti: ;..1I:Ì i::; ;1;,:,.'i'.
;
Ne|lapoliticadipotenziamentodeiprodottidotatidimemoria FLASH, MICROCHIP ha lanciato sul mercato l
una coppia di modelli dotati di questo tipo di memoria
diprogramma,capacidifunzionareadunafrequenzadì 40 MHz. Nella tabella in basso sono riportate le carat- ,
teristiche più importanti.
,ri.,'iii';-l il::::i"t ::,':.:, itt:':";i.':)::t:.
-;,i: r, 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 dota- l
ti di memoria di capacità inferiore. Lo schema generale
dell'architettura dei PlC12C5XX sì può scomporre in :
cinque grandi blocchi::
'1". Memoria di programma EPROM.
2' Memoria dei dati RAM.
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,
ìioDEtto
o l':ltr: nar iri:ti ln
questo modo è pos-
sibile accedere
simultaneamentealle due memorie.La dimensione dei
byte della memorìa
di programma è
EPROM, coincide.^n nrroll: dollo
istruzioni, vale a dire
sog ,u *"ro, u o oronrutt, . o,','rljt r)t: J::tl';bit cadauna e neì 509 è di 1 024 indirizzi da 12 bit. La
memoria RAM dei dati di questi due modelli è di 25 o41 bytes, a seconda che si tratti del 508 o del 509. I
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 dal-
I'indirizzo 07 Hex. Lo stack ha solo due livelli e non
dispone di flag di overflow, è quindi compito del pro-
grammatore controllare che non debordi quando si pro-
ducono gli annidamenti ne le subroutines. Sono ammes-
si solo due annidamenti, dato che con il terzo lo stack
perde uno degli indirizzi di ritorno e cade iì sistema logi-
co. L'indirizzamento delle istruzioni arriva sempre dal
contatore di programma, mentre quello della memoria
dei dati può essere "diretto" quando I'indrrtzzo è conte-
nuto 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 regi-
stro 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 cari-
ca con il valore dei flag che segnalano condiztoni parti-
colari 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 ilut|tLLot tuu ptrr orLurl
multiplexaggio.Così come succedeva nel
PlC16FB4, i nani dalla gamma base
utiìizzano la tecnica della segmenta-
zione nell'esecuzione delle istruzio-
ni, per cui dividono il compìto del
processore in due stadi. Nel primo si
realizza la ricerca dell'istruzione suc-
tlEi4(nnPRC)GR/AISIAAúI :
Hg/?tr.,Èn 3584 ,2048xt4 j tlg ó l0lùb I do I bit 1
*t*" rzc2 rO2a,,ri lóx8 I ,r, I ó lotrt+h I ds I bit I
MoDEro pRdtidiffrÈÉ ; _- j ____^.. i .qn i LrNEE jFREauENzA
, hÉ* ; EPROfr4 I ROÀ,r i EEPROÀ'I I br|ti i VO i ltAX.,nE||.r Fr(fJs[ArvlrhArA RAM LINEE TREGIUENZA CANAUvÉ*v hrr* EpRotr,t Rofil EEPRoM brbi, tlo ltAlc nMERS AID
,2Ctí71 l9n ldl4x14 128 ó l$dù | do 8 lrft I ,
t:lod:z rse4 irusxra lirt ó lolitt I do I bit 1 .
t2có23 rzc2 rO2ar,ri lóx8 I ,r, I ó lotrt+lz I ds I bit Il29xz4 Si84 204Sr(14 lóx8 I28 ó l0ÀiFh I do I bif 4
hto; : immiuHmjruoutuzAl icAltAUi* i ,** i::l*9l !-ryi Io I -P --i 1*-1-"i 1J:,.J*i+ 12; ó t0#ù | do s tit I
1
. t.. , r^llrL r l-ol.:. f
-Iti!F$9Rf*.--i : i 1 ' 2 :
Tabella che raccoglie le caratteristrche piit importanti dei PIC nani con memoila FLASH
:;t'i1:i,-,
P64
DrRrzzoru f BUsDAîl
ry*ffi#INDIRIZZAMENTO DIRETIO
\ INDIRIZZAMÉNIO
5. |ND|RETTO
ffix \8
ffi ceo
fil ocr
Efonnarcffi omzmnzu*
filerTmzlrÌl o"s/oscrz.r*,t
coDrcE|5TRUZ|ONE | 2
Architettura interna dei P/C12C5XX
cessiva e nel secondo si esegue quella in corso. Questoparallelismo implicito permette che tutte le istruzioni,eccetto quelle di salto, si realizzino in un ciclo di istru-zioni, che equivale a quattro cicli di clock. Quindi se ilmicrocontroller funziona a 4 MHz, tutte le istruzioni,eccetto quelle di salto, impiegano un microsecondo adessere eseguite. Le istruziori di salto impiegano duemicrosecondi.
,:, 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 soloquattro pin hanno una sola funzione, mentre I restantlquattro ne supportano diverse, multiplexate nel tempo.I pin 1 e B ricevono l'ingresso della tensione di alimen-tazione: VDD che è l'alimentazione positiva e VSS che è
la massa. I restanti 6 pin si possono configurare comeingressi o uscite, ad eccezione di GP3 che funziona solocome Ingresso.
Questo pin supporta altre due funzioni: la primacome MCLR# (richiesta esterna del Master Clear Reset)
e la seconda come ingresso della tensione speciale perla programmazione, VPP GP4 svolge anche la funzione
ilffix\
ó
am'\8 \8
r3
m
di uscita dell'oscillatore e collegamento del cr stallo diattArT^ GPE fr rnzinn: .^mo rrcritr dal nrn-,, ,",, ._rC€SSO[e €
connessione del cristallo di quarzo. Inoltre GP0 e GP1
sono incaricati di ricevere idati in serie e gli impulsi diclock per la sua sincronizzazione nel modo di proqram-mazione seriale del dispositivo.
g'
mgrmMCLR* VDD V55
i Voo- |GP5/OsCl/CrKrN- 2
GP4IOSC2.3GP3/MCLR/VPP* 4#ff,l
Prcr2c508APrcr2c509APtcr2cRs09APtct2cEStSPrcr2cESr9
Piedinatura corrispondente a tutti i PlC12C|XX
t :': i!: t1-', 1,,.' t;'ili l',: :;,ìt'i
It PIC1 2C508A al['i nterno
1;f i ,
lPlC nani da R nin hanno dìverse cose in comune: fraY"', ""nr raqto lo nrinrin:li cnnn il rnntonitnro 6 lq 5innlinrr"rrvuqjLc, rc prilrLrvoil Jvr lu ll LUI lLcl llLUlc c ld Plcullldtuld.
Le differenze sono dovute alla capacita della loro
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 allanammr h:ca a moÀi: | ^.^i À^ll- . h-<e diqn^n-9d| il |d ud)tr u r rcuro. I rìdr il ucilo 9drìrr ro uo)q ur)purr-
gono dr un repertorio di 33 istr;zioni, mentre quelli
della gamma media supportano due istruzioni in più.
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 entram-bi si assomigliano parecchio, oltre ad essere molto dif-+"-i l' '^-^^'r- ^^'-^^ è il microcontroller che si utiliz-tu)t, ro )Elvr ruo vgr lr rtr
^:r^+-.^ r- ^;^--l rhp N,4ontv nossiedp in uno dei/d pEr pilutorc ro Pil 40 Lr rs rvrvrrLy PUJJTEUq I
suoi bracci.
Dalla nostra descrizione generale dei PIC nani, abbiamovisto che fra i nani della gamma base, il PlCl2C50BA è
ouello che ha meno caoacità di memoria: la sua memo-
ITMRo+WT i 6 2.5-6,25YDC ) 4MHz : Spin
ria di progranma e ditipo EPROM e puo contenere 512
istruzioni da 12 bit ognuna. La memoria dei dati RAN/
disnnnp soln di 75 hvte nor qrririere nnerandi di utilizzonpnerale 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 Bbit chiamato TN/R0, un Watchdoq (WDT) e puo lavora-
re ad una frequenza massima di 4 MHz. Non dispone diintcrrr rnt Tr rtto lo r:r:tteristirhe csnostp ,annaiOnO Sin-
tetizzate nella tabella della frgura.
L'architettura dei PIC nani è già stata descritta in
modo generale, e in essa si e messa in rilievo l'indipen-denza fra la memoria di programma e quella dei dati,
tipica dell'architettura Harvard.
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,; íi i i +,; l,: 1 t;1 ;' !t; i. ì íj :';r ir l:i i- t i, r,i ir'i 1 li1 1.; ! 1 !''l'
i ; : :"il;l-;;:,;';,fi i'.ri +,il
MEMORIA PROGRAMMA
.-ioooonffE{ffi ,rmm
=re## H=
Struttura interna e tndirtzzamentodella memoria di programma del PlC12C50BA.
i....r. ... ..:: .- .. :;,r1ii +'!iii:i! ?'Í,,l,liX+,i!:+l'l
tt
- -;
istruzioni, per cui il contatore di programma si incre-menta normalmente, ogni volta che ne viene eseguitau na,
Gli indirizzi di ouesta memoria si estendono da 0000Hex sino a 0'lFF Hex, come si può osservare nella figu-ra. 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 r ,.l i , . l: . , ! , ." ji; ,;t :.1 ,i '1 .1 ,:, ..
'i : ,1 , ,;,, ':,rt, ;i :l',iti l! ,, ;: : t :t . t. l1 t ',' :
ll PlC12C50BA dispone di un solo banco di memoriaRAM (Banco 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 rima-nenti 25 sono di utilizzo generale (GPR). La distribuzio-^^ ^ tt---^^^--i^-^ .lellp nrime sefie nosiztonl SonoIlc E I o))E9llc4lwllE usils Pr il rrE JsLLs l.Jv)rz
riportate nella figura in basso.
:, ;'i;;'1': | '', ,,; lt:
"..I e nrime sette nosizioni della RAM funzionano come.-Y,.,YvJ|1|v
registro di controllo del microcontroller, e i bit di ognunagov€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
occupa l'induizzo 00 Hex, non esiste in realtà, perche
non è implementato fisicamente. Si fa riferimento a que-
sto registro quando si punta ad un operando in una istru-zione con indirizzamento indiretto, pero in questo caso
I'induizzo dove si trova l'operando si ottiene dal conte-nuto 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 sonocontenuti nel registro PCL, all'indirizzo 02 Hex.
, ', ' ' ' . , ]
Uno dei registri piu utilizzati nei programmi, è il registro
di STATO, che si trova all'indirizzo 03 Hex.
a
Distibulone dei bit del registro di STATO
Degli otto bit di cui è composto, il penultimo non ha
nessuna funzione. Dei rìmanenti, 5 sono di lettura/scrit-tura 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.
C: Flag di riporto e resto (carry e borrow)Nell'istruzione di somma ADDWF, questo flag va a 1
quando c'è del riporto nell'ottavo bìt, e nella sottrazio-ne SUBWF va a zero quando c'e del resto nell'ottavobrl.
Nell'istruzione di rotazione RRF, si carica con il bitmeno significativo dell'operando, e nella rotazione RRL
sr carrca con il bit piu significativo dell'operando.
DC: Flag di riporto e resto intermedioNell'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 quarto0rt.
7: Flag di risultato zeroVa a 1 automaticamente quando un'operazione logico-
aritmetica dà come risuhato zero.
-ll
sFR (7)
__lî
I
l
I
I
GPR (25)
STATO (lNDlRlzZO 03 Hex)
Organizzazione della memoria dei dati RAM del PIC1 2C50BA
Recommended