98

Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

Embed Size (px)

DESCRIPTION

Tutta la raccolta in versione torrent qui:http://www.tntvillage.scambioetico.org/index.php?act=showrelease&id=192104Raccolta a fascicoli "Robots - Costruisci il tuo Microrobot ed impara l'Elettronica Digitale" pubblicata da Peruzzo Editore dal 2001 al 2003.Su Scribd c'è tutta la raccolta suddivisa nei seguenti file:Microrobotica Peruzzo Editore - 00 A - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 B - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 C - Copertine e ComponentiMicrorobotica Peruzzo Editore - 00 - Errata CorrigeMicrorobotica Peruzzo Editore - 00 - Leggimi.txtMicrorobotica Peruzzo Editore - 00 - IndiceMicrorobotica Peruzzo Editore - 01 - Fondamenti di ElettronicaMicrorobotica Peruzzo Editore - 02 - MicroprocessoriMicrorobotica Peruzzo Editore - 03 - Sensori e AttuatoriMicrorobotica Peruzzo Editore - 04 - ComunicazioniMicrorobotica Peruzzo Editore - 05 - MotoriMicrorobotica Peruzzo Editore - 06 A - MicrocontrollerMicrorobotica Peruzzo Editore - 06 B - MicrocontrollerMicrorobotica Peruzzo Editore - 07 - Modelli di MicrorobotsMicrorobotica Peruzzo Editore - 08 - Robotica Industriale e Intelligenza ArtificialeMicrorobotica Peruzzo Editore - 09 - ProgrammazioneMicrorobotica Peruzzo Editore - 10 - ApplicazioniMicrorobotica Peruzzo Editore - 11 A - Modulo di ControlloMicrorobotica Peruzzo Editore - 11 B - Modulo di ControlloMicrorobotica Peruzzo Editore - 11 C - Modulo di Controllo

Citation preview

Page 1: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller
Page 2: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller
Page 3: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

che governano it mondo.Computers: [e macchine

ttualmente è imoossrbile conceoire il mondonel quale viviamo senza computer. Se questi

smettessero di funzionare la Terra girerebbe

comunque, pero gran parte delle cose che

esistono su dr essa si fermerebbero. Si inter-romperebbero i collegamenti telefonici, fax, e Internet.

GIi spostamenti su terra, mare e cielo sarebbero seria-mpnto ncnalizzati lp induStrie fermerebberO i loro nro--^--t ^-^.r,,++;,,i ^ ,- _rmmerCializZaZiOne lgi lnrn nro_LC))l VfUUULLIVI C ld LUI lllllEILlOll4LOLIVttC UCr rvrv lJrv

dotti. Gli ospedali non potrebbero eseguire determinatiinterventi. Persino a casa nostra avremmo dei problemi

con l'ascensore, l'antifurto, ecc. ll caos sarebbe totale.ll computer è uno degli strumenti più importanti

fabbricati dall'uomo ed e da questo strumento che

dipende il suo progresso.

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

all'affascinante tecnica dello sviluppo, costruzione, pro-

grammazione ed applicazione dei Robots intelligenti,

fNICROCONTROLTERPresenlcrzione Generole

ll aersonal computer o PC

sarà uno strumento indispensabile per operare con i microrobot

avrete bisogno di un PC. ll computer vi permetterà di

eseguire interessanti lavori, ad esempio:

Poter vedere Microrobots commerciali con il CD.

Seguire lo sviluppo costruttivo del Microrobots,

Constatare il comportamento del Microrobot eseguendo i programmi

che riceverete.

Produrre voi stessi i programmi per pilotare il vostro nuovo "animale

domestico",

Poter visitare siti Internet da noi consigliati per ottenere informazionisulle caratteristiche, prezzi, punti d'incontro e corsi di Microrobots.

Risolvere i dubbi ed i problemi che nasceranno durante lo sviluppo

dell'opera attraverso il supporto elettronico.

Tutti i computer, dal PC a quelli molto più potenti che

controllano un insieme di celle robotizzate oer l'assem-

blaggio d'automobili, o comequelli piccoli di un Microrobot,hanno la stessa architettura fon-damentale, composta dai se-nrronfi tro olomonti'

MEMORIAIn questo elemento del compu-tar \/onfl^nn <rritti i r,.., programmlche si vogliono utilizzare, assie-

me ai dati necessari ed ai risulta-

ti che vengono generati.

PROCESSORE

E' la parte più importante della

macchina, esso deve interpreta-ra lo i<trr rzinn i dol nr,r,39ramna,ed eseorrire le onerazioni che

competono ad ognuna. All'in-tprno dpl nrncpqqorp l'Unita di

Controllo è quella che rnterpreta

o traduce le istruzioni, quindi il

Page 4: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

P Ol

Memorialstruzioni e dati

ProcessoreInterpreta ed

esegue le istruzioni

PerifericheStampante

Un computer è composto da tre parti principali: memoria, processore e periferiche

percorso dei dati esegue le operazioni impartite da

ogni istruzione.

PERIFERICHE

Sono i dispositivi che utilizzano gli utenti, nei quali ven-gono caricate le informazioni e vengono raccolti i risul-tati ottenuti dall'analisi dei programmi e dei dati.

Le periferiche classiche sono la tastiera, il mouse,la stampante, il monitot il modem, gli altoparlanti e

la telecamera digitale, ma possono anche essere un

PC motori, un display a sette segmenti, sensori diprossimità, ecc.

E un computer costruito all'interno di un circurro InTe-

grato. I progressi tecnologici dell'elettronica hanno per-

messo di implementare tutti i componenti di un compu-ter dentro un chip di silicio in un solo circuito integrato.

Ad esempio, il Microcontroller della fotografia che

viene evidenziato sul dito è un PlC12C5O9, ed è conte-nuto in un "case", o contenitore, di otto piedini, occu-pa un superficie di 12 mm. di lunghezza per 6 mm. dilarghezza, pesa poco piu di 3 gr., il prezzo puo essere

inferiore a 1 Euro, a seconda del numero di pezzi acqui-stati. Con le caratteristiche segnalate precedentemente

è facile dedurre che un Microcontroller è un piccolo

cornputer, con poca memoria, dove il processore e

molto semplice, infatti può riconoscere soltanto poche

istruzioni di base e le periferiche che possono essere

colleqate sono abbastanza limitate.

I Microcontroller sono computer di dimensioni moltoridotte che possono essere situati nella stessa applica-zione che gestiscono. La tastiera è un esempio di pro-

Un tipico Microcontroller sulla punta del dito.

dotto molto conosciuto, che ha al suo ìnterno unMicrocontroller, il quale individua il tasto scelto,genera icodici che lo identificano e lo invia al pro-cessore. Lo stesso succede con il mouse, al suo inter-no esiste un Microcontroller che conta, registra e tra-smette al processore i segnali che vengono prodottidai due encoders che controllano il movimento dellapallina in X e Y inoltre riconosce, codifica e trasmet-te i comandi dei tasti.

Page 5: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

u ,

TWGROGONTROLLERPresenleizione Generole

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

ognuna delle quali viene governata da un microcontroller che si

trova al suo interno.

Un microcontrollore inserito nel prodotto che con-

trolla, sa eseguire solamente un compito, motivo per il

quale esegue sempre lo stesso programma: controlladati che si assomigliano e controlla sempre le stesse

periferiche. Un computer di ulilizzo generaìe come un

PC, possiamo utilizzarlo per disegnare un circuito elet-

tronico, oppure per grocare.

ll microcontroller permette d'impiegare un compu-ter per far funzionare tutti i prodotti, piccoli o econo-

mìci che siano.

Le oossibilità d'utllizzo dei microcontroller sono ltmitatesolo dall'ingegno dei suoi disegnatori. Chi avrebbe mai

pensato, anni fa, che una radio avesse bisogno di un

computer?I ricevìtori moderni, grazie al lavoro di uno o più

controlier, hanno cambiato immagine a questo classico

prodotto. La sintonia delle emittenti migliora, sì posso-

no memorizzare le stazioni desiderate, programmarle in

modo casuale, realizzare l'accensione in data ed oraprefissate e tantissime altre possibilità, con la capacità

di aumentare la categoria e le prestazioni di questo

apparecchio che prima era solamente una radio.

L'incorporazione dei microcontrollori a tuttì i pro-

dotti e sistemi che abbiamo, è in costante crescita, e

PANNELLO DEGLICONTROLLO DELLA VELOCITACONTROLLO DELLA CLI MATIZZMIONESISTEMA DI NAVIGMIONEMULTIPLEXING DEL CABLAGGIO

AIRBAG

ll numero di Microcontroller che vengono incorporatrnell'automobile è sempre maggiore

durante il secolo XXI assisteremo ad un'invasione gene-

ralizzala. La dìstribuzione percentuale della applicazio-

ne dei microcontrollori nei diversi settori alla fine del

secolo XIX è la seguente:

COMUNICAZIONE: 3O%Telefoni fissi e mobili. Sistemi di comunicazione. Navigazione.

CONTROLLODEL MOTORE

PRODOTTI Dl LARGO CONSUMO:27YoElettrodonrestici. Macchine da gioto. Giocattoli. Sistemi di skureza ed

allarmi Climatizzazione.

