-
PREFA
Se consider anul 1971, cnd INTEL a anunat producerea
primuluimicroprocesor, ca momentul trecerii de la electronica
implementat cablat laelectronica realizat programat. Primul
microprocesor 4004 a fost conceput de M.E. Hoff ca un procesor puin
simplificat pentru a putea fi implementat, la vremeaaceea, pe un
singur chip n siliciu. Iniial, microprocesorul nu a fost un
computer-on-a-chip, dei n timp a ajuns la acest stadiu; conceptul
de microprocesor s-adezvoltat i spre alte implementri specifice:
microcontroller, microcalculator,procesor de semnale (DSP). Oricare
din aceste circuite, pentru a deveni parte aunui sistem, impune un
proces de proiectare care se bazeaz n egal msur attpe componenta
hardware ct i pe componenta software.
Microprocesorul, sau celelalte variante ale sale, integrat
ntr-un sistemaduc acestuia acea performan, care atunci cnd este
realizat de fiina uman estereferit ca inteligen. n general,
microprocesorul este integrat ca unitate centralde procesare n
sistemele digitale de calcul. Actual, aproape toate sistemele au
oarhitectur de sistem digital particularizndu-se n funcie de
aplicare/utilizare.Aplicaiile care nu sunt, n sensul clasic,
sisteme digitale de calcul sunt n generalimplementate pe baz de
microprocesor sau DSP. Implementrile sistemelor pebaz de
microcontroller ori DSP devin simple i ieftine -pentru c utilizeaz
dejao component de serie, devin performante pentru c utilizeaz o
component carepoate asigura suport pentru inteligen, devin
flexibile pentru c utilizeaz ocomponent ce poate fi programat.
Fora care a impus sistemele pe baz de microcontroller const
nprogramabilitatea unei componente de serie. Pentru sistemele la
care o componentde serie, chiar programabil n software, nu duce la
rezultatele cele mai bune auaprut implementrile pe baz de circuite
ASIC (Application Specific IntegratedCircuits). Spre deosebire de
sistemele pe baz de microcontroller, undefuncionarea dorit se
obine, n software, printr-un anumit program, la sistemelepe baz de
circuite ASIC funcionarea dorit se obine prin structurarea
hardware-ului cu un anumit program. Alegerea ntre o implementare pe
baz demicrocontroller, o implementare pe baz de circuit ASIC sau
una combinatdepinde de aplicaia respectiv i de cerinele impuse.
Prezenta carte constituie un material, dar fr a absolutiza,
pentruabordarea sistemelor pe baz de microcontroller. Materialul
prezentat i CD-ul
-
VI MICROCONTROLLERE
alturat asigur un traseu de la descrierea funcionrii unui
microcontroller generic,dar i cu exemplificri comerciale, pn la
analiza, sinteza implementarea itestarea unui sistem. Deoarece
oferta pe pia pentru microcontrollere este vast ivariat, pe acest
traseu s-a accentuat prezentarea comparativ i critic ncercnd sse
imprime cititorului analiza lucid n faa avalanei agresive a
ofertelor de pia.Cartea a fost elaborat n cadrul programului Tempus
RESUME (REtrainingSUpport for small and Medium Enterprises) de la
Universitatea TRANSILVANIAdin Braov, program care a avut printre
obiective i sprijinul dezvoltrii de sistemepe baz de
microcontrollere n/i pentru ntreprinderi mici i mijlocii. innd
contde aceast adres cartea nu este destinat numai inginerilor n
specialitatea deelectronic i ingineria calculatoarelor ci i
inginerilor de alte specialiti care au opractic sau doresc s
abordeze acest domeniu al sistemelor pe baz demicrocontroller. Nu
exist actual produse de HiTech care s nu se bazeze direct
sauindirect pe microprocesor sau microcontroller. n consecin, ntr-o
economie detranziie, cum este a noastr, care dorete s se impun,
formarea de personal cares tie s proiecteze/implementeze/exploateze
sisteme pe baz de microcontrollereste o necesitate prioritar.
Mulumim tuturor celor care ne-au sprijinit, colegilor Catedrei
deElectronic i Calculatoare, d-l asist. ing. Rzvan Brtucu i mai
ales domnilorprofesori Marcian Crstea de la DMU Leicester - Marea
Britanie, Josef Hoffmannde la Fachhochschule Karlsruhe - Germania,
Dr. Peter Corcoran - NationalUniversity of Ireland, MSC
Eng.Petronel Bigioi, doctorand la UniversitateaTransilvania Braov
precum i studenilor aceleiai universiti.
Braov, Ianuarie 2001
-
CUPRINS
DESCRIERE GENERAL
________________________________________________ 1
1.1 ISTORIC
__________________________________________________________ 11.2
SCHEMA BLOC GENERAL ____________________________________________
31.3 ARHITECTURA
MC__________________________________________________ 5
1.3.1 Unitatea central de prelucrare
____________________________________ 61.3.2 Memoria
_____________________________________________________ 81.3.3
Dispozitive I/O _______________________________________________
10
1.4 SISTEMUL DE
NTRERUPERI___________________________________________ 281.5
MANAGEMENTUL PUTERII____________________________________________
341.6 SCHEMA BLOC A UNUI
MC____________________________________________ 351.7 FAMILII DE MC
___________________________________________________ 371.8
CLASIFICAREA MC ________________________________________________
41
PROGRAMAREA SISTEMELOR CU MC _________________________________
43
2.1 PROIECTAREA PROGRAMELOR DE APLICAIE
_____________________________ 432.1.1 Generaliti
__________________________________________________ 432.1.2
Instruciuni ale MC____________________________________________
502.1.3 Instrumente software de proiectare: MC 8051
_______________________ 562.1.4 Instrumente software de proiectare:
MC PIC ________________________ 67
MICROCONTROLLERE MOTOROLA ___________________________________
71
3.1 MC
M68HC05____________________________________________________ 723.1.1
Memoria intern ______________________________________________
723.1.2 Unitatea
central______________________________________________ 733.1.3
Moduri de adresare ____________________________________________
753.1.4 Setul de instruciuni
___________________________________________ 763.1.5 Sistemul de
ntreruperi _________________________________________ 773.1.6
Interfee i periferice on-chip ____________________________________
783.1.7 Managementul
puterii__________________________________________ 873.1.8
Autoverificarea _______________________________________________
883.1.9 Programarea EPROM
__________________________________________ 88
3.2 MC
M68HC08____________________________________________________ 893.2.1
Unitatea central 6808 _________________________________________
903.2.2 Interfee i periferice on-chip
____________________________________ 913.2.3 Programarea memoriei
EEPROM ________________________________ 96
3.3 MC PE 16 BII -
6816_______________________________________________ 973.3.1 Modulul
de integrare (SIM, System Integration Module) ______________
983.3.2
Interfee_____________________________________________________
98
3.4 MC PE 32 DE BII - 68300
___________________________________________ 993.5 DATE COMPARATIVE
PENTRU MC MOTOROLA CISC_____________________ 100
-
VIII MICROCONTROLLERE
FAMILIA
MCS-51_____________________________________________________ 101
4.1 STRUCTURA I
FUNCIONAREA_______________________________________ 1024.1.1
Gestionarea memoriei_________________________________________
1044.1.2 Circuitele
timer______________________________________________ 1044.1.3
Interfaa serial UART ________________________________________
1064.1.4 Sistemul de ntreruperi
________________________________________ 1064.1.5 Operarea cu
economie de energie________________________________ 108
4.2 PROGRAMAREA MC DIN FAMILIA MCS-51
_____________________________ 1084.2.1 Setul de instruciuni 8051
______________________________________ 1084.2.2 Modurile de
adresare _________________________________________ 110
4.3 ALTE INTERFEE I PERIFERICE ON-CHIP
______________________________ 1114.3.1 Interfaa I2C (Siemens
P80CL580)_______________________________ 1114.3.2 Aria de numrtoare
programabil (PCA) _________________________ 1134.3.3 MC cu interfa
pentru RAM nevolatil - NVRAM (Dallas DS5000FP) __ 1154.3.4 MC
specializat pentru TV i video (PHILIPS 83C145) _______________
1154.3.5 MC cu arie configurabil (TRISCEND E5)
________________________ 116
4.4 SISTEM MINIMAL CU 8051
__________________________________________ 1184.5 DATE COMPARATIVE
PENTRU MC DIN FAMILIA MCS-51___________________ 119
MICROCONTROLLERE RISC _________________________________________
121
5.1 MICROCONTROLLER PIC
___________________________________________ 1215.1.1 PIC12
_____________________________________________________ 1215.1.2
PIC16 _____________________________________________________
1255.1.3 PIC17
_____________________________________________________ 127
5.2 MC ATMEL
____________________________________________________ 1295.2.1
Familia AVR________________________________________________
1295.2.2 Familia ARM
_______________________________________________ 138
CRITERII DE PROIECTARE
___________________________________________ 141
6.1 CRITERIILE PENTRU ALEGEREA UNUI
MC_______________________________ 1416.2 ALGORITMUL PROIECTRII
SISTEMELOR CU MC __________________________ 1436.3 PROIECTAREA
SISTEMELOR CU MC N VEDEREA SIGURANEI N EXPLOATARE __ 145
6.3.1 Cablajul imprimat
____________________________________________ 1466.3.2 Ceasul de
gard______________________________________________ 1476.3.3
Programarea defensiv ________________________________________
147
APLICAII___________________________________________________________
149
7.1 IMPLEMENTAREA UNEI APLICAII SIMPLE DE COMAND I CONTROL
DIGITAL _______________________________________________________
149
7.1.1 Varianta de implementare cu microcontroller
CISC__________________ 1517.1.2 Varianta de implementare cu
microcontroller RISC. _________________ 163
7.2 IMPLEMENTAREA INTERFEELOR LA PROCES ___________________
1817.2.1 Convertoare A/D controlabile
serial______________________________ 1827.2.2 Interfaarea paralel a
convertoarelor A/D _________________________ 1897.2.3 Convertoare
A/D complexe ____________________________________ 1957.2.4
Convertor D/A controlabil serial ________________________________
2017.2.5 Programarea unui sistem de dozare gravimetric dotat cu MC
_________ 205
BIBLIOGRAFIE_______________________________________________________
219
-
1DESCRIERE GENERAL
1.1 ISTORIC
Privind evoluia istoric a operaiei de comand a unui proces
putemcontura imaginea unui microcontroller (MC - se va folosi n
continuare aceastprescurtare pentru a numi un microcontroller). Un
controller este un sistem folositpentru a comanda i a prelua stri
de la un proces sau un aspect al mediuluinconjurtor. La nceput un
controller era un echipament de mari dimensiuni. Dupapariia
microprocesoarelor dimensiunile controller-elor s-au redus.
Procesul deminiaturizare a continuat, toate componentele necesare
unui controller au fostintegrate pe acelai chip. S-a nscut astfel
calculatorul pe un singur chip specializatpentru implementarea
operaiilor de control; acesta este microcontroller-ul.
Unmicrocontroller este un circuit realizat pe un singur chip care
conine tipic:
unitatea central; generatorul de tact (la care trebuie adugat
din exterior un cristal de cuar
sau n aplicaii mai puin pretenioase, un circuit RC); memoria
volatil (RAM); memoria nevolatil (ROM/PROM/EPROM/EEPROM);
dispozitive I/O seriale i paralele; controller de ntreruperi,
controller DMA, numrtoare/temporizatoare
(timers), covertoare A/D i D/A, etc.; periferice.
Preul unui MC este redus din cauza cantitilor mari n care se
fabric.Preul mic al MC aduce cu sine i micorarea preului sistemelor
de control (semicoreaz inclusiv costul proiectrii).
Diferenele dintre microprocesor i unitatea central a MC se
atenueaz ntimp. Astfel, marii constructori de procesoare au
realizat nite circuite care s-arputea numi super-microcontroller-e,
aa cum sunt Motorola 68EC300, INTEL386EX sau IBM PowerPC 403GB,
care sunt microcalculatoare pe un singur chip.
-
2 MICROCONTROLLERE
Cu un MC se poate realiza un controller integrat (Embedded
Controller,EC). Un controller integrat face parte dintr-un sistem
construit cu un anumit scop,altul dect calcule generale. Pe lng MC,
un controller integrat are nevoie dehardware suplimentar pentru a-i
ndeplini funcia.
Importana MC este dovedit incontestabil de piaa care este n
continucretere. Astfel, evoluia vnzrilor de MC n lume se reflrct n
tabelele 1.1 i 1.2.
Tabelul 1.1
Evoluia vnzrilor MC n lume (n milioane dolari)
MC '90 '92 '94 '96 '97 '98 '99(estimat)
'00(estimat)
4-bit 1393 1596 1761 1849 1881 1856 1816 17578-bit 2077 2862
4689 6553 7529 8423 9219 971516-bit 192 340 810 1628 2191 2969 3678
4405
Tabelul 1.2
Evoluia vnzrilor MC n lume (n milioane buci)
MC '90 '92 '94 '96 '97 '98 '99(estimat)
'00(estimat)
4-bit 778 979 1063 1100 1096 1064 1025 9708-bit 588 843 1449
2123 2374 2556 2681 270016-bit 22 45 106 227 313 419 501 585
Principalii productori de microprocesoare au realizat n 1994 i
1995urmtoarele cifre de afaceri (tabelul 1.3).
Tabelul 1.3
Cifre de afaceri realizate n anii 1994, 1995 din vnzarea de
microprocesoare(n milioane dolari)
Productor 1994 1995Intel 10800 8036AMD 881 992Motorola 781
827IBM 468 297TI 219 202Cyrix 210 240Hitachi 188 66NEC 100 82LSI
Logic 58 51IDT 45 25
-
1. Descriere general 3
n prezent datele arat modificri de structur; de exemplu cifra de
afaceria AMD se apropie de cea a lui INTEL. Cifra de afaceri, ca
ordin de mrime, eradeja n anii 1994, 1995 apropiat de cea realizat
din vnzri de microprocesoare(tabelul 1.4).
Tabelul 1.4
Cifre de afaceri realizate n anii 1994, 1995 din vnzarea de
microcontrollere(n milioane dolari)
Productor 1994 1995Motorola 1781 1511NEC 1421 1208Mitsubishi 945
708Hitachi 899 782Intel 835 605TI 807 534Philips 524 345Matsushita
500 413Lucent (AT&T) 492 275Toshiba 400 328
1.2 SCHEMA BLOC GENERAL
Vom defini un microcontroller pornind de la o reprezentare
simplificat asa n interaciune cu mediul (figura 1.1).
Memoria
Unitateacentral
deprelucrare
Generator detact
IntrriIeiri
Programe
Figura 1.1 Schema simplificat a unui microcontoller
-
4 MICROCONTROLLERE
Ca intrri se folosesc de regul semnale provenind de la
comutatoareleindividuale sau de la traductoare (de temperatur, de
presiune, foto, traductoarespecializate). Intrrile pot fi digitale
sau analogice. Intrrile digitale vehiculeazsemnale discrete,
informaia "citit" fiind informaia ce se eantioneaz lamomentul
citirii liniei respective. Intrrile analogice vehiculeaz
informaiiexprimabile prin funcii continue de timp. "Citirea"
acestora de ctremicrocontroller presupune prezena unor circuite
capabile s prelucreze acesteinformaii, fie comparatoare analogice,
fie convertoare analog-numerice, ale crorieiri sunt citite de ctre
MC.
Ieirile sunt fie analogice, caz n care reprezint de fapt ieiri
aleconvertoarelor numeric-analogice, fie sunt digitale, caz n care
informaia este ngeneral memorat pe acestea pn la o nou scriere
operat de ctre UC la un portal MC. Ieirile pot comanda dispozitive
de afiare, relee, motoare, difuzoare, etc.
O structur mai detaliat, care include blocurile principale,
estereprezentat n figura 1.2.
Memorie pentruprograme
Memorie pentrudate
Dispozitive I/O
Unitatea centrala de prelucrare(UCP)
Oscilator
Intrridigitale
Ieiridigitale
Bus dedate
Bus deadrese
Reset
Figura 1.2 Schema bloc a unui microcontroller
-
1. Descriere general 5
Se poate distinge o prim diferen fa de calculatoarele personale,
undeintrrile se fac de regul de la tastatur i ieirile pe monitorul
TV sau laimprimant. Dac un calculator personal este folosit pentru
a prelucra informaii ia afia rezultatele pe monitor sau hrtie, un
MC comand un proces.
Un element important, fr de care un MC nu poate funciona,
esteprogramul (sau programele), care se stocheaz n memoria proprie
MC.
Un MC poate fi definit ca un sistem de calcul complet pe un
singur chip.Acesta include o unitate central, memorie, oscilator
pentru tact i dispozitive I/O.Un MC poate fi privit ca un
microprocesor care pe acelai chip mai coninememorie i o serie de
interfee. Natura i complexitatea aplicaiei n care estefolosit MC
determin performanele unitii centrale, capacitatea de memorie
itipul interfeelor ce compun structura intern a MC.
1.3 ARHITECTURA MC
Arhitectura unui MC definete atributele sistemului aa cum sunt
elevzute de un programator n limbaj de asamblare. Deoarece un
microcontroller esteun caz particular de calculator, (calculator
specializat pentru operaii I/O, realizatpe un singur chip), acesta
este compus din cele cinci elemente de baz: unitate deintrare,
unitate de memorie, unitate aritmetic i logic, unitate de control i
unitatede ieire. Unitatea de control mpreun cu unitatea aritmetic i
logic compunmpreun unitatea central de prelucrare pe care o vom
referi n continuareprescurtat cu UCP. Unitile de intrare i ieire
vor fi tratate mpreun i vor fireferite prescurtat ca sistem
I/O.
Blocurile componente ale MC sunt legate ntre ele printr-o
magistralintern (bus). Magistrala vehiculeaz semnale de adres, de
date i semnale decontrol. Mrimea acestor magistrale constituie una
dintre caracteristicile cele maiimportante ale unui MC. Prin
magistrala de adrese unitatea central de prelucrare(UCP) selecteaz
o locaie de memorie sau un dispozitiv I/O, iar pe magistrala dedate
se face schimbul de informaie ntre UCP i memorie sau dispozitivele
I/O.ntre UCP i memorie sunt transferate att date ct i instruciuni.
Acestea se pottransfera pe o singur magistral de date sau pe
magistrale de date diferite.
Arhitectura von Neumann prevede existena unui bus unic folosit
pentrucirculaia datelor i a instruciunilor. Cnd un controller cu o
astfel de arhitecturadreseaz memoria, bus-ul de date este folosit
pentru a transfera nti codulinstruciunii, apoi pentru a transfera
date. Accesul fiind realizat n 2 pai, estedestul de lent.
Arhitectura Harvard prevede un bus separat pentru date i
instruciuni.Cnd codul instruciunii se afl pe bus-ul de instruciuni,
pe bus-ul de date se afl
-
6 MICROCONTROLLERE
datele instruciunii anterioare. Structura MC este mai complex,
dar performanelede vitez sunt mai bune.
Magistralele interne, dup numele lor, nu sunt accesibile n
exterior lanivel de pin. Aceast stare caracterizeaz regimul normal
de funcionare. nregimuri speciale de funcionare, numite diferit la
diferitele tipuri de MC,semnalele magistralelor de adrese i de date
sunt accesibile la nivel de pinsacrificnd funciile iniiale ale
pin-ilor respectivi. Totodat este necesar s fielivrate n exterior i
semnale de comand (cel puin comand de scriere WR icomand de citire
RD). Aceast facilitate este util pentru extensii de memoriesau
pentru a ataa sistemului interfee suplimentare. Ea nu este posibil
n modnormal de funcionare deoarece aceasta ar presupune existena
unui numr foartemare de pini, ceea ce ar fi neeconomic.
Magistralele de adrese i de date pot fiaduse la pin multiplexat sau
nemultiplexat. Familia MCS-51 este un exemplupentru acces
multiplexat la magistrale. Accesul se face n doi pai; n primul pas
seconecteaz liniile de adres la pinii portului sacrificat, iar n al
doilea pas seconecteaz datele la aceiai pini. Pentru a putea
utiliza informaia de adresare,adresa se memoreaz ntr-un latch, de
asemenea exterior microcontroller-ului.Complicarea accesului la
magistralele interne prin multiplexare este justificat deasemenea
din raiunea meninerii unui numr ct mai mic de pini la capsul. MCmai
puin performante (ex. - MC low cost) nu au magistralele interne
accesibile lanivel de pin.
Ca urmare a celor prezentate se poate aprecia performana unui MC
dinpunct de vedere al magistralei interne dup urmtoarele
criterii:
dimensiunea magistralei de date; dimensiunea magistralei de
adrese; accesibilitatea n exterior la magistrale; magistrale
accesibile multiplexat sau nemultiplexat.
1.3.1 Unitatea central de prelucrare
Unitatea central de prelucrare este compus din unitatea
aritmetic ilogic (UAL) i din unitatea de control.
Unitatea aritmetic i logic este seciunea responsabil cu
efectuareaoperaiilor aritmetice i logice asupra operanzilor ce i
sunt furnizai. Modul deimplementare a operaiilor este transparent
pentru utilizator; important pentruutilizatorul de MC este
repertoriul operaiilor implementate pentru a apreciaposibilitatea
implementrii optime a aplicaiei particulare de control. De
asemeneaeste important timpul de execuie al fiecrei operaii pentru
a aprecia dac timpulnecesar procesrii complete satisface cerinele
de timp ale aplicaiei.
Unitatea ce control este responsabil cu decodificarea codului
operaieiconinut de codul unei instruciuni. Pe baza decodificrii
unitatea de control
-
1. Descriere general 7
elaboreaz semnale pentru comanda celorlalte blocuri funcionale
pentru a finalizaexecutarea unei instruciuni. Modul de implementare
al acestui bloc este deasemenea transparent utilizatorului.
Unitatea central de prelucrare conine un set de registre
interne, similareunor locaii de memorie, folosite pentru memorarea
unor date des apelate saupentru programarea unor anumite funcii.
Diferitele familii de MC folosesc seturidiferite de registre. Exist
ns cteva registre comune.
A (Accumulator) - registrul acumulator - este folosit deseori
pentru a stocaun operand i rezultatul operaiei aritmetice sau
logice.
PC (Program Counter) registru numrtor de program - este
registrulcare stocheaz adresa urmtoarei instruciuni de executat.
Dup un RESET(iniializarea MC), registrul PC se ncarc dintr-o locaie
de memorie numit vectorde reset. Aceast locaie conine adresa primei
instruciuni de executat. PC esteincrementat automat la execuia unei
instruciuni.
SP (Stack Pointer) registrul indicator de stiv - coninutul
acestui registruindic adresa curent a stivei. Stiva reprezint o zon
de memorie accesibil rapidn care se depun temporar informaii
importante n desfurarea programului. Stivaeste definit de obicei n
RAM. Implementarea accesului presupune existena unuiregistru de
adresare (SP) i a mecanismului de memorare declanat de
instruciunispecifice (instruciunile PUSH/POP).
Un aspect important ce se reflect n arhitectura unui MC este
modul deprogramare. Prin arhitectur nelegem felul n care sunt
dispuse "resursele" unuiMC. Cu ct structura, funcionalitatea i
accesul la acestea sunt mai profundstandardizate i simetrizate, cu
att numrul de instruciuni de care dispune MCeste mai redus i viteza
de execuie a programelor crete.
Conceptul CISC (Complex Instruction Set Computer) pe baza cruia
suntconstruite majoritatea MC, prevede existena unui numr mare de
instruciuni (tipic>80), ceea ce face mai uoar munca
programatorului. Multe din instruciuni suntspecializate, adic se
pot folosi doar n anumite moduri de adresare sau cu
anumiteregistre.
Evoluia MC este spre arhitectura RISC (Reduced Instruction
SetComputer), n cadrul creia un MC are un numr mic de instruciuni.
Avantajelesunt un chip mai mic, cu un numr de pini mai mic, cu un
consum mai redus i cuo vitez mai mare. Instruciunile sunt
simetrice, adic pot fi folosite la fel n oricemod de adresare sau
cu orice registru, nu au excepii sau restricii.
n prezent un MC este cu mai mult dect o arhitectur RISC, el este
cu oarhitectur SISC (Specific ISC). Instruciunile sunt specifice
pentru a lucra optimcu dispozitivele I/O, permit manipularea la
nivel de bit i sunt mai puineinstruciuni de uz general, aa cum
ntlnim la microprocesoarele 8086, 68000 etc.
n general MC cu arhitectur CISC dispun de un numr redus de
registre.Acestea au funcii determinate (acumulator, registru
index,etc), iar MC cuarhitectur RISC dispun de un numr mai mare de
registre cu un mare grad deortogonalitate ceea ce nseamn c pot fi
folosite simetric n orice mod de adresare(ATMEL AVR are 32 de
registre)
-
8 MICROCONTROLLERE
Registrele interne pot avea diferite dimensiuni, astfel
registrele acumulatorau dimensiunea egal cu cea a magistralei de
date (8, 16 sau 32 bii). Registrulnumrtor de program are
dimensiunea egal cu cea a magistralei de adrese.Registrul indicator
de stiv poate avea dimensiunea mai mic dect a magistraleide adrese
permind localizarea stivei ntr-o zon restrns a memoriei RAM.Exist i
MC cu stiv automat, acestea nu au nevoie de indicator de stiv dar
audezavantajul c nu se pot folosi mai mult de 2-4 nivele de stiv
(MC din familiaPIC).
1.3.2 Memoria
MC folosesc diferite tipuri de informaii, care sunt stocate n
diferite tipuride memorii. Instruciunile care controleaz
funcionarea MC trebuie stocate ntr-omemorie nevolatil, unde
informaiile se pstreaz i dup oprirea i repornireasursei de
alimentare. Rezultatele intermediare i variabilele pot fi nscrise
ntr-omemorie volatil, la acestea este important s se poat face
scrierea /citirea rapid isimplu n timpul funcionrii.
Memoria RAM (Random Access Memory) este o memorie volatil
carepoate fi citit sau scris de unitatea central. Locaiile din RAM
sunt accesibile norice ordine. Pe chip, memoria RAM ocup mult loc i
implicit costurile deimplementare sunt mari. De aceea un MC include
de obicei puin RAM. MemorieRAM static alimentat de la baterie se
folosete pentru stocarea nevolatil acantitilor mari de date, la o
vitez de acces mare i cu un numr nelimitat detergeri i
renscrieri.
Memoria ROM (Read Only Memory) este cea mai ieftin i cea mai
simplmemorie i se folosete la stocarea programelor n faza de
fabricaie. Unitateacentral poate citi informaiile, dar nu le poate
modifica.
Memoria PROM (Programmable Read Only Memory) este similar
cumemoria ROM, dar ea poate fi programat de ctre utilizator. Dup
posibilitile detergere, aceast memorie poate fi de mai multe
feluri:
Memoria EPROM (Erasable PROM) care se poate terge prin expunere
laraze ultraviolete. MC cu EPROM au un mic geam de cuar care
permite ca chip-uls fie expus la radiaia ultraviolet. tergerea este
neselectiv, adic se poate tergedoar ntreaga informaie i nu numai
fragmente. Memoria poate fi tears irenscris de un numr finit de
ori. Programarea EPROM-ului necesit o procedurspecial, iar MC cu
EPROM au nevoie de regul pentru nscrierea EPROM-ului deo tensiune
auxiliar, de 12 V de exemplu. Unele MC au incluse circuite
deprogramare a memoriei EPROM, cu ajutorul crora unitatea central
poateprograma memoria EPROM. n timpul programrii memoria EPROM nu
esteconectat la magistrala de date i adrese. Unele MC sunt prevzute
cu mod specialde lucru, n care sunt vzute din exterior ca nite
memorii EPROM obinuite i potfi astfel programate cu orice
programator.
-
1. Descriere general 9
OTP (One Time Programmable PROM) se folosete pentru multe serii
deMC. Memoria OTP este de fapt o memorie EPROM, dar chip-ul a fost
capsulatntr-o capsul de material plastic fr fereastr, care este
mult mai ieftin. Memorianu se poate terge sau reprograma. Preul
unui MC cu OTP este mic, viteza estebun, dar aplicaiile sunt
lipsite de flexibilitate.
Memoria EEPROM (Electrically Erasable Programmable Read
OnlyMemory) poate fi tears electric de ctre unitatea central, n
timpul funcionrii.tergerea este selectiv, iar pentru renscriere
trebuie parcuri mai muli pai.Memoria EEPROM echipeaz multe MC,
fiind ieftin. n memoria EEPROM sememoreaz un mic numr de parametri
care se schimb din timp n timp. Memoriaeste lent i numrul de
tergeri/scrieri este limitat (tipic 10 000).
Memoria FLASH este o memorie asemntoare EPROM i EEPROM nsensul c
poate fi tears i reprogramat n sistemul n care este folosit (fr a
finecesar un sistem dedicat). Are capacitatea unui EPROM, dar nu
necesit fereastrpentru tergere. Ca i EEPROM, memoria FLASH poate fi
tears i programatelectric. Memoria FLASH nu permite tergerea
individual de locaii, utilizatorulpoate s tearg doar ntregul
coninut.
Din punct de vedere al locului i modului de programare a
memoriilor detip PROM exist dou concepte:
ICP (In Circuit Programming) programarea memoriei cnd MC seafl
pe placa de cablaj imprimat a aplicaiei;
ISP (In System Programming) presupune posibilitatea
dereprogramare n funcionare a sistemului. De exemplu
laautovehiculele comandate de MC, schimbarea tipului benzinei
sauschimbarea unei legi privitoare la poluare pot fi actualizate
nprogramul MC fr ca acesta s fie scos din autovehicul.
n funcie de numrul aplicaiilor n care urmeaz s fie folosit MC
serecomand folosirea MC cu ROM pentru volum mare de producie (ROM
senscrie cu masc la fabricant), OTP pentru volum mic de producie i
EPROMpentru prototipuri.
Tipul de memorie i capacitatea memoriei din echiparea unui MC
suntcaracteristici particulare fiecrui tip de circuit. Printre alte
diferene, acetiparametri sunt diferii pentru membrii unei aceleiai
familii de MC. Se vorprezenta date concrete pentru exemplificare
ntr-un tabel recapitulativ la sfritulcapitolului (tabelul 1.6).
Pentru a aprecia un MC sub aspectul componentei memorie este
necesar sse considere urmtoarele caracteristici:
varietatea tipurilor de memorie pe chip: RAM, ROM /OTP
/EPROM/EEPROM /FLASH;
capacitatea memoriei aflat pe chip; uurina cu care se poate
programa (programare n circuit sau nu,
necesitatea unor tensiuni de programare suplimentare).
-
10 MICROCONTROLLERE
1.3.3 Dispozitive I/O
Dispozitivele I/O reprezint un aspect de mare interes atunci cnd
estevorba de microcontroller-e, interes rezultat din nsi
particularitatea unui MC:aceea de a interaciona cu mediul n
procesul de control pe care l conduce.
Dispozitivele I/O implementeaz funcii speciale degrevnd
unitateacentral de toate aspectele specifice de comand i control n
funcia respectiv.Exist o varietate mare de dispozitive I/O;
dispozitivele I/O conduc operaiigenerale de comunicaie (transfer
serial sau paralel de date), funcii generale detimp (numrare de
evenimente, generare de impulsuri), operaii de
conversieanalog/numeric, funcii de protecie, funcii speciale de
comand, i enumerareapoate continua. Parte din resurse acoper
funciile de control propriu-zis, iar o parteasigur funciile
necesare aplicaiilor n timp real (sistemul de ntreruperi,
timer).
Din aceast mare varietate, parte din dispozitive se gsesc n
configuraiatuturor MC sau sunt foarte des ntlnite, iar o alt parte
de dispozitive o regsimdoar n MC construite pentru a optimiza
aplicaii cu un grad mare departicularitate. n acest capitol, n
continuare, vor fi prezentate dispozitive desntlnite n echiparea
MC. n capitolele urmtoare, pe msur ce vor fi prezentateexemple de
MC, vor fi descrise i o serie de dispozitive I/O speciale ce intr
ncomponena acestora.
Dispozitivele I/O sunt vzute de unitatea central ca porturi.
Exist doufilozofii de alocare a adreselor (mapare) pentru apelarea
porturilor de ctre unitateacentral. Porturile sunt mapate fie n
spaiul de memorie, fie ntr-un spaiu propriu.Cele dou metode sunt
exemplificate la MC produse de Motorola i MC produsede Intel. La MC
Motorola dispozitivele I/O ocup adrese ntr-un spaiu comun
cumemoria, ceea ce atrage dup sine reducerea numrului de locaii de
memorie. MCde la Intel folosesc un semnal care indic dac la adresa
curent se apeleaz olocaie de memorie sau un dispozitiv I/O.
Avantajele maprii n spaii separate:
Metoda nu este susceptibil de a provoca erori soft deoarece
sefolosesc instruciuni diferite pentru a accesa memoria i
dispozitiveleI/O;
Dispozitivele I/O nu ocup spaiu de memorie; Decodificatorul de
adrese pentru dispozitivele I/O este mai simplu
deoarece spaiul de adresare al dispozitivelor I/O este mai
mic.
Dezavantaje ale maprii n spaii separate:
instruciunile I/O sunt mai puin flexibile n comparaie
cuinstruciunile de lucru cu memoria;
instruciunile I/O nu permit folosirea modurilor de adresare
folosite nlucrul cu memoria.
Avantajul maprii n spaiu comun:
-
1. Descriere general 11
toate instruciunile de lucru cu memoria i toate modurile de
adresaresunt utilizabile i n tratarea dispozitivelo I/O
(programarea operaiilorI/O este foarte flexibil);
Dezavantajele maprii n acelai spaiu:
este susceptibil la erori software; spaiul de adresare
disponibil pentru memorie este mai mic.
Avantajul maprii ntr-un spaiu comun este acela c se poate opera
cuporturile la fel ca i cu o locaie de memorie; multe operaii
aritmetice i logicefolosesc operanzi direct de la port, datele pot
fi mutate ntre porturi cu o singurinstruciune, coninutul unui port
poate fi citit, incrementat i rezultatul scris dinnou la port de
asemenea cu o singur instruciune.
Se contureaz trei direcii de evoluie a MC din punct de vedere
alresurselor disponibile pe chip. O direcie este dezvoltarea de MC
de uz general caresunt puse la dispoziia utilizatorului pentru a
realiza aplicaii de la A la Z. O adoua direcie o reprezint
dezvoltarea de MC specializate care dispun de resursespecifice unui
anume gen de aplicaii (automobile, telecomunicaii, Internet,acionri
electrice, etc). Pentru aceste MC specializate att structura
hardware ct iinstruciunile sunt specifice i sunt calate pe un gen
particular de aplicaii. Exist oa treia tendin de dezvoltare de MC
care dispun de resurse hardware configurabilela utilizator. ntre
resursele configurabile se afl memoria, elemente de logicprogramat,
module specializate, gen convertoare A/D i convertoare D/A, imodule
de procesare avansat a datelor.
Porturi paralele
Porturile paralele I/O faciliteaz transferul simultan al mai
multor bii ntreMC i mediu. Numrul de bii transferai ca urmare a
executrii unei instruciunidepinde de organizarea particular a
porturilor n cadrul MC; unele porturi suntorganizate pe 8 bii,
altele pe un numr mai mare de bii. Sensul transferului, I(input)
sau O (output) este programabil i se stabilete de obicei ntr-un
registru desens. Pentru a veni n ntmpinarea cerinelor specifice de
interaciune cu mediulsunt implementate mecanisme de apelare la
nivel de bit pentru registrele porturilorparalele I/O. Mecanismul
presupune o structur hardware corespunztoare iinstruciuni pentru
manipularea informaiei la nivel de bit (un operand este un
bit).Astfel, la execuia unei instruciuni orientat pe bit, exist
posibilitatea de atransfera un singur bit, de a masca bii care nu
sunt folosii ntr-o operaieparticular i de a efectua operaii logice
pe un singur bit al unui port paralel I/O.Datorit capabilitii de
manipulare la nivel de bit la descrierea
caracteristicilorsistemului paralel I/O se specific numrul total de
linii I/O.
MC68HC705C8 dispune de 31 de linii I/O digitale de uz general
grupate n patruporturi (A, B, C i D). Porturile A, B, i C sunt
porturi de cte opt bii fiecare i pun
-
12 MICROCONTROLLERE
la dispoziie n total 24 de linii care pot fi folosite fie ca
intrri, fie ca ieiri. Portul Ddispune de 7 linii care pot fi
folosite doar ca intri.
Circuitul de interfa al portului paralel este responsabil de
corectitudineatransferului cu dispozitivul I/O. n acest scop se
foloseste una din urmtoarelemetode de sincronizare:
Transfer direct (brute-force method) n cadrul acestei metode
interfaa aredoar rolul de a transfera semnalele de la unitatea
central spre dispozitivul I/O(dac este o operaie de ieire) sau de
la dispozitivul I/O la unitatea central(dac este o operaie de
intrare). Se folosete acest tip de transfer dac secitete nivelul
unui potenial, dac se comand la ieire un nivel logic (pentrucomanda
unor LED-uri, de exemplu).
Transfer strobat (strobe method) aceast metod folosete semnale
destrobare pentru a indica starea stabil a semnalelor la porturile
de intrare sau deieire. ntr-o operaie de intrare, dispozitivul de
intrare genereaz semnalul destrobare cnd datele sunt stabile la
pinii portului de intrare al interfeei.Stocarea informaiei n
registrul de date al interfeei se face cu semnalul destrobe. Daca
este vorba de o operaie de ieire, cnd semnalele de date
suntstabile, interfaa elaboreaz semnal de strobare cu care
dispozitivul I/O preiaefectiv datele. Aceat metod poate fi folosit
dac interfaa i dispozitivul I/Olucreaz la viteze comparabile.
Transfer cu protocol (handshake method) exist cazuri n care
vitezele delucru ale celor dou pri implicate n transfer sunt mult
diferite i metodelemai sus amintite nu ofer cadrul potrivit pentru
transferul datelor. Soluia esteca interfaa i dispozitivul I/O s
poarte un dialog numit handshake. Suntnecesare dou semnale de
protocol; unul din ele este elaborat de circuitul deinterfa iar
cellalt de dispozitivul I/O. Tranzaciile de protocol difer
pentruoperaii de intrare i de ieire.
n figura 1.3 este ilustrat organizarea portului A al unui
circuit particular(MC68HC705C8).
Bit 7 6 5 4 3 2 1 Bit 0DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1
DDRA0
0 0 0 0 0 0 0 0
Starea registrelor de ieire nu este influenat de Reset
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
Figura 1. 3 Organizarea portului paralel A (MC68HC705C8)
-
1. Descriere general 13
Registrul DDRA (Data Direction Register port A) este un registru
de 8 biica i registrul de date PA al portului A . Sub fiecare din
registre este reprezentatstarea iniial a registrelor (dup reset). n
cazul particular considerat, portului PAeste implicit port de
intrare.
O structur posibil de circuit pentru o linie bidirecional de
scriere/citirela porturi este redat n figura 1.4. Se poate constata
modul n care acioneaz bituldin registrul de sens asupra circuitului
driver de ieire.
n partea stng a diagramei sunt reprezentate legturile spre
magistralaintern de date a MC. n funcie de natura operaiei
efectuate (citire sau scriere) ide valoarea bitului din registrul
de direcie sunt posibile operaiile exprimate ntabelul 1.5.
Tabelul 1.5
Funciile unui pin I/O
Operaie Bit DDR Funcie pin I/Oscriere 0 Pinul I/O este n mod
intrare;
datele pentru scriere vor fi nscrise n latch-ul de ieirescriere
1 Datele pentru scriere sunt nscrise n latch-ul de ieire
i transferate de buffer-ul [1] pinului I/Ocitire 0 Este citit
starea pinului I/Ocitire 1 Pinul I/O este n mod ieire; este citit
informaia din
latch-ul de ieire.
Se poate observa c o linie de ieire a unui port paralel este mai
mult dectun latch simplu; totodat, informaia nscris n latch-ul de
ieire nu se schimbdect dac se efectueaz o nou operaie de scriere la
port.
Unele porturi paralele sunt considerate cvasi-bidirecionale,
ceea censeamn c o linie poate fi folosit n acelai timp ca ieire i
ca intrare. Aceastflexibilitate este considerat de interes n
aplicaii i este posibil printr-un truc.
Bit DDR
Bit port ieire(latch)
[1]
[2]
[3]
pinI/O
[1] Buffer de ieire
[2] Buffer de intrare (activ pentru DDR=0)
[3]Buffer de intrare (activ pentru DDR=1)
Figura 1.4 Circuit bidirecional de scriere/citire la portul
paralel
-
14 MICROCONTROLLERE
Figura 1.5 reprezint structura unei linii cvasi-bidirecionale.
Trucul const nexploatarea facilitilor unui etaj de ieire cu drena n
gol (open-drain) care n acestexemplu este pevzut cu o rezisten
conectat intern la sursa de alimentare.
Fiecare linie poate fi folosit independent ca intrare sau ca
ieire. Pentru afi folosit ca intrare este necesar ca latch-ul s fie
nscris cu unu logic (nQ va fi nacest caz zero) pentru ca
tranzistorul n1 s fie blocat. Dac nu este ataat nimic lapin,
rezistena intern de pull-up va determina citirea unui unu logic la
pin. Daclinia este forat exterior n zero logic, etajul va genera
curent prin rezistena depull-up, iar informaia citit va fi un zero
logic. Exist structuri mai complicatecare n unele situaii necesit
conectarea n exterior a unei rezistene de pull-up.
Pentru a interaciona cu mediul unui MC i sunt necesare multe
conexiunila nivel de pin, ceea ce nseamn un circuit cu un numr mare
de pini. Dinconsiderente de fiabilitate i economice se caut
reducerea numrului de pini aiunui circuit integrat. n aceast
situaie a fost necesar un compromis n urma cruias-a ajuns la soluia
prin care se atribuie unui pin funcii multiple (dou sau maimulte).
Pinii astfel sacrificai sunt pinii portului paralel. La pinii
porturilor paralelesunt accesibile celelalte resurse ale
circuitului; pot fi amintite conexiunileinterfeelor seriale,
conexiunile cu exteriorul ale modulelor timer, canalele deintrare
ale convertoarelor A/D, liniile pentru generarea ntreruperilor
externe.
n mod normal de operare magistralele interne ale unui MC nu
suntaccesibile n exterior, la nivel de pin. Exist situaii n care
este necesar extensiaresurselor (extensia memoriei, spre exemplu)
caz n care este necesar accesul lamagistralele interne. Pentru
rezolvarea acestei probleme sunt folosii tot piniiporturilor
paralele. Din nou, pentru economie de pini sacrificai, aceiai pini
suntfolosii consecutiv pentru a vehicula adrese i apoi date.
Deoarece adresele folosescliniile doar ca ieiri, adresa este
disponibil la pinii portului paralel n timpulprimului ciclu de ceas
al execuiei unei instruciuni. Adresa este memorat ncircuite
exterioare (n latch-uri). n al doilea ciclu de ceas se vehiculeaz
pe aceste
pinI/O
D
CLK
Q
Q n1
Pull-upintern
VCCCitire latch
Citire pin
Scriere latch
Bus intern
Figura 1.5 Structura unei linii cvasi-bidirecionale
-
1. Descriere general 15
linii datele. Modul de lucru n care magistralele interne sunt
disponibile la pini estenumit mod expandat de lucru.
Pentru a evalua capabilitatea porturilor paralele se recomand
considerareaurmtoarelor nsuiri:
Numrul de linii I/O; Posibilitatea de a programa sensul liniilor
I/O; Alte resurse accesibile prin funcii multiple la liniile I/O;
Posibilitatea accesului la magistralele interne Aspecte electrice
de interfaare.
Module de comunicaii seriale
Comunicaia serial este o metod bine agreat i n contextul
MCdeoarece ofer compatibilitate cu o gam extins de dispozitive i
necesit unnumr minim de fire, implicit un numr minim de conexiuni
(pini puini).
n transferul serial de date este necesar s se cunoasc nceputul i
sfritulinformaiei transferate. Pentru a identifica cele dou
coordonate emitorul ireceptorul trebuie s fie sincronizai.
Sincronizarea se poate realiza prin treimetode, dintre care numai
dou sunt folosite n MC, urmnd s le considerm doarpe acestea n
continuare. Oricare din metode presupune c durata unui bit
esteaceeai att la emitor ct i la receptor (este folosit acelai
semnal de ceas pentruserializarea informaiei). Numrul de bii
transmii ntr-o secund reprezint ratade transfer numit baud rate;
aceasta se msoar n bii/secund (bps). Durata unuibit este 1/(baud
rate).
Modulul serial asincron
Prima metod considerat este transferul serial asincron. Modulul
serialasincron este referit ca UART (Universal Asynchronous
Receiver Transmiter).ntr-un transfer serial asincron nceputul
fiecrui byte este marcat de o tranziie aliniei meninut pe durata
corespunztoare unui bit. Sfritul este marcat deasemenea de un bit
de stop; bitul de stop const n meninerea liniei pe durata unuibit
ntr-o stare predefinit. ntre bitul de start i bitul de stop sunt
transferai biii deinformaie. O secven complet este compus dintr-un
bit de start, opt sau noubii de date i un bit de stop, n total 10
sau 11 uniti de cod. Interfaa serialasincron poate fi implementat n
dou moduri ntr-un MC.
Cea mai puin costisitoare soluie din punct de vedere al
cheltuielilor deresurse hardware este un program care s genereze
secvena de transfer ca icomponen i ca durat a fiecrui bit.
Programul trebuie s msoare duratafiecrui bit. Soluia este
costisitoare din punct de vedere al timpului consumat nrularea
programului.
-
16 MICROCONTROLLERE
A doua soluie de implementare a interfeei seriale este i cea mai
desntlnit n MC. Interfaa este realizat cu un modul hardware
specializat. Unitateacentral nscrie informaia de transferat ntr-un
registru al interfeei dup caresarcina serializrii i a generrii
secvenei este finalizat de ctre hardware-ulinterfeei. n cazul
recepiei interfaa preia secvena recepionat, extrageelementele de
sincronizare i nscrie datele efective ntr-un registru.
Datelerecepionate sunt accesibile unitii centrale n acest registru
al interfeei. n cazuln care registrul de transmisie este gol sau
registrul de recepie este plin interfaasemnalizeaz starea i poate
chiar suspenda temporar execuia programuluiprincipal prin
ntreruperi hardware. O schem bloc simplificat a unei
interfeeseriale asincrone este reprezentat n figura 1.6.
Ceasul pentru generarea ratei de transfer poate fi intern sau
extern. n cazuln care se selecteaz ceas intern, acesta se formeaz
din ceasul unitii centrale cu oprescalare. Pentru ca rata de
transfer s fie programabil ceasul prescalat sedivizeaz n continuare
folosind un numrtor al unui timer din resursele proprii.Interfaa
UART dispune de un registru de stare i un registru de control cu
ajutorulcrora se pot prgrama modul de lucru, parametrii de
comunicaie, selectareaceasului, divizarea ceasului.
Conexiunile interfeei seriale asincrone sunt disponibile la pini
cu funciimultiple la unul din porturile paralele.
Magistrala intern
Registru dedeplasare la
recepie
Registru dedeplasare latransmisie
Cerere de ntrerupere ctre UC
Bufferrecepie
Buffertransmisie
Registru deprescalare
Baud rate
Selecie ceas
CLK TxD RxD
Figura 1.6 Schema bloc a UART
-
1. Descriere general 17
Modulul serial sincron
Urmtoarele dou metode de sincronizare posibile la transferul
serial sunttransfer serial sincron i transfer serial
autosincronizat. Transferul autosincronizatse bazeaz pe utilizarea
unui sistem special de codificare a datelor. Sistemulpermite ca din
datele recepionate s se poat extrage semnalul de ceas. Aceastmetod
nu este folosit n MC.
Transferul serial sincron este folosit pentru comunicaii locale
ntreprocesoare sau cu dispozitivele periferice. n transferul
sincron datele transferatesunt nsoite de semnalul de clock.
Semnalul de clock este transferat pe o liniededicat. Transferul
serial sincron necesit trei conexiuni: emisie, recepie i
clock.Interfaa hardware este mai simpl dect la transferul asincron.
Protocolul dintreemitor i receptor include o scurt perioad de
sincronizare la iniierea unuitransfer de date. Spre deosebire de
transferul asincron, la care sincronizarea se faceprin bitul de
start al fiecrui octet, la transferul sincron aceasta are loc o
singurdat, la nceputul transferului unui bloc de date. Transferul
serial sincron permiterate de transfer mai mari dect transferul
serial asincron; rate de 1Mbps.
ntr-o conexiune serial sincron unul din dispozitive este master
iarcellalt este slave. Un transfer poate fi iniiat doar de un
master. Master-ul scrie unoctet n registrul de transmisie de date
al interfeei seriale sincrone. Datele sunttransferate unui registru
de deplasare unde sunt serializate i transmise pe linia deemisie
numit MOSI (Master Output Slave Input). Pe linia SCK (Serial Clock)
estetransmis clock-ul. La slave datele ajung tot pe linia MOSI
ntr-un registru dedeplasare unde sunt deplasate cu ceasul
recepionat pe linia SCK. La umplerearegistrului de deplasare datele
sunt transferate n registrul de recepie de date.
Conexiunile interfeei seriale sincrone sunt disponibile la pini
cu funciimultiple la unul din porturile paralele. Pinii asociai
unei conexiuni seriale sincronesunt urmtorii:
MISO Master In Slave Out Pinul MISO este configurat ca intrare
ntr-unmaster i ieire dintr-un slave. MISO este conexiunea prin care
se transmit datentr-un sens (de la slave la master). Ieirea MISO la
un slave este n starea de naltimpedan dac dispozitivul slave nu
este selectat.
MOSI Master Out Slave In Pinul MOSI este configurat ca ieire
dintr-unmaster i intrare ntr-un slave. MOSI este cea de-a doua
conexiune prin care setransmit date n cellalt sens (de la master la
slave).
SCK Serial Clock Pinul SCK este ieire la un master i intrare la
un slave. Prinaceast conexiune se transmite semnalul de
sincronizare pentru transferul datelorpe liniile MISO i MOSI. Pe
durata a opt perioade ale SCK se transfer ntremaster i slave un
byte de informaie.
nSS non Slave Select La pinul nSS se aplic semnalul care
selecteaz undispozitiv slave; pentru un dispozitiv slave, semnalul
trebuie s fie activ (low) petoat durata unei tranzacii n care este
implicat. Pentru un dispozitiv master,
-
18 MICROCONTROLLERE
intrarea nSS se conecteaza permanent la 1 logic; n cazul n care
la master, intrareanSS devine 0, se seteaza un flag de eroare
(MODF) n registrul de stare al interfeeiseriale sincrone. Pinul nSS
al unui master poate fi configurat i ca ieire de uzgeneral prin
setarea unui bit n registrul de sens DDRD. Ceilali trei pini,
amintiianterior, sunt dedicai interfeei sincrone atta timp ct este
validat.
n sistemele care folosesc funcia serial sincron exist un master
i unulsau mai multe dispozitive slave. Exist mai multe soluii de
interconectare; acesteavor fi prezentate n continuare.
n cazul n care n sistem este un singur slave, conexiunea este
fcut ca nfigura 1.7.
Interfaa serial sincron permite interconectarea mai multor
dispozitive,dintre care unul singur este master. Exist dou soluii
pentru o conexiune multi-slave. n una din ele master-ul folosete
ieiri de porturi pentru a selectadispozitivul slave cu care se face
transferul; n cealalt soluie, toate dispozitiveleslave sunt
selectate i sunt legate n inel. Conexiunea cu selecia fiecrui
dispozitivslave este reprezentat n figura 1.8.
Un alt mod de a realiza o conexiune serial sincron n care exist
maimult dect un slave este reprezentat n figura 1.9. Acest tip de
conexiune difer deprecedentul prin urmtaorele:
Pinul MISO al fiecrui slave este conectat la pinul MOSI
aldispozitivului slave vecin. Pinul MOSI de la master este n
continuareconectat la pinul MOSI de la primul slave.
Pinul MISO de la master este conectat cu pinul MISO al
ultimuluidispozitiv slave.
Intrrile nSS ale tuturor dispozitivelor slave sunt conectate la
mas. Nueste necesar comanad de selecie de la master n aceast
conexiune.
SLAVE
Registru dedeplasare (8b)
MASTER
Registru dedeplasare (8b)
generatorclock
MISO MOSI
MOSI MISO
SCK SCK
nSS
nSS
+5V
Figura 1.7 Conexiune serial sincron master-slave
-
1. Descriere general 19
Conexiunea din figura 1.9 folosete un numr minim de pini pentru
acontrola un numr mare de dispozitive. Ca dezavantaj, master-ul nu
poate selectaun anume slave pentru transferul de date, datele trec
prin toate dispozitivele dininel pn la dispozitivul adresat.
Interfaa serial sincron este folosit pentru a comunica cu
periferice cumar fi un simplu registru de deplasare, un sistem de
afiare LCD sau un sistem deconversie A/D. Modulul serial sincron
este suficient de flexibil pentru a interfaa
MOSI SCK MISO nSS
RD
SLAVE 0
MOSI SCK MISO nSS
RD
SLAVE 1
MOSI SCK MISO nSS
RD
SLAVE k
MASTER
RD
SCK
MOSI
MISO
nSSPB0PB1
PBk
+5V
Figura 1.8 Conexiune serial sincron single-master multi-slave
(varianta 1)
.
MOSI SCK MISO nSS
RD
SLAVE 0
SCK
MASTER
RD
MOSI
MISO
nSS
MOSI SCK MISO nSS
RD
SLAVE 1
+5V
MOSI SCK MISO nSS
RD
SLAVE k
Figura 1.9 Conexiune serial sincron single-master multi-slave
(varianta 2)
.
-
20 MICROCONTROLLERE
direct periferice cu standarde diferite, provenite de la diveri
productori.Conexiunea serial sincron poate fi folosit i pentru a
extinde numrul deintrri/ieiri acolo unde acesta este limitat de
numrul de pini ai capsulei MC.
Interfeele seriale amintite sunt ntlnite n MC cu urmtoarele
nume:
SCI (Serial Communications Interface) este un subsistem I/O
serialindepenent, de tipul full duplex asincron (UART) numit astfel
n MC Motorola.
SPI (Serial Peripheral Interface) este un modul serial folosit
pentru acomunica sincron la distane mici cu viteze de pn la 4
Mbps
SCI+ este similar cu SCI, are n plus suport pentru comunicaii
serialesincrone. Dispune de o ieire de ceas folosit pentru a
transfera date n mod sincroncu un periferic de tip SPI.
SIOP (Simple I/O Port) este o implemenatre mai simpl a SPI.
Module Timer
Natura aplicaiilor pentru care s-a nscut microcontroller-ul
implic omultitudine de funcii de timp puse la dispoziia
utilizatorului prin module de timpnumite timer. Un MC este echipat
n mod obligatoriu cu un astfel de modul maimult sau mai puin
complex. Un sistem timer obinuit pune la dispoziie un set defuncii
implementate pe baza unui numrtor liber central i a unor
blocurifuncionale pentru fiecare funcie n parte. Timer-ul are n
structura sa, dintre toatecelelalte subsisteme, cele mai multe
registre. Toate funciile unui timer pot generantreruperi
independente; fiecare are controlul propriu i propriul vector
dentrerupere.
Modulele timer complexe sunt construite cu arii de numrare
programabile(PCA). Pentru aplicaii speciale n timp real s-au
construit module timer cu unitatearitmetic i logic proprie.
Timer-ul este folosit pentru a msura timpul i pentru a genera
semnale cuperioade i frecvene dorite. Timer-ele nu sunt doar
circuite cu funcii detemporizare; n modulul timer sunt implementate
cteva mecanisme care pun ladispoziia utilizatorului funcii
specifice. Mecanismul de comparare permitecontrolul unor semnale de
ieire; mecanismul de captur permite monitorizareaunor semnale de
intrare; numrtoarele interne permit generarea de referine detimp
interne, necesare n bucle de ntrziere, multiplexarea diferitelor
sarcinisoftware, .a. Timer-ul poate fi folosit practic pentru orice
funcie de timp, inclusivgenerarea unor forme de und sau conversii
D/A simple. Funciile oferite de untimer sunt:
1. Captur la intrare (IC - input capture) - aceast funcie se
bazeaz peposibilitatea de a stoca valoarea numrtorului principal la
momentul apariieiunui front activ al unui semnal extern.
Facilitatea permite msurarea limiiunui impuls sau a perioadei unui
semnal. Facilitatea poate fi folosit i careferin de timp pentru
declanarea altor operaii.
-
1. Descriere general 21
2. Comparare la ieire (OC - output compare) - se compar la
fiecare impuls deceas valoarea numrtorului principal cu cea a unui
registru. Dac se constategalitate, n funcie de programarea
anterioar pot avea loc urmtoareleevenimente: declanarea unei aciuni
la un pin de ieire (opional), setarea unuiflag ntr-un registru sau
generarea unei ntreruperi pentru unitatea central(opional). Funcia
este folosit pentru a genera ntrzieri sau pentru a genera oform de
und cu valori dorite pentru frecven i pentru factorul de umplere
.
3. ntreruperi n timp real (RTI real-time interrupt) ntr-un
sistem existsarcini care trebuiesc executate periodic sau care nu
permit depirea unuiinterval limit ntre doua execuii. Aceste sarcini
sunt lansate ca rutine detratare a ntreruperii generate de
timer.
4. COP (computer operating properly) watchdog aceast funcie este
folositpentru a reseta sistemul n cazul n care din erori de
programare (bugs) sauerori n desfurarea programului datorate
perturbaiilor mediului, registrulCOP nu este accesat ntr-un
interval de timp prescris.
5. Acumulare de pulsuri (pulse accumulator) este funcia folosit
pentru anumra evenimentele ce apar ntr-un interval de timp
determinat sau pentru amsura durata unui impuls.
Numrtorul liber
n figura 1.10 sunt prezentate elementele de baz din componena
unuitimer, partea de numrtor liber.
Numrtorul este pilotat de un clock provenit din clock-ul unitii
centraledivizat cu un factor de regul programabil. Numrtorul este
nscris cu 0 doar lareset, iar n rest este un registru de tip
read-only. Cnd numrtorul tranziioneazdin starea FFFFh n starea
0000h, se seteaza flag-ul TOF (timer overflow) aflat
ClockMC
:1,4,8,16
TCNT(H) TCNT(L)
Numrtor16 biti La RTI, COP i
acumulator de impulsuri
TOI
TOF
Cerere de
ntrerupere
Figura 1.10 Schema bloc a unui timer (MC 68HC11) numrtorul
liber
-
22 MICROCONTROLLERE
ntr-un registru neoperaional asociat modulului timer. Pentru a
autoriza generareaunei ntreruperi este necesar s fie setat un flag
de autorizare (TOI).
Factorul de divizare a clock-ului este stabilit ntr-un registru
asociat.Registrul TCNT de 16 bii permite citirea strii numrtorului.
Se
recomand citirea numrtorului folosind o instruciune care opereaz
pe 16 bii; nacest fel ambii octei ai numrtorului aparin aceleiai
stri de numrare. Dac sefac dou citiri, accesnd pe rnd partea mai
semnificativ i partea mai puinsemnificativ, cele dou informaii nu
vor aparine aceleiai faze de numrare.
Captura la intrare
Unele aplicaii necesit cunoaterea localizrii n timp a momentului
ncare are loc un eveniment. ntr-un calculator, timpul fizic este
reprezentat princoninutul unui numrtor, iar apariia unui eveniment
este reprezentat printr-otranziie de semnal. Momentul apariiei
evenimentului poate fi nregistrat prinmemorarea strii
numrtorului.
Funcia de captur la intrare este implementat de un circuit care
areschema bloc reprezentat n figura 1.11.
Timpul fizic este reprezentat de valoarea coninut de numrtorul
liber.La apariia unui eveniment materializat printr-o tranziie la
pinul ICx, coninutulnumrtorului liber este preluat n latch-ul de 16
bii din blocul de captur.Utilizatorul poate s valideze funcia de
captur, poate s aleag frontul activ altranziiei i poate s
autorizeze generarea unei ntreruperi ctre unitatea central
ladetectarea frontului activ. Dac un canal de captur nu este
validat, pinul de intrarece i este asociat poate fi folosit ca
intrare de uz general. ntreruperile intrrilor decaptur sunt
vectorizate, fiecrei ntreruperi i este alocat o poziie bine definit
ntabela vecorilor de ntrerupere.
Funcia de captur are multe aplicaii, cteva din ele descrise pe
scurt ncontinuare:
Latch16 bii
TICx
ICxF
ICxI Cerere de
ntrerupere
Detector detranziii
PinICx
Figura 1.11 Funcia de captur la intrare schema bloc
-
1. Descriere general 23
1. Localizarea momentului apariiei unui eveniment - funcia de
captur estefoarte util n cazul n care este necesar cunoaterea
momentelor la care auavut loc evenimentele. Numrul de evenimente
monitorizate sub acest aspecteste limitat de numrul de canale de
captur ale MC.
2. Msurarea perioadei pentru msurarea perioadei unui semnal
necunoscut seprocedeaz la determinarea timpului scurs ntre dou
tranziii consecutive deacelai fel; dou fronturi pozitive
consecutive sau dou fronturi negativeconsecutive.
3. Msurarea limii unui impuls Pentru a msura limea unui impuls
semsoara timpul scurs ntre un front pozitiv i frontul negativ ce i
urmeaz.Deoarece numrtorul liber este un numrtor pe 16 bii,
intervalul maximmsurabil cu un ciclu de numrare este limitat la de
216 ori periada unui clock(clock-ul numrtorului). Dac se msoar
intervale mai mari, se va lua nconsiderare i numrul de tranziii de
la valoarea maxim la 0 a numrtoruluiliber.
4. Generarea unei ntreruperi Fiecare canal de captur poate
genera opional ontrerupere dac se detecteaz la intrarea de captur
frontul stabilit a fi activ.
5. Numrarea unor evenimente considernd c un eveniment este
reprezentat deo tranziie de semnal, cu funcia de captur la intrare
folosit n combinaie cufuncia de comparare la ieire, pot fi
contorizate evenimentele ce apar ntr-uninterval de timp stabilit.
La apariia unui eveniment se genereaz o ntrerupere;n rutina de
servire a ntreruperii se incrementeaz un contor de
evenimenterealiznd astfel nregistrarea numrului de apariii. Sfritul
intervalului decontorizare este stabilit cu ajutorul funciei de
comparare la ieire.
6. Referin de timp aplicaia folosete n combinaie funcia de
captur laintrare i funcia de comparare la ieire. Dac utilizatorul
dorete s activeze unsemnal de ieire la un interval dorit dup
detectarea unui eveniment, se vafolosi funcia de captur la intrare
pentru a stabili momentul apariieievenimentului de referin. Se va
aduna la valoarea numrtorului reinut lacaptur un numr dorit de
cicluri de numrare i se va transfera aceast valoareregistrului de
comparare. Cnd numrtorul liber atinge valoareacomparatorului se va
genera o ntrerupere n rutina creia se va activa ieireadorit.
Comparare la ieire
Scema bloc a componentei care realizez funcia de comparare
estereprezentat n figura 1.12.
Un canal de comparare const dintr-un comparator pe 16 bii, un
registrude comparare pe 16 bii, un circuit de generare de
ntreruperi, o ieire de comparare
-
24 MICROCONTROLLERE
i o logic de comand. Un sistem timer dispune de mai multe canale
de comparare(68HC11 are cinci canale de comparare).
Principala aplicaie a unei funcii de comparare este
ntreprinderea uneiaciuni la un moment de timp viitor bine
determinat, cnd numrtorul liber atingeo anumit valoare. Aciunea
ntreprins ar putea fi comutarea unui semnal,acionarea unui
ntreruptor electronic, aprinderea unui LED, etc. Pentru a
folosifuncia de comparare este necesar parcurgerea urmtoarei
secvene:
1. se copiaz valoarea din numrtorul liber (coninutul registrului
TCNT);2. se adaug la copie o valoare determinat de ntrzierea
dorit;3. se transfer rezultatul n registrul de comparare.
Aciunea dorit la pinul ieirii de comparare se specific anterior
de ctreutilizator ntr-un registru asociat modulului. Comparatorul
compar valoareanumrtorului liber TCNT cu valoarea din registrul de
comparare la fiecare clock.Dac se constat egalitate, se activeaz
aciunea specificat la pinul de compararei se seteaz flag-ul
asociat. De asemenea, se va genera o ntrerupere dac aceasta afost
validat anterior prin bitul OcxI din registrul pentru validarea
ntreruperilor.ntreruperile sunt vectorizate; fiecare canal are o a
adres cunoscut n tabelavectorilor de ntrerupere.
ntreruperile n timp real RTI
Funcia RTI este folosit pentru a genera periodic ntreruperi;
ntreruperilepot fi folosite pentru a comuta ntre aplicaii n sisteme
multitasking sau pentru adeclana periodic execuia unei secvene.
Perioada apariiilor ntreruperilor n timpreal este programabil. Ca
rezoluie, funcia de ntrerupere nu este la fel deperformant ca i
funcia de comparare.
Comparator16 bii
TOCx
OCxF
OCxI Cerere de
ntrerupere
Figura 1.12 Funcia de comparare la ieire schema bloc
Ctrl.pin
PinOCx
-
1. Descriere general 25
COP - Watchdog
COP (Computer Operating Properly) este un ceas de gard,
numitwatchdog, folosit pentru a detecta erorile de program.
Folosirea ceasului de gardeste opional. n cazul n care se folosete,
programul utilizator trebuie s resetezeperiodic un registru COP;
dac nu are loc resetarea, unitatea centrala decide c aaprut o
problem n rularea programului i reseteaz sistemul pentru a preveni
odesfurare necontrolat a programului.
Funcia ceasului de gard poate fi realizat folosind un canal
timer de uzgeneral sau, situaia ntlnit n mod obinuit la MC, ceasul
de gard este un timerdedicat, folosit doar pentru funcia gard.
Structura unui modul watchdog estereprezentat n figura 1.13
Ceasul de gard este un timer simplu compus dintr-un numrtor al
cruiceas de numrare este programabil printr-un registru de
prescalare. Dac circuituleste activat, numrtorul numr continuu. Dac
numrtorul ajunge la valoareacea mai mare (FFFFh, dac este un
numrtor de 16 bii). se genereaz un RESETctre unitatea central. Este
sarcina programatorului s scrie periodic n registrul decontrol un
cuvnt care s inii e numrtorul. n cazul n care programul apierdut
controlul se va reseta si l.
Acumulatorul de impu
Modulul timer poate sacest registru pot fi numratnumrate chiar
pulsuri interne,
1. Numrare de evenimente front activ detectat la unprogram,
cicluri ale unui numrate n acumulatorultranziii.
BUS INTERN
Registru deprescalare
Registru decontrol
Numrtor
INIT
RESET
Figura 1.13 Schema bloc a unui modul watchdog
Clockalizezstemulsuri
dispun de un registru acumulator de impulsuri. ne evenimente
exprimate prin pulsuri sau pot fiprovenite de la clock-ul unitii
centrale.
numrtorul de 8 bii este incrementat la fiecare pin. Un eveniment
poate fi orice, segmente desemnal de intrare, uniti de timp, etc.
Pentru a fi de impulsuri, acestea trebuiesc transformate n
-
26 MICROCONTROLLERE
2. Numrare gardat numrtorul de 8 bii funcioneaz n regim liber
denumrare avnd la intrarea de clock un semnal provenit din clock-ul
unitiicentrale divizat cu un factor constant. O aplicaie uzual n
acest mod defuncionare este msurarea duratei unui puls (impuls
singular). Numrtoruleste nscris cu 0 la nceputul pulsului, iar la
sfritul pulsului se citete valoareasa.
Module PWM
Un semnal PWM (Puls Width Modulation) este folosit n multe
aplicaii;comanda motoarelor de curent continuu sau comanda surselor
de alimentare pot fiamintite ca principale aplicaii. n figura 1.14
este reprezentat un semnal PWM.
Semnalul PWM este un semnal periodic la care se poate modifica n
modcontrolat factorul de umplere. Modulele timer au resursele
necesare generrii unuisemnal cu factor de umplere variabil.
Deoarece, dup cum am mai amintit,semnalul PWM este utilizat n
aplicaii exist module timer dedicate acesteifuncii; modulele PWM.
Un modul PWM poate genera mai multe semnalemodulate. Structura unui
canal PWM este reprezentat n figura 1.15.
Registrul de prescalare genereaz clock-ul pentru un numrtor.
Clock-ulde numrare este programabil. Coninutul numrtorului este
comparat cu cel al
T1
T2Factorul de umplere este
T2/T1
Fig. 1.14 Semnal PWM
clockintern
Fig. 1.15 Schema bloc a canalului PWM
BUS INTERN
NumrtorPWM
Comparator pe 8 biiPWM
Registru prescalare
-
1. Descriere general 27
registrului PWM. Ct timp rezultatul comparaiei este mai mic sau
egal, se vagenera un unu logic la ieirea PWM. Dac rezultatul
comparaiei este mai mare, seva genera la ieirea PWM un zero logic.
Dac registrele comparate sunt de opt biifactorul de umplere poate
fi ntre 1/256 i 1. Un canal PWM odat programat vagenera la ieire
semnalul periodic continuu, fr intervenia unitii centrale.
Ca i la celelalte componente funcionale, n ceea ce privete
globalmodulele timer (includem i modulele watchdog i PWM) vor fi
prezentate nncheiere cteva criterii de apreciere:
numrul de canale timer i dimensiunea registrului de numrare;
flexibilitaea timere-lor, mecanisme implementate; existena unui
ceas de gard (watchdog); numrul de canale PWM i dimensiunea
registrului PWM.
Module A/D i D/A
Intrrile/ieirile analogice i convertoarele A/D nu sunt
considerate caparte definit n contextul unui calculator; aceste
elemente sunt importante nschimb atunci cnd considerm un
microcontroller. Prezena modulelor A/D iD/A n structura unui MC
contribuie la putereaacestuia n aplicaii deoareceinterfaarea cu
mediul presupune necesitatea de a prelucra sau de a elabora
mrimianalogice.
Convertoarele A/D sunt des ntlnite printre perifericele
on-chip.Convertoarele D/A nu sunt ntlnite n mod uzual printre
unitile componentedeoarece sunt relativ uor implementate n
exterior. Un convertor D/A simplupoate fi realizat folosind un
timer n mod PWM i integrnd pulsul n exterior cuun simplu circuit
RC.
Convertoarele A/D integrate pe chip sunt convertoare cu
aproximaiisuccesive sau mai rar, convertoare cu integrare. nsuirile
convertoarelor nu suntdeosebite; sunt convertoare lente n comparaie
cu cele implementate n circuiteindependente. Timpii de conversie
obinuii sunt plasai n intervalul 10s-25s.Rezoluia este de 8, 10 sau
12 bii iar precizia de +/-1/2LSB. Modulul de conversieeste prevzut
i cu un multiplexor analogic, astfel sunt disponibile mai
multecanale de intrare. Unele MC sunt echipate i cu circuit de
eantionare/memorare. ncazul n care circuitul de eantionare/memorare
lipsete, semnalul analogic trebuiemeninut constant pe durata unei
conversii. Tensiunea de referin necesarconvertorului poate fi
generat n circuit sau dac nu, este necesar s fie furnizatdin
exterior.
n continuare, n figura 1.16 este prezentat o schem bloc simpl a
unuimodul de conversie A/D. Circuitul analogic de intrare const
ntr-un multiplexoranalogic, un circuit de eantionare/memorare i un
convertor A/D cu aproximaiisuccesive. Tensiunea de referin pentru
convertor i masa analogic sunt furnizatedin exterior la pini
speciali. Clock-ul necesar convertorului este generat intern
dinclock-ul unitii centrale.
-
28 MICROCONTROLLERE
Modulul A/D folosete un registru de control prin care se
selecteazcanalul de conversie i modul de lucru pentru circuitul de
eantionare/memorare.Declanarea i terminarea conversiei sunt
semnalizate cu cte un bit tot n registrulde control. Rezultatul
conversiei este stocat n registrul de date. Registrul de dateva
conine ntotdeauna rezultatul ultimei conversii, de aceea acest
registru trebuiecitit nainte de terminarea urmtoarei conversii, n
caz contrar se pierde informaia
Conversia poate fi declanat intern, considernd bitul asociat din
registrulde control, sau din exterior printr-un semnal de comand
aplicat la pin.Declanarea unei conversii la un moment de timp
dorit, fr intervenia unitiicentrale, se poate realiza folosind un
timer. Modulul poate fi programat s executeo conversie a unui canal
i s se opreasc. Un alt mod de operare al modululuipoate fi
conversia continu a unui canal pna la recepionarea unei comenzi
dencheiere. Un alt mod de operare este conversia ciclic n care
modulul execut pernd conversia fiecrui canal, dup care se oprete. n
acest ultim mod sunt folositede obicei mai multe registre de date
pentru memorarea rezultatelor conversiilor.Rezultatele sunt citite
dup ncheierea unui ciclu. La terminarea unui ciclu deconversiei,
opional, se poate genera o ntrerupere ctre unitatea central.
n aplicaii de precizie se recomand ca pe durata conversiei s se
comuteunitatea central n stare inactiv pentru ca aceasta s nu
perturbe convertorul.
1.4 SISTEMUL DE NTRERUPERI
Sistemul de ntreruperi reprezint mecanismul ce asigur
sincronizareafuncionrii unitii centrale cu evenimentele. Acest
mecanism asigurimplementarea unui rspuns prompt i specific al
sistemului la orice cerere de
ADC0ADC1ADC2ADC3
Muxanalogic Convertor Analog Digital
Registru de control Registru de date
Seleciecanal
START STOPDate
Figura 1. 16 Schema bloc a modului de conversie A/D
pinstart
E/nM
bus intern
-
1. Descriere general 29
ntrerupere. Muli dintre productori au realizat pentru diversele
familii demicrocontroller-e variante constructive care difer uneori
substanial unele fa dealtele, scopul fiind fie acela al
simplificrii sistemului, fie acela al asigurrii unorfaciliti ct mai
adecvate aplicaiilor pentru care au fost proiectate
respectivelemicrocontroller-e.
nc din anii 1980-1985 s-a conturat un principiu care se confirm
iastzi: "fiecare funciune complex cu procesorul ei", respectiv
"fiecare funciune aunui sistem de comand cu rutina ei de servire a
ntreruperilor".
Evenimentele, sunt acele stri din funcionarea sistemului care
trebuieavute n vedere la controlul acestuia. Ele trebuie s
declaneze, cu o ntrziereminim, un rspuns adecvat din partea
sistemului, rspunsul trebuind s fie descrisde ctre proiectant prin
instruciuni incluse n cadrul unor rutine de servire
antreruperilor.
n cazul microcontroller-elor, ca de altfel i n acela al
microprocesoarelor,aceste evenimente trebuie privite ca informaii
de stare a sistemului, informaii cerezult fie urmare a prelucrrii
de ctre UC a datelor, (evenimente ce genereaz aanumitele ntreruperi
interne), fie urmare interaciunii sistemului cu mediulnconjurtor
(numite i ntreruperi externe). Acest din urm aspect
estepreponderent n cazul microcontroller-elor.
Unitatea central a MC analizeaz n cadrul ultimei perioade de
ceascorespunztoare fiecrui ciclu instruciune eventualele cereri de
ntrerupere postatepe parcursul execuiei instruciunii curente.
Ca orice sisteme deterministe, sistemele digitale dotate cu
microcontroller-e sunt ancorate, n funcionarea lor, ntr-un spaiu
multidimensional ce are dreptdimensiuni parametrii proprii i cei
reglai de ctre sistem ("mrimile de stare") itimpul. Sistemul de
ntreruperi este informat asupra evoluiei acestora prin canalede
transfer a informaiilor generale (porturi, canale
temporizatoare/numrtoare)sau specifice (interfee specializate UART,
SPI, SCI, USB, I2C, etc), el dispune deo unitate de analiz a
informaiilor ("controller-ul de ntreruperi" - CI),implementat
intern, conectat via magistralele interne ale MC la unitatea
decontrol a programelor), precum i de mecanismul prin care oprete
execuia dectre UC a programului curent i realizeaz declanarea
rutinei adecvate de servirea ntreruperilor.
Realizarea strilor generatoare de cereri de ntrerupere este
urmat deanaliza acestora de ctre CI. Aceast analiz presupune
urmtoarele:
Identificarea sursei generatoare a cererii de ntrerupere;
Determinarea ordinii de servire a cererilor de ntrerupere, n
cazul
apariiei simultane a mai multor astfel de cereri.
Ambele etape pot fi implementate att hard ct i soft,
neexcluzndu-seposibilitatea unor implementri mixte.
Identificarea sursei generatoare de ntrerupere se face prin
corelaia ce estestabilit ntre canalul de transfer al cererii,
registrul/registrele de memorare alacesteia i adresa de memorie la
care este plasat adresa rutinei de servire a
-
30 MICROCONTROLLERE
ntreruperilor sau prima instruciune a rutinei de servire a
ntreruperilor. Aceastsituaie este ntlnit la majoritatea
microcontroller-elor, dar exist i excepii, cumar fi
microcontroller-ele familiilor PIC "low range" i "middle range" de
la firmaMicrochip, la care orice cerere de ntrerupere genereaz
execuia unei rutine alcrei nceput este plasat la o adres unic, fix
de memorie.
Determinarea ordinii de servire, sau analiza prioritii cererilor
dentrerupere, presupune scanarea n faza de analiz a tuturor
canalelor de transferpentru cererile de ntrerupere sau a regitrelor
corelate cu acestea ntr-o anumitordine prestabilit hard. Multe
microcontroller-e dispun de mecanismul(implementat hard) ce permite
"prioritizarea" unora dintre aceste canale, ceea ceimplic
implementarea unor uniti de memorare a prioritilor (registre de
setare aprioritilor pe dou sau mai multe nivele) i instituirea unor
reguli de arbitrare.Fiecare dintre aceste nivele va fi scanat
distinct, n ordinea descresctoare aprioritilor, majoritatea CI
prezentnd doar dou nivele de prioritate: prioritar imai puin
prioritar.
n procesul de scanare, primul canal "activ" - care genereaz o
cerere dentrerupere - va fi cel ce va fi "servit", respectiv va
declana procesul de execuie arutinei de servire a ntreruperilor
corespunztoare.
Sunt ntlnite att microcontroller-e care permit ntreruperea unei
rutine deservire a ntreruperilor de ctre o alt cerere de ntrerupere
mai prioritar(ndeobte cunoscut ca sistem de ntreruperi
"rentreruptibil"), ct imicrocontroller-e care nu permit o astfel de
aciune.
Muli productori pun la dispoziia proiectantului cte un flag
devalidare/invalidarea global a ntreruperilor, ceea ce permite ca
utilizatorul smodifice cum dorete mecanismul de aciune la apariia
unui ntreruperi: permitesau inhib o ntrerupere prioritar aprut
ulterior uneia mai puin prioritare, dar pedurata ct aceasta este
servit.
Multe microcontroller-e dispun de un mecanism bazat pe
flag-uri(fanioane) de validare/invalidare a ntreruperilor, acest
mecanism putnd fiimplementat att la nivelul UC al MC ct i la / sau
la nivelul CI, respectiv lanivelul sistemului de analiz a cererilor
de ntrerupere. Registrele de memorare acererilor de ntrerupere sunt
dublate de registre ce memoreaz informaia devalidare a canalelor
ntreruptoare ("registre de validare a ntreruperilor" sau"registre
de mascare a ntreruperilor"), un canal corespunztor unei cereri
dentrerupere invalidat va fi ignorat n procesul de scanare a
cererilor de ntrerupere.
Un principiu des aplicat la implementarea acestui sistem const n
aceea cfiecare flag este setat printr-un mecanism hard i, n
general, resetat soft, prinexecuia unor instruciuni de resetare a
sa, ceea ce presupune pe de-o parte, luarean considerare prin
program a strii semnalate, iar pe de alt parte, asigurreanclanarea
mecanismului de ntrerupere, pentru situaia n care starea
respectivse repet.
Domeniul de adrese de memorie (SRAM sau PROM) n care sunt
plasateinstruciunile de start a rutinelor de servire a
ntreruperilor poart denumirea de"tabel a vectorilor de
ntrerupere".
-
1. Descriere general 31
Unele microcontroller-e prezint o tabel a vectorilor de
ntrerupere cuadrese fixe, specifice canalelor ntreruptoare, spre
exemplu I8051, Atmel, PIC,altele permit plasarea tabelei vectorilor
de ntrerupere la adrese de memorie ce suntstabilite de ctre
proiectant, este cazul, spre exemplu, micocontroller-elor
dinfamilia Z80 (Z8413, Z8414, Z8415, etc.)
n prima situaie, plasarea la adres fix a tabelei vectorilor de
ntrerupere,poate fi privit ca o restricie n dezvoltarea unor
programe de aplicaie, dar aceastaeste doar o fals problem! Practic,
noi putem realiza translatarea prin program atabelei vectorilor de
ntrerupere la orice adres de memorie prin simpla introducerea unor
instruciuni de salt ca prime instruciuni corespunztoare
canalelorntreruptoare. Exemplificm aceasta pentru familia 8051.
Tabela vectorilor de ntrerupere este cuprins ntre adresele:
0003H i0023H. Programul de translatare va trebui s se prezinte
astfel:
CSEGORG 00H
START:JMP MAIN ;Adresa de salt la progamul principal
;ORG 03H ;Adresa din tabela vectorilor de ntrerupere
;corespunztoare ntreruperilor externe de;stare - canal 0 -
ISR_EXT0:JMP NEW_ADDR_ISR0 ;Noua adresa a rutinei (poate fi
plasat n
;memoria RAM extern);
ORG 0BH ;Adresa din tabela vectorilor de
ntrerupere;corespunztoare ntreruperilor datorate;depirii capacitii
de numrarea a canalului;0 numrtor/temporizator
ISR_T0:JMP NEW_ADDR_ISR1 ;Noua adresa a rutinei (poate fi
;plasat n
;memoria RAM extern);
ORG 13H ;Adresa din tabela vectorilor de
ntrerupere;corespunztoare ntreruperilor externe de;stare -canal 1
-
ISR_EXT1:JMP NEW_ADDR_ISR2
;ORG 1BH ;Adresa din tabela vectorilor de ntrerupere
;corespunztoare ntreruperilor datorate;depirii capacitii de
numrarea a canalului;1 numrtor/temporizator
ISR_T1:JMP NEW_ADDR_ISR3
;;
-
32 MICROCONTROLLERE
ORG 23H ;Adresa din tabela vectorilor de
ntrerupere;corespunztoare ntreruperilor provenite de la;UART
ISR_SI:JMP NEW_ADDR_ISR4
;NEW_ADDR_ISR0:;Aici se vor plasa instruciunile corespunztoare
rutinei de servire a ntreruperilor de la;sursa extern
corespunztoare canalului 0.NEW_ADDR_ISR1:;Aici se vor plasa
instruciunile corespunztoare rutinei e servire a ntreruperilor
datorate;depirii de numrare la timer 0.NEW_ADDR_ISR2:;Aici se vor
plasa instruciunile corespunztoare rutinei de servire a
ntreruperilor de la;sursa extern corespunztoare canalului
1.NEW_ADDR_ISR3:;Aici se vor plasa instruciunile corespunztoare
rutinei e servire a ntreruperilor datorate;depirii de numrare la
timer 1.NEW_ADDR_ISR4;Aici se vor plasa instruciunile
corespunztoare rutinei e servire a ntreruperilor provenite;de la
UART.
Plasnd n memoria RAM aceast tabel este posibil s realizm ceea ce
secheam "servire dinamic a ntreruperilor". Acest procedeu de
servire antreruperilor permite implemenarea uoar a comenzii unui
automat secvenial cuun numr finit de stri. (spre exemplu: cazul
unei linii automate de montaj sau deturnare, etc). Implementarea
servirii dinamice a ntreruperilor const nmodificarea succesiv a
adreselor la care plasm rutina de servire a ntreruperii(ISR).
n figura 1.17 prezentm cazul unui automat cu un numr de trei
stridistincte, fiecare rutin de servire a ntreruperilor (ISR) va
rescrie adresa rutinei deservire corespunztoare evenimentului
urmtor n tabela vectorilor de ntrerupere.Este evident c aceast
tabel trebuie s fie locatat n memoria RAM a sistemului.
Primuleveniment
ISR corespunztoareevenimentului 1
Scrie n Tabela Vectorilor dentrerupere, adresa ISR2
Al doileaeveniment
Al treileaeveniment
ISR corespunztoareevenimentului 2
Scrie n Tabela Vectorilor dentrerupere, adresa ISR3
ISR corespunztoareevenimentului 3
Scrie n Tabela Vectorilor dentrerupere, adresa ISR1
Figura 1.17 Servirea dinamic a ntreruperilor ntr-un automat cu
trei stri
-
1. Descriere general 33
Un exemplu tipic n acest sens l reprezint tastaturile ce prezint
butoanemulti-funciune. S presupunem cazul butonului unic:
START/STOP al unui utilaj.Vom exemplifica procedeul de servire
dinamic prin programul care comutfunciunile butonului din START n
STOP i invers. Programul este conceputpentru un microcontroller din
familia 8051.
CSEGORG 00H
BOOT:JMP MAIN
ISR_EXT0:JMP BUTON
;S-a considerat c prima linie de ntreruperi externe de stare
reprezint canalul de transfer al;informaiilor corespunztor
butonului START/STOP;
;nstruciunea corespunztoare etichetei BUTON este plasat n
memoria RAM a;sistemului de comandBUTON:
JMP BUTON_START;BUTON_START:;
MOV DPTR,#BUTON+1;ncarc adresa din tabela vectorilor de
ntrerupere
MOV A,#LOW(BUTON_STOP)MOVX @DPTR,AINC DPTRMOV
A,#HIGH(BUTON_STOP)MOVX @DPTR,A
;Schimb adresa de salt ctre rutina urmtoare n schema de comutare
a rutinelor;Ultima rutin din schem trebuie s indice drept adres de
salt prima dintre rutine
RETIBUTON_STOP:;
MOV DPTR,#BUTON+1;ncarc adresa din tabela vectorilor de
ntrerupere
MOV A,#LOW(BUTON_START)MOVX @DPTR,AINC DPTRMOV
A,#HIGH(BUTON_START)MOVX @DPTR,A
;Schimb adresa de salt ctre rutina urmtoare n schema de comutare
a rutinelor;Ultima rutin din schem trebuie s indice drept adres de
salt prima dintre rutine
RETIMAIN:;;Trebuiesc incluse instruciunile corespunztoare
programului principalEND
-
34 MICROCONTROLLERE
n cazul sistemelor 8051 sau 68xx-68xxx, tabela vectorilor de
ntrerupereeste ampl incluznd variate canale ntreruptoare. Astfel,
pentru ntreruperileexterne de stare se dispune de dou linii de
intrare INT0# i INT1#, CI putnd fisetat s reacioneze fie pe front
(cel negativ), fie pe nivel logic (cel sczut -low),pentru canalele
numrtoare temporizare dispunem pentru fiecare de adrese deservire
corespunztoare strilor de depire a capacitii canalului
("overflow"), iarpentru unitatea UART dispunem de un vector unic
att la recepie ct i pentrutransmisie. n cazul microcontroller-elor
PIC (low/middle range) exist o singuradres (plasat la 0004H) pentru
ntreruperi externe, ceea ce impune pentruproiectant s scrie o rutin
de servire n care analiznd registrul ce memoreazcererile de
ntrerupere va decide asupra rspunsului la cererea respectiv.
1.5 MANAGEMENTUL PUTERII
Pentru aplicaiile n care consumul de energie de la sursa de
alimentareeste critic sunt implementate sisteme prin care pot fi
dezactivate temporar parte dinmodulele componente. Economia de
energie este esenial n cazul alimentrii dela baterii. Prin intrarea
n starea de economie de energie memoria RAM nu-ischimb coninutul i
ieirile nu-i schimb valorile logice. Sistemul de economiede energie
ofer dou moduri de operare care difer prin numrul
componentelordezactivate. Aceste moduri sunt numite Idle, Power
Down la MC Intel i Wait,Stop la MC Motorola. Intrarea n unul din
modurile de operare cu economie deenergie se face prin comenzi
software. MC Motorola dispun de instruciuni caredetermin intrarea n
mod Wait sau Stop. MC Intel intr n mod Idle sau PowerDown prin
controlul unor bii din registrul PCON (Power Control Register).
n ambele moduri de operare este ngheat funcionarea unitii
centrale.n mod Power Down (Stop) este blocat oscilatorul intern
ceea ce atrage
dup sine blocarea tuturor funciilor interne. Timer-ul va nghea i
interfeeleseriale i vor opri activitatea. Sistemul de ntreruperi,
dup caz, este dezactivat(MC Intel) sau poate s ramn activ (MC
Motorola). Coninutul memoriei i alregistrelor interne nu este
alterat, iar liniile I/O rmn neschimbate. Din aceaststare se poate
iei fie doar cu Reset la MC Intel. La MC Motorola se poate iei
fiecu Reset, fie la sesizarea unei ntreruperi externe (sistemul de
ntreruperi nu estedezactivat). n cazul n care revenirea se face la
sesizarea unei ntreruperi externeactivitatea intern este reluat n
aceleai condiii n care a fost abandonat(numrtoarele timere-lor
continu din starea pe care au avut-o la intrare n modStop).
n mod Idle (Wait) este ngheat doar funcionarea unitii
centrale,celelalte funcii folosite rmn active (timer-ul, interfeele
seriale i sistemul dentreruperi). Starea unitii centrale i a
tuturor registrelor este pstrat ct timp
-
1. Descriere general 35
MC se menine n mod Idle (Wait). Pinii de port pstreaz starea pe
care au avut-ola intrarea n acest mod. Din modul Idle se poate iei
prin Reset sau la sesizareaunei ntreruperi interne sau externe.
Consumul de energie este minim atunci cnd sunt activate cele mai
puinefuncii. Consumul minim de energie se obine n modul de operare
Power Down(Stop). n modul Idle (Wait) consumul este redus faa de
regimul de operarenormal dar este mai mare dect n mod Power Down
(Stop). n acelai timp,consumul n mod Idle (Wait) este cu att mai
redus cu ct sunt mai puine funciiactive la intrare n mod. n mod
Power Down (Stop) exist posibilitatea uneireduceri suplimentare a
consumului prin reducerea tensiunii de alimentare (la uneleMC).
OnNow este o iniiativ actual pentru modernizarea metodelor
deeconomie de energie n sistemele cu microprocesoare. Se
intenioneaz obinereaunui consum de energie (pentru un calculator
PC) de o treime din cel actual i untimp de ieire din starea inactiv
mai mic de 5 secunde. Informaii despre aceastiniativ se gasesc la
adresa www.microsoft.com/hwedev/onnow.htm
Un alt aspect important al alimentrii sistemelor construite cu
MC estecalitatea semnalului furnizat de sursa de alimentare. Dac
nivelul tensiunii dealimentare nu se ncadreaz ntr-o plaj permis
este posibil ca programul sfuncioneze defectuos, s se abat de la
cursul firesc. Pentru a elimina acest risc, pecare nu ni-l putem
permite n sistemele de control, n MC sunt implementatemodule de
monitorizare a tensiunii de alimentare. Acestea pot genera un Reset
desistem sau o ntrerupere n cazuri considerate limit.
LVR (Low Voltage Reset) este un circuit care monitorizeaz
tensiunea dealimentare a unitii centrale i foreaz un reset dac se
constat c aceasta estemai mic dect un minim predefinit.
LVI (Low Voltage Interrupt) este un circuit care monitorizeaz
tensiuneade alimentare a unitii centrale i genereaz o ntrerupere
dac se constat caceasta este mai mic dect un minim predefinit.
ntreruperea foreaz executareaunei rutine de oprire neforat.
1.6 SCHEMA BLOC A UNUI MC
Cu elementele prezentate pn la acest punct schema bloc a unui MC
poatefi dezvoltat (n comparaie cu cele prezentate n figura 1.1. i
figura 1.2);rezultatul este ilustrat n figura 1.18.
-
36 MICROCONTROLLERE
Schema este n continuare o reprezentare generalizat. Se poate
observa cun MC este organizat n jurul unei magistrale interne pe
care se vehiculeaz date,adrese i semnale de comand i control ntre
blocurile funcionale.
Unitatea central execut instruciunile pe care le primete prin
magistralade date din memoria program. Structura Harvard este
posibil i rspndit la MCpentru c de regul instruciunile sunt stocate
n memoria ROM, iar datele n ceaRAM. Magistrala de date i cea de
adrese pot fi separate sau multiplexate.Magistralele pot s nu fie
disponibile n exterior (Motorola 6805) sau pot fidisponibile n
exterior direct (MCS-51) sau multiplexate (MC pe 16 sau 32 de
bii).
Fiecare MC are un controller de ntreruperi care admite att
intrri dinexterior ct i de la modulele interne. Unele MC dispun de
un controller DMApropriu.
Modulele I/O pot fi seriale sau paralele. Fiecare modul transfer
date cuexteriorul prin intermediul registrului de date (RD).
Modulul este programat(configurat) de unitatea central prin
intermediul unui registru de comenzi (RC) ise poate citi starea
modulului prin registrul de stare (RS). Prin RS se pot
generantreruperi ctre unitatea central. Registrele modulelor I/O
pot fi vzute de UC calocaii de memorie (la familia Moto