Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

66
MICROCO Registri dedicati alla EEPROM er gestire in lettura e scrittura le 64 posizio- ni della EEPROM del PlC16FB4, si utilizzano ouattro 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 realtzzare le 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 ciclo seguente il dato letto è disponibile in EEDATA. Questo dato permane nel registro sino al realizzo di un'altra operazione di lettura o scrittura nella EEPROM. slufus eesdr eedoh eeconl bd movlw movwf bt bsf bcf movf Creore un progrommo per leggere l'indirizzo 0C H dello EEPROM e deposiiorlo nel regislro W. ;rd = 0 per ocedere ol bonco 0 lv=0c P = 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 della cella e in EEDATA il byte da scrivere. Se decidiamo che durante il processo di scrittura non si possono accet- tare interrupt, si deve mettere il bit di enable global GIF - 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'altra routine 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 AA H nel medesimo registro. Terminata questa sequenza, si pone il bit WR = 1 in EECONl e si inizia la lunga operazione di scrittura. 0x03 0x09 0x08 0x08 Eu qu equ equ shfus,rpO 0x0r eeodr shfus,rpO eecon!,rd shfus,rp0 eedofo,w

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".

Transcript of Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

Page 1: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 2: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 3: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 4: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 5: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 6: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

,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.

Page 7: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 8: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

,,,,,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

Page 9: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 10: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 11: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 12: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 13: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 14: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

' -,':

Page 15: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 16: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 17: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 18: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

" 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.

Page 19: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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è

Page 20: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

.-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

Page 21: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 22: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 23: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 24: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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È::,

Page 25: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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).

Page 26: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 27: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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:

Page 28: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 29: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 30: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 31: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 32: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 33: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 34: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 35: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 36: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 37: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

,;.

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

Page 38: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 39: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 40: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 41: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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,

Page 42: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 43: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 44: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 45: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 46: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

. .'., "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-

Page 47: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

;

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,$,É*#

Page 48: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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:::

Page 49: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 50: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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+

Page 51: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 52: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.;|,

Page 53: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 54: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 55: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

:

Page 56: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 57: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 58: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 59: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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:

Page 60: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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.

Page 61: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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,;.,

Page 62: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 63: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

: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,-,

Page 64: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 65: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

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

Page 66: Microrobotica Monty Peruzzo Editore - 06 B - Microcontroller

- -;

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