AUTOMOBILI:18o/o(ontrollo del motore (consumo, gas di scarico, eccJ. Controllo di frenata(AB5). Airbag. Strumentazione. Controllo della velocità. Climatizzatore.

Navigazione satellitare, Computer di bordo. Sistema antifurto.

PERIFERICHE INFORMATICHE: 1 5%Tastiera. Mouse. Disro rigido. Gestione dell'immagine e del suono.

Stampante. Multirnedia.

INDUSTRIA: 1O7oStrumentazione. Elettromedicina. Automazione. Robotica. Telecamere.

Applicazioni militari. Domotica (automazione delle abitazioni civili).

Page 6: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

MICROCONTROLLERPresentcrzione Generole

Controllo illuminazione .,....1

SCALAAscensoreControllo illuminazione.Antincendio

(prnnr{n l: lì:t:nlo.t, nell'annO 2000 efanO 240 i

microcontroller installati in una casa americana. A casa

nosîra oLranîi ce ne sono? Faccia-

mo un piccolo bilancioln breve aumenteranno 1e quan-

tita a ca:sa del a rni-e-re nasct-

ta del nostro microrobot Monty.

L'invasione dei mrcrocontroller e

appena inizìata. Ogni annoapparono sul nostro mercatomndo li n I n.ìtont .-^--i ,1, .^-

V u VvLLr L r LoVoL ul lcd-

lizza'e corrnlessi iavor con l'obret-tivo dl automatrzzare prodottimportantr Pero uno dei più

appassronanti e con ptu futurocommerciale e sociale e quellorelativo ai microrobots Questenirr-oie rn.errhino diventerarno.^mn:nnó n<or:r:hil de l'uomop n.è(to oqpcr.ir:nnn COn veloCiia

ed e'{rcienza "nolri avori quotidia-r- rhp.rdpsso s'rnlni,lrno noi.

COMPUTER E PERIFERICHEPC e periferiche associate .....".. ...... ... 6

TOTALE:37

Oltre ad aiutarci con i nostri lavori domestici, nei

nostro lavoro e nei nostri viaggi, divideranno e parteci-peranno ai nostri momenti di relax e lotteranno per

diventare i "migliori amici dell'uomo".

,t:.:'

Pratotipo del srstema PALMA di atuto alla mobilità per bambtni con paralisi cerebralelstituta di Automazione lndustriale (C5lC).

Page 7: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

Classifi ca zior€, mercatoe costruttori di microprocessori

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

ll microprocessore e un computer in un chip, pero le sue

risorse e le sue capacità sono molto limitate. Si utilizzanel controllo di aoolicazíoni concrete e di solito e inse-rrîo nel medesimn nrodOttO Che COntrOila. A SeCondadollc,annlir:zinni lp 6pr:r+aric*irh^ .h^

^^,,^ nnq(onoroucilc oPPillqzrvr il, rE Lor o LLqr ')UL'ic Lt tc ucvc

i mirrnnrnroqqnrp (nnr'r d'fforonti Orrinn nar n^\/arn:-,,,.,"|"rp . rn rohot '.drrstriale si deve nossedpre r,na memoriavvJJ!vU I ur ru

coc ufa grande capacita, perche dovra contenere tuttii programmi e i dati, i vari temporizzalori per controlla-re r terrpi, i convertitori AD per il trattamento derle

^r--À^.-^ '^.1^^;-h^ i rirrttiti <nori:li di intorf :rri: nar9tóttUÍ//t dlldlUVlLl lC, | !ilLurLr )VLLruil ur .rrLLrldLLld i_,el

i motori e comunicazione seriale ad alta velocrta per tra-

smeltere nformazioni e nrragini delle telecarnere che

ulilizza. Un microrobot della prestigiosa azienda HUSQ-

VARNA taglia continuamente l'erba del giardino. ll

microprocessore che lo governa deve disporre di circui-ti per il controllo dei suoi motori, interfacce con jser-sori che limitano la superficie dr taglio e sistemi di cari-ca delle batterie mediante energia solare.

Per pilotare un distributore automatico di iattine, il

microprocessore deve solo contare le monete che ven-gono ntrodotte, gestire r pursaf ri di selezrone, rl pan-nello di visualizzazione e i meccanismi che liberano i'prodotto selezionato. A fronte di necessità così diverse,

a seconda delle aoolicazioni i costruttori offrono un.r

*# *ffi il*rT=I-H*T

),tt,' "'

Page 8: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

enorme varietà di microprocessori: dai più semplici edeconomici, destinati a prodotti comuni, sino a quelli più

completi capaci di controllare sistemi avanzati.

,'.'i,, t t,':t.1.!, í::',:. !.'. " i: ! i..i i,i i,: i.1 ii :,.,; ì; li. i", i. :

A seconda delle loro caratteristiche, i microprocessori si

possono classrficare in molti modi, il piu significativo e

ulilizzalo è quello riferito alla dimensione del bus deidati. ll bus dei dati è l'insieme delle linee mediante lequali vengono trasferite le informazioni all'interno delprocessore. Ne esistono di quattro tipi:

Microprocessori a 4 bit

Microprocessori a 16 bit

Quelli a 4 bit sono i più semplici e si utilizzano inpiccoli automatismi e giocattoli. Vengono fabbricati ingrandi quantità e risultano molto economici da instal-lare nei prodotti di largo consumo. Quelli a B bit, sonoi piu utilizzati per la loro grande varietà e versatilità.

Quelli a 16 brt sono impiegati in applicazioni più esi-genti e, infine, quelli a 32 bit dominano il settore dei

progettr piu avanzati, come le applicazioni nell'intelli-genza artificiale, oppure le applicazioni militari e dispo-sitivi di immagazzinamento massivo di dati.

i:r'.,,i 1,1.1'"';',':,::"'1t, i,'i,.',:\ i.j i: ;: i),:"1

Sono ipiu usati e venduti, e dentro questa gamma si

differenziano per le loro risorse e capacita. Un buonprogettista deve scegliere il microprocessore che soddr-sfi tutte le specifiche del suo progetto, incluse le preve-

dibilr espansioni future I microprocessori a B bit sonocaratterizzati dall'avere il bus dei dati da B linee, questocomporta che tutti ì trasferimenti di informazioni all'in-terno della struttura del chip saranno realizzaÍi a byte di

8 bit didimensione, e la memoria dei datiavra anch'es-

I microprocessori a B bit gestiscono dati di tale dimensione

,

F

-lì,

d

90

I Anno >

-Milioni di dollorì

&@8h,

:

[voluzione comparativa del mercato dei mrcroprocessori a B e I6 btt

iì'i"1,,-r ;, 4 v; ;; I i.i i1

':\ît':1:'r.al:,:....: ,.;.:)r:r,t:r.:....:.,nrr.1ììrrÌììììtìt:ì:ìììììì.ìrrìrrrl

Page 9: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

sa un'architettura a B bit La dimensione delle istruzio-ni nr rn pssere differtrntp e si ad:tter: :l fnfmato del

m icroprocessore.

La struttura generale del microprocessore e compostarl r ^, , r++"^ ^-"+iuo 9uoLLr u Poru.

Memoria di programma

r OTP: la memoria viene scritta dall'utente finale tra-mite uno scrittore di memorie e un PC. 5i possono soloprogrammare una volta e non si possono cancellare.Adatte ner serie medio niccole delo il lorn h:sqo nrez-

zo.. EPROM: mediante uno scrittore e un programma

di comunicazione con il PC si memorizzano i program-mi e si possono cancellare molte volte. Dispongono di

una finestra di cristallo sulla parte suoeriore del conte-nitore per facìlìtare la cancellazione, che viene realizza-

ta sottoponendo il chip a luce ultravroletta, per il perio-

do indicato dal costruttore.. EEPROM: si scrivono e cancellano elettricamente

qén7: no.p<<it: di r:nni rrltr:vinlofti"' '"vY'. FLASH: simili alle EEPRON/. Le puo scrivere e can-

cellare l'utente finale tramite un 0roorammatore colle-gato a un PC

Fotografia di un programmatore per microprocessoricon memoria di programma OTP EPROM, EEPROM e FLASH(Micro' PIC Progymmer di Microslstem: Engineering)

Archivia le variabili di processo e i risultatr temporanei.DOrio nOrmettoro lottr 1rt a crr''t+' .^-nnr.l: nlall:yLvL VL,rrruLLLrL rL!Luld C )Ll ltLUld (:/ d )t:LUllUd UClld

tecnologia di fabbricazione, si divide in due categoriefondamentali:

o RAIV: Memoria di iettura e scrittura molto rapidae volatile.

. EEPRON/: Memoria di lettura e scrittura lenta, ma

non volatile.

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

È la narlp dpl romnrrtpr inrarirata di intprnretare ed''|,"..'''eseguire le istruzioni del programma E formata da due

Processore

: "ispositivi ausiliari

A seconda del modello, la capacita della memoria sarà

diversa, così come il set di istruzioni che il processore

puo accettare, in sintonia alla dotazione di periferiche

di cui è dotato.

t,,1,,,'

Contiene le istruzioni del programma che governa l'ap-plicazione a cui è destinato il microprocessore. Datorhp devc osonrrirp somnre lo slesso comnilo deve esse-!v, ,,v, Lv, r

re una memoria non volatile, che non perda le infor-mazioni memorizzate quando si scollega l'alimentazio-ne. Esistono diversi tipi di memoria di programma:

. ROM mascherate: le istruzioni vengono scritteall'interno della memoria dal costruttore e non posso-

no essere cancellate. Sono consigliabili per le grandiserie.

à.|r

I ^t

t)frr^ hlnrrhì tinìri Aì tt-. -n mtcroprocessore

Page 10: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

sezioni, l'Unità Centrale che traduce le istruzioni e la

ALU (Unita Logico Aritmetica) che le esegue.

, : ':

': l ;l': ! l::

Questa parte del microprocessore contribuisce, insiemealla capacità della memoria, a determinare la potenza ela complessità del dispositivo. Alcune delle perifericheniir imnnrt:nti <nnn'

o Porte di inoresso e di uscita.r Temporizzatori.. Comparatori e campionatori di segnale.o Convertitorr AD e DA.o Interrupt.. Whatch dog.o (i<lom: di <t:nd-hv

la fine deoli anni 90 ha consolidato un forte incre-mento nella vendita dei microprocessori a B bit, men-tre ha mantenuto ilvolume divendita di quelli a 4 bit,inoltre sono incominciati a crescere anche quelli a 16

e 32 bit. Se si suppone una media di 4 dollari per

unità, il valore dei microprocessori venduti nell'ultimo

La vendita in miltoni di dollari dei mrcroprocessori a B bit superaampiamente la somma di uttigli alLri.

anno del secolo scorso, arriva a moìte centinaia di

milioni. ll maggior consumo, circa la terza parte, si everificato nel settore dei compu'ter e relative periferi-che.

La quarta parte e stata assorbita da prodotti di largoconsumo, come elettrodomestici, giochi, TV, eccetera. ll

settore delle telecomunicazioni, l'area industriale e l'au-tomazione completano il resto.

I maggiori costruttori di circuiti integrati dispongono di

una linea di microprocessori, date le enormi aspettatrvedi mprc:lo che si nrevedono. INTEL è considerato comeil padre dei microprocessori, perche fu il pioniere nella

fabbricazione di questi componenti, con il modello8048 negli anni 70 poco dopo aver commerctalizzalo,nel1971, il primo microprocessore del mondo. In segui-to ottenne un grande successo con la produzione del

microprocessore a B bit della famiglia 8051, alla quale

seguì la 80C196 a 16 bit. Tuttavia è stata MOTOROLA

che ha occupato il primo posto della classifica mondia-le negli anni 90. ll modello a B bit 6BHC'11, costruitocon tecnologia HCMOS, e capace di interpretare il

repertorio completo di istruzioni del microprocessorem6800 piu 91 nuove. f azienda americana N/ICROCHIBproduttrice del microprocessore PlC, che utilizzeremo inquesta opera per costruire il nostro robot, ha scalato la

classifica in modo vertiginoso, passando dal 20" al 2"nosto in rn àr.o di temno rhe va dal '1 990 al 2000.

Orresta ascesa e hasata sulle sue eccellent nresta-

zioni, che sono le stesse che ci hanno ìndotti a sceqlier-lo per la nostra macchina.

1990

RÀilKtil0

lloloro|a

Mihubishi

NEC

Intel

Hitachi

Philips

tulatsushik

National

Siemens

Ti

Sharp

0ki

Toshiba

sGs

Zilog

l\4atra I\4HS

Sony

Fujitsu

AI\40

l\4icrochip

I 994

FIt|KIT{G

l\4otofola

l\4itsubishi

NEC

Ph lips

Intel

lllicrochip

JUù

lllatsushita

Hitachi

Toshiba

National

Ti

Htc0n

Fijitsu

Zilog

Siemens

Sharp

0ki

Sony

Temic

{001

MilKtilG

l\4otorola

ll4itsubishi

NÉC

Philips

Èl\4icrochipI cnc

Inlel

Hitachi

Toshiba

Fìjilsu

Hicoh

Matsushila

Ti

National

Siemens

Zilog

SonY

0ki

Sanyo

tem c

1,

2.

3.

4,

c,

6.

1.

8,

10,

11,

12,

13,

15,

t!,

17,

t0,

19,

20.

1991 1992 1993

RAIIKIIIG RATIKIIIG RAI{KIIIG

l\4otorola Motorola l,lolorola

l\lilsubishi lllilsubishi NEC

NEC lntel lllitsubishi

lntel NEC Hitachi

Hitachi Phìlips Philìps

Philips Hilachi lntel

l\rlatsushik l\4ahushila SGS

SGS SGS f Microchip

Slemens Nalional I i\4atsu$ita

Ti Ti I Toshiba

Nalional Z1 og I Nationa

Toshiba Toshiba I Zilog

Sony Siemens I Ti

Sharp Èl/licrochip J Siemens

Oki I Sharp Sharp

Zilog I Sanyo Oki

fulicrochip J ltlatra||4HS Sony

Itlatra [4HS Sony Sanyo

Fujitsu Oki Fujitsu

Sanyo Fuiitsu AI\4D

t000

RAIIKIIIG

lloloro|a

tulicrochip

\npt tsrnlsrp s<ep<s doll'e-iendaMICROCHIe produttrice del mrcroprocessore PIC

Page 11: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

Perché PIC?it

€'É

Presso i lvenditori

che dlstribuiscono MICROCHIP in tutto il mondo,

"';.,i ll'interno dell'ampio panorama di modelli e

.F:1" fabbricanti di microprocessori, qual è la

,;l' ',t?i regrone che cr ha indotto a scegliere il ptC

tenere conto che per ogni applicazione con-creta esiste un microprocessore ottimale, pero a secon-da def le circostanze o delle prospettive per il futuro, il

modello o il fabbricante possono cambiare. euestosignifica che non esiste un microprocessore migliore intermini assoluti, dato che ogni caso risulta differente.

MICROCHIP ha scalato la classifica mondiale di ven- t

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

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

tastica accoglienza da parte di industrie, professionisti e

appassionati,edovutaalfattocheiPlChannounadote molto particolare: questi microprocessori sono :

dotati di un complesso di caratteristiche medie che li :

avvantaggia notevolmente rispetto ai loro concorrenti.inoltre l'immagine dell'impresa e aumentata di presti- i

tyoviamo una straordinarla offera di prodotti relatwi ai plC

gio, e molte università e centri di formazione specializ-

' zaIt, hanno scelto questo fabbricante per dare suppor-: to allo sviluppo dei loro programmi formativi. Nellatabella che segue elenchiamo gli aspetti piu rilevanti del

, PIC::

Semplicità di utilizo

Preao molto conveniente

Strumenti di sviluppo economici e facili da utilizzare

Enorme varietà di modelli di microprocessori

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

Page 12: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

r.t- l

' ,tí.ti

..;

I

Un dato significativo è costituito dal

fatto che il fabbricante N/ICROCHIP, si è

preoccupato più di vendere e far merca-

to con i suoi microprocessori, che con gli

strumenti ausiliari di cui questo compo-npntp nereqqita In ortesto modo molti,rrrJJ,Lv. "' Ye

strumenti software si lrovano liberamen-

te disponibili attraverso i loro distributo-

ri nel mondo, o possono essere trovatinei siti Internet. Le risorse hardware che

sono utilizzate nella sua applicazione

hanno fatto sì che molti fabbricanti s'in-

teressassero alla loro costruzione, quindi

attualmente si hanno modelli di tutti i

tipi e prezzi.

Sui mercatr esiste un'importantissima

e varia offerta di prodotti relativi ai PlC.

fenorme varietà di modelli d PlC, più di

un centinaio, permettono di scegliere il

mrgliore a seconda delle applicazioni. ll

costo dei microprocessori PIC dipende

molto dalla quantità acquistata, pero

comparativamente è inferiore ai suoi

Comparazione della velocità di esecuztone di un insteme

di programmi di prova del PlCl 6C5X a 20 MHz, rispetto ai principali concorrenti

o,6

o,9

o,8

o,7

0,5

o,4

o,3

o,2

o,r

STó2@8MHz

THOMSOM

80c5 l@rMHz

INTEL

X8óCXX@l2MHz

ZITOG

Mcó8HC05@4,2MNz

MOIOROLA

coP800@20MHz

NATIONAL

Ptct óc5x@20MHz

MICROCHIP

."_#

I!

I

III

I

I

I

I

G :ffi elS ffi

-#-!

Ia

a-JI*ill

ia

competitori. Sono facili da utrlizzare, perché nella gamma

media - che è la più popolare - la gamma di istruzioni è

di 35 che è quella più semplice ed efficiente. ll basso con-

sumo e l'ampio range di voltaggio che permette la sua

i alimentazione è molto apprezzato. Come si puo vedere

j dai grafici sia la dimensione dei codici che genera il suollI programma, come la velocità di esecuzione lo avvantag-

I giano notevolmente rispetto ai suoi concorrenti.

!lÍ ,rE , , i12,5

2

'1,5

I

o,5

oPtcl óc5x@20MHz

MICROCHIP

coP800@20MHz

NATIONAL

MCó8HC05@4,2MHz

MOTOROTA

78óCXX@12MHz

ZITOG

80c5r@l I MHz

INTEL

STó2@8MHz

THOMSONi!

1ì-.,",.,.-=,".-.'+"". +,*'*r+,*'

l' t

"."-.,,:..",i

La dimensione del codtce per l'insieme dei programmi di provaper il PlCl6C5X è molto pitt piccola di quella dei suoi prrncipali concorrentl

s#frge*++fr1..1$p.g'

Page 13: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

* MICROCONTROTTERlei famiglio "PIC'' di Microchip

L

Disposítivo per la programmaztone del microprocessore plC,

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

Come succede di solito con 1e grandi imprese amerrca-ne, tJtto in,zia da qua cosa o, motto oicco o, che g"azieallo sforzo, alla qualtta tecnica e alla vrsione commer-ciale, assume rapidamente dimenstoni enorm

ll primo successo di questa giovane impresa, la cuì

sede centraie e a Chandler tn Arizona, risale al 1989,quando mrse In vendita un PlCl6C5X a 8 bit In versto-ne OTP, ad rn costo molto basso. Due anni dopo, svi-

iuppo il s stema di emulazione integra e per i suoi PIC

PICN/4ASTER sotto Windows Nel '1992 rntrodusse sul

mercato r1 plmo mrcroconÌroller con converttore ADrntegrato st trattava dei modello PlC16C71. Attorno a

1994 commercialjzzo ì primi prodottr con memolaFLASH e rl PIC 16C84 con fnemor a di programma

EEPROIVl, che fu presto sostituita con la memolaFLASH, tecnrcamente piu eff iciente. Nel 1996 presento

modelli PlC12C508/9, in contenitore con solo B pin,

che ebbero un successo senza precedenti. Alla fìnedegli anni '90 presentò la gamma alta, migliorata conuna poderosa architettura che risiede nella famigliaPICl BCXXX, riducendo i prezzi dei microprocessori, finoad arrrvare a 0,50 $ per unita. Nel 1999 aveva vendutoun miliardo d mtcroprocessorì a B bit rn tutto rl mondo.

I model i di PIC superano abbondaniemente tl centi-naro, e sr possono raggtuppare rn cinque categorie, chesr presentano secondo le loro principali caratteristiche,nella seguente tabe la.

Plcl6csx FAsclA BASE 2oo ns t zo NtHz 33 istr. da t2 bit

PIC16CXXX FASCIA MEDIA 2OO ns | 2O MHz 35 istr. da f 4 bit

PlclTcxxx FAsctA ALTA 120 ns / 33 MHz 58 istr. da 16 bit

( etcrecxxx * FAsctA MTGLToRATA 10 Mrps | 4o rrlrHz 77 istr. da i6 bit -)

Page 14: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

PIC12C5O8 512 x 12 25 x 8 NESSUNO 6 4 MHz I

Alcuni modelli di PIC sono molto semplici ed econo-

mìci, dispongono delle risorse minime per controllare le

periferiche principali, come nel caso del PlC12C50B.

Altri sono così potenti, come il PIClBCB5B, che i suoi

parametri e le sue prestazioni assomigltano a ststemì di

applicazrone molto avanzati. Nella tabella riportatasopra, sono messi in comparazione questr due tipi di

PIC.

' 'l I '';',' , : t' .'l'.' .'

Comprende tutti i modelli rnquadrati all'interno della

denominazione PlC16C5X, iquali sono dotati di un set

di 33 istruzioni da 12 bit di lunghezza ognuna. Sono

talmente semplici che non sono dotati di interrupt, ed

hanno solamente due Iivelli di stack. Hanno una dimen-sione molto ridotta, infatti sono commercializzati in

contenitori da 18 a 28 pin, sono ideali per applicazioni

semplici, di grande consumo, e che funzionano a bat-

teria.'

I it ' t, :l

Sotto questa denominazione si raggruppano i proces-

sorì che si identificano con la nomenclatura PICl6CXXX

e formano la gamma piu ampia e diversificata, con ben

'-.:,

72 modelli differenti. Si trovano in commercio con con-

tenitori da'18 a 68 pin e sono dotati di un set di 35

istruzioni da 14 bit ognuna. ll loro stack arriva ad 8 livel-

li orrpsto nprmpttp sino a B annidamenti di subroutinecome massimo. ln questa fascia e compresa la famigliadei P|C14C000, specializzati per i progetti dei carica-

batterie intelligenti, gruppi di continuità, acquisizione

ed elaborazione der segnali, che richredono ìa gestione

dell'energia di alimentazione.

' , , ,. l, ,. .

In questa gamma sono compresi undici dispositivi della

serie PICl2CXXX, tutti quelli con contenitore da B pin,

che hanno avuto un successo commerciale senza pre-

cedenti, data la loro dimensione e il loro prezzo. Alcunieli nrro<ti mnIellr rnrric^^^.1^^^ îllî {ac.;î hrca :l+ri :ur vuE)Lr r rvucilr !urrJPUllut-rl lu dlld ld)Lld ud)cr olLl I o

quella media.

Hanno un'architettura aperta, che permette l'amplia-

mento esterno delle periferiche del microprocessore,

tramite il bus dei dati, quello degli indirizzi e dei con-

trolli. ll set di istruzioni arriva stno a 58 e la loro dimen-

sione e di 16 bit. Dispone di un sistema molto potente

di gestione vettorializzata degli inter-rupt, e vengono utiìizzati in applica-

zioni di grande complessità.

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

MICROCHIP ha prodotto nell'anno2000 la serie PIClBCXXX, caratte-rizzala da uno straordinario rendi-mento, dell'ordine dei '10 MIPS ad

una frequenza di 40 MHz. Sonodotat; di ln notentissimo set di 77

istruzionì da '1 6 bìt ognuna, e ven-nnnn rommereializzali in conteni-tori da 28 f ino a B0 pin Sono destì-

nati a lavorare con compilatorimolto efficienti in linguaggio C, e la

loro memoria arriva a capacita di

16 KWord da 16 bìt.

Page 15: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

Selezione e presenta zionedel "PICI6F8 4"

na volta deciso di utiiizzare un mrcroproces-sore PIC di N/ICROCHIP, il passo seguente e

scegliere il modello adeguato pe' il nostroprogetto, all'interno de '116 possibili Per

poter fare questa scelta, dovremo st;diaremolto attentamente le caratteristiche dell'applicazioneche il chin dovra oestire. Nel lavoro che abbiamo intra-preso vogliamo costruire un robot mobile che sra capa--^ ^t ^.^^,,t"^ Ài,,^"-, -LL ur lrLVurs urvq: uOl'lìpt{L

Un robot come il famoso R2D2 di "Guerre stellari" necessitarli ttn mirrnnrnlp\\nrp rhe np<li<es i<ttni moforr p qi2 rt^ trn -tì, , rru LolJoLq ur

ricevere ed elaborare le informazioni inviateqli dai sensort.

, 1,,, , :. r,.,':, ..,;ir1.r, tl,l,.:i;:r; 11'

Per governare un robot mobile, il microprocessoredovr: renol:rp drre motori che muoverannO le fuotemotrici, e dovrà ricevere ed elaborare le informazronrche gli rnvieranno alcuni tipi di sensori, come quelli diprossimita, di contatto, di temperatura, a ultrasuonieccetera. ll corretto trattamento delle informazioni for-nite dai sensori, determinerà il movimento delle ruote.

'1,,,.,' , I r l.

I compiti che desideriamo rnstallare nel nostro anima-letto intelligente, saranno molto diversi, anche se non'nolto complicati. Per questo motivo, ron serve che la

memoria del programma e dei dati del PIC sia moltogrande. Quello che risulta indispensabile e che la

memoria del programma possa essere scritta e cancel-l:i: n' rìn+ó \i^r+^ . . noroc<:rin narrho il nrrdLd qudrìLe v(JrLe s'd r--,---,,-, r,-,-,,- ., f.,'Ogfammad'oendera dal lavoro che dovra eseguire rl .obot D'altran:rtp il mirronroro<.qoro <rpltn sorvir,r npr far, _, ct tmpara-

'e la programnazione prima di costruire I robot; que-

sto signifrca che lo programrneremo e lo proveremo

eseguendo molti esercizi didattici e pratici

Una volta stabìlite le caratteristiche oiù imoortanti che

deve avere il modello del PIC che qovernerà il nostro

Dimensioni e costi ridotti

Memoria di programma con capacità di circa1000 istruzioni

Memoria dei dati di almeno due dozzinedi indirizzi, e non volatile

-.1,".,, il:,.,,1,::,:,: i:',,::;l

Page 16: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

ii

' .-"" -''-'..'.' .' .',.,".'..fr ,ò7;ll' MICROCONTROLLER

Sceltei del PIC

tt-t*!{g

a5.!ja:-'91

S'"

s:îS:u

*

4

i;-

r$:

robot, le potremo riassumere nella tabella" Caratteristiche che deve avere il PlC ".

Conoscendo le esigenze che deve avere il micropro-cessore, potremo trovare nel catalogo del fabbricanteun modello della gamma media del PIC che soddisfi le

nostre esigenze.

ll modello che meglio si adatta alle nostre richieste,

è il PlC16FB4, capace di lavorare fino a 10 MHz, pero

dispone dr una versione PIC'l6FB4A, capace di funzio-nare fino a 20 MAz Sceglieremo il modello normale,perche tendramo a minimizzare il costo, e la velocità di

elaborazione non e critica.

E piccolo perche ilsuo contenitore ha solo 18 piedini. La

memor a di programma ha la capacità di 1 K word da 14hits e nonrrna di orreste nrro ronlenere rrn'istrUzione.

Inoltre, è di tipo flash, il che permette di registrarlae cancellarla irn mioiiaio di volte in tutta sicurezza. lamemoria dei dati contiene una zona RAN/ volat le da 68bytes, e un'altra EEPROM non volatile, da 64 bytes,adeottata alle nostrp esinonzp Disnone r^li 1? l,nee di l/Odioitali un temnorizTÀIorp |rn watch-doo nrto funzio--'y'.-'', , ""Y, Y'

nare in modo "riposo" con basso consumo. La velocita

Memoria di programma: I K x 14, tipo flash

Memoria dei dati RAM: 68 Bytes

Memoria dei dati Eprom: 64 Bytes

L!""Ilt'g!3Set tJi istruzioni: 35 da14 Bits

Tempo di esecuzione delle istruzioni normali: 4 X Tosc

Tempo di esecuzione delle istruzioni di salto: 8 X Tosc

Cause che provocano Interrupt: 4

Frequenza massima di lavoro: f 0 Mhz

Linee di l/O digitali: '13

Temporizzatori: uno per l'utilizzatore, uno per ilwatch-dog.

Tensione di alimentazione: da 2 a 6 VDC

Tensione di programmazione: da f 2 a 14 VDC

Contenitore: DIP a 18 PIN (oppure SOIC)

Page 17: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

MICROCON

lmmagine del PlCl6FB4sopra uno zoccolo per proteggere i suoi piedini.

massima di funzionamento è di 10 Mhz, che risultasovrabbondante, dato che le istruzioni si eseguono a

400 ns, tempo inferiore a quello di cui noi abbiamobisogno nella nostra applicazione. Pensate che il pro-gramma più lungo è di 1 .024 istruzioni e a questa fre-quenza ci sara un ritardo nell'esecuzione di 0,5 ms, che

vengono accettati come tempo massimo di risposta del

robot.

4ltttl\|lllti/|M

Assieme al PIC'l 6F84 esistono altri modelli con

caratteristiche molto simili. Così il PlCl6C84 è uguale,però con memoria di codice di tipo EEPRON/. ll

PIC16F83 ha come memoria di programma FLASH solo512 oarole. Ci sono modelli le cui lettere intermediesono CR, il che significa che la memoria dr programma

è RON/; questi sono interessanti solo quando il pro-gramma e sempre lo stesso, è gia stabilizzato, e vienemontato in serie di molte mioliaia di aezzi.

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

apprendimento dei microprocessori e applicazìoni alla

robotica, è fabbricato con tecnologia CMOS e si trovaincapsulato in un contenitore plastico con 1B piedini,

come si può osservare nella figura. Secondo le loro fun-zioni, i piedini si classificano in 4 grandi gruppi.

. AlimentazionePerché tutti r componenti elettronici del microprocesso-re possano f unzionare, è necessaria una tensione di ali-mentazione a corrente continua, che deve essere appli-cata nel seguente modo: il positivo al piedino VDD e la

terra a VSS. ll voltaggio di alimentazione è compreso tra2e6VDC.

èi;c[rPtcr6c84 Prcr6F84

to lolk

TMRO+WDT TMRO+WDT

2.0'6.0 2.0-6.0

18 pin l8 pinDrB SO|C DrB SO|C

Ptc!6cR84 PlCr6F84 PrCr6CR84

68

64

4

t3

tk

36

64

4

t3RAilGE DI tl

Varianti del PlCl6FB4

Page 18: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

RA4/TOCKI *MCLR *Vss '-*

RBO/INT €RBI *

RB2 {-*

RB3 *

PD|P, SOIC

€ R/qI

* R/AO

* oscl /cLKlN** osc2lctKouT

** VOO

* RB7

4-È RBó

"* RBs

* RB4

L'altro compito del piedino 4p nttolln rho ci rifaric.o -lr yuLr rilLrrrLC dl

VPP cioe nermette la scrittu-ra e la cancellazione della

memoria FLASH e EEPROM

del PIC 1 6F84 Per ouestoY

lavoro si deve fornire al pie-

dino 4 una tensione a cor-rente continrra comnresa tra12 e 14Y.

. Linee di l/O digitalìI tredici piedini rimanenti, di

cui non abbiamo ancora^-.1-+^ -i ,,+il;---^^lJdllcì LU, 5l ULllll./dll(-) pef

introdurre e ottenere infor-*--;^^: !i^i+-l !- ^ ,:fSO

tltt taLtwt I ut9tLoti, uo u vr

nrocessore Orresti niediniH

sono dislrihrriti sl 2 oorte.la

^^.ta A rnnc+r,-J tr l,^^^LO VWr LO H lV|)tO U J lttCE

che corrispondono ai piedini

denominati RAO-RA4 La

nnrt: R o r1icnnct: qr rR linaoJU U llllrc

di l/O rhp corrisnnndono ai

pìedini RBO-RB7. Ci sono un

Contenitore del PlCl 6F84, cosi come di tutte le sue vanantt.

. Frequenza di lavoroLa velocità di funzionamento del PlC16FB4, e determi-n:+: r{:ll: {ran"on-:.ho ci nonor: intornan-^^+^ -1.^llOLq UOI|O llEVUE|l4O 1,,! rru'rlclltc/ LllE

deve essere stabilizzata dall'esterno mediante un cri--+-il^ ..Ji -^ilîoato ai nredini oSC 1/cLKlN e)LCllU ul 9uol4w LUlltrVuLv ur p'Luil il vJL

OSC2/CLKOUT.

. Reset e programmazionell piedino 4 denominato N/CLR#/VPP, supporta due fun-zioni rhe si mrrltinlpxano nel tpmnn ll PIC lavora nor-m:lni:ntp oqonrrondn il nrnnr:mm: rho h: roni<tr:tn

nella memoria FLASH, quando si attiva a un livello basso

sul piedino 4, si reinizializza o resetta il microprocesso-re n{testo sicrnifica che i cr rni rpni<,tri intprni aSSUmono

un valore determinato e che il contatore di programmapunta la direzione 0, da dove incominciare il program-

:^i-r-ri-'-'r^ ^ 4CLR: lVaster Clear Reset.I lld pul I rLtorLLót tu. tv

NOîA !À'IPOn!AHTE

n.ein di nipdini r.hp nl+.^ -.^-r,---"^r^ + ^-ioni di l/Ovqlu ul PlEuil il l|E/ vrLrE a uo|LLQt E rE turrl

digitali, hanno un alrro compito multiplexato, corne si.^i^^L^"À ^;,, -,,-^+i)prcgr rcrd pru dvdr 1Lr.

ll PlCl6FB4 è un circuito integrato con doppia fila di

piedini. Ha 9 piedini metallici su ogni lato del conteni-tore che sono abbastanza flessibili.

Questo circuito integrato, a volte, deve essere scrit-+a rnl nraarr*-. -h^ .,,^^^r+î il 1.,,^"^ ^^.ro cor p"ogramma cne supporLd il dvoro, per por essere

inserito nella scheda di applicazione ed e abbastanzafrporrentp dnverlo inserire sullo zoccolo dello scrittoreper poi toglierlo e reinserirlo nuovamente su quellodcll: crhcd,a di :nnlirazione Orrpsta onerazione eY vrJ Lu vvL

molto delicata perche se si forzano e si piegano i piedi-ni rinetute volte notrebbero staccarsi rendendo irrecu-perabile il circuito integrato. Raccomandiamo di collo-care il PIC'16F84 sopra uno zoccolo normale, perche

srano i piedini di quest'ultimo a subire la pressione, omenlio sosîiîrrire lo zoccolo dello scrittore o della sche-"'_v"'r- 'Ji ^^^ri---i^^^ -^î uno zoccolo a f orza di inserzio-uo ur oPPilLo4rurc, LUI

ne nrrll: n|esto nnssip;^ ,,^- l^,,- -^^ ^^"^ ' fOf i dOVeI rc I uilo, 9uc)LU PU))rEuE ur rc rcvo lr rE oPtE I

si introducono i piedini, cio aiuta enormemente a pre-servare l'insieme dei oiedini.

ll simbolo # che si antepone a certi segnali indica che imedesimi sono attivi a livello basso. Questo simbolo èidentico alla riga che si trova sopra al nome del segnale.

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

Page 19: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

La frequenza di funzionamentodel, microprocessore.--r.i l cervello del nostro robot sarà un mtcroproces-

, :r.:

;" sore. ll modello scelto è il P|C16F84, che è unt:::--

,':_ piccolo computer la cui missrone è eseguire leistruzioni che noi scriveremo nella sua memoria

i.i ,' .''. '' di programma. Attraverso queste, decodificherài dati che gli invieranno i sensori per riconoscere le

caratteristiche dell'ambiente, stabilendo con esse lastrategia di movimento dei suoi motori per realizzare

efficientemente i comprti che gli abbiamo attribuito.ll PIC sa solo eseguire istruzioni. Ne conosce 35, non

una di più. Nel suo costante lavoro di esecuzione, con-verte le istruzioni in operazioni elementari. Ognuna diqueste cperazioni elementari necessita per essere ese-guita sempre dello stesso tempo, che è stabilito da un

clock molto preciso che indica I'inizio e la fine di ognu-na.

ll nostro robot ha incorporato un PlC16FB4 che puÒ'funzionare ad una freouenza di clock massima di 10

Mhz. Esiste una versione speciale chiamata PlC16F84A,

che ammette una frequenza massima di 20 Mhz. Se

lavora a 10 Mhz ogni ciclo di clock durerà 100 ns e inquesto tempo si realizzerà un'operazione elementare di

una istruzione. Pertanto, un'istruzione verrà eseguita invari cicli di clock.

Tanto maggiore è la frequenza di lavoro del PIC

tanto più rapidamente si eseguono le istruzioni e prima

Un'istruzione è composta da due fasi: ricerca ed esecuzione.Ogni fase occupa quattro cicli di clock, e se il PIC avesse un processore normale il ciclo dell'istruzione occuperebbe otto cicli di clock

si realizzano i programmi, pero ci sarà maggiore consu-mo di energia, cosa molto importante nei sistemi ali-mentati da batterie.

; i ,;:,, ' l',.i,;,,:t,r;,

ll ciclo di istruzioni è il tempo impiegato ad eseguireun'istruzione. Non deve essere confuso con il ciclo di

clock, che è il tempo con cui si realizza un'operazioneelementare.

Un'istruzione si esegue in due fasi:o Fase di ricerca: nella quale si cerca il codice bina-

rio dell'istruzione nella memoria del programma.. Fase di esecuzione: nella quale si interpreta il

codice, si cercano gli operandi e si eseguono le opera-zioni conseguenti.

Ognuna delle due fasi di istruzione si realizza in

quattro ciclidiclock, che sichiamano Q1, Q2, Q3 e Qa.

Quindi se ogni istruzione fosse eseguita in sequenza si

tarderebbero quattro cicli di clock nella fase di ricerca e

altri quattro in quella di esecuzione, in totale otto cicli,

come si vede nella frgura.I microprocessori PIC dispongono di un processo-

re molto moderno, nel quale si utilizza la tecnicadella segmentazione per eseguire le istruzioni.Questa tecnica si usa anche nelìa fabbricazione dellemacchine, e nelle catene robotizzate delle grandi

FASE DI RICERCA FASE DI ESECUZIONE

t.:"

Page 20: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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

,,:1::::1|11l::l::::tt;::l',$i.t'tll)::

DELU ISTHUZIONE

ll processore del PIC è diviso ln due parti indipendenti.Mentre una realizza la fase di ricerca di un'istruzione, l'altra si rncarica della fase dt esecuzione di quella precedente

fabbriche In pratica, invece di iniziare un'automobi-le, e fermare la produzione fino a che non sia stata

terminata la prima, si divide il lavoro in stadi succes-

siv, in modo che iveicoli passrno da uno stadio all'al-trn ( nn n{toqt: tprnir- Àol l-',^.n n:r:llaln,y-*-.- -,-, ra oel lavoro pdldllel(J, Sl rleSce

a dividere il tempo impiegato in tante parti quanti-^^^ ^li -+--li ,,+ili---+sono gll slaor uuillrdLl.

ll nrorcssore del PIC e

costruito con stadi diffe-renziati, o stadi chegenerano una segmen-

tazione di secondo ordi-

ne Uno stadio realizza la

fase di rìcerca e l'altro la

fase di esecuzione Gli

stadi sono indipendentifra di loro, quindi posso-

no lavorare in parallelo;

mentre il prtmo sta

effettuando la fase d

ricerca di un'istruzione, il secondo si oedica a realizzare

ra fase di esecuzione dell'istruzione che e stata prece-

dentemente trovata. Con la segmentazione si ottienel'acorr rzinno di nnni i<trr rzinnp npl temnn Ii "^a +r.òI c)ELu4tvttE ur w9rrr r)rru4,vrrL rrur rur Ulld lo)C,

<:rphhe : dirc nrr:ttrn cicli di clock.e v,,L YvuLL,v

Al sovrappors' dei due stadi d'istruzione, il tempo che

imnipne rrn rrrln di istrr rzionr e di orratiro cicli di clock.

FASE DI RICERCA5AISTRUZIONE

FASE DI RICERCAf tslRUztoNE

FASE DI RICEBCA2" ISTRUZIONE

FASE DI RICERCA3" ISTRUZIONE

Dato che la fase di ricerca e quella di esecuzionesi realizza in parallelo, il ciclo di istruzione dura quattro cicli di clock

Un P!C16F84, che funziona ad una velocitàdi 10 Mha esegue un programma di 100 istruzioni,delle quali 30 sono di salto. Calcolareil tempo che impiega ad eseguire il programma,

Calcolare il tempo di ritardonell'esecuzione del programma anteriorein un P!C16F84che funziona ad una frequenza di 4 Mhz.

TEMPO Dl CLOCK = I s/ f0 Mhz = 100 ns TEMPO Dl CTOCK = 1s I 4 Mhz = 250 ns

TEMPO Dl CICLO ISTRUZIONE SALTO =8 x T. CLOCK = 800 ns

x 8ffÌ=S

,.;i :;, -:,; ;riy ,i;l;:ji,yt ,;. !; ,;1

,itùr j!tlrr,r!N:]*!i,::]i#lHì.ìlrr:rìrr}rrrrrl

TEMPO Dl CICLO ISTRUZIONE Dl SALTO =8 x T. CLOCK = 2.000 ns = 2 ys

:5l

FASE DI ESECUZIO}IE,f ISIBUZIONE

;,:. :1,1,:-:': :+:,:i'; :,i";úft ,.,jij@rr#tlsÍ{!{l1 jìrììlìxìì11ììtlrrrltlillrnr\irmr&14?mrlifr lfr stllffi f lÍ{f 11fi 11

Page 21: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

í,t'

Questo è valido per tutte le istruzioni del

ronortorin p.rctto rhp ner nrre lle di

<:lln rho <nnn nirrlonto o imnìpo,eno il

doppio del tempo, cioè otto cìcli di clock.l,a r:niono di nrrpsto ritardo si deve al{r++n rha ^, '.ndn :rrirrr :l nrnao<<^roIdLLU Ll lc vuoriuv qrrrvo or PrvLsJJvls

un'istruzione di salto non si puo comin-.i-r^ la {-.^.li r''rarra rjoll> (afl1AntoLldlc ld l6)c ul I lLqlLú uLilu JLVULTTLL,

nerrhe non si sa orrale sia. Le istruzioni

normali sono ordinate in indirtzzi succes-

sivi nero nel caso di un'istruzione di

salto, fino a quando non si completa la

fase di esecuzìone non si puo sapere

quale sara I'indtrizzo seguente.

I microprocessori PIC dispongono di

un oscillatore interno che determinala f requenza degli impulsi di clock Cristaili ar quarzo di uso correnteSonz: drrhhio nor rontrollare il valo-re della frequenza e stabilizzarla, e

St r*tlt.sNeE{ÍS c:o

necessario aggiungere alcuni elementi esterni ai pie-

dini 15 e 16 (OSCl/CLKIN e OSC2/CLKOUT).Secondo il tipo di cìrcuito esterno, gli oscillatori si

dividono in quattro tipi

Fosc Rexr

625 kHz 10 ko80 kHz 10 kfi80Hz 10 kO

Cexr

20pF220pF

o,1pF

I valori della resistenza R esterna e del condensatare C esterno

determinano la frequenza nell'oscillatore RC Questl dati sono forniti dal fabbrrcante

Uno dei dat, di inizializzazione necessa-

ri al microprocessore riguarda il tipo di

oscrllatore che si utilizza. Der questo esi-

stono due bits FOSCl e FOSC2 in una

posizione della memoria di programma,

chiamata Parola di Configurazione, che

dobbiamo scrivere con la combinazionecorrispondente.

':,,,:l

ln nrro<tn r:<n <i rnllon:nn :l nior^linn 16,L' VULJ(v

del PIC 1 6FB4 (OSC 1/CLKIN) una resistenza

e un condensatore, i cui valori sono forni-ti dal costrutlore nella scheda tecnica, e

cne sono funzione del valore della rre-

flron7: C)rresto nroredimento e molto

economico, pero la stabirita della f'equen-

za è mediocre e sono adattr solo in sistemi

in cui il tempo non sia un fattore critico, e

il risparmio sia un obieltivo prioritario. Dal

p edino 15 (OSC2/CLKOUT) esce la quarta

parte della f requenza di clock (Fosc/4) che

e iì tempo di ciclo di istruzione normale

. Oscillatore RC

. Oscillatore LP

. Oscillatore XT

. Oscillatore HS

I

+Voo

ffi OSC2/CLKOUTw->fl Fosc/4

';: 't:;:;;tj tt,

Page 22: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

OSCl/CLKIN

Questo tipo di oscillatore si usa perlrrinrrro ran fraartar rze supefloI a

4Mhz.Ulilizza un cristallo di quarzo e un

risonatore ceramico tra i piedini '15 e

1 6 collegato ai condensatori di disac-coppiamento. Non tutti i modelli di

PIC ammettono questo tipo di oscil-lr+arn Flr+r l-.,,- .l+- +.^^,,^^-- :llo LU E. UAtA tA )Ud drLd il trquct tzdr tl

consumo è molto elevato.

.-:;trLi'.i,1,

iiit+.*,.,,"=,*=,".,."",.*,.,.,",=,-, =_,.._,.,_,,,.,.,_,j

Per le f requenze comprese tra 4 e 1 0 Mhz i condensatori CI e C2 hanno una capacità

i-tfiq-"ii"L+ {-}+:iF: i"::r' i di alimentazione al chip, e si chiama "Power onTra i piedini 15 e 16 del microprocessore si monta un Reset" Le due azioni principali del processo di rernr-

cristallo di quarzo della frequenza corrispondente a zializzazione o reset, sono mettere a zero il Programquella'con cui si vuole lavorare. È possibrle instaliare al Counter con il quale si inizia l'esecuzione dell'istru-posto del cristallo di quarzo un risonatore ceramico A zione situata nella prima posizione della memoria di

ognuno di questi piedini si collega un condensatore dr , programma, e porre ad uno stato conosciuto tutti i

disaccoppiamento ilcuivalore è fornito dalfabbricante. ' bits dei orincioali reqistri di controllo del PlC.A,,^r+n +;^^ ^li ^.-ill-+^"^ ^ --l -++^ ^^"vuE)Lw LIPU Ur V)LilrOLUrE E CUCttu pcl

lavorare con basse frequenze, compresetra 35 e 250 Khz. ll principale vantaggiodato dalla bassa f requenza e il consumorli onerni: ridnttn ràc ^^-^--t'^ ^l nr-u, LrrLryru rruvLLv Lr rC IICLtj>)ILd dl TIL

per funzionare, dalo molto importantenei sistemi che si alimentano a batterie.

#SflEil€-.éè€q}-qtr SsiT

Orroctn o ìl tinn di n<rill:+nra .^^ "c^r^VuLrLv L ,r Lrl.,v ur vrlllloLUlC Ll lC U)ClC-

mo ner ron'trollarp rl PIC del nostro,,," Y-,

robot, perche e predisposto per lavoraretra 100 Khz e 4 Mhz, la frequenza di

lavoro selezionata per il nostro N/onty.

lVonteremo un cristallo di quarzo o un

risonatore ceramico tra i piedini 1 5 e 16,

rnllenato ,ai risnettivi condensatofi di

disaccoppiamento, i cui valori sono indi-cati nella documentazione tecnica e

dipendono dalla frequenza selezionata.

i;t i:5li:ìF; it +l ia'j

l_r ili;,irî I f 'ì

;ri L "i =il il È,-.1" i. i-i i:i {;

Quando il pin 4 (MCLR#) passa a un

livello basso, il PlC16tB4 si resetta e

ricomincia a eseguire il programmadall'inizio nonendo à uno Stato nototutti isuoi registri interni, Questoprocesso avviene anche quando si

collega per la prima volta la tensione

Quando si attiva il pulsante di RESEI si resetta il microprocessore,cosi come quando si applica la tensrone di alimentazione per la prima volta

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

Page 23: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

t,

"ti.!;

-r,- t, 't'

-,:,,

MEMORIAPRINCIPALE

BUS DEGLItNDtRtzzl

BUS DEI DATIE DELLE

ISTRUZIONI

BUS DICONTROLLO

fintuizionedi un sognatore

el 1945 Von Neumann stabilì le

basi per la costruzione dei com-puter che oggi hanno invaso il

mondo. Disegno una macchina in

cui vi era un blocco - unità di con-rrnlln Ài ininp5laf;ra rrn inciomo .liLrvllv - LovoLE ul ll rLEi Pr sLors uÌ | il rJrEr I rE ul

ictrr rzinni nonor:\/: i qonn:li nore<q:ri nor l:"' v!' '!'

realizzazìone delle operazioni che coinvolge-vano le varie sezioni del blocco di elaborazio-ne dei dati.

I ln nr:ndo arrhtt,tn coniirir nór .^ntanóra

lp istrrrzioni del nrnnramma insieme ai datiche esso oestiva. infine un ultimo blocco.J.'""-'

-hi---+^,,^i+- ^lì l^^"^..^/,,.-i+- ^^"'-^++^Lr ildilrdt\J urrLd ur il19rc))u/u)LtLd, pc||ctLc-

va il trasferimento delle informazioni da e

nor lo noriforirho a<tprno Orroct'inciomo diYsLJ\ rl

olomonti ò r^rrrpllo rhe e conosciuto comecomputer.

MEMORIAPRINCIPALE

BUS

PROCESSORE

ffiffiffiI bus sono un Ìnsieme di linee digÌtali, trasportanotulte le informazioni che gestisce il computer.

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

ll computer di Von Neumann è una macchi-na digitale. Tutte le informazioni vengonoarchiviate in formato binario, ed essendo

una macchina elettronica, impiega per rap-presentare i due bit di questo sistema, il

livello logico alto e il livello logico basso,

che generalmente corrispondono alla ten-sione di alimentazione +VDD e massa o VSS

rispettiva mente.

Un'istruzione del computer è formatadall'insieme di bit che la codificano, e la

stessa cosa awiene per i dati. La memoria è.^mn^<+: d:nli indi--r,, ,,,-,|zzt necessaI per

PROCESSORE

:1 ,.:,. tr,,,.,,, r.

Architettura base del computer di Von Neumann.

':1.1 1,,.i,:','i:i;"l

Page 24: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

immagazztnare le istruzioni e idati brnarr.

L'unità di controllo riceve le istruzioni che manmano cleve eseorrrre le derodifira e npnera la

sequenza di segnali necessari all'esecuzione. ll

blocco di elaborazione dati si incarica, sotto la

supervisione dell'unita di controllo, di realtzzarele onerazioni oener:te dalle istruzioni racco-

gliendo gli operandi dalla memoria e dagli l/O,

inviando irisultali a questi blocchi secondo^,,-^+^ .^^-i{i--+^ ^l -VuorrLv rpsLrr!oLv uo OQI-ìl lStfUZlOne.

Pero tutto il movimento delle informazioniall'interno del computer è realizzato da treinsiemi di linee digitali, denominate bus ll bus

der dati e istruzioni ha il compito di trasferireoreqte inform:zioni fra i vari blocchi del com-puter. ll bus degli induizzi e caricato dal proces-qÒro .nn ali ind rizzi dollp istrr rzioni d: pspnrrire

o degli operandi da cercare. Infine, il bus di con-trollo supporta nelle sue linee differenti segnali,rome orrelli del clock che sincronizzano il lavo-ro della macchina, quelli di lettura/scrittura che

indicano ìl tipo di accesso alla memoria eccetera.

L'esecuzione di un'istruzione inizia in una parte del pro-

cessore che si chiama Puntatore, o Program Counter(PC). È situato nell'unità di controllo e contiene l'indi-rizzo dell'istruzione da eseguire.

Di solito il Puntatore dispone di un contatore che

aumenta automaticamente di un'unità il oroorio valore

ad ogni istruzione eseguita.

Questo perche la maggior parte delle istruzioni di unprogramma, si trovano ordinate in sequenza nella

memoria, e all'indirizzo successivo all'istruzione in corsod'esecuzrone, si trova quella da eseguire successiva-

mente. Questa regola non vale per Ie istruzioni di salto,

BUS DEI DATI EDELLE

ISTRUZIONI

MEMORIA(DATr)

tlo(PERTFERTCHE)

Nella fase di esecuzione, la ALU del bloccodi elaborazione dati esegue le operazioni indrcate dal codice dell'istruzione

in cui si include I'induizzo dell'istruzione che deve esse-

re eseguita al passo successivo.

ll contenuto del Puntatore arriva tramite il bus degliindutzzi sino alla memoria, dove seleziona una delleoosizioni nella ouale rìsiede il codice binario dell'istru-zione in corso. ln questo istante attraverso il bus dei

controlli arriva l'ordine di lettura della memoria, e il

contenuto dell'indirizzo selezionato dal Puntatoreviene caricato sul bus deì dati e istruzioni e portato al

processore, dove passa su di un registro specifico chia-mato registro delle istruzioni.

Tr rttn il nro.oqqo r'li localizzazione delle istruzioni eil caricamento sul registro delle istruzioni stesse pren-de il nome di fase di ricerca e si rioete oer tutte le

istruzion i.

Dono rhp il rodiro bìnario delle ìstruzionr èci:tn r:rirr+n cr 'll'rnq6citn ronictrn inizi: ì.)LoLU LollLcLU )Ull dl.JPvJ'rv ttttLtu tó

fase di esecuzione. L'unità di controllo interpre-ta o traduce il codice delle istruzioni e genera

una serie di segnali che invia al blocco di ela-borazione dati, il quale è formato da una UnitàLogico-Aritmetica o ALU, che sarà incaricata di

effettuare le operazioni logiche o aritmeticheche comporta l'istruzione.

Sia gli operandi che partecipano all'opera-zione sia irisultati generati dalla ALU sonoposti negli indiizzi di memoria specificati dall'i-slruzrone stessa.

BUS DEGLIrNDtRtzzl

PROCESSORE

MEMORIA PROGESSORE

Fase di ricerca di un'istruzione

Page 25: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

MEMORIA DIPROGRAMMA

BUS DEGLI INDIRIZZIDELLE ISTRUZIONI

14,

BUS DELLEISTRUZIONI

Architettura Harvard nel PlCl6FB4

Sino agli ultimi anni del secolo XX, la maggior parte dei

processori erano costruiti seguendo l'architettura pro-posta da Von Neumann, come se si trattasse di un

' dogma di fede.I e nprpssita dpoli utilizzatori richìedevano nerò sem-

pre maggiorr valori di rendimento, sarebbe a dìre sem-pre maggior numero di istruzioni eseguite per unità di

tempo (MIPS: Milioni di lstruzioni Per Secondo).

Per migliorare questo parametro furono implemen-tate le tecniche moderne, come la segmentazione, la

predizione del salto, e altre ancora più sofisticate;comunque i principi di Von Neumann seguitavano a

rimanere inviolabili.In seguito ci si rese conto di una grave limitazione:

l'esistenza di una memoria in cui si scrivevano a caso sia

i dati sia gli indirizzi delle istruzioni.Fra imnossihile accedere nel medesimo tpmno a

entrambi i tioi di informazione.Inoltre il memorizzare richiedeva una memoria

dimensionata per entrambi itipi di informazione:istruzioni e dati, mentre la dimensione o la lunghez-za dei datì è molto differente da quella delle istruzio-ni.

Rìassumendo, l'inconveniente dell'architettura di

Von Neumann era localizzaLo nella memoria unica di

cui disponeva il processore, che da un lato impedival'accesso contemporaneo ad istruzioni e dati, e dall'al-

MEMORIADEI DATI

BUS DEGLI INDIRIZZIDEI DATI

8,I

BUS DEIDATI

PROCESSORE

l-- a uir __________*l

tro la dimensrone delle sue celle dovevano adattarsi ad

entrambi i tipi di informazioni.

,,''tl',

I mrcronrocessori PIC si basano su di una nuova archi-tettura chiamata Harvard. Essa è basata su due memo-

rie indipendenti, una dedicata alle istruzioni e l'altra ai

dati. Questa indipendenza permette di realizzare acces-

si simultanei ad entrambe le memorie, e trovare un'i-struzione mentre si sta scrivendo un dato. lnoltre larrnrri+r

^i ^^^i -^mnri: nl^ o<<ora 2611++r+r rllrLdPdLILO Ut UVIt rrCilrWrrq puw c))qrq qucLLata ara

necessita snecifira dell'informazione che si deve npstirp

in ouesto modo la caoacità della memoria delle istru-zioni puo essere molto piu grande di quella dei dati,come conviene che sia nela maggior parte delle appli-

cazioni con i microprocessori. Inoltre si puo differenzia-re e adeguare alle specifiche esigenze la dimensione in

bit delle celle di ogni memoria.Nel caso del PIC 16F84 la memoria di programma

che è quella dedicata alle istruzioni, ha una capacità di

1024 celle di 14 bit ognuna, è costruita con tecnologiaFLASH, che permette di sc.iverla e cancellarla elettrica-mente. La memoria dei dati ha una capacità molto più

piccola e le sue celle hanno una dimensione di 8 bit,che è la dimensione tipica dei dati. È volatile, di tipoRAM, ed a complemento ha una piccola memoria ausi-

liaria non volatile di tipo EEPROM, per contenere i datidi tipo permanente, necessari in alcune applicazionr.

Lindipendenza delle due memorie esige dei bus dif-

..

Page 26: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

ferenziati, per cui la memoria di programma si control-la con il bus degli induizzi, con linee sufficienti per

discriminare 1 K posizioni, e un bus per trasferire istru-zioni da 14 bit ll bus che gestìsce gli indirizzi dellamemoria dei dati ha meno linee, perche questa memo-ria ha minore capacità. ll bus sul quale circolano idatiha 8 linee per supportare i bit di ogni posizione.

Anche se I'architettura classica di Von Neumann e la

Harvard sono molto popolari, esistono molti modi per

classificare queste macchine: uno dei piu rilevanli e quel-

ìo proposto da Flynn nel '1966. Per distinguere i proces-

sori, Flynn ne distinse il numero di flussi di istruzioni e il

numero di flussi di dati che questi processori avevano.ll nrnresso comnrrtazionale consiste nell'esecuzione

di rrn,a qpnronz: di isfruzioni su un insieme di dati. llJLYv!'

flusso di istruzioni e la sequenza sopra la quale operaun processore, e il flusso di dati comprende la sequen-'- J^i À.+i i^ i^^"^..^ ^ l- .^^' '^^-- ,l^i ^l-+i ^."-i-li ^4d ucr uoLr il r il r9rc))u c ro )Er]ucr4d ucr udLI Pdtztdil cfnf:li rho <i nonor:nn

Le architetture dei computer sr caratterizzano per

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

Flynn propose quattro categorie:

', , i'Corrispondono ai monoprocessori convenzronali, tipoVon Neumann, e dispongono di una unità di controllo e

di un blocco di elaborazione dati. Le istruzioni in codice

binario ricevute dalla memoria sono decodificate dall'u-nità di controllo ed eseguite nel blocco di elaborazione

dati, con gli operandi che arrrvano dalla memoria der

dati, archiviando poi in quest'ultima irisultati.

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

Snno romnosli d,a 'n' unita di controllo che ricevonoognuna un flusso dr istruzioni differente.

Le istruzioni codificate sono inviate a 'n' unita dr

processo, ognuna delle quali riceve il medesimo flussodei dati o onerandi Orresîo slonif ica che differenti- -'J' " '

sequenze di istruzioni vengono eseguite sopra lo stesso

dato. MISD: Multiplo flusso di istruzioni, unico flusso di

dati. Non sono stati costruiti modelli commerciali di

questi tipi di computer

f"rl rì,Ì ili.i t i:ij;, ii:tr.,i+Hanno un flusso di istruzioni unico e un flusso di datimultiplo. Esiste una sola unità dì controllo. che governa

differenti processori. Tutti i processori ricevono la stessa

istruzione da eseguire, ma dato che ricevono differentiflussi di dati, questa istruzione ottiene differenti risulta-ti Ppr nntor rondirridors i dati intermedi e i risultati cheproducono i processori, e necessario che esista una

intercomunicazione fra i microprocessori. Ci sono duemodi di ottenerla:

ln questo caso tutti i processori utilizzano una memoria comune,e quando uno vuole inviare un dato ad un altro, prima lo scive in unaposizione che l'altro conorce, e 5uc(essivamentel'altro legge questa posizione. Secondo l'accesso permesso allamemoria, abbiamo quattro categorie:

. CREW: Lettura Concomitante - Scrittura lsclusiva. Vari processori

possono leggere una locazione di memoria. però solo uno può scriverla,

r CRCW: Lettura Concomitante - Scrittura Concomitante. Vari orocessori

possono leggere e scrivere simultaneamente una locazione.

Negli ultimi due tipi si origina il problema dello scrivere

nella stessa locazione da parte dì vari processori. Questosi risolve applicando una dr queste tre alternative:

2, 5e tutti vogliono scrivere la stessa cosa, si può scrivere, in caso

contrario. non scrive nessuno.

In quela topologia la memoria è ripartita fra tuttii procesori, i quali sono uniti da linee bidirezionali di comunicazione.

Ci sono diverse varianti,a seconda della rete di interconnessione che si utilizza.

,L ; i 1""r ;'I .i 'i

1;r :'i y' It ; ,1 i:;,i,..;;

È un gruppo di monoprocessori convenzionali, ognunocon la sua unità di controllo e il suo blocco di elabora-zione dati, associato ad una memoria locale. Lavorano inparallelo ognuno con il proprio flusso di istruzioni e il

oroorio flusso di dati. Inoltre se utilìzzano la memoria

condivisa, ricevono il nome di Sistemi a Multiprocessore,

se utilizzano la rete di interconnessione danno luoqo a

Sistemi Multicomouters.

t

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

Page 27: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

||

MTGROGONTROLLERll PtC | óF84 denlro

banco dei registri

\*,,,*,

It

PIC fanno un uso intensivo dei registri per realiz-

zare le ooerazioni necessarie alle istruzioni che si

stanno eseguendo. Questo significa che normal-mente la ALU del blocco di elaborazione dati,ulilizza come operando il contenuto di un regi-

stro e il risrrhafo lo nrro archiviare rn un altro reoistro

In realtà La ALU necessita didue operandifonte per rea-

lizzare un'operazione. Uno di questi è sempre scritto nel

registro di lavoro W (WORK) e l'altro provrene da un

registro, o dall'istruzione stessa quando si tratta di un

operando immediato.Data la semplicità dell'architettura del PIC non sono

stati implementati nel processore i banchi der registri,

utilizzando al loro posto le celle della memoria RAM

OPERANDOINTERMEDIO

-1 llREGISTRODI LAVOROmffi

8--- 8-'--

come se sitrattasse di registri. La memoria dei dati RAM

del PIC 16F84 consta di 90 posizioni da 8 bits ciascura.

Queste celle si comportano come se fossero un bancodci rpnicf ri :vonti l: dimenciono dol hvto | 9O ronictri ci

dividono in due grandi gruppi:- Registri specifici (SFR). sono 22, e i loro brts hanno

il compito di controllare e programmare il lavoro dellediverse risorse del microprocessore. Svolgono il compi-to di registri di controllo del funzionamento del PlC.

- Registri di utilizzo generale (GPR): sono le 6B

celle restanti della RAM, le quali sono a disposizionedell'utilizzatore per archiviare idati. Nella figura si

mostra la ALU che riceve gli operandi tramite il regi-stro di lavoro W, oppure dalla propria istruzione o dal

banco dei registri, a seconda di come è

selezionato l'ingresso del multiplexer. ll

risultato della ALU si ouò deoositare in Wo in uno dei registri implementati nella

memoria RAM.

Tutto il contenuto del PlC16F84, sarebbe a

dire, tutte le risorse di cur dispone insiemeai collegamenti delle medesime, è mostratonella figura, che presenta l'architettura det-tagliata di questo microprocessore. Si puo

riassumere tutta la sua potenza descriven-do i prrncìpali elementi di cui è costituito ele relative caratteristiche:

. Memoria di programma FLASH da 1 K

parole da 14 bits ognuna.. Memoria di dati RAM con 90 celle da B

bits, funzionante come banco dei registri

dìviso in 22 specifici (SFR) e 68 di utilizzogenerale (GPR).

. Memoria EEPRON/ di dati da 64 bytes.

. ALU da 8 bits per realizzare operazionilogiche e aritmetiche. Un operando provie-

RAM

BANCODEI REGISTRI

Nelle operazioni della ALU intervengono i registri della RAM.

Page 28: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

ilIICROCONTROLLER. tl!

l:L',',,

i\l

t,,:,

,ta.

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

MEMORIA DEI DATI

13

DIREZIONE

-\ ,|3

fficoNsrGLl

MICROCONTROLLORI-- 14

INDIRIZZAMENTO DIRETTO

PORTE I/O

7'--DIREZIONE

5

ffi

W

m îà3^,

ffi naoffi nar:s

m RA2

lRÈ nae

ffi neo

ffi ner

ffi nezffi nesffi ne+ffi nesffi neoffiG nez

ffitrffiffiffiMCLR# VDD VSS

Quando un processore esegue un'istruzione lo fa in due

fasi diverse. ll PlC16FB4 procede in questo modo, e chivnrrì rnmnrandoro , fOndO il fUnZiOnamentO di Una

macchina programmata, deve conoscere queste duei:nna fnnr'l:moni:li nartanta\ incictoromn <t t nttectnLqVVq lwl luql I lEl lLqll, VLr rur r!v

' rv ru 9uLrLv

+nmr l-\nlln ^"^

{aci l. nrim: À rnmrrno : tt 1f+a la ic+rr rLfllld. UUIIC UUC ld)l ld Vrilrru L lvrrrurrL u LULLC lC l)tlU-

zioni e realizza sempre ìa medesima operazione, si chia-

ma fase di ricerca. La seconda e specifica per ogni istru-

zione e si chiama fase di esecuzìone.

FASE DI RICERCA

ll contenuto del puntatore viene caricato nel bus degliindilzzi della memoria di programma e contiene l'indi-rizzo in cui si trova il codice binario dell'istruzione che

bisogna eseguire. ll PC contiene solo indirizzi di istru-

.i. ';i i'i 'i

*ffi-\8ffi

TEMPORIZZATORE

#ffifu'ffiffir OSCI/CLKIN osca] CLKOUT

Architettura base del PlCl 6F84, con icollegamenti fra ivari blocchi che lo costituiscono

ne dal registro di lavoro W, e l'altro dalla proprìa istru-

zione o dal banco dei registri.o Drrp norte di l/O dioi*^ri r^ ^^"+^ A -^^ trrinee e la B- yuL Vvr Lu ur r/ v uryrLoll. LO VWI LO n LVll J I

con B.

o lJn temoorizzalore da B bits chiamato TMR0.. Un temporizzalore speciale da 8 bits, chiamato Watch

Dog (WDT).

. Un puntatore per induizzare la memoria dei codicilnnr+n r rrna c+trlz. ^itn lirrolli dnrro <i ronictrrnn tnmlegdLU d ullu )LdLN d urLv ilvsilr, uvvs Jr rs9rJUdru lcilr-

poralmente gli indrizzi di ritorno delle chiamate di

subroutrne e degli interrupt.. Un sistema per l'indirizzamenlo diretto e indirettodella memoria RAM.. Circuitì di Reset e temporizzatore legato al medesi-

mo.. Possibilrtà di lavoro in condizioni di basso consumo.

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

Page 29: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

IMIGROGONIROTLER :I'Lll PlCf óF84 dentro =--=;

-b**l

zioni, mai valori relativi a dati. Nel caso del PlC16F84lamemoria di programma ha una capacità di '1 K posizro-

ne di '14 bits.

Dato che la longitudine di ogni istruzione è semprer-li 1 /. hitc nr ro<.t: ;-1-lpppnri : h: l: nnccihili+r n,,,-,rlOlld lld lcì p{J5slUllltd Ol COnîene-

re programmi con un massimo di 1.024 istruzioni; rnol-

tre è di tipo FLASH il che significa che si puo scrivere e

cancellare elettricamente con l'aiuto di un programma-tore e un PC.

ll bus delle istruzioni sposta icodici brnari dell'istru-zinne nrrnt:ta d,al PC f no all'unita di controllo del nro-vrrv uLr P' v

cessore, dove si trova un registro speciale denominatoRegistro delle lstruzioni, che viene caricato con questi

valori, terminando così la prima fase dell'istruzione.

Questa fase di ricerca del codice dell'istruzione da ese-

ottire e ttnttale ner tlrl'p lo iqtrr rzinni riol ronqr{gri6.

FASE DI ESECUZIONE

Con il codice dell'istruzione collocato nel Registrodelle lstruzioni, l'unità di controllo procede a deco-dific,arlo c,a intcrnrclare a Che istrUziOne Si riferisce.

Terminata l'interpretazjone, viene generata unaserie di segnali di controllo che si applicano al restodegli elenenti, dando via all'esecuzione La maggiorparte delle istruzioni implica il realizzarsi di un'istru-ziano laaiez n:ritmotir: tinn <nmma cr,,,,,,, -Jttrazronr,AND, OR, rotazione eccetera.

Per effettuare le operazioni esiste all'interno delblocco di elaborazione dati una unità denominataALU. La ALU del PIC 1 6FB4 riceve due operandi, unoarriva dal registro di lavoro accumulatore W e l'altropuo provenire dalla propria istruzione, se si tratta di

operando immediato, oppure da uno dei registri delh:nrn rha a imnlallppf2'to nplle nosiziOni dellaPvrr4l

memoria RAM dei dati.A volte bisogna estrarre o introdurre informazio-

ni nel micronrocessore ner otreslo ahhiamo due,,,,-,-F,-lY-,

porte, la A e la B, che dispongono di linee collegatecon ipiedini di uscita dell'integrato, attraverso i

nrrali entrano ed escono i bitsCome aiuto alle operazioni del blocco elabora-

zione dati, il PIC 1 6FB4 dispone di un temporizzato-re, TMR0, che è incaricato di contare il tempo, e un

altro, chiamato Watch-Dog, che vigila sulla correttaelaborazione delle istruzioni del programma.

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

ll PlC16F84 dispone di una memoria di programma di

tipo FLASH, ccn una capacità di 1 K parole da 14 bits

ciascuna. La memoria FLASH ammette fino a 'l 000cicli di scrittura e cancellazione con la massima sicu-rezza.

Per leggere una memoria da 'l K posizìoni abbia-mo bisogno di indvizzi a 1 O bits, dato che 2'o = 1 .024.ll program counter, PC, del nostro PlC, ha 13 bits cont quali puo indirizzare 2 = B K posizioni diverse. I bitsin più di cui dispone il program counter sono dovutialfatto che l'architettura ditutti imodelli deì PIC dellagamma media PICl6CXX e la stessa; pero, in ognimodello, il costruttore ha implementato differenticapacita di memoria, per cu, l'utjlizzatore selezronerala piu conveniente.

Nel PlC16FB4 sono state fisicamente implementa-te solo le prime 1.024 posizioni degli B K possibili

della mappa di memoria. ll primo indirizzo è lo

0000H, e l'ultimo valido è lo 03FFH.

lindirizzo 0000H e riservato per il Vettore di Reset,

oilesto sionifica che r-,,^il- ; r- ^^-i-r^^^ I cui va ilLr r! 9uEllo E lo l.JU)l4lUllC c

puntatore ogni volta che si effettua un reset. Per que-sto motivo il programma di lavoro del microcontrollerdeve iniziare obbligatoriamente all'indirizzo 0000H,dato che l'istruzione che cortiene e la prima che siese-gue dopo il Reset.

Se vogliamo iniziare il programma all'indirizzo0005H, dobbiamo mettere un'istruzione di salto in

questo indirizzo nel Vettore di Reset, sarebbe a dire,go to 5.

MEMORIA DIPROGRAMMA

Nella memoria di programma del PlCl 6FB4 sonostate implementate solo le prtme 1 024 posizioni della mappall program counter ha una longitudine di 13 bitse lo stack può contenere fino a B indirtzzi di ritorno.

l3\

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

Page 30: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

MICROCONfROTLERll PIC | óF84 denlro

t'indirizzo 0004H è assegnato al Vettore di

Interrupt, e funzrona in forma simile a quello del

Vettore di Reset Quando si verifica un interrupt, il

contatore di programma s carica con 0004H e in

secrrtn eseore l'istrrrzione che si t'overa memorizza-t: in nrroct: nncizinno

Di conseguenza la prima istruzione della parte di

programma relativo ad un interrupt deve essere collo-cata in questo indirizzo della memoria di programma.

ll puntatore è un registro da 13 bits, dei quali, nel

PlC16F84 se ne utìlizzano solo i '10 meno significativiper indtrizzare le 1 .024 parole della memoria FLASH in

cui si trova il programma l tre bits piu significativi di

nl,psto renrstro non sono rttilizzali in clreslo modello di

microcontrollore.Per gestire e conoscere il contenuto del puntatore, si

' '+ li---^^ | '^^t'+'t -^rositi della zona SFR della RAM.utrLLót ru I rtrgr)Lr roPl,

Questr registri sono il PCL e il PCLATH, in modo che gri

B bits meno significativi deì PC sono dedicati al PCL e i

5 più signifìcativi al PCLATH, così come è rllustrato nella

figura.ll rpoistro PCI e sitrrato all'induizzo 02H del banco 0,

p rinptr rto npl h,rnro 1 dolla manna dei reoislri SFR della

memoria RAM. ll registro PCLATH si trova anche dupli-cato all'indirizzo relativo 0AH dei due banchi.

Associato al puntatore esiste una memorta ttpo LIFO a

R nosizinni da 1 3 hiîs oonrrni che si rhiama stack.Dato che e di tino llFO si carica e si scarica tramite il

suo livello superiore, che e drrettamente collegato al

I bits del puntatore si scrivono nei regrstri PCL e PCLATH,

secondo la distrtbuzione rndrcata.

'rllr

lil

:8

ffi

MEMORIA RAM

I registri PCL e PCLATH sono dupltcati rtspettivamente nelleposizioni 02H e aAH dei due banchi della RAM.

puntatore, ir modo che durarte la fase di carica ilvalo-re passa oa puntatore al livello 1, e gri altri valori scen-

dono di un livello. Quando lo stack si scarica, il conte-^.,+^ i^r ri,.^,r^ r ^---a al pC e lrrtti nii altrr ValOfi Sal_ItuLU Utrt ilVCIU I pd))u -,nnno di rrn livello oresto siorifica che l'rrltimo valore

che è stato caricato e il primo che si scarica (LIFO: Last

Input First Output)Lo stack serve per scrivere temporalmente gìi indi-

rizzt delle istruzioni, e si usa sempre automaticamentese si ha la chiamata di subroutine (CALL) o se avviene

un interrupt. In entrambi i casi bisogna memorizzare gli

induzzi di ritorno al programma principale, infatti ter-mìnata la subroutine o il programma legato all'inter-rupt, s ritorna a programma principale.

A volîe oossono esserci situazioni di annidamenti:dall'interno di una subroutine ne viene richiamata

un'altra Ogni volta che questo succede, bisogna

mernorizzare nello stack l'indiizzo di ritorno. Visto che

non esiste un segnaiatore che segnala il rierrpimento...l^ll^ -+--1, -+- -l ^"-uElv )LcLN, )!o o p,ùgrammatore tenefe conto degliannrdamenti ner evrtarp rhp srrneri nlr R v,alori e debor-di nordpndo informazront.

A differpnza deoli .rltri nroressori lo stack del

PIC 1 6FB4 non e accessibrle da parte dell'utilizzatore e

nnn <i nr ta r-zriTara n cr:rir:ro Orrpctp drroL. YvLJLL --- operazlonl

si realizzano automaticamente quando si esegue l'ope-razione CALL o avviene un interrupt.

BANCOO I BANCOl

t2 CONTATORE Dl PROGRAMMA (PC) O

Page 31: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

La memoria dei dati RAM

on la finalità di semplificare l'indirizzamentodella memorra RAM e diminuire i bits degliinduizzi, i progettisti della gamma PICl6CXXhanno organizzalo in 4 banchi da 128 posi-zioni da B bits cadauna. f indirizzamento

implica la selezione del banco e la posizione relativa inesso. Per determinare Ìl banco a cui si desidera accede-re esistono due bits denominati RPO e RP1, che si tro-vano ubicati nel regrstro specifico della stessa RAM, che

si chiama Registro di Stato. Scelto il banco sono neces-sari altri 7 hits ner indirarp rrn: dollo t 7R nosizioni delr 4v vr

medesimo, come si vede nella fiqura.

? FEGISTRO DI STATO OW,, ,y'

SELEZIONE ooHDEL BANCO

124 :

POSIZIONI i

i;-r:

-t

I PIC della gamma media hanno la memoia organizzatain 4 banchi da 128 posizioni di B bits ciascuna.ll banco è selezionato con i due bits del Registro di Stato

" l, p?t:r:o!".ro-, ,., in!i:.:::o

1 Z tti.t;_

i i È r;,É i.; l i'.lr +,i j, r=.! il {j i.: i1; L !-..,.ri :ii É ir;l'; ij l" rrif- :l i;.F;ri+

ll microcontroller che useremo per il controllo del nostrorobot ha una memoria RAM piccola. Non sono statiimplementati fisicamente i quattro banchi possibili, cheforniscono la capacità massima di 4 x 1 28 = 512 bytes.Alcuni modelli più potentì della gamma media, dispon-gono di questa capacità. ll PlC16FB4 ha implementatosolo i primi due banchi, anche se in modo incompleto.Infatti solo le prime B0 posizioni di questi banchi, cioèdalla posizione 00H alla 4FH, in totale 2 x 80 =160bytes, sono stati implementati. Le prime posizioni deidue banchi sono riservate per i registri specifici e lerest:nti npr r-rrrplli eli riilízza nonor.eio

Le prime 12 posizioni dei due banchi, i cui indirizzivanno dalla O0H alla 0BH, sono riservarti ai valori dei reqi-

INDIRIZZIDEL BANCO

7

BANCO O BANCO 1 BANCO 2 BANCO 3

t_.=.

4FH

7FH

BANCOO BANCO BANCO 2 BANCO 3

ll PIC 16F84 ha implementato fisicamente solo le prime B0posizioni dei primi due banchi

stri snecificr (SFR) i cui bits controllano il funzionamentodelle risorse interne del microcontroller. Funzionanocome registi di controllo programmabili. In questa zona

SFR abbiamo due posizioni non implementate, che occu-pano gli induizzi 07H di ogni banco, pertanto il numerototale dei registri specifici SFR del PlC16F84 è 22.

Le 68 posizioni finali di ogni banco con indirizzi com-presi fra 0CH e 4FH, sono usate come registri di utilizzogenerale, GPR, destinati a contenere dati e risultati par-

ziali dei programmi. Le 68 posizioni GPR del banco 1 sonomappate nel banco 0. Questo significa che anche facen-do riferimento ad una posizione GPR del banco 1, si acce-

de alla posizione correlata del banco O, idue banchi cioènon funzionano in modo indipendente. Riassumendo, il

numero totale dei registri GPR è solo di 68, dato che i 68del banco 1 funzionano su quelli del banco 0.

ii :-a: : :iTÈ,i :i Ìrri:.i"î ir.ii"i. 1i ij!ill nostro PIC dispone di 22 registri specifici SFR; attraversoi bits di questi registri si programma il funzionamento e

I'utllizzo delle risorse del microcontroller. Ci sono 1'1 regi-

stri SFR nel banco 0 e altrettanti nel banco 1 . ll registro che

occupa la posizione 07H in ogni banco non è implemen-tato. Nella figura si mostra la nomenclatura di questi regi-stri, possiamo notare che alcuni dì questi sono ripetuti in

entrambi i banchi. Per esempio il Registro di Stato occupal'indirizzo 03H del banco 0 e il corrispondente indirizzo del

banco 1. Questo succede con tutti i registri fondamentalidel microcontroller; per poter accedere ad essi indipen-

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

Page 32: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

dentemente dal banco che è stato

definito con i bits RPO e RP1.

lntegrano un insieme di 68 posizioni

di ogni banco. compresi tra gli indiriz-

zi OCH e 4FH. Però non ci sono 68 x 2

= 136 registri GPR. Solo la metà sono

validi, perché quelli del banco 1 sono

mappati sopra quelli del banco 0.

Come è stato precedentemente spie-

gato, questo significa che quando si

accede a un registro GPR del banco 1,

in realtà si realizza l'accesso al corri-

spondente del banco 0. Sono validi

solo i 68 registri GPR del banco 0.

,, 1-; ,' t; tt l "'".,; : ;'t.

Dato che il PlC16FB4 ha operativi

solo i primi due banchi della RAM,

non sono necessari due bits per spe-

cificare il banco selezionato. Dei due

bits RPO e RP1 del Registro di Stato

che servono per determinare il

banco, al nostro PIC basterà pro-

grammare il bit RP0, che è quello che

occupa la posizione 5 nel Registro di

Stato. È rndifferente il valore che ha il

bit RP1, che occupa la posizione 6 nel

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

accede al banco 0, se RPO = 1. si

accede al banco 1.

Quando vogliamo accedere ai

registri GPR non dobbtamo tenere

conto del valore del bit RP0, datoche, come abbiamo gia detto, il

banco 1 è mappato sopra il banco 0.

Or rindi la oesîione dell'accesso ai

banchi, consiste nell'impostare il valo-

re del bit RPO, che e il quinto del

Registro di Stato, rl quale occupa l'in-

diizzo 03H dei due banchi dell'area

SFR. Ci sono due istruzioni nel reper-

torio del PIC che facilitano enorme-

mente il controllo di RPO. La prima è

l'istruzione bsf, che ha il compito di

mettere a 1 il bit specificato del regi-

stro che si indica. Se troviamo ìn un

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

Memoria dei dati RAM

"È:EE

programma l'istruzione "bsf STATO,5", ìa sua

esecuzione metterà a '1 il bìt 5. RPO, del Registro

di Stato, in modo che, a partire da quel momen-

to, I'indirizzamento della RAM si effettuerà dal

banco 1 nel programma. La seconda istruzione

bcf, mette a 0 il bit specificato del registro che si

indica. L'istruzione "bcf STATO,5" pone RPO = 0e lascia puntato il banco 0 della RAM.

.r r ,.r,.' :::; l.t t,t,; t:1.:i r,..'rl

I registri specifici SFR si classificano in due grup-pi. Il primo include tutti i registri incaricati di

controllare le funzioni vitali del nucleo oet

microcontroller, tra i quali citiamo STAfO,

OPTION, INTCON, eccetera. Nel secondo grup-po sono compresi i registri incaricati del con-

trollo del funzionamento delle risorse ausiliarie

e delle periferiche, tra le quali citiamo PORTAA,

PORTAB, TRISA, TRISB e altre.

Nella figura è rappresentata l'organizzazione

dell'area SFR della memoria RAM in modo detta-

gliato. In essa sono indicati i nomì di ogni registro

specifico, l'rndirizzo che occupano in ogni banco

e rl nome di ognuno dei bits. ìnfine si indica il

valore che avrà ognuno di questi bits dopo aver

effettuato un Reset normale o uno speciale.

&8lla2

83

84

ss", '.,

s&8A'8B

8C

i BANCO 0 SANCO 1

i..,. ., .., .," ,

Distribuztone e nomenclaturadei registri SFR e GPR dellamemoria RAM del PIC 16F84.

T T T T 1' '{ T 'é' ISSSIPO'O VALOFIALTRI

t sodet cobt€Ntó dt FsRps idlriffi ti ffih (mn è h cgli!ÈlÈiol t;

Clad( / CoIidoG tn tetlEo €le r I btts xxxx xxxx qsuu úsqu I

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

fFP lRPt RPo îo# Po* Z DC G oool txrr oooQ quuulndùíaménio indiEtto rs F{DF xxxx xxxx uuuu uuuq

- RAl/foCt( nA3 RA2 iA1 ÉA0 --'x xtxx '--u uuuu

Rg? RE6 RB5 RB4 nBs î82 FBI i60lNT xxxx tx*x uuuu sùsuilgtr implèmtrio 3i hgge (om'o'isgfuBod€ida$fEPÈofrt xxxr xxxx uuuu uuuui€glrtodaglilntiddÈEPnola xxxx xxxx suuù uuuu

- SísiemitbftsdiP€rl ---O OO00 -..ù 0OOO i

GtE EÈlE TolE tNlE HBIE TolF lNfF RBIF ooÓo ooox ooÓo oooo

BIf BIT BtT BIT 8tT BIT BIT BIÎ?6543210

tho e @rúedsb di fsR gq lndirÌaÉ lq reddià (@r è s rtgiÉtn firt€)

ftOFU* INIDG TOCS TOSE P{tA FSz P51 PSO

Èy$ nm rlgntticttuo d€l PC

IBP NPT RPO TO* Pb* Z DC C

lndtnEsrunto díetto @ lrtDf

. conft$ruloÉ lortr A

confiEHrfsG por& B

t{on lnFlenènqÉo 5l Lggè ffi '0". EEIF WHEÉE WREN WÉ fiD

ièglelo tlt .o[tnlto :EPfotil (mn è sn Egùfs fitko]

- CttfEwdm?cttAGIE EEIE ?OfE INIE RBIE 'ÍOIF INTF RBIF

VALORI DOPO VALORI ALTRIIL RESET FÉSET

lttl tlll îf11 l11l0000 oooo ooo0 0000

OúOl txxx 000q quuq

xxxx xxxr uquú uuuu---l {tl't ---l l1l't1!r1 tltl 1111 1t',ll

---ó x0o0 ---- q00O

".'O 00OO '.-0 0Oo0

O00O oóOx Oo00 000u

t

Organizzazione dettagliata dei registri SFR del PIC 16F84. Sono indicati gli indirizzi,

il banco, il nome del registro e di ognuno dei suoi bits e i valori che questi avranno dopoun ,îeset normale o speciale.

Page 33: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

ICROCONTROLTER

ffitr8-:

Gli operandi fonte della ALU arrivano o dal registro Wo dal multiplexer ll risultato finisce o in W o in una posizionedella RAM

La memoria dei dati RAM del PIC della gamma media e

organizzala in quattro banchi da 128 posizionj con 8bits di dimensione cadauna. Nel caso del ptC16FB4

sono state implementate solo le prime BO posizioni(00H-4FH) dei banchi 0 e 1.

Per tndvizzare una posizione della memoria RAM inun PIC bisogna specificare, in primo luogo, il banco incui si trova, e dopo, I'induizzo relativo al medesimo. per

selezionare il banco ci sono due bits nel Registro diStato dell'area SFR della RAM, che si chiamano RpO eRP1, e occupano le posizionr 5 e 6 delsuddetto registro.Per determinare la posizione relativa in un banco, biso-gna specificare 7 bits per poter formare 27 = 128 indi-rlzzi possibili.

Esistono due modi per indirizzare la RAM: l'indiriz-zamento diretto e quello indiretto.

' 'r

Questo modo per definire la posizione nella memoriaRAM, dove si trova il dato ricercato, inizia scrivendo nei

due bits RPO e RP1 del registro di STATO il codice corri-spondente al banco. tindirizzo all'interno del banco è

incluso nel codice della propria istruzione, dato che dei

T6jSTATOoffirsELEztoNE DEL BANco "2

oo ol 'toooH

DIREZIONE(coDrcE oPTSTRUZTONE)

7

07t

Nell'indirizzamento diretto i bits Rp0 e Rpl del Registro di Statoselezionano il banco, e i 7 bitsmeno significativi dei codici dell'istruzione, la posizione relativa.

MEMORIADEI DATIéilffire;niúiul-ffErcrcrcffiffire-rc*ryre:reryrcrcffiG

ffi

ÌrercrcgH$Effiffi

ruru8.r

Operondi gestiri dalle istruzioni

Indirizzamentodelta memoria dei dati RAM

,,',1;,.,1.,, dati gestiti dalle istruzioni prima dell'esecuzio-

dotto dall'esecuzione dell'istruzione è il risul-tato. Nel PlC16F84 i dati, in generale, occupa-no indirizzi della memor a dei dati RAM,

sarebbe a dire, registri. Esistono dati speciali il cuivalore non deve essere perso quando si toglie tensio-ne al srstema, per questo vengono scrrtti in una zonadi memoria EEPROM, che studieremo successivamen-te. ll dato puo anche essere contenuto nel codicebinario dell'istruzione, nel qual caso si chiama ope-rando immediato.

Normalmente tutte le istruzioni sono realizzatecon un'operazione elementare logica o aritmeticanella ALU, la quale riceve uno dei due operandi fontedal registro dr lavoro W, che è stato precedentemen-te caricato in modo adeguato. L'altro operando, senon è immediato e quindi è già dentro l'istruzione,arriverà da una posizione o da un registro della RAM.Infine, come è indicato graficamente nella figura, il

risultato della ALU è caricato in W e in uno dei regi-stri della RAM.

BANCO O BANCO I BANCO 2 BANCO 3

Page 34: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

STATO

] BANCO O I BANCO 1

Per selezionare il banco nel PIC 1 6FB4

bàstà scrivere nel Regislro RP) del Regtslro di jtato.

14 bits che la compongono, i 7 meno significativi sono

riservati a questo compito.Per caricare il codice del banco nei bits RPO e RPl,

es stono, come abbiamo già visto, un paio di istruzioni

molto efficaci, capaci di mettere a I o a 0 un bit di qua-

lunque registro. Per esempio, se vogliamo accedere al

banco 2 dobbiamo caricare RP1 = 1 e RPO = 0, visto che

sr usano le ìstruzioni "bsf STATO,6" e "bcf STATO,5".

Nel PIC 16F84, l'indirizzamento diretto e più sempli-

ce dato che la memoria RAM è solo implementata nei

prmi due banchi, il banco 0 e il banco 1. Questo sup-

pone che con un solo bit si scegtie il banco, in realta e

usato solo il bit RP0, essendo indifferente lo stato che

ha il bit RPl 5e RPO = O, si accede al banco 0 e se RPO

= 1, si accede al banco 1 . Rimangono gli altri 7 bits

necessari per indirizzare una delle B0 possrbili posizioni

che ci sono all'interno di ciascun banco.

' , I i, '

Quando si utilizzano tecniche avanzate d programma-

zìone, o si lavora con linguaggi di alto livello come il C,

così interessante nei srstemi con microcontrollori, è

molto conveniente disporre di un modo speciale per

f indirizzamento dei dati nella memoria RAM. Si tratta

del modo di indirizzamento indiret'to, nel quale il codi-

ce dell'istruzione non contiene i 7 bits che formano la

direzione del banco. Con questo metodo si fa riferr-

mento ad un registro specifico attraverso il quale si

ottengono questi 7 btts.

Nei microcontroller PIC le istruzioni che gestiscono

l'indirizzamento indiretto utilrzzano il registro INDF, che

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

:t:. :: . :.. ..:::: .. . .. . . . :. .. .........

occupa l'indirizzo 00H deì due banchi dell'area SFR. In

realtà il registro INDF non è implementato fisicamente,pertanto quando si fa riferimento a questo registro, si

accede ad un altro reqistro specìf ico dell'area SFR, che

si chiama FSR. Nei 7 tits meno significativi del FSR si

trova il valore dell'induizzo relativo al registro cercato

nel banco selezionato.Listruzione con modo di indirizzamento indtretto,

ultlizza come registro operando INDF, pero il PIC accede

al contenulo del registro FSR, che occupa, oer duplrca-

to, la posizione 04H dei due banchi della RAM.

Non solo e diversa la maniera di ottenere i 7 bits di

indirizzo, ma nel metodo indiretto cambia anche il

modo di specificare il banco. In quello diretto si usava-

no i bits RPO e RP1 per scegliere il banco, nel modo indi-

retto si usa il bit 7 - il più significativo - del regrstro di

STATO, che si chiama IRB e il bit 7, il più significativo,del registro FSR (ricordiamo che i 7 bits meno significa-

tivi contengono gl indirizzi re ativi). Dato che nel

PlC16FB4 abbiamo solo disponibili i banchi 0 e 1, il bit

IRP der registro di stato varra sempre 0.

Se, per esempio, vorremo selezionare in forma indi-

retta la direzione 12H del banco 1 in un PlC16FB4,

: STATO offiIóFSRoilffi

sELEzroNE oeL enNco *ttt

00H

{ OBH0cH

4FH50H

00 0l

Nell' indirizzamento indiretto il banco si sceglie con il bitpiit significativo del Registro di Stato e quello pru sgnificativodi FSR. L'indirizzo relativoè contenuto nei 7 bits meno significativi di FSR

cominceremo caricando in FSR il valore '12H (0x'12), per

I 7 bits di minor peso, e metteremo a '1 il bit 7 dt mag-ninr no<n dal ronictrn nor <ronlipro il h,anco 1

MOVIW 0x12 ; 5i carka W con 12 H

mowvf tSR ; ll valore di W si carica in F5R

SAl.lCO O gAl'KO I BAN{Ò 2 SANCO 3

Page 35: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

iortecon Íl ,

Le portedi ingress o/uscita

lprocessore che contiene ila - -t .--^ ^.---^^lt^l'lL lbfó4 tnat|7za e Íaccogile

icodici delle istruzioni resi-

denti nella memoria di pro-

gramma, le decodifica, cercanìi nnor:ndi lo pcpnrrp p nrndrrrp doi

risultati che memorizza. Questo è il

tipico lavoro necessario per processa-ro rrn'i<trr rzinnp noraì : rho crnnnT

l'nhiottivo fin:lc p nrrollO di COntrolla-

re una serie di dispositìvi esterni che

configurano il sistema che dobbiamonn\/orn:ro lìrrocti di<nnqitivi rho

YvrJL'

chiameremo periferrche, certe volte

hanno il compito di introdurre dati

nel microprocessore e quindi vengo-

no chiamati di "rngresso" Altre voltericevono i risultati dell'elaborazionedelle istruzioni, sono dati che vengo-

no conferiti alle periferiche per rego-

larne rl funzionamento, questo tipodi periferiche viene chiamato di" uscita " .

lp neriferiche si classrficano in duegrandi gruppi: digitali e analogiche.I e nrimp ricevono e/o inviano infor-mazioni digitali attraverso un insieme

di linee digitali il cui numero è ugua-

le a quello dei bits contenuti in ogriparola di informazione trasferita. Le

periferiche analogiche inviano e/o

ricevono informazioni analogiche,ossia segnali che variano il loro valo-

re da un minimo ad un massimo,

passando per infiniti valori intermedi.

All'interno delle periferiche digi-i:li Io nir'r <omnliri <nnn nrralìo rho

generano o si governano con una

sola linea digitale, di modo che, se

:--

Le periferiche sono dispositivi esterniche introducono e ricevono rnformazioni da o per il mondo esterno

PROCESSORE

La peiferica di rngresso digitalepiit comune è l'interruttore, che puo assumere diverse forme

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

l\:;::1:r::::ti:,,i,,,4,?41@útt9$||"/aaaa*att

Page 36: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

sono periferiche di ingresso introducono il valore di un !,

bit su di una linea, mentre se si tratta di periferiche di i

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

periferica di ingresso digitale più comune e più utilizza- i

ta è l'interruttore, che assume diverse forme come pul- l

valore di un bit, in modo chequando il programma che sta ese-guendo il microprocesso.e leggequesta linea, riconosce se c'è un 1

o uno 0. Programmando una di

queste linee di l/O come uscita,potremo collegare ad essa unaperiferica di uscita, come un LED

e quando il programma va a scri-

vere il valore di un bit sopra que-

sta linea, se è un 'l il LED si illumi-nerà, e se è uno 0 il LED si spe-gnerà. ll collegamento di unaneriferir: d'innrpcsn in nrrpcto}."''."'caso un interruttore, e di unaperiferica di uscita, un LED, è illu-strato nella figura.

Può capitare, in alcuni sistemi,

che i livelli logici delle periferiche

siano al contrario rispetto a quelli

indicati nella figura; per esempio,se l'interruttore e aperto, viene introdotto uno 0 nella

linea di l/O, e se è chiuso un 1 .

Inoltre, può succedere che si desideri accendere il

LED quando la linea di uscita digitale sia a 0 e spegner-la quando sia a 'l . Nella figura si vedono le modifiche al

sante, commutatore ecc. La perife-

rica di uscita più semplice, ma nonper questo la meno usata, e il

diodo LED. ll primo tipo di questi

interruttorr, a seconda dello stato,introduce un 'l o uno 0. ll secondotino se riceve rn 1 normalmente si

illumina, mentre se riceve uno 0 si

spegne.

: .. ':.,,,. i i .rt-:.. : J i'-

:ì : :1 Ì, ". i: t.'.ij i I . ,L i:.. r r_,ri

Dei 18 piedini che dispone il nostroPlC, 13 sono destinati a linee di l/Odigitali. Ognuna di esse puo intro-drrrre al nro.esqorè il valore di un

bit o essere incaricato di prendere

dal processore il valore di un bit per

il mondo esterno.Sc rrn: di nrrp<to 13 linee di l/Ov' YULJTL '.

À nrnarrmmr*re programmara come In9resso,sara possibile collegare ad essa un

dispositivo esterno che introduca il

,É,.,,

ll processore conosce lo stato dell'interruttore,se e aperto o chiuso, questo perché leggendo la linea di ingresso esso riceve un 1

se e dperto o uno 0 se è chtuso. ll LED della linea di uscitae controlldto dal processore perche lo accende scrivendo 1 e lo spegne scrivendo 0

I diodi LED sono le periferiche digitali di uscita più semplici e utilizzate

+Voo

INTERRUTTORE

LINEA DIGITALE DI INGRESSO

LINEA DIGITALE DI USCITA-ìì!

tÍr:7t;'

;1;:'11;,i+1;:11.+i+i.i:'i,Èl.l;i=ltjl..e"+l.loll:+'r:l.+l.È;.+#'oÈ1Ì,.:;!1#;tt,1]tli1i,f.+i.íiÉ11iiii'.i;;t1i;.ii!

Page 37: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

INTERRUTTORE

processore ìa leqqe.

Ooni reoistro nel ouale si collo-

cano le informazioni da trasfe-l

rire ha associato un altro regi-qtrn rho <or\/o nar COnfigUfafe-."-'-ognr ilnea come Ingresso o,,--i+- l- ^^"+- A Iuscrta. La poria A na assocrato

il registro TRISA e la porta B il

registro TRISB. ll procedimentoper configurare le linee è moltosemnlrce Se desiderramo che

la linea 2 del registro PORTAA

(RA2) funzìoni come una linea

di rngresso dobbiamo scrivere

nel bit 2 del registro TRISA un

1. Se al bit 3 di TRISA si memo-

rizza uno 0, la linea RA3 del

'o+v;i

Normalmente si dice che il PIC'l6FB4 e povero perche

ha solo 13linee di l/O, scarse risorse e poca capacità

di memoria. Le linee di l/O si raggruppano in due

insiemi che sono chramate "porte". La porta A rag-gruppa 5linee di l/O, mentre la porta B raggruppa leR roqt:nti lo nnrto di l/O onor:nÒ .Òmo roni<tri rhp

oossono essere letti e scritti dall'esterno e dall'internodol nrorpssnre C)rrpsti reoistri si chiamano PORTA A e,r. vvLJLl

PORTAB. In realtà lo scambio dr informazioni ìo realiz-z: il nrnro<<nro <rririO^À ' Inî ^^r+r manlra l:/u tt Vt L, JLrrvúl IUU )UPIO Ulld PUI Ld lllclltlE lo

^^ri+^ri.1òc+Òrnì l: lanno n :l rnntr:rin ò l. narifori-pclllcllLo c)tEl llq lo ltryyr/ v ur lvr rLr urrv, L rq PElrrErr-ca esterna che colloca l'informazione nella porta e il

LINEA DIGITALE DI INGRESSO

\p I infarn trfnre e ànprtÒ intfOduCe un bit 0.

Per accendere il LED dobbiamo scrivere un bit 0 sulla ltnea digitale a cui e collegato

circuito di adattamento delle due periferrche per opera-re con livelli logici opposti

Voo+5V

05H06H

I nel ì rizzì r'lal la nnrtap rlci relsritti roni<f.i di l nnfiottrs-innc doll'srca q,FR della RAM

registro PORTAA rimane confi-nrrretn rnmc linp,a r-li uscita. I

registri PORTAA e PORTAB,

insieme ai loro associati TRISA

e TRISB, occupano gli indirizzi 5e 6 di entrambi i banchi della

memoria, come si vede nella

figura.

Prima di Iennprp o scrìvere Ie

informazionì in una periferica,

dobbiamo confi gurare adegua-

I:l

BUS TNTERNO DEt DAT| 8tI

F---F FFF-FFFFÈoNrO \CÈOàQN-O

LINEE O PIEDINI DI I/O

Ogni registro dr scambio d'informaztone, PORTA A, e PORTA B, ha associato un registro dt

configurazione TRIS A e TRIS B, rispettivamente.

LINEA DIGITALE DI USCITA

BANCO O BANCO 1

g***rrrllÍf Íf lllllllti:srzrììlìiìì:ì:ìll.:

Page 38: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

P t8rytzlzv,{tlM&}M,llrrlrf *i\\\ìss{.wj,

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

MIGROCONTROLTERper il trersferinrento d'inforrnozionimondo esleÍno

5i desidera configurare come ingressi le linee RA4, RA3, RA2, e RAI della PORTAA, mentre la linea RAO deve funzionare come usrita. Realizzare il programmacorrispondente.

5i deve caricare nel regisiro di configurazione TRISA il valore binario "xxx11t10", I tre bits di maggior peso di TRISA non hanno significato né funzione, dato the la

P0RTA A dispone solo di 5 linee. Scriveremo in quefi registri tre zeri, in modo che il valore da caricare sarà "000111'10", che corrisponde al valore 1!H. ll programma

richiefo dovrà scrivere 1EH nell'indirizzo 5 del banco 1, dove è indicato TR|SA.

N0TA: in assembler i valori esadedmali si scrivono dhettamente preceduti da 0x.

TRISA.,. ,.... EQU. ..0x05.. ......;fetichetta TRl5Acorrisponde all'indirizzo 5H

5T4T0.,. ..,.EQU. ..0x03,. ......;lletichettaSIAT0corrispondeall'indirizzo3H

8f...,,. ,,..5TAT0,5 ...;Bit5diSTAT0=1{RP0='t}.5iacredealbarco!

Movlw... ....0x1e. ....,;SicaricaWconlEH

Movwf... .,..TR|SA. .,,.;ll valoreWsi caricainTRlSA

Al momento dell'atcensione del PlC, o in caso di reset, tutti i bits de' registro di configurazione TR|S vengono posti a t, il che signifita che tutte le linee delle porte

rimangono inizialmente configurate come ingressi,

Preparare uî programma per configurare tutte le linee della porta A come ingressi e le linee della porta I come uscite,

Dovremo scrivere nei 5 bits meno siqnificativi di TRISA un I e in tutti i bits di TRISB uno 0.

Bsf,.......,...5TAT0,5 .,.. i RPO= 1, peractedereal banco 1

Movwf...,.....TRlSA. .......;ll valoredi Wsi sciveinTRl5A

Movlw...,...,.0x00. .. ,...,;Wsi carira con 0

l^ :^ ^^ -^rianle lp o.,,t r si i"t.'eI scono lel-r r Ll lr llrr I r\/tutrr\ ,L llvu | )l I Cr !

nfo.rr.rzinn dinilali dcf'npnnn nli ,.nresci e le uSCite.

Realizzata la conf gurazione delle inee l/O scrivendo net

'pcist' TRIS nèr nÒ'tzrp :l nrnreccnro''in'Oranazione.^^ a."i',1

^î r'nî aar'{6t1,1 2 d'innreccn rnl on.,Llltr c'lvo Ud U ld Pcll,!.'!u J I yr Lqdld d i-rlrl

r.1 rr-: nnr+: dnhhiàmo cO'o lenOprp I r-nrler_tO delv ,LvYri

ranicrrn rli arroctr ^^"1a, OSSia, PORTAA O PORTAB.rY,JLr v

A contrario, se si deside'a po'tare da processo.e il

va ore dell'rnformazione digrtaie ad una penfer ca di

usc ra coi egata al oin d -na porra, conI gurata co-euscita, basta scrvere il suddetto registro con lva ore da

tr:qfor ro Por lonnoro I COntenUtO df Una pofta Cl'ln-nro<<Ò rho rnni cno .l rl^rÒ / hÒ l. ^^.'{^.i..,,- .- , - . drure Llle ld Uel llel lLcl CO" SpO'-dente vi ha deposrtato, si utiiizza l'istruzione " movfPORTAA,\/", con la quale r dato presente nelia porta

passa a reg stro w.Per spostare un dato verso una porta d'uscita, prma

s ca';ca qL,est'- I ro rel reg slro W e dopo s esegue'rstruz one "rnov\r/f PORTAA" ll valore contenuto n Wviene spostato sui a PORTAA e le linee d uscita corri-spondenti portano verso rl mondo esterno i bits corri-spondenti

Page 39: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

CaratteristichedetteporteAeBi ,r1 1::1.;iilgi .'i

Questa porta ha solo 5 linee digitalì che st collegano

con l'esterno mediante cinque pìedini denominati RA0,

RA1, RA2, RA3 e RA4. Essi occupano le posizioni supe-

riori delle due file di cui è composto il contenitore del

PlC16FB4, come mostrato nella figura.

Le informazioni che entrano ed escono da questi

piedini passano temporaneamente nel registro POR-

TAA, che occupa I'indtrizzo 5 del banco 0 dell'area dei

registri specifici SFR della RAM. Inoltre per configurare

come ingresso o uscita ognuna delle linee di questa

porta disponiamo di un registro chiamato TRISA, che

occuoa la posizione 5 del banco 1 . Come ricorderete. se

in un bit del regrstro TRISA si scrive un 1, la linea della

porta A corrispondente f unzionerà come ingresso, e se

si scrive uno O funzionerà come uscita. Ogni linea della

porta si configura in modo indipendente, per cui nella

stessa porta potremo avere contemporaneamente llnee

di ingresso e di uscita.

ll piedino RA4 è speciale, dato che oltre a compor-

tarsi come una trpica I nea di l/O, si puo programmare

perche serva come ingresso di impulsi esterni per il con-

trollo del timer TMR0, che studieremo più avanti.

'i.,È r.i,i'r -i'

Él Í;.r i liT ;i {" :'ì 11 ri' il i: i'ì :{ il È'+ 5

Le ìinee RAO-RA3 accettano livelli di rngresso TTL e

CMOS. Nella figura della pagina seguente è mostrato rl

circuito elettrico di adattamento di questt pin con le

linee di controllo e con quelle del bus dei dati del pro-

cessore, Leggere una linea della porta A significa cattu-

rare il livello logico che essa ha in quel momento, e que-

sto viene fatto ogni volta che si esegue l'istruzione"movfw PORTAA". Al contrario, quando le linee della

porta A lavorano come uscite, lo fanno tramite il latch

interno, che mantiene stabìle nel tempo l'ultimo valore

caricato in PORTAA.

Come sì puo vedere dalla figura, per portare un

livello logico su una linea della porta A, prima vlene

scritto nella linea corrìspondente del bus interno dei

dati e viene attivato il segnale di WRìTE, il quale per-

mette la scrittura di questo livello sul flip-flop dei dati.

ln questa situazione il flip-flop di configurazione

dovrebbe contenere un livello 0, ìn modo che si com-

porti come un'uscita. Con questivalori Ia porta OR avrà

uno 0 alla sua uscita e la stessa cosa succederà alla

porta AND. Questi valorì ortgineranno la conduzione

del transistor PMOS superiore e l'interdizione di quello

R/42-

NMOS inferiore. In queste condizìoni il pin

di l/O resterà collegato a VDD e quindi avrà

livello alto.

Dato che la linea dt uscita è "lecciata"

(cioè e comandata da un latch) conserverà il

suo valore logico sino a che non scrlveremo

nuovamente sul flip-flop D.

Se una linea funziona come ingresso,

quando si attiva il segnaie READ il livello

logico depositato ìn essa dall'esterno, passa

alla linea corrispondente del bus interno der

dati, e il dispositivo ad alta impedenza che li

unisce diventa conduttore, Dato che il pin è

programmato come ingresso, i due transi-

stor MOS rimangono bloccati, e la linea di

uscìta passa ad alta impedenza. Quando si

legge un piedino, si rileva il valore che ha in

quel momento, e non deve essere memoriz-

na*r J?gìr

sRA4/TOCKI$ I

ff'

Posizione dei piedini della porta A

$ii{Ft:Èe.l;rliìì,11ì,ììì,ìììrì1rìuuuuuuuttììììrìùrrr: : .rrl -lrlrìlììuììì.ìiirllr'llllllllllìììììì:llrlllllilrllrlìlìì

.-{ÉEl

l

í C*l ,tÉi.s:i +eli ì

Page 40: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

'l

LINEA DEtBUS DEI DATI

WRSCRITTURA

PORTA A

WRSCRITTURA

TRIS A

zato nel flip-flop dei dati. f informazione presente nellalinea d'ingresso, deve già essere presente al momentod'rnizio del ciclo di istruzione, e deve mantenersi stabi-le durante tutta la sua esecuzione.

È formata da otto linee che comunicano con l,esternomediante i piedini RB0-R87.

ll registro di l/O contiene le informazioni che si scam-biano con le periferiche, sr chiama PORTAB, e occupa l,in-duizzo 6 del banco O. I bits del registro associato TRISB

servono per configurare le linee di questa porta comerngressi o come uscite (1: ingressi e 0: uscite) ed e situa-to ali'indirizzo 6 del banco 1 dell'area SFR della RAM.

Come succedeva con ia porta A, anche la poria B

lra una linea speciale che ha multiplexate nel tempodue funzioni possibili. Si tratta della iinea RB0/tNT cheoltre a funzionare come linea dr l/O normale, puo fun-zionare come linea di ingresso dr interrupt esterno perl'hardware. Se si programrna questo piedino per fun-zionare come inqresso di interrupt, oqni voita che lc si

RB2

-rRB3

-i"

{RA3:RAO)

BUFFERINGRESSO

TTLVssE

RDLETTURA TRIS A

RDLETTURAPORTA A

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

i,*í,,,

,Llììì1.

l',]ììì

*rtl..:tj:rf

RBO/INT

-)RBI <-; -RB7<-* RBó

-*tt

Voo

Drstrtbuzione dei ptedini della porta B

Page 41: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

t,,

attiverà tramite un livello alto, verrà generato un inter-

rupt.

A tutte le linee di questa porta è possibile collegare

delle resìstenze di pull-up di valore elevato. collegate a

loro volta al positivo della tensione di alimentazione. Se

si vuole realizzare questa connessione dobbiamo met-

tere a zero il bit RBPU# che c'è nel registro specifico

OPTION della RAM. Quando si produce un Reset ven-

gono scollegate tutte le resistenze di pull-up, e tuttì i

piedinì della porta B vengono configurati come ingres-

si, come succedeva con la Porta A.

BUs DEI DATI

WRSCRITTURA

PORTA A

RDTETTURA PORTA B

DAGLIALTRIPINRB7:R84

Le quattro linee piu significative della porta B (RB4-

RB7) insieme. possono svolgere un compito molto inte-

ressante e pratico, orientato alla gestione delle tastiere.

Le tastiere matriciali hanno i loro pulsanti dispostì nella

confrgurazione di quattro file per quattro colonne. Per

rilevare l'attivazione di un pulsante e individuare quale

sia questo pulsante, si collegano le quattro file della

tastiera ai oiedini RB4-R87.

Le quattro colonne si collegano agli altri quattro pie-

dini della porta B (RBO-RB3), in modo da introdurre un

lìvello logico alto in modo sequenziale, uno dietro l'al-

tro. L'attivazione di un pulsante permette ìa comunica-

zione di una fila con una colonna, pertanto si avra un

P (pull-up)

(RB7:RB4)

Colleqamenti clei piedini RB4-RB7 can le lrnee di cantrollo e quelle del bus dei aati rnierno al processore

Page 42: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

livello alto, sia sulla fila che sulla colonna dove e srrua-to il pulsante premuto.

Si possono programmare i quattro piedini piu signi-ficativi della porta B, in modo che se uno di questi cam-bia il suo stato logico viene generato un interrupt.Quando si attiva un pulsante, cambia il livello logico diun piedino e si genera un interrupt, la cui routine indi-vidua il pulsante premuto conoscendo la fila e ta coton-na che sono passate a livello alto.

ll circuito elettrico di adattamento dei piedini RB4-RB7 e abbastanza complesso, ed e mostrato nella figura.

I predini RB6 e RB7 inoltre hanno una funztonespeciale, durante la funzione di scrittura del program,ma nella memoria FLASH. La scrittura in memorra sr

realizza inviando le informazioni in modo seriale tra-mite il PC, per cui sono necessari il segnale di clock eilvalore binario di ogni impulso, ossia dei dati in serie.ll piedino RB6 riceve il segnale di clock e RB7 l,ingres-so dei dati.

I , :' ,"',I

Ogni linea d'ingresso puo erogare una corrente il cuivalore massimo arriva a 20 mA, mentre un,uscita puoassorbire fino a 25 mA. Dato che esiste una limitazionenella dissipaztone massima della potenza del chip, l,as-sorbimento massimo di corrente della porta B e limita-to a 150 mA, mentre l'erogazione massima è limitata a

100 mA. La porta A, con meno linee, raggiunge la cor-rente massima di assorbimento di B0 mA e 'l 50 di ero-gazione.

Le tastiere piu comuni, impiegate nelle applicazioni conmicrocontrollori, dispongono di l6 tasti, numerati da 0a F e disposti in matrice di quattro file per quarrrocolonne. Ogni volta che si attiva un pulsante il proces-sore deve riconoscere jmmediatamente quale sia statopigrato La possibilità di generare un interrupt quandovaria lo stato logico di una delle quattro linee più signi-ficative della porta B, semplifica la rivelazione dellatastiera, per questo si collegano, come rndica la figura,le quattro linee meno significative della porta B con lequattro colonne, e le quattro file con le linee RB4-RB7della porta B.

Le lrnee meno significatrve della porta B vengonomesse a uno in modo sequenziale, in modo che inogni momento ci sia una linea a livello logico alto.

Se non ci sono pulsanti premuti le file sono scolte-gate dalle colonne e il livello logico alto inviato alle filenon puo passare alle colonne, di conseguenza noncambierà lo stato di RB4-R87.

Premendo un pulsante, ogni volta che la colonnacorrispondente a questo pulsante invra un Iivello logi-co alto, questo passerà alla fila associata e cambieràstato uno dei quattro piedini piu significativi dellaporta B, gene.ando un inte'rupt.

La routine dell'interrupt verifica ia f ila da cui arriva il

livello logico aito e la colonna da cui e partito, perdeterminare il pulsante che è stato premuto, in praticaquello che si trova all'incrocio fra ia fila e la colonna.

:

RBo 6

ffiRB2 8

RB3 9

RA2 1

-

+Vcc 'nqs 2

^

Ptc r óF84

IASTIERA MATRICIAIE 4x4

Circuito per gestire una tastiera con le linee della porta B

Page 43: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

P2l

Paro [a di confi gura zion e

e identifi cazione

I

istruzioni - che è l'unìca cosa che sa fare - e

necessaria la presenza di un clock, il cui

impulso determina la velocità di lavoro.

', ,' L'oscillatore che genera questi impulsi è

implementato dentro il circuito integrato, pero, per

regolare, selezionare e stabilizzare la frequenza di

lavoro, dobbiamo montare esternamente alcuni com-ponenti, fra i piedini OSC'l/CLKIN e OSC2/CLKOUT,

che corrispondono rispettivamente ai piedini 15 e 16

del contenitore.Un'istruzione impiega normalmente 4 periodi di

clock ad essere eseguita, e se sitratta di un'istruzione di

salto, impiega il doppio.

Secondo il tipo di componenti esternì che montere-mo, si configurano quattro tipi di oscillatori:

Tipo RC: è un oscillatore di basso costo poco stabi-

le. Necessita solo di una resistenza e di un condensato-

re esterno.

b.tr*}H

4t

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

Page 44: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

,#.2l

CRISTAL

Schema generale dell'interfaccia del cristallo di quarzoe dei condensatori esterni. La resistenza RS si utrltzza solo nella versione spectale ad alta frequenza

TIPO HS: e un oscillatore ad altavelocità molto stabile. Funziona a fre-n rcnTP .nmnroqo rra 4 e 20 MhZ.Utilizza un cristallo di quarzo o un riso-

natore ceramico, collegato a due con-densatori di disaccoppiamento.

TIPO XT: impiega anch'esso un cri-stallo al quarzo o un risonatore cerami-.o colleoato ad rrn condensatore.L:vor.: in frpnrronzo modio .^mnrp<a

tra '100 KHz e 4 MHz.TIPO LP: lmpiegato in applicazioni

a basso consumo, quindi per basse fre-quenze - infatti a maggiore velocità si

ha maggiore consumo -, usa cristalli orisonatori e le frenrenze di lavoro oscil-

lano tra 35 e 200 KHz

Nella figura si mostra lo schema

degli oscillatori HS, XT e LP che usano

un cristallo di quarzo e due condensa-tori di dìsaccoppiamento, il cui valore è

specificato dal fabbricante in f unzioneeloll: fronrronz:

é3, *=s$j, g *3 *.{" àj g,lE

-**StEtLeè==*#E

lmpiegando alcune porte logiche TTL

molto spmnlici si nnssono costruireSchema elettrico dell'oscillatore di cristallo a risonanza parallela

+F + :,ìÈ E €i4 +:$ $ .€ e+ *.t :*, $'# t*É ÈH +ÉÉj+ iÈ'* *+É

Page 45: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

MIGROGONÍROLtERRipaero dei, concelti sullei frequenzc di

ut '

330ko AGII ALTRIETEMENTI

74ASO4 74ASO4

XTAL

"t'. iln, i,

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

Schema elettrico dell'osctllatore di cristallo a risonanza seriale.

oscillatori che hanno un otttmo comportamento e

un'ampia gamma di frequenza. Ci sono due tipi di oscil-

latori al quarzo: a risonanza parallela e a rtsonanza in

serie.

lì circuito oscillatore con risonanza parallela illustra-

to nella figura oscilla aìla frequenza deì cristallo che

incorpora. La porta invertente 74A504 realizza un'in'versione di fase di 180'

ll circuito oscillatore a risonanza in serie - il modello

nportato nelia figura - permette un'elevata precisione

nella generazione della frequenza, che e determinata

Oar crlStallO 0r QUafZO.I

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

: Risiede all'indirizzo 2007N della memoria FLASH, che è

r,serva'la pe' un compito speciale, infatti e accessibi e

, solamente durante il processo di scrittura del program-

, ma nel PlC16FB4.. OLresta reoistro di 14 bits riceve la denominazione di: "Parola di configurazione". Quando viene scritto il pro-

13-

PAROLA DI CONFIGURAZIONE

330ko

PROTEZIONE DELTA MEMORIA

TEMPORIZATORE "POWER-UP"

WATCHDOG

TIPO OSCTU.ATORE

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

+ia"ÈÉl!.tli!i;r;,ì+ +i++iÌ :::+i:l+..*'4,;,.+3fla':i *t;a;iìi ,'f 1.'1qq+.+11:11;+ # ii ti+ r*+ l*i ;rf sii:'Èr:iÌ È"i:É *í gÈÉi+

Page 46: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

gramma dell'applicazione, dobbiamo memorizzare inessa un determinato valore binario che andrà a definirealcune caratteristiche fondamentali del funzionamentodel microcontrollore.

La parola di configurazione ha 14 bits che si divido-no in 4 campi. ognuno dei quali controlla una caratte-ristica del comportamento del PIC:'1. Campo dei bits che selezionano il tipo dì oscillatore.2. Campo dei bits che controllano il Watchdog.3. Campo dei bits che controllano il temporizzatore di

"POWER-UP".

4. Campo dei bits che controllano la protezione dellamemofla.

Quando sr memorizza un programma df applicazione inun PlC, bisogna scrivere la parola di configurazione, e inuno der suoi campi dobbiamo specificare il tipo di oscil-latore fra i quattro possibili, con cui funzionerà il micro-controllore.

A questo scopo sono riservati i due bits meno signi-ficativi di questa parola, che si chramano FOSC'1 e

FOSC0, nei quali bisogna scrivere i codici indicati nellatabella per specificare l'oscillatore utilizzato.

In molte situazioni, il fabbricante o i progettisti di unprodotto governato da un microcontrollore, non voglio-no che si conosca il programma e i dati presenti nellamemoria. In altri casi questo non è importante, quindisia il programma che i dati possono essere letti.

| 10 bits di maggior peso della parola di configura-zione sono denominati CP (Code Protection) e0 nannoil compito di proteggere o meno l'accesso alla memoriadei codicì.

Se si scrive un 1 nei bits CB la memoria sarà spro-tetta, e si potrà leggere liberamente. Nel caso che i bitsCP siano a 0, il programma non si potrà leggere, evi-

tando le copie. Owiamente il programma non si potrànemmeno sovrascrivere, né sarà permesso l'accesso allamemoria EEPROM dei dati.

Se si prova a modificare i bits CP passando da 0 a 'l

si provoca la cancellazione completa della EEpROM.

i. i'.!.,1,"i')ì,i;; i, 1 ; I i-1 i. i ,-rrr i :" i:t: iti ' !,::

ll WTD o Watchdog Timer, è un temporizzatore cheserve per controllare che il corretto sviluppo del pro-cesso di elaborazione delle istruzioni avvenga secon-do una determinata cadenza. Se per esempio, il pro-gramma entra in un ciclo chiuso da cui non riesce piùad uscire, il Watchdog si attiva e resetta il program-ma.

La parola di configurazione dispone di un bit chia-mato WTDE che controlla il Watchdog. Se WTDE = iil Watchdog è attivato e controlla l'elaborazione delleistruzioni, Se WTDE = 0 il Watchdoq è disattivato.

ll lemporizzatore Power-Up controlla un tempo fissodt 72 ms e serve ad evitare problemi durante il colle-gamento iniziale della tensione di alimenTazrone alm icrocontrollore.

A volte la tensione di alimentazione, nel momen-to immediatamente successivo all'accensione, è

instabile e conviene ritardare la sua applicazione allacircuiteria interna del PIC sino alla sua comoleta sta-bilizzazione.

Nella parola di configurazione il bit pWRTE# si usaper attivare o disattivare il temporizzatore Power-Up,che ritarda la connessione dell'alimentazione esternaalla circuiteria interna.

. ': - : , : :

Similmente a quello che succede con la parola di confi-gurazione, a cui è riservato I'indirizzo 2007H dellamemoria di programma, esistono altre quattro posizio-ni che sono riservate per le parole di identificazione e

che occupano gli indirizzi dal 2000H al 2003H. Nonsono accessibili durante il funzionamento normale delPlC, e possono solo essere letti o scritti durante il pro-cesso di memorizzazione del programma.

Nelle parole di identificazione sono solo validi i 4bits meno significativi di ogni posizione da 14 bits.Esse sono utilizzate per immagazzinare codici di iden-tificazione, numeri di serie, chiavi segrete, dati di fab-bricazrone, numerì sequenziali eccetera.

RC,| I

XT 0 I

Page 47: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

It temporizzatore TMRO

_ { ella maggior parte delìe applicazioni inlÉÉd, iii?

- " " cui intervengono dei microcontroller tro-

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

possono concatenare diversi, in modo che quandouno arriva a zero, decrementi di una unita il successr-

vo e ripeta il ciclo. Questo procedimento è moltosemplice e molto preciso, perche conoscendo il

numero di istruzioni da eseguire, si deduce il tempo+^+-l^ ^^-^^'-'r^ -! pspnrrirp il ricln rnmnlglg.lultru I rrt r))dt tu du E)qvuI E il LtLtu LUI tP

L'inconveniente principale nel dedicare il proces-

sore a compiti di cronometro, è che vengono ipote-' r rta lo cr ro ricnrca nor roalizzzro allro tLdre re 5ue r5ur5u,-, lpefazlonl,

inoltre non potrebbero essere gestiti gli interrupt,perche significherebbe fermare il conteggio deltcmnn I lomnorizzatori sonn disnositivi hafdwareausiliari integrati nel microprocessore, e sono dedi-catr alla misura del tempo, scaricando da questoi:irnrn il nrnrpccnrp

i . r-: '." :- i" Àì; r aj :. I r; ::fl ilí fl+4-: iii.+";Lllè"i"{"t f.; L'

':u

È un contatore di n bit che si incrementa o decrementaognì volta che riceve un impulso di clock In caso di

Coricore un registro con un volore

De*emenfore il registro

Registro=Q

per il controllo del tempo medrante tl decremento di un regrstro

FINE

i:

ruIMPULSI DI CTOCK

-:

SEGNALATORE

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

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

Page 48: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

CARICO DEt VATORE INIZIATE

j-1_ft__[aINGRESSO DEGLI IMPUTSI

Schema e funzionamento del temporizzatore TMR0.

dpcrpmento orando il valore del contatore arriva a

zero, viene attivato un bit ausiliario che funzionacome segnalatore, o "f lag", e va a 1 avvisando del-l'accaduto. In caso che il contatore incrementi il suo

valore con gli impulsi del clock, quando supera il

valore massimo e arriva I'impulso che fa passare i

bits del valore di conteggio, da tutti uno a tutti zero,

il segnalatore va a 1 come indicato nel disegno.ll grande vantaggio di utilizzare temporizzatori, è

scarica're il processore dai compiti di controllo del

tempo. Se rl processore vuole sapere quando il timerha terminato il suo conteggio, deve vigilare sulla

messa a uno del segnalatore o flag. Questa conti-nua esplorazione del flag sottrae tempo di esecu-

zione al processore, per questo esiste un'altra possi-

bilità più immediata e chiara, che consiste nel pro-

durre un interrupt ogni volta che il contatore finisceil suo ciclo.

' .,.,,',,,..i,;.-, t.r,,, ',',t:'.: :.i: '',1 ,:.r.'.,,

Questo modello di microcontroller dispone di vari

temporizzatori integrati nel chip. Un paio di questidispositivi sono utilizzati per ritardare di un tempocostante la messa in marcia del PlC, durante la prima

accensione o in caso di reset. Quelli che ci interessa-

no sono quelli programmabili, e che sono dedicati alla

misura del tempo all'interno dei compiti a cui è dedi-cato il microcontroller. Per ouesta finalità il PlC16F84

dispone di due temporizzatori da 8 bits: il TMR0 cheè di utiìizzo generale e il WDT, Watchdog Timer chevigila sul corretto tempo di elaborazione delle istru-zioni del programma, resettando il processore in caso

di anomalia.

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

"8

TMRO SEGNALAZIONEDI OVERFTOW

È formato da un contatore ascendente a 8 bits che puo

essere caricato inizialmente con oualsiasi valore e suc-

cessivamente si incrementa ad ogni impulso di clock,

sino a superare il valore massimo, cioè il passaggio dal

maggior valore di conteggio (tutti uno) al minore (tutti

zero). Quando ìl contatore passa dal valore FFH al valo-

re 00H si attiva il flag.

ll temporizzatore TMR0 può realizzare due funzioniprincipali:

1u. Temporizzatore o controllore del tempo. Ha il

compito di misurare il tempo fra il carìco di un valore

iniziale, e i successivi incrementi ad ogni ciclo di rstru-

zione (Fosc/4) sino al superamento del valore massimo,

o overflow, che puo essere rivelato mediante ìl flag oproducendo un interrupt.

2". Contatore di eventi. In questo caso ogni evento

che deve essere contato, è rappresentato dall'impulsodiclock che siapplica tramite il pin RA4/TOCKl. Se va in

overflow, il contatore mette il flag a 1 oppure produce

un interruot.Per fare in modo che il TMR0 funzioni come conta-

tore di eventi esterni, dobbiamo programmare il piedi-no RA4/TOCKl come ingresso, e caricare alcuni bits del

registro specifico OPTION con determinati valori. ll regi-

stro con il valore del contatore TMR0 occuoa l'indirizzo'l del banco O della RAM, mentre il registro OPTION - di

cui alcuni bits programmano il funzionamento del

TMRO - occupa l'tndinzzo 1 del banco 1 dell'area SFR

della RAN/.

Come vedremo in segurto, il registro OPTION dispo-ne di due bits che determinano il comportamento del

temporizzatore come contatore di impulsi. Uno di que-

Page 49: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

nnÉ

BANCO O BANCO I

00

0l

02

03

ll contatore TMR) occupa l'indiilzzo 1 del banco 0e il registro OPTION, di cui alcuni bits programmano il funzionamentodel TMR), occupa l'indirizzo 1 del banco 1.

sti bits si chiama TOCS, e se vale 1 il IMR0 funzionacome contatore di impulsi, se vale 0 come temporizza-tore di ulilizzo generale. L'altro bit chiamato TOSE, sce-

glie il fronte attivo per il conteggio del segnale applica-

: to al pin RA4/TOCKl, con il quale si determinal'incremento del contatore. 5e TOSE = 1 il

f ronte attivo sarà orrello cli cliscesa e se_:-_ ^.

v, Yvr"v

TOSE = O sarà quello di salita.

. ,,',, . .

l

ln molte occasioni, sia il TMR0 che il

Watchdog devono gestire lunghi intervalli di+^m^^ ^ ^^-^--'+^Lc'pu, c rrsus>:rroì'ìo di aumentare il tempoche intercorre fra ogni impulso di clock, per

rlaroare ilncremenlo, e 0r conseguenza

aumentare la durata dell'rntervallo. Per far' fronte a questa necessità, si dispone di un

nlivicnro di {ronranZa pfogfammabile, Che

divide la frequenza di clock per i diversi valo-:, fl possr0rlr.

Abbiamo un solo divisore di frequenza, cre' -J^..^ ----agndto al TMR0 o alucvc E))ct c d))r

, Watchdog; per fare questa scelta disponiamodi un bit nel regLstro OPTION, chiamato PSA.

Se PSA = 0 il divisore di frequenza è applica-

to al TMR0, con il quale funziona come

Predivrsore, o Prescaler. In questo modo gli

impulsi del clock passano prima attraverso ìl

divisore di frequenza, vengono divisi per il valore scelto

e sono poi applicati al contatore TMR0 per ottenere l'in-cremento di valore. Gli impulsi del clock possono pro-

venire dal proprio oscillatore interno, con una frequen-

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

Schema interno del TMRj con

PSA

i bits di programmazione del registro OPTION.

Page 50: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

24

za di Foscl4, o da impulsi esterni applicati al piedinoRA4/TOCKl. Questi impulsi passano al Prescaler che li

divide per un valore impostato dai tre bits meno signifi-cativi di OPTION (PS2, PS1, PSO).

Per calcolare il tempo che controlla il temporizzato-re TMR0, dobbiamo tener presente il valore caricato ini-zialmente e il fattore di divisione del Presca er, in accor-do ron la spnrrpntc formula:

vernano il comportamento dei temporizzatori TMR0 e

WDT; inoltre il bit RBPU# serve per collegare o menolo rp<iqton zo dr nrrll-r rn doll: nnrt: R I In :ltrn hit

INITFDG doridp 611;lp crrì il f rnn+n r1-ii,in nor l,intar_yuurL )dld ll llUlrLC dLLIVU pcl llllLCl-lInt a<tornn rho nni.. rnlJnar+n rllr narlrrupL sJrsr rrv !rrE vwLt d c))crc LUtìtr9dtu dtd PUtLdRB0/lNT. Nella figura è indicata Ia distribuzione e lanomenclatura dei bits del registro OPTION così comel: f r rnzinnp rhp nnnrrnn di esqi romnip a seconda del|||/|!9J!t

valore. che Ouo essere 'l o 0.

Temporizzazione = 4 . Tosc .

Valore caricato in TMRO .

Fattore di divisione delPrescaler

Valore da caricare in TMR0 =Temporizzazione I

(4 . Tosc . Fattore didivisione del Prescaler)

In qualsiasi momento si

nr ro lpc c e re il va lorc n rtr\en I p

in TMRO senza influenzare il

rnnteooin ner rrri si utilizzal'istruzione "movfTVlR0, W"che eariea ncl renistro di lavo-ro il vàlore del contatore nel

momento in cui sr esegue l'i-qtrrrzinno l\loll: f inr r". dall.Jrru4rvr,L. rrVUlO UEIIO

n:nin: nrororlonlo p rinnrl-:fnyuyil ru rL! ! llPwlLoLw

lo schema interno del TMR0, e

si ouo notare l'esistenza di un

circuito che ritarda di due ciclii rontpooio npr sinrrontzzare/ Y9 r"'L'

rl momento dell'incrementonrndnttn el:l <onn:lo ^c+^rh^PrwuvLLv uor Jqvrrors crrrr r I(,

TOCKI con il quale si produco-no gli impulsi del clock rnter-no. Quando si scrive il TN/R0 si

ritarda di 2 cicli il suo reincre-mento e si pone a 0 il divisoredi f "cnr tFnTà o Prpsr:ler.

i. t, ;1i';, rj-j,;j"Ti? r-i ij i'' 1'? i.,l i4

Ò r ro< ln ron i< t rn naar tnl lr nac i\{uLrLv rLVrJLrv vLLupd lC pU)l-

zione ldel banco l nell'areaSFR della RAM, che ha il com-nitn di rontroll:re le risorse del

microcontroller. I bits di

OPIION, principalmente go-

P50

0I0I0I0I

OPTION

Divisione delTMRO

1:2l:4l:8I:lól:32l:64l :128l:256

Divisione delWDT

l:ll:2lz4l:8l:lól:32l:64l:128

o_:::' ! i 1

i : :?' ly' a, ? :' ! ::^ l :-' b',!: :n'': l

P52:P50 Vqlori con i quoli funziono il divisore difrequenzo

PS2

0000IIII

PSA:

TOSE:

TOCS:

INTEDG:

RBPU#:

P5I

00II00II

Asseqnozione del divisore dil= lllivisore di frequenze si

0= ll divisore di fre{uenze si

Tipo di fronfe in TOCKIl= Incremento di TMRO con fronte di disceso0= Incremento di TMRO con fronte di solito

Tipo di clock per il TMR0l= lmpulso irì inqresso dq TOCKI0= lmbulso di clóck interno Fosc/4

Frole ottivo per interrupt esternol= Fronte di lolito0= Fronte di disceso

Resistenze di pull-up Porto B

I = Scolleoote0= Colleg"ote

frequenzeossèqno o WDTosseéno q TMRO

(contotore)(temporizzotore)

É -+ È g"++i+ e";=a++ +r :.it,gs +S r.+.* É È1+resc 5+ i+ rÈ :ÈiH ÉÉ *+È {i' lil

Page 51: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

j

MICROCONTROLLERll Ytfcrfchdog

Un caneche morde

Qcre-sto e Arbo, un cane mtcrorobat castruita dalla Sony, che sa anche morclere. E una mascotte dtsegnata

D-or coloTo che abitano rn città, e non devc:rtt,t preoccuparsi di portare tl cane a spasso, dargli da mangtare, evitare che abbai di rtatte ecc

PuÒ capire 14 messaggt, o ordtni del padrr:ne, rrnpara percl'te

è senstbile alle carezze e ai castrgttt. Gioca con la palla, segue rl paclrone, abbara, dice rl suo nome, alza la zampa quando fa prpì ecc.

Cort la sua telecamera vtgila -o rnorde li estraner, e non ha ntente a che vedere con tlWatcltcloq cite contiene rl PIC e che dev-. solo resettare rl mrcrocontroller, quando ll programma di lavoro non è eseguita normalmente

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

ì.,,ìr'

=.!: .,

rt4tsf!!.rrrì1l11lrr1rrìr1ì1ìì1ìììììììììììììrì:rr....tt........:aN\t\ttttnt4\

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

#È-

Page 52: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

(Watchdog Timer) è un contatore ascendente a

B bits che ha Ia proprietà di mandare il micro-

+ controller in reset ogni volta che va in overflow.. n differenza del TMR0, il Watchdog non dispo-

ne di segnalatori, ne genera interrupt alla fine del ciclo,

l'unica cosa che fa e provocare il reset del microproces-

sore, il quale ricomincia ad eseguire il programma prin-

cipale dalla prima istruzione 0000H della memoria dei

codici (Vector Reset).

L'obiettivo del Watchdog è verificare la corretta ela-

borazione delle istruzioni del orooramma. Se tutto va

lNtzlAlrzzAztoNE (RESET)

INIZIO TEMPORIZZAZIONE WDT

ESECUZIONE DELLE ISTRUZIONI

FINETEMPORIZZAZIONE

WDT

ESECUZIONECTRWDT

{cANCErrO WDT)

bene, prima che il Watchdog termini ìa sua temporiz-zaztone, il programma gli fornisce un'istruzione che locancella e reinizia ìl conteggio, in altre parole effettuaun "refresh". Se il programma si è "piantato", e non

sono state eseguite le istruzioni secondo le previsioni, il

programma non fornirà l'istruzione di refresh, di con-

seguenza il WTD andrà in overflow e verrà generato un

reset. Con quest'azione si ottiene che il microcontrollerinizi nuovamente il programma, ed eviti la causa del

blocco. Un programma si puo bloccare perche, ad

esempio, entra in un ciclo infinito, o perché necessita di

un segnale per uscirne che non arriva, ecc.

Nell'organigramma di attuazione de

Watchdog si osserva che alla fine della tem-porizzazione del WDR si esegue l'istruzione"clrwdt", si cancella il te'nporizzatore e rico-

mincia il conteggio. Se non si esegue questa

istruzione, qualcosa non ha funzionato, quin-di si npnpra rn reset. Per controllare il

Watchdog si aggiunge l'istruzione "clrwdt" in

certi punti del programma su cui si vuole vigi-t^-^ . ^^ ^, ,^-+î i-*.,,:ione il contatore tornatdtE. LUt | \-1uE)Ld r)u uz

a 0 e inizia il conteggio, evitando l'overflowSe il programma non è eseguito normalmen-te, l'istruzione "cìrwdt" non arriverà in

tempo, il WDT andrà in overflow provocandoil reset del sistema, come nmedio per supera-

re l'anomalia.ll refresh o reinizio del conteggio del WDl,

si puo produrre anche quando si esegue I'i-strr rzione "sleen" che serve ner norre il PIC inJ|!!y,

uno stato di basso consumo, fermando I'oscil-

latore interno e sopprimendo l'elaborazione

delle istruzioni. Anche se il WDT si cancella

con l'istruzione "sleep", non si ferma, a meno

che non venga fatto da programma.

:, ,,,".' . ' '' : ,

ll Watchdog si attiva e si disattiva con il valore

del bit WDTE della Parola di Configurazione.come abbiamo visto in precedenza.

La frequenza di lavoro di questo temporiz-zatore e sempre interna e indipendente, origi-nata da un oscillatore RC proprio. Quando si

assegna il Divisore di frequenza al Watchdog,questo lavora come postdivisore, al contrariodi come lavora con il TN/RO. In questo modo

b

tlO

Organigramma sull'attuazione del Watchdog. Se il programma si eseErue

normalmente riceverà in tempo l'istruzrone clrwdt e non deborderà. Se qualcosa

va male, o questa istruzione non arriva in tempo, verrà generato un reset.

Page 53: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

ilTICROCONÍROLLER

IMPUTSI DI CLOCKPER TMRO

TOSC

ArrrvATo/DISATTIVATO

WDTE(PAROLA Dr CONFTGURAZTONE)

Schema interno del funzionamento del Watchdog.

gli impulsi che genera il WDT passano al Divisore di fre-quenza, che li divide per ilvalore che selezioneremo con

i tre bits meno significativi del registro OPTION.

Se il bit PSA neì registro OPTION e a 1, il Divisore difroatanza si annlir,a al WDT. E curioso notare che il

Watchdog non dispone di nessun registro nell'area SFR

della RAM.

La ragione si deve al fatto che non si carica con

alcun valore iniziale, iniziando sempre da zero sino al-

l'overflow.Ogni volta che clrwdt produce un refresh torna a

zero e inizta a contare nuovamente. Nel registro STATO

esiste un bit chiamato TO# che passa a valore 0 quando

il WDT va in overflow, così discrimina il motivo per cui

e avvenuto il reset.

ll temporizzatore WDT è preprogrammato per control-lare un tempo di 'lB ms, pero regolando il Divisore dr

8-

Ps2.Pso7ffiKAt TMRO

ffi PsA

/l

OVERFTOW WDT(RESET)

frequenza si puo fare in modo che questo tempo si elevì

fino ad un massimo di 2,3 secondi.

ESEMPIOln un programma si desidera controllare che un deter-^;^^+^ -;-t^ -^^^^sto da 200 istruztoni normaliI Ilil IA LV ttllWt lvt r lPV

senza nessuna di salto, sia eseguifo esattamente 100

volte. Si lavora con un PlCl6FB4 con un crtstallo diquarzo a 4 Mhz e si utilizza il Watchdog per controlla-re questo tempo, che può essere critrco nell'applìca-ztone.

ll controllo del tempo del ciclo, richiede di postzio-

nare davanti allo stesso un'istruzione "clrwdt", che

resetta il Watchdog e inrzializza la sua temporizzazio-ne. Al termine del processo di 100 ciclr, collocheremonel programma princrpale un'altra istruzione di refre-sh del Watchdog. Con quale temporizzazione si deveprogrammare il Watchdog, per ottenere un reset nelrtca ciz .t t^Òra+^ il famnn rha imniaaa il rirl^ 1A ^..^Ld)u )/d JUlJcldLU ll Lcl t tPw rt tc u t tPtcva // L/!ru ou cJ)c-

ro o<aattitn 1îtît rrnlfo?

Page 54: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

P26

CLOCK PER TMRO

PSAATTIVAZIONE

DEt WDTwDrE)

OVERFTOWDEL WDT

Bits del registro OPTION che intervengono nel comportamento del Watchdog.

SOLUZIONE

Dato che il ciclo consta di 200 istruzioninormali, iltempo che dura ogni istruzione sarà:

Ciclo lstruzione= 4. Tosc = 4.250ns = 1.000 ns = 1 !sTempo dì Ciclo = 200 Ciclo lfruzione = 200 . 1 ps = 200 ps

TempoTotale = 100 Tempo di Ciclo= 100. 200 ;rs=20.000 ps = 20 ms

ll WDT deve essere programmato per andare in over-flow 20 ms dopo il refresh. Gli impulsi per il WDT sonogenerati dail'oscillatore RC interno, proprio e indipen-dente dal orincioale.

Con l'obiettivo di precisare tutte le caratteristicheprincipali di cui bisogna tenere conto per gestire cor-rettamente il Watchdog, forniamo un riassunto di

quelle piu importanti e una figura che mostra grafica-mente i bits dì controllo che intervengono nel suocomportamento.

RIASSU NTO DELLE SPECIFICH E* ll WDT è un contatore che genera un reset ogni

volta che va in overflow.

" È controllato da un oscrllatore RC interno ed

PS2:PSO

At TMRO

P5A

indipendente dall'oscillatore prrncipale del sistema.- La temporizzazione nominale e di I B ms, anche se

puo essere aumentato con il valore che si sceglie nelDivisore di frequenza fra 1:2, 1 :4, .....1 :128, ottenendocon quest'ultimo caso una temporizzazione massima di2,3 secondt.

" Per stabilire il range di divisioni del Divisore diFrequenza si utilizzano i tre bits meno significativi diOPTION (P52, PSl e PS)).

* Per prevenire l'overflow e i/ reset bisogna cancel-lare il WDT prima del termine della temporizzazione

con I'istruzione "clrwdt" o "sleep".* ll WDT si attiva o drsattiva con un bit della Parola

di Configurazione (WDTE).* Se il bit PSA è a 1 nel registro OPTION, tl Divtsore

rli freottenza P assp.,nato al WDT.* Quando si esegue I'istrulone "sleep" si entra in

modo basso consumo e si ferma tl srstema e l'elabora-zione delle istruzioni. ll WDT si cancella, pero non si

ferma e continua rl conteggio.* Nel modo basso consumo st entra con lo s/eep e

termina con I'azione del reset esterno tramite MCLR#,

o anche all'overflow del WDT.* Uscendo dal modo basso consumo si ricomincia

o<onttanrla l'i<frr tzinna rho <oat ra nt talls r'li <l',-,,,- -, -,-"eP.

Page 55: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

La memoriadet programma

farchitettura Harvard dei PIC,

divide la memoria in due zone

indipendenti, una destinata a

contenere le istruzioni e l'altra i

dati. Il primo vantaggio che

deriva dall'architettura Harvard

e che nermette l'accesso simul-

taneo ad entrambe le memo-rie, in modo che il processore

possa leggere un'istruzione diUn progetto esclusivo per il PlC|6FB4.

MEMORIADEI DATI

tNDtRtzzo

DATO

L'architettura Harvard del PIC rende indipendente la memoria del programma da quella dei dati.

MEMORIA DIPROGMMMA

tNDtRlzzo,13

ISfRUZIONE

'14

, ,orr)uo," il ,**rirlru'" i ttu, a"g i ,:,iiri;i nunì,o t s t*,con i quali si può indirizzare uno spazio di B K posizioni di memoria.ll PlCl6FA ha solo implementate le prime 1 024 posizioni.

diversi modelli della gamma

media. Per questo il bus deglitndirizzi, ovvero l'insieme di

linee che trasportano il valore

dell'indirizzo al quale si deve

accedere nella memoria - che

e generato dal Program

Counter PC - non ha solo diecilinpp rhe s:rphhprn nrtelle suf-,r Je,LUvL'v Yr

firienti ner oestire la memoriaYLr YrJ!'r ! 'v '

da 1 K, ma 13 con le quali è

possibìle induizzare capacità

MEMORIA DIPROGRAMMA FIASH

tNDtRrzzo

/,o

ISTRUZIONE

/,0

tNDtRtzzo

/,I

I

','iXtl"I

I

I

DATO

/"

BANcoolanNco r

PROCESSORE

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

Così, il processore attende a due istruzioni alla volta,

conseguendo un parallelismo implicito chiamato seg-

mentazione. che migliora notevolmente il rendimentodel sistema; fatto che in pratica si traduce nella possi-

bilità di eseguire un elevato numero di istruzioni al

secondo. Se guardiamo il progetto costruttivo del

PlC16FB4, notiamo che la memoria dì programma ha

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

memoria RAN/ è costituita da due banchi da '128 byte

ciascuno, lasciando gli altri banchi non implementati.

,: :, .' ,

':'l "i

MICROCHIP non ha realtzzalo un progetto specificoper il PIC16FB4,l'architettura utilizzala è la stessa per

l..- 14 BITS +l

Page 56: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

fino a 8 K posizìoni di memoria del programma tipoFLASH. Nel caso del PlCl6FB4 è stato fisicamente

implementato solo il primo K, sarebbe a dire, dall'indi-rizzo 0000 H al 03FF H

;'y,:; ;';:1:!; j,1:. i..j :j r:'irí. I ::i :- I

Nei PIC di gamma media abbiamo due indirizzi della

memoria di programma che sono riservati per espleta-

re due funzioni principali. Un indirizzo riservato è lo0000 H, che è il primo della mappa. ln esso è ubicato

Vettore di Reset o Reinizializzazione. ll suo compito è

MEMORIA DIPROGR/AM^tu4

0000 H

O3FF H

I due indirizzi riservati nella memoria di programma. La 0000 Hper il Vettore dl Reset e la 0004 H per il Vettore di lnterrupt.

, ll fatto che il programma principale cominci all'indì-' rizzo 0000 H e la routine di interrupt al 0004 H non

cinnifir: rhp lo rpstanti istruzioni continrrino seouen-

, zialmente, altrimenti il programma principale intacche-

, rebbe la routine di interrupt che inizia quattro posrzro-

ni dopo. Normalmente all'indirizzo del vettore si collo-

, ca un'struzione di salto incondrzionato al vero indiriz-

' zo dove inizia il programma. Per esempio, se il pro-

; gramma principale - con l'obiett vo di salvare il Vettore: di Interrupt - si decide di farlo iniziare all'indirizzo 0005, H, all'indirizzo 0000 H, viene collocato un GOTO alla

direzione 0005 H, come si puo vedere dal seguente: OrOOfamma:

RADIX HEX ;l valori si rappresentano in esadecimale

Goto inizio ;Salto all'istruzione con etichetta inizio

F un renistro da 13 hits rhe ronlienc nli indirizzi dell'i-struzione successiva che deve eseguire ii processore.

Dato che i registri della RAM sono di 8 bits, il valore delPC si i'nnlempnta qnnra drre di essi ll rcnistro PCL del-

l'area SFR della RAM contiene gli 8 bits meno significa-tirrr dpl PC o acr^trn,a le nosizione 2 dei drre banchi. | 5! L vLluvu,u PvJ,L,vl

tk

supportare la prima istruzione del

programma principale, che e quellarho o<anrro il nrnroccr,, r.,_-,_-Jre oopo cne

è stato effettuato un reset.T-- ì^ -i+.^ --.,-^ il -^-^+ -l ^-^

duce con l'accensione del micro-

controller nel momento in cui si

applica la tensìone di alimentazio-ne, il programma che esegue il

microcontroller rnizia all'indirizzo0000 H.

L'altro indirizzo riservalo è lo

0004 H, in cui alloggia il Vettore dilntorrr rni (o nol nrnnr-y,amma e pre-

visto un interrupt, la routine che loriguarda ha la sua prima istruzione

all'indkizzo 0004 H.

12 87{s

PCLATH

ÍiGli B bits meno significatiu a" iìiìr,eaono ntel registro PCL e i 5 più significativi nel PCLATH.

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

CONTATORE DI PROGRAMMA

432rO

Page 57: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

frilc

-2

CONTATORE DI PROGRAMMA

< | 0:0>

cano dalle Iinee del bus dei datiinterno al processore. | 5 bitspiu significativi, invece, si rice-vono tramite i bits <4:0> delregistro PCLATH.

Nell'istruzione di salto GOTOo CALL I'induizzo del salto chesi carica nel PC arriva dagli 11

bits meno significativi del codi-ce OP dell'istruzione, e dai bits<4:3> del PCLATH.

Lo stack è un insieme di registriche contengono le informazio-ni in una forma particolare,

dato che, sia il carico che loscarico è speciale. Nel caso del

PIC'16F84 lo stack è formato da B registri da 13 bitsognuno, ed è dotato di una struttura di carico e scari-co tipo LIFO, acronimo inglese che significa "ultimo adentrare primo ad uscire". Quando si carica un'informa-zione nello stack, si introduce sempre al livello 'l

Se precedentemente avevamo un'informazione allivello 1, questa viene spostata al livello 2 e quella del

SCARTCO

STACK \I3

I-'INFORMAZIONEstSPosTAAt LIVELLO

PRECEDENTE

Anche lo scarico dello stack si realizza al livello 1,

spostando l'informazione al livello precedente

,-!, i,

'll

CODICE OP ISTRUZIONE

PCTATH

Nell'istruzione di salto il PC vrene caricatocon gli 11 bits meno stgnificativi del codice OP e i bits <4;3> del reqistro 7CLATH

bits piu significativi del PC risiedono nei 5 bits menosignifrcativr del registro PCLATH, che occupa l'induizzo0A H nei due banchi della memoria dei dati. Il registroPCL si può leggere e scrivere direttamente, mentre il

PCH è accessibile in scrittura attraverso i 5 bits menosignificativi di PCTATH In quelle istruzjoni in cui la

destinazione è il PC, gli 8 bits meno significativi si cari-

cARrco\13

STACK

34

T.INFORMMIONE5I SPOSTA AtHVELTO SUCCESSTVO

Caricando lo stack al livello 1

l'informazione di ogni livello trasla al successivo

Page 58: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

NfiICROCONTROTTER

livello 2 al livello 3 e così di seguito; in aìtre parole,

quando si carica l'rnformazione aì ìivello 1, quello che

c'era memorizzato in ogni livello si sposta al seguente

livello.Se lo stack e nieno e contiene informazioni in tutti

qli otto livelli, rl carico di un nuovo dato produce lo spo-

l3

L'istruzione CALL o I'interrupt,provocano il caricamento automatico del contenuto del PIC nello stack

Le istruzioni di RITORNO della subroutineo dell'interrupt scaricano immediatamente il contenuto del livello 1 dello stack sopra il PC

rì-- cARrco(cArr E TNTERRUPT)

stamento dell'informazione di ogni livello al seguente,

quindi si perderà quella che esisteva al livello B.

Per recuperare le informazìoni dallo stack, lo spo-

stamento delle informazioni si realizza al rovescio;

esce quella che sta occupando il livello 1, e ìn esso

viene caricata quella del livello 2. Le informazioni si

RETTW,RETFIE)

spostano al livello precedente

e il dato che esce dal livello 1

sarà l'ultimo che è stato inse-

rrto.

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

Lo stack del PIC funzlonaautomaticamente, ed e diret-tamente relazionato con il

contenuto del PC. Lo stack si

carica sul livello 1 con il conte-nuto del PC Quando lo stack

scarica l'informazione del livel-

lo 1, la passa al PC. Ogni voltarhp ci pconrro l'istrr rzinne CALL

o che si produce un interrupt,è necessario salvare il conte-nuto del PC per sapere succes-

sivamente ritornare al punto

dove avevamo lasciato il pro-

gramma princrpale.

L'esecuzione di un'istruzio-ne CALL o di un interrupt,produce lo spostamento auto-matico del contenuto del PC

al livello 1 dello stack.

fultima istruzione di una

subroutine o di una routined'interrupt è di RITORNO,

quando questa è eseguitaproduce lo scarico automaticodel livello 1 dello stack sopra il

PC, restituendo il f lusso di

controllo al programma prin-

cipale, nel punto in cui era

stato abbandonato.ll programmatore deve te-

nere conto che non esistono

segnalazioni che indicanoquando lo stack è pieno, ed èsua responsabilrtà evitare il

debordamento e la perdita di

informazioni.

t,,

/'13

scARlco

srAcK rs\ (RETURN,

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

Page 59: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

Resete circuiteria fissa

Per entrare in funzione il PlC16FB4 ha bisogno di trerisorse:

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

La tensione di alimentazione e indispensabile per il

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

!,,0,

MCtR#/Vpp

-+'

Questi sono i 5 pin del PlCl6FB4 che supportano le tre funzioniprincipali. alimentaztone, frequenza di riferimento e Reset.

+5 V la tensione tipica, compatibile con il resto della cir-cuiteria del sistema. Questa tensione si applica ai piedini'1 5 p 5 risncttiv:mcntp nositivo e massà ll ronsumo di

corrente dipende dalla frequenza di funzionamento e

dalla tensione di alimentazione, che non supera 10 mA.La frequenza di riferimento serve per stabilizzare e fissa-re la frequenza dell'oscillatore interno, che determinaquella di lavoro del orocessore. Si ottiene da un cristallodi quarzo collegato ai piedini 16 (OSCl/CLKIN) e 15(OSC2/CLKOUT). Nei nostri sviluppi utilizzeremo un crr-

stallo di quarzo a 4 MNz, per formare un oscillatore tipoXT. In ognuno di questi piedini si monta un condensato-ro di nnchi nirofered nor dic,rrrnnni:ro lo fronttonza

spurie.

Quando si preme il pulsantedi Reset il piedino MCLR# passa a livello logtco basso

lnfine, un microcontroller deve disporre di diverse

forme di inizializzazione de programma di lavoro. Per

nro\/oràre rrn Rpspt esterno si rrtilizza il oiedino 4(MCLR#l/pp), che ha anche la funzione di introdurre la

ioncinno \/nn rlr 1) ) 14 VDC di CUi il miCfOCOntrOller

necessita durante il processo di scrittura del program-ma. Nella figura si mostrano i 5 piedini del PlC16FB4

che supportano le tre risorse principali.

ll rlinrln imnpdisr c r he e íre6li,,,,P!vrr!L

corrente dall'rnterno del microcontroller al positivo

àoscr/crKrN T._------------l-cR|sTAt

-osc2/crKouT $lml'E-.---l| 27otÀ-'

S+Voo=+SVDC T+

MASSA:Vss

I-:-

Voo=+5VDC

îrok=f

rN4148+

t--M A-I rooo

PULSANTE Ir'-rrq;

I.:

Page 60: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

n^+^ -A^ ^,,-^,]^uaro cne quan0o 5l

imnieoa rrn PIC 16F84""r'-v-nal nrnnoffn di rrn':n-

nlir:zinno a qomnro

necessaria una circui-+^";- ^.+^"^- ^ ',."ì^LCtto c)Lct Ito, E vot tE-

r:nnn <nln irnlipn:-

menti delle linee di l/Ornn lo norifari16,a rho

dovremo controllareesrstono sul mercatoschede di circuiti stam-pati che dispongono dirrnn znrrnln nar il Pll-Y-, ,, ',-,dci rollcn,amonti nc;rv,,rYU,,,L,,Ll

l'alimentazione, del

cristallo di quarzo e delRocoi o r rn: znn: liho-

r: rlnrio nnq(nnó èqqé-YvrJv'

ro m^nf:to lo nori{ori-Y-.,,-,,che che si collegheranno alle linee di l/O.

Nr^ll- {i^,,"- ,..J^ll- ^.r\eila rgurd oeild pagrna successlva sl puo veoere lo

schema elettrico della scheda per i prototipi che è molto

ulile per la presentazione e la messa a punto dei proto-t o doi nrnnoffi d:t: l. {..ili+à À'".^ l- rr^ir:+; ^ l/^L.i L uLr ||JrvgLLLrr uuru ld ldLlllLd U U)U, ld ldPìultd E lc-

conomia che comporta.

lmmagine di una scheda di prototipi commerciahzzata da Microsystem Engineeilng

Quando si applica un livello basso per un tempo suffi-rientp al niedino N/al R# si nrodrrrp rrnà rcinizializza-, JI yIvvuLL

zione che comporta l'esecuzione di due azioni impor-tanîr:

'1 ". La messa a zero del-r r^ri.i---.Ò lapd>>d du il ruil r4zor!

prima istruzione del pro-

gramma.

2". Pone in uno statop"edeterminato la maggìornarte dei bit dei reoistri di

controllo del processore.

Nella figura della paginanro.p.ltrnto sr mnstr:\/a Un

semplice schema a base di

un pulsante, che provoca il

Reset esterno.

Un altro schema comu-ne per il pulsante di Reset

include una resistenza di

assorbimento da 10 K, undindn rho imnpdisre la cir-

colazione di corrente al pie-

dino 4 e un'altra piccola

resistenza da 100 Q come

sivede nella figura.

Prnnr:m Cor rntor rhe cosl

Scheda dei prototipi con un'applicazione che controlla diverse periferiche

utìììììriifl lffi fr ùrÌrÌ|rrrrrrr:t:lr:rrrnr{rf *Mffi irul

Page 61: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

succedere sìa nel modo funzio-namento normale del PIC e sia

nel suo stato di riposo.ln qualunque delle cinque

possibili cause del Reset, il PC si

carica con zero, eccetto quan-

do il WDT va in overflow con rl

Pll- in <t:fn di rinncn in nrro<tn

caso il PC si incrementa di una

unita ner eseorrire l'istruzione-^^,,^^+^ - ^,,^ll- -t-seguente a queila cne lo na

mandato nello stato di basso

consumo. Nella tabella sonorino.fati i v:lori r-ho nrendOnO iI vu,v,, r,L vl

Schema elettrico della scheda dei prototipi

ll Reset rnette a zero il PC e colloca in uno

stato predeterminato la maggior parte dei

hit dei reoistri di controllo. Esistono tre

cause principali che originano i Reset:

1". Connessione dell'alimentazione(POR: Power On Reset) Si produce al pas-

saggio della tensione dì alimentazione da

1,2a1,7Y.2'. Attivazione del piedino N/CLR#.

C)rrpsto nrn sr rrcpdpre sia mentre il PICYULJLV

funziona normalmente, sia che si trovi in

stato di rìposo.

3'" Overflow del Watchdog (WDT). Puo

bit del registro SFR dopo ognu-na delle possibili cause di Reset.

Schema elettrico di controllo interno dell'attivazione del Reset

tNDtRtzzl

00h

CONNESSIONE OVERFLOW OVERFIOW MCLR# MCLR#DEII.A ì WATCHDOG WATCHDOG MODO . IAODO

aUMENTAZIONE ìmoDo NoRMAIE r MODO RIPOSO . NORI AtE: RIPOSO

XXXX XXXX UUUU UIUU UUUU IUUU UUUU UUUU

:,, i:,'. 1-;,'1',_ i,

i i:. ;.: ; - ;,;'?' i 11, j 1 il:

ii i i. i:' 1' 1; ir 'i

| - f i^,,"- ff^.+,a l^ SChemaLq il9UIO lttUJttC rV

elettrico che controlla l'attiva-zione del Reset. Sono messr In

evidenza i temporizzatori OST e

PWRT.

ll temnnrizTz,tore PWRT(Power-up-Timer) aggiunge72 millisecondi che manten-gono rl microcontroller nella

situazione di Reset, per dare

tempo alla tensione di ali-mentazione di stabilizzarsi.Per il suo funzionamentodobbiamo mettere a basso

01 h xxxx xxxxo?h 0000h03h OOOI lxs04 h xxxx xxxx05L xxxx xxxxOé h xxxx xxxx85 lrgóh tlil lillsl h 1111l',] t1

: 08 h xxxx xxxx09 h xxxx xxxx

j,, es h ,.. o oooor.' ge h;i:,oah ---oúoooìììr oal oo00 Òoox

i U=Noncombio x=lndelerminoto

0000 h 0000 h

OOOu uuuu 0001 0uuu

UUUU UUUU UUUU UUUU

UUUU UUUU UUUU UUUU

UUU! UUUU UUUU UUUU

---r l]1t -.-r llilllll llil llll llllll]t lltl il| 1t1rUUUU UUUU UUUU UUUU

0000 h

0000 I uuu

---1111111111111illr I11r

---o?ooo

---00000000O 0O0u

PC+ I

uuu0 0uuu

UUUU !UUU

UUUU UUUU

0?000 .--0?000

00000 ---00000uuuu uuuu 0000000u 00000000

--- = Non ufìlizzoto ? = Dipende do olke condizioni.

.i

CONSENSO PWRÍ(Porolo di configurozione)

REGISIRO

Tabella con i valori che assumono i bit dei registri SFR durante i possibili Reset

Page 62: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

livello il bit di accesso PWRTE#, cherisiede nella parola di configurazione.Laltro temporizzalore, OST, fornisce un

ritardo di 1 .024 Tosc e ha il compito di

assicurare che l'oscillatore principale delprocessore slabilizzi la sua frequenza.OST inizia a funzionare quando terminala temporizzazione di PWRI, dovuta al

collegamento della porta OR7 con la

AND5. L'ingresso Set del flip-flop di usci-

ta sr attrva:. All'attivarsi del piedino MCLR#.. Quando va in overflow il WDT.. Se si rileva un fronte di salita nel pie-

dino VDD (POR).

I bit TO# e PD# del Registro di Stato determinano la causa che ha originato il Reset

conoscere la causa stessa. Per questo sì utilizzano duebit del registro di STATO o STATUS, che occupano l'in-duizzo 3 dei due banchi della RAM. Si tratta del bitTO# (T mer Out), che si attiva con l'overflow del WDT,

e del bit PD# (Power Down) che si attiva quando il PIC

e in stato di riposo. La tabella in alto decodifica glistatidi ouestr due bit.

È

È

Ouando la tensione di alimentazione scende al di sotto delvalore di tensione del diodo zeneq Vz = 0,7 V, si produce unReset per I'attivazione del aiedino MCLR#.

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

A volte è molto importante reinizializzare il processore

quando si produce un buco di tensione e/o la tensione

scende sotto un valore determinato, senza arrivare azero,risalendo subito dopo.Ci sono modelli del PIC che incoroorano nel silicio i circui-

ti necessari per provocare il Reset a fronte di un buco di

tensione. Questo non è il caso del PlC16F84, quindi per

ottenere cio bisogna costruire un circuito ausiliario comemostrato nella figura.

f ingresso Reset del flip-flop sr attiva quando, trami-te la AND4, arriva un livello alto; questo richiede che

agli ingressidella porta cisiano livellialti, e quindisigni-fica che:

. Non ci sono richieste di Reset e l'uscita di OR2 ha

livello basso.. Se PWRT e attivo è terminato il ritardo di72 ms.. Concluso rl ritardo di PWRT è terminato il ritardo

di osT.Nel cronogramma della figura possiamo vedere gli

stati ehe assumono i diversi segnali che sono coinvoltinel Reset, quando questo viene prodotto alla rilevazio-ne di un fronte di salita sull'ingresso della tensrone di

alimentazione.

5 il=5F ÉÍ'*l.i S'èFi I{F l'É ili"rili" i'iií€F{;;,iFj F. l}t i, ilÈF=È*,E

Dati i differenti effetti che provoca il Reset a secondadella causa che lo ha originato, è molto importante

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

POR

oiERFtovrfPI,vnÍ

OVERFLOWosr

**i-t fuCronogramma dei segnali che partecipano a/ Reset all'arrivo dr

un fronte di salita nella tensione di alimentazione.

.

#+È*É.eÈs$Eea*=$+$È+ # R*s+*

Page 63: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

N ecessità di m emo rizzaredati non volatiti

, ,,, i r,. pesso, nelle applicazioni più comuni con i

microcontroller, è necessario poter disporredi intormazioni ditipo permanente. ln deter-minati momenti vengono introdotti nelsistema alcuni dati che devono essere man-

tenuti anche dopo aver scollegato l'alimentazione.Supponiamo un sistema di controllo di accesso ad

un luogo, che controlla il relé la cui attivazione chiude i

contatti che permettono l'apertura della porta. Le prin-cipali periferiche saranno una tastiera, un display di

visualizzazione dei messaggi, e un relé di uscita. Ogniutilizzatore introduce la sua chiave segreta mediante la

tastiera e i messaggi che appaiono nel video guidano le

operazioni del medesimo.Nell'applicazione descritta, ogni utilizzatore ha un

suo codice, e l'insieme di questi deve essere memoriz-zato in modo permanente, per essere utilizzato quando'è necessario. Inoltre sarà possibile cambiarli in qualun-que momento.

Por momnrizT)ro ^tro<ti

tini di drri ò nara, ,,---554|a unamemoria non volatile, perchè il contenuto possa essere

Terminali programmabrli della OMRON, che hanno funztone dri nterfaccia uom o-macch i n a.

scritto e cancellato; pero deve essere mantenuto anchequando viene scollegata l'alimentazione. Con l'obietti-vo di supportare questo tipo di dati e applicazioni, il

P|C16F84 dispone di una memoria EEPROM da 64bytes.

Le memorie EEPROM nascono per superare gli inconve-nienti delle EPRON/, che si potevano scrivere e poi can-cellare sottoponendole per alcuni minuti ai raggi ultra-vroletti, per cui disponevano di un cristallo sulla superfi-cre. La scrittura della EPROM è di tipo elettrico, però percancellarla, bisogna estrarla dallo zoccolo e posizionar-la sul "cancellatore" a raggi ultravioletti. Questo pro-cesso è lungo e complicato.

Nelle memorie EEPROM sia la scrittura sia la cancel-lazione delle informazioni, sono realizzate mediantesegnali elettrici, per cui non è necessario estrarre il cir-cuito integrato dallo zoccolo.

Nella costruzione della cella N/OSFET delle memorieEEPROM, si introduce una sottile lamina di ossido soprail drain, che permette la cancellazione elettrica. Quandosi applica una elevata tensione fra il gate e il source delMOSFET si introduce una carica nella barriera di poten-ziale, che rimane memorizzata anche se viene tolta l'a-limentazione. Per distruggere questa carica basta appli-care la stessa tensione inversa.

Nella EEPROM si possono scrivere e cancellare sin-gole celle. Le operazioni di scrittura e cancellazione di

solito durano pochi millisecondi. Linconveniente è chela superficie che occupa questa cella e grande e perquesto la densità di integrazione è bassa e il costo ele-vato.

La memoria FLASH ulilizza la stessa tecnologia peroriducendo lo spessore della iamina di ossido, il che per-mette un funzionamento simile alle EEPROM, con mag-giore densita di integrazione, minor costo e maggiorvelocità di accesso.

Per questo motivo useremo la memoria di program-ma FLASH nel PlC16FB4.

Page 64: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

P3l

Altre caratteristiche interessanti per la scnttura dei

dati nella EEPROM del PlC16F84 sono:

Mantiene le informazioni più di 40 anni.

ll microcontroller che usiamo come cervello di Monty,

dispone di una zona di memoria dei dati implementata

con tecnologia EEPROM, con una capacità di 64 posi-

zroni da 8 bit cadauna. ll suo principale inconveniente

è che la durata del ciclo dr scrittura o cancellazione di

una cella è molto lento, comparato con la velocità del

processore, infatti sono necessari 10 milllisecondì,

tempo in cui un PIC 16F84 lavorando a '10 Mhz, esegue

più istruzioni delle 1024 che può contenere nella sua

memoria di programma. Inoltre questo tempo è critico

e bisogna aspettare che termini completamente ogni

singola operazione per iniziarne una nuova.

I

La te:ntsione di 13j B VòC nec:e:ssaria

per la scrittura/cancellazione di un indirizzo della

si applica tramite il pin 4 del PlCl6FB4.EEPROM,

Per le operazioni di scrittura e cancellazione, la

memoria EEPROM necessita di una tensione Vpp alta,

dell'ordine di 13,8 VDC, che viene introdotta tramiteil pin MCLR#l/pp, come si puo vedere dalla figura.

Anche se la EEPROM è una parte della memoria dei

dati, i suoi induizzi non sono mappati insieme ai regi-

stri SFR e GPR della RAM, che è volatile. Occupa uno

spazio di memoria indipendente, così come mostratonella figura.

INDIRIZZI

EEPROM HEX

64POSTZTONI

000r02

1._ 8 BtrS _l

Lo spazio nella memorra EEPROM e indipendente

Per gestire lo spazio proprio della EEPROM biso-

gna uLilizzare due registri di controllo dell'area SFR. Si

tratta dei registri EEADR ed EEDATA. ll regtstro EEADR

occu0a la posizione 9 del banco 0 della RAM, mentrequello EEDATA si trova ubicato alì'indirizzo B del

banco 0, come riportato graficamente.Nella posizione uguale a EEDATA, nel banco 1, si

trova il reoistro di controllo della EEPRON/, EECONl.

In modo simile il registro di controllo EECON2 occu-

0a una posizione correlata a EEADR, neì banco '1 .

Page 65: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

RAM

BANCO O BANCO I

Ubicazione dei registri EEADR ed EEDATA, che si utilizzanonella gestione dell'area di memoria EEPROM,

sono riportati anche i registri di controllo EECONI ed EECON2

., ,;. il

cicli di lettura e scrittura della EEPROM sono realizza-ti <rrnli ind,irizti di rrn hrito

ll ciclo di scrittura comoorta la orecedente cancel-lazione in automatìco delle informazioni che contene-va la posizione a cui sie fatto accesso. lltempo diciclodi scrittura è controllato da un temoorizzatore inte-grato nel chip.

ll problema maggiore e che questo tempo nonsolo è lungo, '10 millisecondi come massimo, ma è

variabile a seconda della temperatura e delra rensro-ne aoolicata.

Dato che questo tempo è molto critico, la fine delleoperazioni è controllata da un flag che può essere

complementato con un interrupt alla fine della scrittu-ra di un induizzo.

Per accedere ad una posizione della EEPROM

dobbiamo caricare nel registro EEADR I'indirizzodella medesima, mentre in EEDATA si carica il datoda scrivere, o nel caso della lettura, si deposita il

dato letto.Dato che iregistri EEADR ed EEDATA sono di B blt,

i due bit più significativi del registro EEADR valgonosempre zero, perche il valore maggiore che si può cari-care è 3 FH.

EEADR (09 BANCO 0)

EEDATA (08 BANCO 0l ;

Nel rcaistrn FFADR * eari16 | inj111776

a cui accedere, e in EEDATA, il dato da scrivere o quello letto

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

, t ,.', i;',':

All'indirizzo OB relativo al banco 1 della zona SFR

della RAM è situato il registro EECONl i cui bithanno rl compito di controllare le operazione dellaEEPROM.

I tre bit meno significativi di questo registro non

hanno alcuna funzione.Di seguito descriveremo il compito di ognuno dei

bit del registro EECONl:

RD: LetturaQuando questo bit è messo a 1, si realizza un'opera-zione di lettura all'induizzo contenuto nel registroEEADR. ll contenuto di questo indirizzo viene caricatonel registro EEDATA. Terminata l'operazione di lettura

RD torna automaticamente a 0.

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

Page 66: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

P32

FLAG

EECON r (Oe BANCO | )

Struttura e nomenclatura dei bit del registro EECONl

WR: ScritturaN.4pttendo a 1 nrrpsto hit sì realizza rrn'nnerazione di

scrittura dell'indirizzo indicato da EEADR, con il datocaricato in EEDATA. Completato il ciclo di scrittura il WR

torna a zero automaticamente.

WREN: Consenso alla scritturaQuesto bil realizza una funzione di sicurezza, se è a 1

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

dal valore del blt WR.

WRERR: Flag di errore di scritturaViene posto automaticamente a 'l quando un'operazio-ne di scrittura termina prematuramente.

Segnala che si e verificato un errore di scrittura, atti-vandosi quando si interrompe l'operazione di scrittura,a causa di un reset prodotto da MCLR# o per overflowdel WDT. Dopo il Reset l'utilizzatore deve verif icare que-sto hit e se vale 'l rinetere l'onerazione oi scrittura.

EEIF: Flag di terminedell'operazione di scritturaData l'importanza dell'operazione di scrittura, e rl

rischio di comoromettere il sistema se non termina cor-rettamente, questo bit è dedicato a segnalare il terminedell'operazione, prendendo il valore L

ln seorrito dovremo norre ollesto l-ti| a zero tramite'" r"ii

software, altrimenti resterà a 'l .

i::i.;.:l:'

In realtà questo registro non è fisicamente ìmplementa-

to nella RAM.

È utilizzato come un drsposirivo di sicurezza, per

convalldare l'operazrone dr scrittura della EEPROM, ed

evitare disturbi che potrebbero prodursi durante il

lungo irtervallo di tempo prodotto dalla durata di que-ct: nnor:zinno

Se viene letto tutti ì suoi bit valgono 0.

EECON2 (09 BANCO I l '

tl roni<rrn ll(a^l) fitn-tnnà snlo romc di<no<itivn di <ìrttra--1 nall ana,> ìana el1 5;1'11[ut'2

Page 67: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 68: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 69: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 70: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 71: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 72: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

,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 73: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 74: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

,,,,,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 75: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 76: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 77: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 78: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 79: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 80: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 81: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 82: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 83: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 84: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

" 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 85: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 86: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

.-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 87: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 88: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

,.:'.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 89: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 90: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 91: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 92: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 93: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 94: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 95: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 96: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 97: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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 98: Microrobotica Monty Peruzzo Editore - 06 A - Micro Controller

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.