Sunteți pe pagina 1din 139

10.

MICROCONTROLLERE
(MC)
10.1. PREZENTARE GENERAL
10.1.1. Definiii
Vom defini un microcontroller pornind de la o reprezentare simplificat a sa n
interaciune cu mediul (Fig. 10.1.). Se va folosi n continuare prescurtarea MC pentru a
numi un microcontroller.
Programe

MC

Memoria

Ieiri

Intrri
Unitatea
central

Generator de
tact

Fig. 10.1. Schema simplificat a unui microcontoller


Intrrile pot fi digitale sau analogice. Ca intrri se folosesc de regul semnale provenind de
la comutatoarele individuale sau de la traductoare (de temperatur, de presiune, foto,
traductoare specializate).
Ieirile se pot face cu diode LED, pot fi relee, motoare sau sonerii. Dac se face o
conversie D/A, ieirea o poate constitui un difuzor.
Se poate vedea o prim diferen fa de calculatoarele personale, unde intrrile se fac de
regul de la tastatur i ieirile pe monitorul TV. Dac un calculator personal este folosit
pentru a prelucra informaii i a afia rezultatele pe monitor sau hrtie, un MC comand un
proces.
Un element important, fr de care un MC nu poate funciona, este programul (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 conine memorie i o serie de interfee. Natura i
complexitatea aplicaiei n care este folosit MC determin performanele unitii centrale,
capacitatea de memorie i tipul interfeelor ce compun structura intern a MC.

158

O structur mai detaliat se poate vedea n Fig. 10.2. unde sunt reprezentate blocurile
principale.

Bus de
adrese

Memorie pentru
programe

Bus de
date

Memorie pentru
date
Intrri
digitale

Reset

Dispozitive I/O

Ieiri
digitale

Unitatea centrala de prelucrare


(CPU)

Oscilator

Fig. 10.2. Schema bloc a unui microcontoller


Privind evoluia istoric a operaiei de comand a unui proces putem contura imaginea unui
MC. Un controller este un sistem folosit pentru a comanda i a prelua stri de la un proces
sau un aspect al mediului nconjurtor. La nceput un controller era un echipament de mari
dimensiuni. Dup apariia microprocesoarelor dimensiunile controllerelor s-au redus.
Procesul de miniaturizare a continuat, toate componentele necesare unui controller au fost
integrate pe acelai chip. S-a nscut astfel calculatorul pe un singur chip sau
microcontrollerul. Un microcontroller este un circuit realizat pe un singur chip care conine
tipic:
unitatea central CPU;
generatorul de tact (la care trebuie adugat din exterior un cristal de cuar sau n
aplicaii mai puin pretenioase, un circuit RC);
memoria RAM;
memoria 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.
159

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 (se micoreaz inclusiv costul
proiectrii).
Diferenele dintre microprocesor i unitatea central a MC se atenueaz n timp. Astfel,
marii constructori de procesoare au realizat nite circuite care s-ar putea numi supermicrocontrollere, aa cum sunt Motorola 68EC300, INTEL 386EX sau IBM PowerPC
403GB, care sunt microcalculatoare pe un singur chip.
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 de hardware suplimentar pentru a-i
ndeplini funcia.
Importana MC este dovedit incontestabil de piaa care este n continu cretere. Astfel,
evoluia vnzrilor de MC n lume se regsete n tabelele 10.1. i 10.2.
Tabel 10.1. Evoluia vnzrilor MC n lume (n milioane dolari)
MC
'90
'91
'92
'93
'94
'95
'96
'97

'98

'99
(estimat)

4-bit 1393
8-bit 2077
16-bit 192

1597
2615
303

1596
2862
340

1698
3703
484

1761
4689
810

1826
5634
1170

1849
6553
1628

1881
7529
2191

Tabel 10.2. Evoluia vnzrilor MC n lume (n milioane buci)


MC
'90
'91
'92
'93
'94
'95
'96
'97
4-bit
8-bit
16-bit

778
588
22

906
753
38

979
843
45

1036
1073
59

1063
1449
106

1110
1803
157

1100
2123
227

1096
2374
313

'00
(estimat)

1856
8423
2969

1816
9219
3678

1757
9715
4405

'98

'99
(esti-

'00
(esti-

mat)

mat)

1025
2681
501

970
2700
585

1064
2556
419

Principalii productori de microprocesoare au realizat n 1994 i 1995 urmtoarele cifre de


afaceri (Tabel 10.3.)
Tabel 10.3. Cifre de afaceri realizate n anii 1994, 1995
microprocesoare (n milioane dolari)
Intel
10800
8036
AMD
881
992
Motorola
781
827
IBM
468
297
TI
219
202
Cyrix
210
240
Hitachi
188
66
NEC
100
82
LSI Logic
58
51
IDT
45
25
160

n prezent datele arat modificri de structur; de exemplu cifra de afaceri a AMD se


apropie de cea a lui INTEL. Cifra de afaceri, ca ordin de mrime, era deja n anii 1994,
1995 apropiat de cea realizat din vnzri de microprocesoare (Tabel 10.4.).
Tabel 10.4. Cifre de afaceri realizate n anii 1994, 1995
microcontrollere (n milioane dolari)
Motorola
1781
1511
NEC
1421
1208
Mitsubishi
945
708
Hitachi
899
782
Intel
835
605
TI
807
534
Philips
524
345
Matsushita
500
413
Lucent (AT&T)
492
275
Toshiba
400
328

10.1.2. Arhitectura MC
Blocurile interne ale MC sunt legate ntre ele printr-o magistral (bus) de date i
una de adrese. Mrimea acestor magistrale constituie una dintre caracteristicile cele mai
importante ale unui MC. Prin magistrala de adrese unitatea central (UC) selecteaz o
locaie de memorie sau un dispozitiv I/O, iar pe magistrala de date se face schimbul de
informaie ntre UC i memorie sau dispozitivele I/O. ntre UC i memorie sunt transferate
att date ct i instruciuni. Acestea se pot transfera pe o singur magistral de date sau pe
magistrale de date diferite.
Arhitectura von Neumann prevede existena unui bus unic folosit pentru circulaia datelor
i a instruciunilor. Cnd un controller cu o astfel de arhitectur adreseaz memoria, busul
de date este folosit pentru a exprima nti codul instruciunii, apoi pentru date, accesul fiind
realizat n 2 pai, deci destul de lent.
Arhitectura Harvard prevede un bus separat pentru date i instruciuni. Cnd codul
instruciunii se afl pe busul de instruciuni, pe busul de date se afl datele instruciunii
anterioare. Structura MC este mai complex, dar performanele de vitez sunt mai bune.
Unitatea central conine un set de registre interne, similare unor locaii de memorie,
folosite pentru memorarea unor date des apelate sau pentru programarea unor anumite
funcii. Diferitele familii de MC folosesc seturi diferite de registre. Exist ns cteva
registre comune.

A (Accumulator) registrul acumulator care este folosit deseori pentru a stoca


un operand i rezultatul unei operaii aritmetice.
PC (Program Counter) este registrul care stocheaz adresa urmtoarei
instruciuni de executat. Dup un RESET (iniializarea MC), registrul PC se
ncarc dintr-o locaie de memorie numit vector de reset. Aceast locaie
conine adresa primei instruciuni de executat. PC este incrementat automat
dup execuia unei instruciuni.
161

SP (Stack Pointer) coninutul acestui registru indic adresa curent a stivei.

Un aspect important care determin arhitectura unui MC este modul de programare.


Conceptul de CISC (Complex Instruction Set Computer) pe baza cruia sunt construite
majoritatea MC, prevede existena unui numr mare de instruciuni (tipic >80), ceea ce
face mai uoar munca programatorului. Multe din instruciuni sunt specializate, adic se
pot folosi doar n anumite moduri de adresare sau cu anumite registre.
Evoluia MC este spre arhitectura RISC (Reduced Instruction Set Computer), n cadrul
creia un MC are un numr mic de instruciuni. Avantajele sunt un chip mai mic, cu un
numr de pini mai mic, cu un consum mai redus i cu o vitez mai mare. Instruciunile sunt
simetrice, adic pot fi folosite la fel n orice mod de adresare sau cu orice registru, nu au
excepii sau restricii.
n prezent un MC este cu mai mult dect arhitectur RISC, el este cu o arhitectur SISC
(Specific ISC). Instruciunile sunt specifice pentru a lucra optim cu dispozitivele I/O,
permit manipularea la nivel de bit i sunt mai puine instruciuni de uz general, aa cum
ntlnim la microprocesoarele 8086, 68000 etc.

10.1.3. Memoria
MC folosesc diferite tipuri de informaii, care sunt stocate n diferite tipuri de
memorii. Instruciunile care controleaz funcionarea MC trebuie stocate ntr-o memorie
nevolatil, unde informaiile se pstreaz i dup oprirea i repornirea sursei de alimentare.
Rezultatele intermediare i variabilele pot fi nscrise ntr-o memorie volatil, la acestea este
important s se poat face scrierea /citirea rapid i simplu n timpul funcionrii.
Memoria RAM (Random Access Memory) este o memorie volatil care poate fi citit sau
scris de unitatea central. Locaiile din RAM pot fi accesibile n orice ordine. Pe chip,
memoria RAM ocup mult loc i implicit costurile de implementare sunt mari. De aceea un
MC include de obicei puin RAM. Memorie RAM static alimentat de la baterie se
folosete pentru stocarea nevolatil a cantitilor mari de date, la o vitez de acces mare i
cu un numr nelimitat de tergeri i renscrieri.
Memoria ROM (Read Only Memory) este cea mai ieftin i simpl memorie i se
folosete la stocarea programelor n faza de fabricaie. Unitatea central poate citi
informaiile, dar nu le poate modifica.
Memoria PROM (Programmable Read Only Memory) este similar cu memoria ROM, dar
ea poate fi programat de ctre utilizator. Dup posibilitile de tergere, aceast memorie
poate fi de mai multe feluri:

Memoria EPROM (Erasable PROM) care se poate terge prin expunere la


ultraviolete. MC cu EPROM au un mic geam de cuar care permite ca chipul s
fie expus la radiaia ultraviolet. tergerea este neselectiv, adic se poate
terge doar ntreaga informaie i nu numai fragmente. Memoria poate fi tears
i renscris de un numr finit de ori. Programarea EPROM-ului necesit o
procedur special, iar MC cu EPROM au nevoie de regul pentru nscrierea
162

EPROM-ului de o tensiune auxiliar, de 12 V de exemplu. Unele MC au incluse


circuite de programare a memoriei EPROM, cu ajutorul crora unitatea central
poate programa memoria EPROM. n timpul programrii memoria EPROM nu
este conectat la magistrala de date i adrese. Unele MC sunt prevzute cu mod
special de lucru, n care sunt vzute din exterior ca nite memorii EPROM
obinuite i pot fi astfel programate cu orice programator.
OTP (One Time Programmable PROM) se folosete pentru multe serii de MC.
Memoria OTP este de fapt o memorie EPROM, dar chipul a fost capsulat ntr-o
capsul de material plastic fr fereastr, care este mult mai ieftin. Memoria nu
se poate terge sau reprograma. Preul unui MC cu OTP este mic, viteza este
bun, dar aplicaiile sunt lipsite de flexibilitate.
Memoria EEPROM (Electrically Erasable Programmable Read Only Memory)
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
se memoreaz un mic numr de parametri care se schimb din timp n timp.
Memoria este lent i numrul de tergeri/scrieri este limitat (tipic 10 000).
Memoria FLASH este o memorie asemntoare EPROM i EEPROM n sensul
c poate fi tears i reprogramat n sistemul n care este folosit (fr a fi
necesar un sistem dedicat). Are capacitatea unui EPROM, dar nu necesit
fereastr pentru tergere. Ca i EEPROM, memoria FLASH poate fi tears i
programat electric. Memoria FLASH nu permite tergerea individual de
locaii, utilizatorul poate s tearg doar ntregul coninut.

Stocarea programelor n memorii nevolatile permite ca MC s fie programat fr a fi scos


din circuitul n care funcioneaz (Field Programming/Reprogramming). De exemplu la
auvehiculele comandate de MC, schimbarea tipului benzinei sau schimbarea unei legi
privitoare la poluare pot fi actualizate n programul MC fr ca acesta s fie scos din
autovehicul.
n funcie de numrul aplicaiilor n care urmeaz s fie folosit MC se recomand folosirea
MC cu ROM pentru volum mare de producie (ROM se nscrie cu masc la fabricant),
OTP pentru volum mic de producie i EPROM pentru prototipuri.

10.1.4. Dispozitive I/O


Dispozitivele I/O implementeaz funcii speciale degrevnd unitatea central de
toate aspectele specifice de comand i control n funcia respectiv. Exist o varietate
mare de dispozitive I/O; dispozitivele I/O conduc operaii generale de comunicaie
(transfer serial sau paralel de date), funcii generale de timp (numrare de evenimente,
generare de impulsuri), operaii de conversie analog/numeric, funcii de protecie, funcii
speciale de comand, i enumerarea poate continua. Din aceast mare varietate, parte din
dispozitive se gsesc n configuraia tuturor MC sau sunt foarte des ntlnite, iar o alt
parte de dispozitive o regsim doar n MC costruite pentru a optimiza aplicaii cu un grad
mare de particularitate. n acest capitol, n continuare, vor fi prezentate dispozitive des
ntlnite n echiparea MC. n capitolele urmtoare, pe msur ce vor fi prezentate exemple
de MC, vor fi descrise i o serie de dispozitive I/O speciale ce intr n componena
acestora.
163

Dispozitivele I/O sunt vzute de unitatea central ca porturi. Unitatea central apeleaz
porturile prin semnale de selecie construite din decodificarea magistralelor de adrese i
control. Porturile sunt mapate fie n spaiul de memorie, fie ntr-un spaiu propriu. Unitatea
central poate opera scrieri sau citiri cu porturile ca i cu memoria.

10.1.4.1. Module de comunicaii seriale


SCI (Serial Communications Interface) este un subsistem I/O serial indepenent, de tipul
full duplex UART asincron. SCI poate fi folosit pentru comunicaii ntre MC i un
terminal, un calculator PC sau un alt MC. Rata transferului este controlat de un generator
propriu, care furnizeaz frecvene pentru rate de transfer standard, folosind oscilatorul MC.
SPI (Serial Peripheral Interface) este un modul serial folosit pentru a comunica sincron la
distane mici cu viteze de pn la 4 Mbps. SPI este folosit pentru a comunica cu periferice
cum ar fi un simplu registru de deplasare, un sistem de afiare LCD sau un sistem de
conversie A/D. Modulul SPI este suficient de flexibil pentru a interfaa direct periferice cu
standarde diferite, provenite de la diveri productori. SPI poate fi folosit i pentru a
extinde numrul de intrri/ieiri acolo unde acesta este limitat de numrul de pini ai
capsulei MC.
SCI+ este similar cu SCI, are n plus suport pentru comunicaii seriale sincrone. Dispune
de o ieire de ceas folosit pentru a transfera date n mod sincron cu un periferic de tip SPI.
SIOP (Simple I/O Port) este o implemenatre mai simpl a SPI.
I2C (Inter-Integrated Circuit) este o magistral serial bidirecional sincron care pune la
dispoziie un mod simplu i eficient de a transfera date la 100Kbps.

10.1.4.2. Module Timer


Sistemul timer (circuit de timp) este folosit pentru a msura timpul i pentru a
genera semnale cu perioade i frecvene dorite. Timerele nu sunt doar circuite cu funcii de
temporizare; n modulul timer sunt implementate cteva mecanisme care pun la dispozitia
utilizatorului funcii specifice. Mecanismul de comparare la ieire permite controlul unor
semnale de ieire; mecanismul de captur la intrare permite monitorizarea unor semnale de
intrare; numrtoarele interne permit generarea de referine de timp interne, necesare n
bucle de ntrziere, multiplexarea diferitelor sarcini software, .a. Timerul poate fi folosit
practic pentru orice funcie de timp, inclusiv generarea unor forme de und sau conversii
D/A simple.
Mecanismul IC (Input Capture captur la intrare) este folosit pentru a determina
momentul apariiei unui eveniment sau pentru a msura perioada sau durata unui semnal de
intrare. Acest mecanism este folosit pentru sincronizarea cu evenimente externe.
Mecanismul OC (Output Compare comparare la ieire) este folosit pentru a determina o
schimbare la ieire la un moment de timp dorit. Mecanismul este folosit pentru a genera
spre exterior referine de timp.

164

Mecanismul PWM (Pulse Width Modulation modularea impulsurilor n lime) este


folosit la generarea semnalelor pentru comanda motoarelor, a comutatoarelor de putere, a
convertoarelor D/A simple.
Mecanismul RTI (Real-Time Interrupt) este folosit la generarea automat de ntreruperi
periodice. Funcia este util n realizarea operaiilor I/O de tip polling, n operaii de
diagnoz sau ntreinere.
Mecanismul RTC (Real-Time Clock) este similar cu RTI, dar este folosit pentru a
implementa un ceas de timp real.

10.1.4.3. Module A/D i D/A


Convertorul A/D este un modul implementat pe chip. Acesta eantioneaz periodic
semnale analogice externe i livreaz valorile digitale corespunztoare. Convertoarele A/D
sunt folosite de obicei pentru a msura mrimi analogice ca turaia unui motor,
temperatura, presiunea, nivelul lichidului, .a.
Convertorul D/A este de asemenea un modul implementat pe chip. Acesta preia de la
unitatea central o serie de valori binare i produce semnalul analogic corespunztor. De
obicei aceast funcie se realizeaz cu ajutorul modulului PWM (mai este necesar o
filtrare extern). O aplicaie tipic este comanda volumului la un aparat TV.

10.1.4.4. Module de protecie


COP (Computer Operating Properly) este un ceas de gard, numit watchdog, folosit pentru
a detecta erorile de program. Folosirea ceasului de gard este opionala. n cazul n care se
folosete, programul utilizator trebuie s reseteze periodic un registru COP; dac nu are loc
resetarea, unitatea centrala decide c a aprut o problem n rularea programului i
reseteaz sistemul pentru a preveni o desfurare necontrolat a programului.
LVR (Low Voltage Reset) este un circuit care monitorizeaz tensiunea de alimentare a
unitii centrale i foreaz un reset daca se constat c aceasta este mai mic dect un
minim predefinit.
LVI (Low Voltage Interrupt) este un circuit care monitorizeaz tensiunea de alimentare a
unitii centrale i genereaz o ntrerupere dac se constat c aceasta este mai mic dect
un minim predefinit. ntreruperea foreaz executarea unei rutine de oprire neforat.

10.1.5 Sisteme de economie de energie


Pentru a realiza economia de energie, esenial n cazul alimentrii de la baterii de
exemplu, un MC poate fi comandat prin soft s treac n starea de ateptare (IDLE) sau n
HALT. Prin intrarea n aceste stri memoria RAM nu-i schimb coninutul i ieirile nu-i
schimb valorile logice.
n mod IDLE nceteaz activitatea tuturor blocurilor funcionale cu excepia oscilatorului, a
ceasului de gard i a ceasului pentru modul ateptare.
165

Curentul de alimentare n aceast stare este tipic 30% din curentul normal de funcionare.
Din modul de ateptare se poate iei prin RESET sau la un stimul exterior (o ntrerupere de
la un dispozitiv I/O). Ceasul pentru modul de ateptare genereaz periodic ntreruperi
pentru ca MC s verifice starea. Dac nu exist cereri de activare (Wake Up), MC se
ntoarce n starea de ateptare.
Starea de HALT este asemntoare cu cea de ateptare. Capabilitatea MIWU (Multi Input
WakeUp) face ca un MC s poat fi trezit de una din 8 cereri de ntrerupere exterioare.
OnNow este o iniiativ actual pentru modernizarea metodelor de economie de energie n
sistemele cu microprocesoare. Se intenioneaz obinerea unui consum de energie (pentru
un calculator PC) de o treime din cel actual i un timp de ieire din starea inactiv mai mic
de 5 secunde. Informaii despre aceast iniativ se gasesc la adresa
www.microsoft.com/hwedev/onnow.htm

10.1.6. Familii de MC
INTEL 4048 a fost primul MC aprut pe pia, avnd o structur Harvard modificat, cu
64-256 octei de RAM i este nc folosit n multe aplicaii datorit preului sczut.
INTEL 8051 (MCS-51) este a doua generaie de MC i n prezent este familia care se
vinde cel mai bine; este fabricat i de muli ali productori. Acest MC are o arhitectur
Harvard modificat cu spaiu de adresare diferit pentru program (<64K din care 4-8K pe
chip) i date (<64K din care 128-256 octei pe chip, cu adresare indirect). Dispozitivele
I/O au un spaiu propriu de adresare. 8051 dispune de un procesor boolean prin care se pot
executa operaii complexe la nivel de bit, iar n funcie de rezultate se pot face salturi.
Pentru 8051 exist foarte mult soft, att contra cost ct i gratuit.
INTEL 80C196 (MCS-96) este a treia generaie de MC propus de INTEL. 80C196 este
un MC pe 16 bii care admite un tact pn la 50MHz. Acest MC conine blocuri aritmetice
pentru nmulire i mprire, lucreaz cu 6 moduri de adresare, convertor A/D, canal de
comunicaii serial, controller de ntreruperi cu 8 surse, pn la 40 de porturi I/O, generator
PWM i ceas de gard.
INTEL 80186 i 80188 sunt MC propuse de INTEL ca versiuni a popularelor
microprocesoare 8086 i 8088 care au echipat primele calculatoare IBM PC XT. Pe chip
sunt incluse 2 canale DMA, 2 numrtoare/temporizatoare, controller de ntreruperi i bloc
de refresh pentru memoria RAM. Exist i multe versiuni, MC cu consum redus, cu canale
seriale etc. Un mare avantaj la folosirea acestor MC este faptul c se pot folosi uneltele de
dezvoltare (compilatoare, asambloare etc.) de la PC-uri. Cine este familiarizat cu softul de
PC poate trece repede de etapa de nvare. Un alt avantaj este un spaiu mare de adresare,
specific PC-urilor. INTEl a fabricat i MC-ul 80386EX, o variant a procesorului 386 care,
la puterea lui 386 mai are n plus canale seriale, canale DMA, numrtoare/
temporizatoare, controller de ntreruperi, refresh pentru RAM dinamic, gestionarea
alimentrii (Power Management).

166

65C02/W65C816S/W65C134S (Western Design Center). WDC a creat procesorul pe 8


bii 65C02 folosit n calculatoarele Apple, Commodore i Atari urmat de procesorul pe 16
bii W65C816S i un MC pe 8 bii avnd ca nucleu procesorul de baz 65C02.
Motorola MC14500 a fost primul MC realizat de Motorola. Acest MC n arhitectur RISC
avea calea de date de un bit, 16 instruciuni i era furnizat ntr-o capsul mic (16 pini). El
a fost eliminat de pe pia de noile MC RISC.
Motorola 6805 se bazeaz pe procesorul 6800 i este asemntor cu 6502 produs de WDC.
Are o arhitectur von Neumann n care instruciunile, datele, dispozitivele I/O mpart
acelai spaiu de adresare. Stiva este limitat la 32 de poziii din cauza indicatorului de
stiv pe 5 bii. Unele MC din aceast familie includ convertoare A/D, sintetizoare de
frecven cu PLL, canale seriale etc.
Motorola 68HC11 (preluat i de TOSHIBA) este un MC popular pe 8 bii de date i 16
bii de adres, cu o arhitectur ca i 6805. 68HC11 are inclus memorie EEPROM sau
OTP, linii digitale I/O, numrtoare/temporizatoare, convertoare A/D, generatoare PWM,
acumulator de impulsuri, canale seriale de comunicaii sincrone i asincrone etc.
Motorola 683xx (MC68EC300) sunt super MC de nalt performan bazate pe un nucleu
cu arhitecura procesoarelor 68xx, cu o filozofie i performan asemntoare MC INTEL
80386EX.
PIC (MicroChip) sunt primele MC RISC aprute, cu un numr mic de instruciuni (tipic
33, fa de 8048 care are 90). Simplitatea arhitecturii (Harvard) duce la realizarea unui chip
de mici dimensiuni, cu puini pini, consum redus, vitez mare i pre mic. Aceste avantaje
au impus MC PIC pe pia. Exist 3 linii de MC PIC: PIC16C5x, PIC16Cxx i PIC17Cxx,
din care linia 16Cxx este cotat cel mai bine pe pia.
COP400 (National Semiconductor) este un MC pe 4 bii care are 512o-2K ROM, i 32x4160x4 RAM, n capsule de 20-28 de pini, cu tensiuni de alimentare 2,3V-6,0V. Sunt
echipate cu numrtoare/temporizatoare i magistral MICROWIRE. Aceste MC se fabric
n peste 60 de modele echivalente i sunt primele MC care au un pre sub 0,5USD/bucat.
COP800 (National Semiconductor) este un MC de 8 bii care conine MICROWIRE,
UART, RAM, ROM, numrtoare/temporizatoare de 16 bii, controller de ntreruperi,
comparator, ceas de gard, monitor de tact, generator PWM, transmisie n infrarou,
convertor A/D cu 8 canale cu prescalare (admite i intrri difereniale), protecie la
scderea tensiunii de alimentare, mod de ateptare i HALT, un trigger SCHMITT i
circuit de trezire cu mai multe intrri (Multi-Input-WakeUp). Eficiena este dat i de un
set puternic de instruciuni, majoritatea fiind de un singur octet i executate ntr-un singur
ciclu. Exist i variante pentru uz militar.
HPC (National Semiconductor) sunt MC pe 16 bii de mare performan, cu o arhitectur
von Neumann. Unitatea central poate executa nmuliri i mpriri. Conin n structur
funciile executate de familia COP800 avnd n plus canale seriale HDLC (High Level
Data Link Control) i elemente DSP, la o tensiune de alimentare de 3,3V. MC din aceast
familie au multe aplicaii n telecomunicaii, n sisteme de securitate, imprimante LASER,
hard discuri, frne ABS i aplicaii militare.
167

Proiectul PIRANHA (National Semiconductor) este un proiect de realizare a unui MC


RISC, primul MC dedicat aplicaiilor integrate. Acest MC are avantajele arhitecturii RISC,
deci puine instruciuni, simplitate, modularitate.
Z8 (Zilog) a fost unul dintre primele MC. Modelul iniial avea UART, numrtoare/
temporizatoare, DMA, 40 de linii digitale I/O, controller de ntreruperi. Modelul Z8671
avea n ROM un BASIC simplu. Modelul Z86C95 are o structur Harvard, faciliti DSP
etc. Un avantaj este c se pot folosi pentru extensii unele circuite de interfa din familia lui
Z80.
HD64180 (Hitachi) este un MC puternic, cu structura i posibilitile lui Z80, avnd n plus
2 canale DMA, canal de comunicaii sincrone i asincrone, numrtoare/temporizatoare i
controller de ntreruperi. Unele versiuni includ EPROM, RAM i PIO (Programmable
Input Output). Ruleaz instruciunile lui Z80, dar n mai puine cicluri i are instruciuni n
plus. Exist variante care funcioneaz pn la 18MHz.
TMS370 (Texas Instruments) este similar cu 8051. Conine RAM, ROM (OTP sau
EEPROM), 2 numrtoare/temporizatoare de 16 bii, controller de ntreruperi, ceas de
gard, generator PWM, convertor A/D cu 8 canale, SCI (port serial asincron), SPI (port
serial sincron), comparator, poate executa nmuliri i mpriri. Tactul poate fi pn la
20MHZ, cu 5MHz tact de magistral.
1802 (RCA) este un MC mai vechi, cu o structur apropiat de un microprocesor. Este
folosit mai ales n aplicaii spaiale.
MuP21 (Forth) este un MC care are puterea de calcul a unui procesor INTEL 80486
(100MIPS) la un pre mult mai mic. Are integrat un coprocesor video care gestioneaz o
memorie video, deci se poate ataa direct un monitor TV. Acest MC a fost creat ca s
ruleze programul OKAD (program de proiectare VLSI), i execut acest lucru de 10 ori
mai repede ca un 486. Mup21 are 40 de pini.
F21 (Forth) a fost conceput pentru aplicaii multimedia i procesare paralel. Viteza ajunge
la 250MIPS datorit structurii care conine procesoare de prelucrare analogic i procesor
de interfa la reeaua de calculatoare.

10.1.7. Clasificarea MC
Se pot considera multe criterii de clasificare a MC; de exemplu dup aplicaiile n
care se folosesc, dup interfeele pe care le au incluse n configuraie, dup furnizor etc. O
clasificare sumar a celor mai uzuale MC, dup compatibilitatea software, este:
MC CISC
Compatibile 8051
MOTOROLA 68xx
Compatibile x86
COP8 (National Semiconductor)
TMS370 (Texas Instruments)
ST (Thomson)
Alte arhitecturi (MC low cost) HITACI - 4bii, Z8 - 8 bii
168

MC RISC
Super H
PIC
Atmel

10.1.8. Schema bloc a unui MC


n general, orice MC are o structur intern organizat n jurul unei magistrale
(Fig. 10.3.).
Unitate centrala

ALU

Registre
interne

Memorie pentru
programe

Memorie pentru
date

BUS INTERN

Controller de
ntreruperi

RS

RC

RD

RSreg. de stare
RCreg. de comenzi
RD-reg. de date

Controller DMA
Intrri/ieiri
de date
Seriale/ Paralele

PORT

Fig. 10.3. Schema bloc a unui microcontroller


Unitatea central execut instruciunile pe care le primete prin magistrala de date din
memoria program. Structura Harvard este posibil i rspndit la MC pentru c de regul
instruciunile sunt stocate n memoria ROM, iar datele n cea RAM. Magistrala de date i
cea de adrese pot fi separate sau multiplexate. Magistralele pot s nu fie disponibile n
exterior (Motorola 6805) sau pot fi disponibile 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 din exterior ct i de la
modulele interne. Unele MC dispun de un controller DMA propriu.
Modulele I/O pot fi seriale sau paralele. Fiecare modul transfer date cu exteriorul prin
intermediul registrului de date (RD). Modulul este comandat (configurat) de unitatea
central prin intermediul unui registru de comenzi (RC) i se poate citi starea modulului
prin registrul de stare (RS). Prin RS se pot genera ntreruperi. Registrele modulelor I/O pot
fi vzute de UC ca locaii de memorie (la familia Motorola) sau ca dispozitive de I/O
ntr-un spaiu de adresare separat (MCS 51). De regul, structura de baz a familiei conine
anumite interfee considerate foarte importante (timer, canal serial UART) i linii I/O
169

grupate n porturi paralele de uz general. Pe structura de baz se adaug diferite tipuri de


interfee care folosesc n comun liniile I/O cu porturile paralele de uz general.

10.1.9. Tehnologii de fabricaie


CMOS (Complementary Metal Oxide Semiconductor) este cea mai rspndit
tehnologie. Consumul MC construit n aceast tehnologie este mic i permite astfel
alimentarea de la baterii. Circuitele CMOS pot fi statice sau "aproape" statice, ceea ce
nseamn c tactul poate fi ncetinit sau chiar oprit pentru regimul de economie de energie.
MC n tehnologie CMOS au o bun imunitate la perturbaii.
PMP (Post Metal Programming) permite programarea ROM-ului intern n ultimele faze de
producie, dup metalizarea final. Uzual ROM-ul se programeaz n etapele de nceput,
ceea ce nseamn c realizarea unei serii de MC poate dura 6-8 sptmni. Cu tehnologia
PMP MC se pot realiza aproape n ntregime, inclusiv metalizarea i testarea electric
anterior programrii ROM. Dup programarea ROM-ului se aplic doar stratul de pasivare.
Astfel, timpul de realizare a unei serii se reduce la 1-2 sptmni.

10.1.10. Criteriile pentru alegerea unui MC


Sunt multe aspecte de care trebuie inut seama la alegerea unui MC pentru o
anumit aplicaie. Alegerea unui MC potrivit poate duce la succesul proiectului, aa cum o
alegere nepotrivit poate duce la eecul proiectului. Fiecare cititor trebuie s adapteze
aceste criterii nevoilor sale i scalei proprii de valori.
Obiectivul urmrit n alegerea unui MC este obinerea calitii dorite cu un cost ct mai
sczut. Calitile dorite nseamn performan, fiabilitate, caliti EMC (de compatibilitate
electromagnetic cu mediul), iar costul total include costurile cercetrii, proiectrii,
construciei, testrii, reparrii produsului.
n primul rnd se pune problema stabilirii funciei pe care MC trebuie s-o ndeplineasc n
sistem. Alegerea din catalog a unui MC trebuie fcut n ideea a ct mai puin hardware
suplimentar (din motive economice). Procesul de cutare este dificil din cauza numrului
foarte mare de tipuri de MC disponibile pe pia. Munca de cutare este ajutat de bazele
de date din Internet, aa cum este baza de date de la www.questlink.com . Dup stabilirea
MC optim se verific preurile, dac este disponibil, suportul acordat de fabricant, existena
uneltelor de dezvoltare, stabilitatea firmei constructoare. Un criteriu important este
posibilitatea de a fi gsit pe pia (optenabilitatea), mai ales n zone n care circulaia
mrfurilor este destul de greoaie.
Criteriile pentru alegerea unui MC sunt, n ordinea importanei:
1.Posibilitatea folosirii n aplicaia dat
!"este suficient un MC sau sunt necesare circuite suplimentare;
!"liniile I/O sunt suficiente (un numr prea mic nseamn c aplicaia nu se poate face
cu acest MC, iar un numr prea mare nseamn un cost excesiv);
!"exist toate interfeele solicitate de aplicaie: I/O serial, convertoare A/D, D/A i nu
exist interfee n plus;
!"exist capacitatea de memorare suficient: RAM, ROM;
!"MC are viteza suficient pentru aceast aplicaie. Se verific timpul necesar rulrii
programului care trebuie s fie mai mic dect intervalul de timp n care trebuie s
reacioneze MC;
170

!"alimentarea MC poate fi fcut din aplicaie (este posibil ca aplicaia s fie


portabil, atunci este nevoie de un MC care s funcioneze la 3V;
!"preul acestui MC este bun (acceptabil) pentru aplicaia respectiv.
2. Optenabilitatea MC
!"trebuie s fie disponibil n cantiti suficiente;
!"trebuie s fie n producia actual, dar i n viitor pentru posibilitatea aprovizionrii
n viitor;
!"disponibilitatea unor accesorii (convertoare A/D, D/A, alimentatoare etc).
3.Disponibilitatea suportului de dezvoltare
!"asambloare;
!"compilatoare;
!"debuggere;
!"module de evaluare;
!"emulatoare n circuit;
!"analizoare logice;
4. Suport din partea constructorului
!"documentaie tehnic ;
!"buletine de aplicaii;
!"service prin telefon (BBS);
!"rapoarte despre prbleme de funcionare;
!"software de utilizare;
!"dac MC este folosit i de ali utilizatori, atunci sunt formate grupuri de lucru care
pot oferi ajutor.
5.Seriozitatea constructorului
!"dac este demonstrat competena lui ;
!"stabilitate i fiabilitatea MC realizate;
!"viteza de livrare;
!"numr de ani ca i constructor i rezultate financiare.
Un argument pentru alegerea unui tip de MC este existena unui modul de evaluare. Pentru
a promova propriile MC, muli furnizori au creat Kituri de evaluare care conin plci de
evaluare i un soft minimal cu care se poate nva utilizarea MC i se pot pune la punct
aplicaii. Un kit conine de regul un program monitor pentru calculator PC, un program de
transfer al datelor spre placa de evaluare (prin interfaa RS232 sau CENTRONICS), un
asamblor i un compilator C. Toate kiturile sunt nsoite de documentaie. Cteva din
modulele de evaluare sunt:
Motorola EVBU, EVB, EVM, EVS sunt echipate cu MC 68HC11.
Dallas Semiconductor DS5000TK sunt echipate cu MC Dallas din seria DS5000.
Philips i CEIBO DS750 sunt echipate cu 87C75x, echivalent cu 8051.
American Educational Systems AES-51(8051), AES-11(68HC11), AES-88(8088)
conin o tastatur, un afiaj cu LCD i documentaie.
Firma Texas Instruments pune la dispoziia celor interesai un set de accesorii pentru
familia TMS370, un sistem de dezvoltare extins XDS i unelte de dezvoltare (CDT).
Aplicaia poate fi scris n limbajul C, de exemplu pe un PC (utiliznd orice editor) i
codul pentru TMS va fi generat de link editor. Codul poate ajunge la MC prin intermediul
171

interfeei seriale RS232. XDS analizeaz softul creat, (chiar n domeniul timp) i permite
punerea la punct (chiar rularea lui pas cu pas).
Exist firme specializate n construirea unor module de evaluare cu diferite MC, aa cum
este de exemplu PHYTEC (www.phytec.de).
Fiecare furnizor de MC pune la dispoziia clienilor un Kit de start (Starter Kit), care este
un instrument foarte valoros pentru a putea ncepe lucrul cu un anumit tip de MC. Kit-ul de
start conine o plac cu soclu i hard-ul aferent pentru programarea iniial a MC, uneori
programarea EPROM-ului, interfaa i cablul de legtur la PC, documentaie i programe
(asamblor, link editor, debugger) dar nu conine de regul un MC. Preul unui astfel de Kit
pornete de la 100USD (www.schuricht.de , www.farnell.com ).
Un alt argument pentru alegerea unui MC este comoditatea folosirii lui. Unele MC, aa
cum este Motorola 68HC11A8P1 are nscris n ROM un program monitor (numit Buffalo).
Pentru punerea n funciune este nevoie doar de o legtur serial RS232 cu un PC (este
nevoie de o conversie de nivel) i se poate lucra de pe PC cu monitorul MC, rulnd
programele n RAM-ul MC i stocndu-le n EEPROM. Pe I exist subprograme scrise n
Buffalo. Un alt MC, 8052AH-BASIC conine un BASIC. MC Dallas din seria DS5000 are
nevoie doar de un cristal pentru oscilator i este gata de lucru. MC conine memorie RAM
static alimentat de la o baterie i programul i datele sunt astfel nevolatile.

10.1.11. Proiectarea sistemelor cu MC n vederea siguranei n


exploatare
Tendina productorilor de MC de a scdea preurile duce la rspndirea din ce n
ce mai mare a MC i la crearea a noi i noi aplicaii. Micorarea dimensiunilor duce la
creterea frecvenei de lucru. Cu ct frecvena crete, cu att crete posibilitatea
interferenelor electromagnetice (EMI) i se pune problema proiectrii n vederea
compatibilitii electromagnetice (EMC).
Apar dou categorii de probleme: aplicaia poate genera perturbaii (conduse sau radiate)
sau poate fi susceptibil la perturbaii (conduse sau radiate). Descoperirea unor probleme
de EMI n faza final de produciei a aplicaiei poate fi costisitoare deoarece s-ar putea s
fie necesar reproiectarea aplicaiei; de aceea este necesar ca proiectarea iniial s se fac
n vederea EMC.
Perturbaiile sunt generate de armonicile semnalelor digitale din circuit. Ele pot fi radiate
de buclele de cablaj care se comport ca i antene sau sunt conduse spre sursa de
alimentare. Orice cale inductiv sau capacitiv pe traseul acestor armonici poate provoca
vrfuri de tensiune sau cderi de tensiune. Pentru un sistem cu MC perturbaiile sunt
generate de regul de cablaj, deoarece circuitele integrate au dimensiuni prea mici pentru a
putea emite. Semnalul cu frecvena cea mai mare este tactul sistemului generat cu un
circuit oscilant cu cuar. Datorit faptului c forma semnalului este apropiat de forma
sinusoidal, coninutul de armonici este mic. Dac tactul este adus din exterior, se impune
atenie mrit pentru a reduce buclele de circuit emisive.
Pentru un sistem care are memorii externe cuplate la MC, liniile de transfer pot fi emisive,
deoarece frecvenele de tranziie sunt mari.
172

Susceptibilitatea sistemelor cu MC este creat de natura sincron a MC. Un tact cu nivel


elctric insuficient poate produce o eroare. Erorile sistemelor cu MC pot fi grupate n:
1. aplicaia are o eroare dar se corecteaz;
2. aplicaia are o eroare dar o ntrerupere sau un RESET corecteaz funcionarea;
3. aplicaia are o eroare i oprind i repornind sistemul, eroarea dispare;
4. aplicaia are o eroare permanent datorat unei componente defecte.
Problemele din categoria 1 i 2 pot s nici nu fie observate de beneficiar.
Performanele EMC pot fi mbuntite acordnd atenie deosebit urmtoarelor aspecte de
proiectare:

desenul cablajului imprimat;


ceasul de gard
programarea defensiv

10.1.11.1. Cablajul imprimat


Orice perturbaii pe liniile de alimentare pot produce ofuncionare defectuoas a
sistemului. De aceea se recomand utilizarea unui cablaj multistrat la care masa i
alimentarea sunt plane interne. La aplicaiile cu pre mic, o cale important de a reduce
preul este folosirea cablajului dublu placat sau chiar simplu placat. La aceste tipuri de
cablaj traseele de mas i +5V trebuie s fie ct mai late pentru a avea o impedan ct mai
mic. Decuplarea cu condensatoare a MC trebuie s fie realizat ct mai aproape de circuit.
n unele aplicaii care trebuie s fie foarte ieftine se folosete alimentarea MC de la reeaua
de c.a. fr transformator, cu un redresor monoalternan (Fig. 10.4.).
MC
VDD
Reea
220V

DZ
5V

100

0,1
VSS

Diod de
redresare

Rez. de
putere

Mas flotant

Fig. 10.4. Schema simpl de alimentare de la reea


n acest caz se creeaz o linie de mic impedan spre mas prin reeaua de alimentare de la
VDD. La acest tip de alimentare se recomad decuplarea liniilor de frecven nalt spre
linia de +5V.
Un circuit critic este cel de generare a tactulului. Orice impuls parazit care apare modific
factorul de umplere de 50% al semnalului de tact i instruciunea nu se execut corect,
circuitul ieind din program. O astfel de situaie singular poate fi rezolvat de ceasul de
gard care comnad un RESET, dup care MC ruleaz din nou corect. Se recomand ca
toate componentele aferente generrii tactului s fie situate ct mai aproape de circuit, iar
173

dac este posibil toate traseele s fie nconjurate de un traseu lat de gard. Se recomand o
decuplare a cristalului la linia de cea mai mic impedan (de regul masa) cu condensatori
SMD. Se recomand s se pstreze o distan mare ntre liniilor de frecven mare i
circuitul de tact.
Este de asemenea important protecia pinilor de intrare, cum ar fi RESET sau IRQ. Un pin
n aer poate comuta dac n vecintatea lui sunt linii de nalt frecven. Se recomand
decuplarea acestor pini cu condensatori 1-10nF ct mai aproape de circuit.

10.1.11.2. Ceasul de gard


Folosirea ceasului de gard este foarte util n creterea siguranei n funcionare.
Majoritatea MC au un ceas de gard integrat, iar dac nu, un ceas de gard extern poate fi
uor realizat cu un monostabil redeclanabil.
Redeclanarea ceasului de gard trebuie fcut n programul principal, nu n subrutine.
Pentru a putea folosi corect ceasul de gard trebuie analizat cu atenie durata normal a
programului pe ramura cea mai lung.

10.1.11.3. Programarea defensiv


Prin metodele de programare defensiv se poate mbunti mult sigurana n
funcionare fr nici un hardware suplimentar. Cteva din cele mai eficiente metode sunt:

rencrcarea periodic a registrelor care comand pinii I/O i a celor mai


importante registre. Pinii I/O sunt legtura MC cu exteriorul, de aceea ei sunt
supui perturbaiilor. Readucerea lor la nivele corecte micoreaz probabilitatea
ca o perturbaie s se propage n circuit.
citirea repetat a semnalelor de intrare micoreaz riscul unei citiri greite. De
exemplu citirea de 3 ori la rnd a unui pin care este legat la o tast. Dac s-a
citit aceeai valoare de fiecare dat se elimin posibilitatea unei perturbaii.
dac exist locaii n RAM nefolosite, dup fiecare etap de rulare a
programului se scrie un bit n RAM. nainte de rularea unei rutine critice se
verific valoarea stocat n RAM i rutina se execut doar n cazul n care
valoarea din RAM este corect.
dac ntr-o aplicaie exist memorie nefolosit, aceasta se umple cu instruciuni
de salt ntr-un loc cunoscut pentru ca un salt neprevzut n memorie datorat unei
perturbaii s fie anulat de saltul n locul cunoscut.

10.2. MC din familia MOTOROLA (MC cu arhitectur CISC)


Motorola a dezvoltat cteva tipuri de uniti centrale, la care s-au ataat o
multitudine de interfee, obinnd astfel foarte multe tipuri de circuite, compatibile soft.
Motorola a creat astfel posibilitatea producerii a nenumrate variante de MC, care s
acopere ct mai multe din aplicaiile utilizatorului, numind aceste structuri CSIC
(Customer Specified Integrated Circuit). Spre deosebire de familia 8051 unde pe nucleul
creat de INTEL, firme constructoare au dezvoltat propriile MC compatibile, Motorola a
creat o familie de MC, obinnd astfel o unitate n diversitate.
174

Schema bloc simplificat a unui MC din familia Motorola este dat n Fig. 10.5.
Memorie ROM,
EPROM sau OTP

Unitatea central
6805, 6808...

+VDD (+5V
sau +3V)
RESET
IRQ

Memorie RAM
Oscilator

Memorie
EEPROM

Magistrala de date i
adrese

Port A

Port B

Port C
Porturi cu funcii
speciale, timer, CAN,
SPI, SCI

Fig. 10.5. Schema bloc a unui microcontroller Motorola


Porturile I/O pot fi de uz general, dar liniile porturilor pot fi utilizate i de interfeele
speciale. n continuare vor fi prezentate blocurile din structura MC Motorola 6805.

10.2.1. MC M68HC05
10.2.1.1 Memoria intern
MC din familia Motorola, ca i toate circuitele MC, sunt echipate cu memorie
RAM, ROM i EPROM (OTP). Fiecare din memorii are o capacitate specific fiecrui tip
particular de circuit. Memoria poate fi format din 176 304 octei de RAM, 240 octei de
ROM i 7600 7744 octei de memorie programabil (EPROM sau OTP); este cazul
circuitului MC68HC705C8.
Memoria RAM este folosit pentru stocarea temporar a datelor. n modul de lucru
bootstrap (specific MC Motorola), memoria RAM poate fi ncrcat cu informaie de tip
program prin portul SCI, urmnd ca programul s fie executat din RAM. Memoria ROM
este folosit pentru a stoca programe. Modulul ROM conine i programul care
coordoneaz ncrcarea RAM prin portul SCI. Memoria EPROM (OTP), ca i memoria
ROM, conine programe i variabile specifice aplicaiei cu diferena c acestea sunt
nscrise de utilizator, nu de fabricant.
n acelai spaiu de adresare se afl memoria de diferite tipuri, registre I/O i registre de
control i stare, privite ca locaii de memorie. Pentru a ti adresa la care se afl fiecare
element se utilizeaz o reprezentare numit harta memoriei. Harta memoriei pentru un
membru al familiei 6805 (MC68HC705J1A) este dat n tabelul 10.5.
175

Tabel 10.5. Maparea memoriei la MC68HC05J1A


Coninut
Adresa (H)
Date port A
0000
Date port B
0001
Nefolosit
0002-0003
DDR pentru port A
0004
DDR pentru port B
0005
Nefolosit
0006-0007
Stare i control pentru timer
0008
Registru numrtor pentru timer
0009
Stare i control a ntreruperilor
000A
Nefolosit
000B-0011
Nefolosit
0012-0017
Registru de programare a EPROM
0018
Nefolosit
0019-001F
Nefolosit
0020-00BF
RAM utilizator sau stiv (64 octei)
00C0-00FF
Nefolosit (512 octei)
0100-02FF
EPROM 1232 octei
0300-07CF
Nefolosit 30 octei
07D0-07ED
Test ROM 2 octei
07EE-07EF
Registru COP
07F0
Registru de mti
07F1
Rezervai
07F2-07F7
Vector pentru timer (octet semnificativ)
07F8
Vector pentru timer
07F9
Vector pentru IRQ (octet semnificativ)
07FA
Vector pentru IRQ
07FB
Vector pentru SWI (octet semnificativ)
07FC
Vector pentru RESET (octet semnificativ) 07FE
Vector pentru RESET
07FF
Pentru a putea lucra cu un MC particular trebuie studiat alocarea (maparea) memoriei din
catalog pentru acel MC, tabelul 10.5. este doar orientativ.

10.2.1.2. Unitatea central


Unitatea central realizeaz prelucrarea datelor pe 8 bii la o frecven intern de
2MHz (tact extern de 4MHz), are o magistral de adrese de 11-14 bii i conine registre i
unitatea aritmetic/logic, Fig. 10.6. n general, la MC Motorola, bus-ul de adrese i de
date nu este disponibil n exterior.

176

Unitatea central 6805


Acumulator
ALU
Unitatea aritmetic i logic

Registru index

Indicator de stiv

Numrtor de program (PC)


Registru de condiii

Fig. 10.6. Unitatea central 6805


Unitatea central are o arhitecturcu bus unic pentru date i instruciuni (von Neumann) i
conine urmtoarele registre:
Registrul Acumulator (Accumulator - A) este un registru pe 8 bii de uz general. El nu
este afectat de Reset.
Registrul index (Index Register - X) este un registru pe 8 bii folosit la adresrile indexate.
Nu este afectat de Reset.
Registrul indicator de stiv (Stack Pointer - SP) este un registru de 13 bii care conine
adresa urmtoarei locaii libere n stiv. Dup Reset indicatorul de stiv devine 00FFh.
Registrul numrtor de program (Program Counter - PC) este un registru de 13 bii care
conine adresa urmtoarei instruciuni de executat. Dup execuia instruciunii registrul este
incrementat. Un salt sau o ntrerupere determin ncrcarea PC cu alt valoare dect adresa
urmtoarei locaii. Dup Reset registrul PC este ncrcat cu coninutul locaiilor 3FFEh i
3FFFh (la MC68HC705J1A).
Registrul de condiii (Condition Code Register - CCR) este un registru de 8 bii (din care
sunt folosii 5) cu urmtoarea semnificaie:

Bitul 0 (LSB), (Carry/Borrow Flag) poziionat dac o adunare produce un


transport sau la o scdere este nevoie de mprumut.
Bitul 1 (Zero Flag), poziionat dac rezultatul unei operaii este zero.
Bitul 2 (Negative Flag), poziionat dac rezultatul unei operaii este negativ
(bitul 7 este 1).
Bitul 3 (Interrupt Mask Bit) cnd este 1 sunt invalidate ntreruperile. Dac apare
o ntrerupere cnd acest bit este 1, ea este memorat pn bitul devine 0. Atunci
se salveaz registrele UC n stiv. Dup Reset bitul este setat n 1 i poate fi
poziionat n 0 cu instruciunea CLI.
Bitul 4 (Half-Carry) este poziionat cnd apare un transport de la bitul 3 spre 4
n acumulator la o operaie de adunare cu sau fr Carry. Este util la operaii
BCD.

Unitatea aritmetic i logic realizeaz operaiile aritmetice i logice definite de setul de


instruciuni. Multe din instruciunile aritmetice se bazeaz pe algoritmul de la adunare.
Astfel, o nmulire este realizat printr-un ir de adunri i deplasri succesive i dureaz
11 perioade de clock.
177

Iniializarea unitii centrale


Un Reset duce unitatea central ntr-o stare determinat (la o adres cunoscut). Un
Reset poate fi declanat de o surs intern sau de o surs extern astfel:

extern, prin pinul de RESET, activ pe 0;


extern, Power On Reset (POR), la pornirea sursei de alimentare. Circuitul
POR asigur o ntrziere de 4064 tacte de la momentul n care oscilatorul
devine activ i dac semnalul RESET extern este inactiv, procesorul ncepe
s lucreze;
intern, de ctre ceasul de gard, Computer Operating Properly (COP).
ncercarea de a executa o instruciune de la o adres ilegal. Dac unitatea
central ncearc s execute o instruciune care nu este n EPROM sau RAM
se genereaz un RESET pentru a proteja MC de scrieri sau citiri din zone
necontrolate.

10.2.1.3. Moduri de adresare


Unitatea central folosete 8 moduri de adresare pentru o ct mai mare flexibilitate
n utilizare:
1. adresare inerent - instruciunile nu au operand, cum este ntoarcerea din ntrerupere
(RTI) sau STOP. Instruciunile inerente au lungimea de un octet.
2. adresare imediat - instruciunile au un operand, care este o valoare imediat utilizabil
ntr-o operaie cu acumulatorul sau cu registrul index. Instruciunile au doi octei,
primul fiind codul, iar al doilea valoarea imediat.
3. adresare direct - instruciunile pot avea acces la primele 256 de locaii de memorie.
Instruciunile sunt pe doi octei, primul este codul iar al doilea este octetul cel mai puin
semnificativ al adresei operandului; octetul cel mai semnificativ este considerat
implicit 00h.
4. adresare extins - instruciunile sunt pe trei octei i pot adresa orice locaie de
memorie. Primul octet este codul, al doilea este adresa (parte HIGH) iar al treilea este
adresa (partea LOW).
5. adresare indexat fr offset - instruciunile au un octet i pot avea acces la locaii cu
adresa variabil din registrul index (care conine partea LOW a adresei). Pentru partea
HIGH se folosete 00h, aa nct aceesul este n zona 0000-00FFh.
6. adresare indexat cu offset pe 8 bii - instruciunile au doi octei, fiind accesibile
locaii cu adresa variabil n zona primelor 511 locaii. Unitatea central adun octetul
din instruciune la registrul index (fr semn) i se obine adresa efectiv a operandului.
Un exemplu de utilizare al acestui mod de adresare este selectarea unui elemnt k dintrun tabel de n elemente. Valoarea k este n registrul index, iar adresa nceputului
tabelului este al doilea octet al instruciunii.
7. adresare indexat cu offset pe 16 bii - instruciunile au trei octei, fiind accesibile
toate locaiile. UC adun fr semn registrul index la cei doi octei din instruciune
(primul octet dup codul instruciunii este octetul HIGH) i se obine adresa efectiv a
operandului.
8. adresare relativ este folosit n instruciunile de salt. La un salt relativ, se adun
(cu semn) octetul care urmeaz dup codul instruciunii la coninutul Program Counter.
Se pot face salturi relative n gama 127 de octei nainte sau napoi.

178

10.2.1.4. Setul de instruciuni


Unitatea central MC68HC05 are 61 de instruciuni (mai mult de 200 de coduri).
Cteva dintre instruciunile mai importante, clasificate dup tipul operaiei sunt enumerate
n continuare.
registru- memorie
ADD, ADC adun coninutul unei locaii de memorie la acumulator (fr sau cu
transport)
AND i ntre memorie cu acumulator
CMP compar memorie cu acumulator
EOR sau exclusiv memorie cu acumulator
CPX compar registru index cu memoria
LDA, LDX ncarc acumulator (registru index) cu un octet din memorie
ORA sau logic ntre acumulator i memorie
SBC, SUB scdere cu sau fr mprumut
STA, STX salvare acumulator (registru index) n memorie
MUL nmulire
citete- modific- scrie
ASL,ASR, LSL, LSR deplasare aritmetic (logic) stnga (dreapta)
BSET, BCLR setare sau resetare bit
CLR resetare registru
COM complement fa de 1
NEG complement fa de 2 (negare)
ROL, ROR rotaie stnga (dreapta) prin Carry
TST- test pentru zero sau negativ
de salt
BCC, BCS dac Carry este 0 sau 1
BEQ, BNE dac este egal (sau nu)
BHCC, BHCS dac bitul de Half Carry este 0 sau 1
BHI, BHS dac este mai mare ori mai mare sau egal
BLO, BLS dac este mai mic ori mai mic sau egal
BIH, BIL dac linia de ntrerupere extern este 1 sau 0
BMI, BPL dac este negativ (sau pozitiv)
BMC, BMS dac masca de ntrerupere este 0 sau 1
BRA, JMP salt necondiionat
BSR, JSR salt la subrutin
manipulare la nivel de bit
BCLR, BSET nscrierea unui bit cu 0 (sau n1)
BRCLR, BRSET salt dac un bit este 0 (sau n1)
de control
CLC, SEC nscriere cu 0 (cu1) a bitului de Carry
CLI, SEI punere la 0 (cu 1) a mtii pentru ntrerupere
NOP nu se execut nici o operaie
RTI, RTS ntoarcere din ntrerupere (subrutin)
179

STOP, WAIT se oprete oscilatorul CPU i se ateapt o ntrerupere extern (se


valideaz nreruperile)
SWI ntrerupere software
TAX, TXA transfer acumulatorul n registrul index (sau invers)

10.2.1.5. Sistemul de ntreruperi


Unitatea central poate fi ntrerupt din programul curent de urmtoarele surse:

un 0 logic aplicat din exterior pinului /IRQ;


un 1 logic aplicat din exterior la pinii PA3-PA0 ai portului I/O PA, dac aceste
ntreruperi sunt validate;
o ntrerupere de la temporizatorul sistemului (TOF Timer Overflow sau RTIF
Real Time Interrupt), dac ntreruperea este validat;
instruciunea de ntrerupere software SWI.

Dac o ntrerupere vine n timp ce UC execut o instruciune, instruciunea n curs este


terminat i apoi se consider ntreruperea. ntreruperile pot fi invalidate global n registrul
condiiilor de program (CCR) sau individual pentru fiecare surs n parte. Un Reset inhib
toate ntreruperile pentru ca procesul de iniializare s nu poat fi ntrerupt.
La apariia unei ntreruperi, unitatea central termin instruciunea n curs, apoi salveaz n
stiv registrele UC, invalideaz ntreruperile pentru ca o nou ntrerupere s nu deranjeze
servirea ntreruperii curente. Cererile de ntrerupere sunt memorate i servite dup servirea
ntreruperii curente. n PC se transfer vectorul de ntrerupere i se execut rutina de
servire a ntreruperii. Rutina se termin cu instruciunea RTI care restaureaz registrele UC
din stiv. Vectorii de ntrerupere pentru fiecare dintre sursele enumerate mai sus sunt
stocai n memorie la adresele:

timer
/IRQ sau PA
instruciunea SWI
Reset (POR, RESET din exterior, COP sau adres ilegal)

07F8h i 07F9h;
07FAh i 07FBh;
07FCh i 07FDh;
07Feh i 07FFh.

Adresele vectorilor se gsesc n harta memoriei furnizat de productor.


Unele MC din familie au i alte interfee, care pot i ele s solicite ntreruperi, aa cum
poate cere circuitul timer.
Pn la servirea ntreruperii trece un anumit interval de timp (tacte), pentru ca UC s
termine instruciunea curent i s salveze n stiv registrele. Acest timp este numit
Interrupt Latency i poate fi orict de lung dac ntreruperile nu sunt validate. Cea mai
lung instruciune este MUL, care dureaz 11 tacte, iar unitatea central are nevoie de 9
tacte pentru a salva registrele n stiv, deci cel mai lung timp de ateptare pentru servirea
unei ntreruperi este de 20 de tacte. Acest timp trebuie s fie luat n calcul n momentul
realizrii unei aplicaii n timp real. Dac survine o a doua ntrerupere, timpul de ateptare
pentru servirea ei poate fi prea lung. O soluie ar fi validarea ntreruperilor n timpul
servirii primei ntreruperi. n acest caz trebuie avut grij ca stiva s fie destul de mare
pentru a permite salvarea a dou seturi de registre.

180

10.2.1.6. Interfee i periferice on chip


Blocurile funcionale integrate n circuitul MC sunt de o deosebit importan n
implemenatrea unei aplicaii. Este n egal msur important s fie cunoscute i bine
stpnite att capabilitile unitii centrale ct i ale interfeelor cu care este echipat MC
aceast cunoatere conduce la o exploatare performant a resurselor.

a. Porturi paralele I/O


Porturile paralele I/O sunt forma cea mai simpl a interfeelor. MC68HC705C8
dispune de 31 de linii I/O digitale de uz general grupate n patru porturi. Porturile A, B, i
C sunt porturi de cte opt bii fiecare; sensul transferului pe fiecare linie (intrare sau ieire)
poate fi stabilit prin program. Fiecare linie are asociat cte un registru de direcie (DDR).
n Fig. 10.7. este ilustrat organizarea portului A al circuitului mai sus menionat;
Organizarea este identic i la celelalte dou porturi de opt bii, porturile C i D.
Bit 7
DDRA7

6
5
DDRA6 DDRA5

4
DDRA4

3
DDRA3

2
DDRA2

1
DDRA1

Bit 0
DDRA0

$04 DDRA
Condiii la Reset
(toate liniile intrri)

$00 Port A
Condiii la Reset

Starea registrelor de ieire nu este influenat de Reset

PA7

PA6

PA5

PA4

PA3

PA2

PA1

PA0

Fig. 10. 7. Organizarea portului paralel A (MC68HC705C8)


Structura circuitului pentru o linie bidirecional de scriere/citire la porturi este redat n
Fig 10.8. Se poate constata modul de acionare a bitului din registrul de sens asupra
circuitului driver de ieire.
Bit
DDR
Bit de
date

WRITE

Q
Driver

Intrare/
Ieire
digital

/Q

READ
Bit de
date
Buffer

Fig. 10.8. Circuite bidirecionale de scriere/citire la porturi


181

Portul D dispune de apte linii (fr PD6); acestea pot fi folosite doar ca linii de intrare. O
particularitate a acestui port este faptul c pinii corespunztori sunt folosii fie de portul D,
fie de porturile seriale SPI i SCI, n funcie de starea de activare nscris n registrele de
comand SPI i SCI.
Liniile pot fi citite sau scrise de unitatea central cu instruciuni specifice. Liniile pot fi
apelate grupat, la nivel de port sau individual, la nivel de bit. Pentru a economisi timpul
unitii centrale, interfeele pot lucra cu unitatea central prin intermediul ntreruperilor.

b. Portul serial asincron SCI (Serial Communications Interface)


SCI este un transmitor receptor asincron universal (UART) cu posibilitatea
lucrului full-duplex. Pentru un transfer bidirecional sunt suficieni 2 pini. Cu circuite de
translaie de nivel RS232 se pot face transferuri la distane suficient de mari. Se poate
programa una din 32 viteze de transmisie i lungimea caracterului; se pot valida separat
transmitorul i receptorul; se pot genera ntreruperi n diferite situaii; se poate detecta
eroare de cadrare la recepie.
Formatul datelor este ca la orice transmisie asincron (RS232 sau RS422). Linia este n
stare MARK, iar transmisia unui caracter este semnalat de trecerea liniei n stare SPACE
pe durata bitului de START. Urmeaz 8 sau 9 bii de date i un bit de STOP.
Datele care se doresc a fi transmise sunt scrise n registrul de date al SCI (SCDR), apoi se
valideaz transmisia prin poziionarea bitului TE (Transmit Enable) n registrul de control
al SCI (SCCR2). Dup ce cuvntul a fost transmis, se poziioneaz bitul TDRE (Transmit
Data Register Empty) n registrul de stare SCSR (SCI Status Register). Se indic astfel c
poate fi transmis un nou cuvnt. Se pot transmite caractere speciale, cum ar fi BREAK,
care ine linia n stare SPACE (se transmite un ir de 0) dac se poziioneaz bitul SBK n
SCCR2 sau un caracter care ine linia n stare MARK.
Golirea registrului de date semnalizat de TDRE sau de TC (Transmission Complete) din
SCDR poate genera o ntrerupere.
Datele sunt recepionate n SCDR, la recepia complet fiind poziionat bitul RDRF
(Receive Data Register Full) n SCSR. Pentru eliminarea recepiilor false fiecare bit de
start este eantionat i citit de 16 ori; orice nepotrivire a eantioanelor duce la respingerea
acestui bit. Dac nu se recepioneaz bitul de STOP se anun o eroare de cadrare prin
poziionarea bitului FE n SCR.
ntreruperile la recepie pot fi generate dac bitul RDRF din SCSR indic recepia unui
caracter, dac este o eroare de vitez de recepie prin recepia unui caracter nainte ca cel
precedent s fi fost citit sau dac s-a recepionat un caracter special format numai din valori
de 1.
Structura registrului de control SCCR1 este:
Bit 7 este al 9-lea bit recepionat dac s-a definit o transmisie pe 9 bii
Bit 6 este al 9-lea bit de transmis dac s-a definit o transmisie pe 9 bii
Bit 4 comand lungimea caracterului, 8 sau 9 bii
Bit 3 este un bit de trezire care comand ce fel de condiie trezete SCI
182

Structura registrului de control SCCR2 este:


Bit 7 TIE Transmit Interrupt Enable - valideaz ntreruperile cerute de TDRE
Bit 6 TCIE Transmit Complete Interrupt Enable - valideaz ntreruperile cerute de TC
Bit 5 RIE Receive Interrupt Enable - valideaz ntreruperile cerute de RDRF
Bit 4 ILIE Idle Interrupt Enable Bit -valideaz ntreruperile cerute de caracterul ir de 1
Bit 3 TE Transmit Enable - valideaz transmisia
Bit 2 RE Receive Enable - valideaz recepia
Bit 1 RWU Receiver Wakeup Enable - pune receptorul n stare de ateptare
Bit 0 SBK Send Break - trimite caracterul BREAK
Structura registrului de stare SCSR este:
Bit 7 TDRE Transmit Data Register Empty - registru de transmisie gol
Bit 6 TC Transmission Complete - transmisie complet
Bit 5 RDRF Receive Data Register Full - registru de recepie plin
Bit 4 IDLE - s-a recepionat un ir de 1
Bit 3 OR Receiver overrun - eroare de vitez de recepie
Bit 2 NF Receiver Noise - s-au detectat perturbaii n datele citite (prin eantionarea
bitului de START)
Bit 1 FE Framing Error - eroare de cadrare.
Registrul ratei de transfer este descris n tabelul 10.6.
Bit 5

Bit 4

0
0
1
1

0
1
0
1

Tabel 10.6. Coninutul registrului ratei de transfer


Ceas pentru
Bit 2 Bit 1 Bit 0 Rata de transfer
transfer
ceas intern
0
0
0
ceas de transfer
ceas intern /3
0
0
1
ceas de transfer/2
ceas intern/4
0
1
0
ceas de transfer/4
ceas intern/13
0
1
1
ceas de transfer/8
1
0
0
ceas de transfer/16
1
0
1
ceas de transfer/32
1
1
0
ceas de transfer/64
1
1
1
ceas de transfer/128

Rata de transfer se obine printr-o dubl divizare, nti se obine un ceas de transfer prin
divizarea ceasului intern, apoi se divizeaz ceasul de transfer. Se pot astfel obine diferite
rate de transfer, de exemplu 4800 Baud (4808) la un ceas de 2MHz prin divizarea nti cu
13, apoi cu 1.

c. Portul serial SPI (Serial Peripheral Interface)


Cu acest port se poate realiza o comunicaie sincron simpl, folosit de regul
pentru a transfera date ntre circuite pe aceelai montaj cu MC. Un transfer bidirecional
necesit 3 pini, unul dintre ei fiind alocat ceasului de transmisie generat de masterul SPI.
Cu SPI se pot realiza transferuri i ntre microcontrollere. Transferurile pot fi full duplex.
Registrele care controleaz transferul SPI sunt registrul de control (SPICR SPI Control
Register) i registrul de stare (SPISR SPI Status Register). Un transfer SPI poate fi iniiat
183

doar de un master. Masterul scrie un octet n registrul de transmisie SPI (SPDR SPI Data
Register) de unde datele merg ntr-un registru de deplasare n care sunt serializate i de
unde sunt transmise sincron cu ceasul de transmisie. Transmisia se termin dup 8 tacte,
cnd se poziioneaz bitul SPIF. nainte ca masterul s trimit un nou octet trebuie s se
reseteze bitul SPIF prin citirea registrul de stare SPSR. n slave datele intr n registrul de
deplasare cu tactul de recepie, acelai cu cel de transmisie. Cnd au intrat 8 bii, caracterul
este transferat n registrul de date SPDR. Pentru a se evita erorile de vitez (sau de
suprascriere - Overrun) trebuie ca octetul din SPDR s fie citit nainte ca un alt octet s fie
transmis din registrul de deplasare.
Poziionnd bitul MSTR din registrul SPCR n 1, MC lucreaz n mod master. n acest mod
pinii au urmtoarea semnificaie:

SCK (Serial Clock) este ieire de tact pentru sincronizare;


MOSI (Master Output Slave Input) este ieirea serial;
MISO (Master Input Slave Output) este intrarea serial;
/SS (Slave Select) protejeaz MC dac dou circuite sunt master. Acest semnal
activ dezactiveaz la cellalt port SPI modul master, terge bitul MSTR i
poziioneaz bitul de eroare (MODF Mode Fault Flag).

Cu bitul MSTR=0 se valideaz modul slave, n care pinii au semnificaia:

SCK (Serial Clock) este intrarea de tact pentru sincronizare de la MASTER;


MOSI (Master Output Slave Input) este intrarea serial;
MISO (Master Input Slave Output) este ieirea serial;
/SS (Slave Select) valideaz SPI pentru modul slave.

n Fig. 10.9. este artat o conexiune SPI n care sunt legate un circuit master i mai multe
circuite slave.
MC master
SPI

MISO
MOSI
SCK
/SS

+1

Port I/O
0
1
2
/SS SCK MOSI MISO

Dispozitiv slave

/SS SCK MOSI MISO

Dispozitiv slave

Fig. 10.9. Conexiune SPI


Circuitele slave sunt validate pe rnd cu semnale dintr-un port de ieire auxiliar.
Pentru a putea adapta transmisiei seriale ct mai multe echipamente seriale, se poate
programa faza i polaritatea ceasului de sincronizare cu biii CPOL i CPHA din SPCR.
184

n SPI pot apare urmtoarele erori:

mai multe MC master conectate (Mode Fault Error)


scrierea n SPDR n timpul unei transmisii (coliziune), are ca urmare scrierea
bitului WCOL n SPSR;
omiterea citirii SPDR nainte ca urmtorul octet s soseasc (suprascriere).

O ntrerupere poate fi generat n urmtoarele situaii:

registrul de date este gol sau plin (la transmisie respectiv la recepie) se semnaleaz
cu SPIF care poate genera o ntrerupere dac ntreruperea este validat cu SPIE;
la apariia unei erori Mode Fault semnalat cu MODF, dac ntreruperea este
validat cu SPIE.

d. Timer
Circuitele de timp timere - care echipeaz MC Motorola sunt foarte variate. De la
cel mai simplu (MC68HC05J) care poate genera 2 ntreruperi periodice: una cu frecvena
fix i una cu frecvena variabil, i pn la cel mai complex (MC68332) care conine un
temporizator cu propria lui unitate aritmetic i logic proiectat special pentru controlul
motoarelor cu ardere intern.
Un temporizator tipic (de la MC68HC705J1A), nu cel mai simplu dar nici cel mai
complex, are schema bloc dat n Fig. 10.10.
Xtal/2

Divizare
cu 4

Numrtor hexa de 8 bii

MSB

TCR (Timer Counter Register) la adresa 0009h

TCSR registru de control i stare a timerului


TOF RTIF TOIE RTIE TOFR RTIFR RT1 RT0

Numrtor hexa de 7 bii

Selecie ieire

Numrtor COP

Generare de Reset
intern al UC

Fig. 10.10. Timer 6805


Ceasul de intrare n timer este ceasul de magistral (frecvena cristalului/2) care, dup o
divizare cu 4, constituie tact pentru un numrtor de 8 bii. Valoarea acestui registru
numrtor poate fi citit de UC n oricare moment la locaia 09h (TCR Timer Counter
Register). UC nu poate s modifice valoarea acestui registru. Cnd numrtorul trece de la
185

FFh la 00h este poziionat bitul TOF (Timer Overflow Flag) n registrul de stare al
timerului (TCSR Timer Control and Status Register). Starea acestui bit poate fi citit de
UC n oricare moment. Dac bitul TOIE (Timer Overflow Interrupt Enable) din registrul
de stare TCSR este 1, n momentul trecerii de la FFh la 00h se genereaz o ntrerupere,
numit ntrerupere de depire (Overflow Interrupt).
Ieirea numrtorului de 8 bii constituie tact pentru un alt numrtor de 7 bii. Ieirea de la
oricare dintre cei mai semnificativi 4 bii ai acestui ultim numrtor (selectat de unul din
cei doi bii RT1 i RT0 din registrul de control TCSR) poate fi folosit pentru generarea
unei ntreruperi, numit de timp real (Real Time Interrupt ) care nscrie bitul RTIF (Real
Time Interrupt Flag) din TCSR. Se genereaz o ntrerupere dac bitul RTIE (Real Time
Interrupt Enable) este 1.
Ultimul nivel al timerului este un numrtor de 3 bii folosit pentru cesul de gard (COP
Computer Operating Properly). Dac este validat verificarea COP, trebuie ca
programatorul s reseteze COP nainte de expirarea perioadei programate pentru comanda
unui RESET al UC. Perioada de timp n care COP trebuie resetat depinde de RT1 i RT0.
n tabelul 10.7. sunt date perioadele de ntrerupere i perioadele n care COP trebuie
resetat. Perioadele corespund unui tact de 2MHz:
Tabel 10.7. Perioade de ntrerupere i perioade de reset programabile cu un tact de 2 MHz.
RT1

RT0

Perioada de ntrerupere

Perioada n care COP trebuie resetat

0
0
1
1

0
1
0
1

8.2ms
16.4ms
32.8ms
65.5ms

57.3ms
114.7ms
229.4ms
458.8ms

Un reset al COP se poate realiza prin scrierea bitului 0 de la adresa 07F0h (COPR COP
Register).
MC din seria 68705 sunt echipate cu un temporizator care are posibilitatea de captur i
comparare. Captura poate nregistra momentul la care apare un eveniment extern (o
tranziie pe pinul TCAP). n acest moment memoreaz coninutul registrelor timerului n
registrele de captur. Memorarea registrelor timerului la tranziii de aceeai polaritate a
TCAP poate determina perioada unui semnal, iar la tranziii de polaritate opus poate
determina limea unui impuls. Polaritatea de declanare este programabil. Prin
comparare se poate genera un semnal de ieire cnd numrtorul timerului atinge o valoare
selectat. La fiecare 4 tacte se compar valoarea numrtorului cu cea scris n registrul de
comparare. Dac este egalitate se genereaz un semnal TCMP.

e. Portul PWM
Modulaia impulsurilor n lime (Pulse Width Modulation) are multe aplicaii, mai
ales n comanda motoarelor de curent continuu sau a surselor de alimentare. Din acest
motiv unele MC includ n structura lor un modulator PWM ca interfa.
Un semnal PWM arat ca n Fig. 10.11.

186

T2
Factorul de umplere este
T2/T1

T1

Fig. 9.11. Semnal PWM


Circuitul MC68HC05D9 conine 5 canale PWM de cte 6 bii care sunt realizate cu
ajutorul unui numrtor de 6 bii, un registru de control PWM i 5 registre de date care
formeaz 5 linii PWM ce sunt disponibile la pinii portului D (Fig. 10.12).

PWM4 (000Dh)

PWM3 (000Ch)
Numrtor de 6
bii

PWM2 (000Bh)

R
E
G
I
S
T
R
U

PWM 4

PWM 3

D
E

PWM 2

PWM1 (000Ah)

M
O
D

PWM 1

PWM0 (0009h)

P
W
M

PWM 0

0008h

Fig. 10.12. Structura modulului PWM la familia 6805


n registrul de mod sunt 5 bii care valideaz modulul PWM astfel nct semnalele PWM s
fie livrate pe la pinii portului D. Tot n registrul de mod mai este un bit, SCIB, care
selecteaz dac la adresa 000Dh s fie date pentru PWM sau rata de divizare pentru SCI.
Dac nu sunt folosite ca ieiri PWM, liniile portului D pot fi folosite ca intrri/ieiri
obinuite. Registrul de mod PWM se afl la adresa 0008h.
Dac se ncarc registrul de date cu 00h semnalul la ieire va fi tot timpul zero. nscrierea
valorii 20h n registrul de date are ca rezultat un semnal cu factor de umplere 50% la
ieirea corespunztoare, iar ncrcarea valorii 3Fh va determina un semnal cu factor de
umplere de 63/64.

f. Portul USB (MC68HC05JB4)


MC68HC05JB4 conine un convertor A/D i o interfa USB, ceea ce l face ideal
pentru achiziia de date i transferul lor ctre un calculator PC-AT. Datorit structurii USB,
187

este posibil realizarea unui punct central de prelucrare echipat cu PC i multe puncte de
achiziie echipate cu acest MC.
Modulul USB implementeaz standardul USB 1.0, de mic vitez, la 1,5Mbps, cu 3 puncte
de capt (End Point). MC conine i transceiverul USB. Schema bloc a modului USB este
dat n Fig. 10.13.
MC

Logica de
control USB

Cablu USB

Transceiver

DRegistre USB

1,5K

HUB
sau ech.
USB

2x 1,5K

Stabilizator 3,3V
+3,3V

BUS INTERN

Figura 11

Fig. 10.13. Structura intern a portului USB

Transceiverul are o ieire diferenial care poate lucra cu 3 stri pentru a permite transferul
de date bidirecional de tip full-duplex. Receptorul trebuie s fie de asemenea cu intrri
difereniale.
Comanda interfeei USB se realizeaz prin intermediul a 3 registre de comand iar starea
poate fi citit dintr-un registru de stare. Exist un registru de adres i 24 de registre de
date. Modul de funcionare n ntreruperi este programat prin registrul de ntreruperi.
Interfaa USB poate lucra n modul de economie de energie dac nu exist trafic pe linii un
anumit interval de timp. Apariia unei date la recepie sau emisia unei date de ctre UC
produce ieirea din starea inactiv.

g. Interfaa LCD
MC6805 DragonKat este denumirea unui MC din familia 6805 care conine o
interfa pentru un afior cu cristale lichide.
Interfaa pentru LCD conine:
logica de control pentru sincronizare;
RAM-ul de display care stocheaz datele pentru display printr-o coresponden
1 la 1 a biilor (fiecare bit din memorie are corespondent un punct pe LCD).
Memoria este organizat n cuvinte de 5 bii i poate fi scris sau citit;
188

registru de date este folosit pentru a stoca datele din memoria RAM a LCD;
generator de tensiune care conine un divizor de tensiune pentru alimentarea
segmentelor i a planului din spate;
driver pentru planul din spate;
driver pentru segmente.

Un afiaj LCD arat ca n Fig 10.14.


Segmente (SEG 0-39)
Planul
din spate
(BP 0-15)

Fig. 10.14 Afiaj LCD


Un punct este aprins cnd o linie Bpi i una SEGi sunt active. Pentru caracterul A,
memoria RAM de display are coninutul din tabelul 10.8.
Tabel 10.8. Coninutul memoriei pentru afiarea caracterului A
Adresa Bit0 Bit1 Bit2 Bit3 Bit4
200
0
0
1
0
0
201
0
1
0
1
0
202
1
0
0
0
1
203
1
0
0
0
1
204
1
1
1
1
1
205
1
0
0
0
1
206
1
0
0
0
1
207
0
0
0
0
0
Punctul de sus a lui A de exemplu, se scrie cu BP0 i SEG2 active. Semnalele SEG i BP
sunt periodice i baleiaz tot timpul afiajul pentru a menine punctele aprinse. Frecvena
semnalelor de aprindere a punctelor este de 32kHz, iar frecvena unui cadru este de
62,5Hz.
Dimensiunea panourilor LCD difer, de aceea difer i consumul de curent. Tensiunea spre
afiaj este obinut prin nserierea unor rezistene, nseriere care poate fi comandat soft.
Schema bloc a interfeei pentru LCD este dat n Fig. 10.15.

189

Magistrala intern de
adrese si date

Registru
de control

RAM pentru display 128x5bit

Registru de
date LCD
(40bii)

Driver
pentru
planul
din
spate

BP0-BP15

Driver de segmente

SEG0-SEG39

Fig. 10.15.
Schema
a intefeei
9.2.1.7. Modurile
de lucru
cubloc
economie
deLCD
energie

10.2.1.7. Modurile de lucru cu economie de energie


Instruciunea STOP plaseaz UC n modul de lucru cu consum minim de energie.
Ceasul intern este oprit i toate procesele interne sunt oprite, inclusiv timerul. ntreruperile
externe sunt validate automat n registrul CCR. Sunt terse registrele aferente timerului i
canalului SCI, dar celelalte registre i memoria nu sunt alterate. Unitatea central poate fi
trezit din STOP doar de o ntrerupere extern.
Instruciunea WAIT plaseaz UC ntr-un mod de lucru cu consum redus de energie. Rmn
active timerul i canalul serial SCI. Orice ntrerupere validat, primit din exterior sau de la
temporizator sau SCI, trezesc unitatea central. ntreruperile sunt validate automat. Toate
registrele i memoria rmn cu datele avute la intrarea n starea WAIT.

10.2.1.8. Autoverificarea
MC are 2 moduri de operare: normal i auto-verificare. Modul de operare este
selectat de nivelul logic pe pinul IRQ n momentul unui RESET. n modul normal de
operare ncepe rularea unui program din EPROM, deci EPROM-ul trebuie sa fie programat
dac a fost ales modul normal de operare. n modul autotest MC ruleaz un program
coninut n ROM n zona de memorie 3F00h-3FDEh. Autotestul comunic rezultatele la
pinii PC3-PC0, unde se pot conecta LED-uri.

10.2.1.9. Programarea EPROM


Unele MC din familie conin ROM, aa cum este MC68HC05D9 care conine 16K
octei de PROM sau MC68HC05D24 care conine 24K octei de ROM. Modelul
MC68HC05D32 are 32K octei memorie EPROM, cu posibilitatea de tergere UV.
nscrierea memoriei se face cu ajutorul unei tensiuni suplimentare de 15V (Vpp). Circuitele
190

MC68HC705C8A conin 8K EPROM sau OTP. Memoria EPROM sau OTP se poate
programa cu ajutorul unui modul special, construit de Motorola, sau folosind un montaj n
care progamul se ncarc n MC dintr-o memorie EPROM extern sau cu orice
programator care poate s adreseze i s pun date pe liniile de date (Fig. 10.16.).
Vpp
+15V la
nscriere

MC68xx
SCI
A0-A7

PA

PD
PD1
PD0

PA0PA7

D0-D7

PB

A8-A12

PC

Circuite de
modificare de
nivel RS232

TxD
RxD

PB0PB7

PC0PC4

Fig. 10.16. Schema unui programator EPROM (sau OTP)


Adresele se stabilesc la portul A, iar cele mai semnificative linii (A8-A12) se stabilesc la
portul C (PC0-PC4). Liniile cu datele de nscris se stabilesc la portul B. Registrul folosit
pentru programarea EPROM-ului este registrul de programare (PROG).

Bit 2- LAT (Latch Enable Bit), poziionat n 1, comand ca liniile de adrese i date
s fie bufferate pentru ca n urmtorul ciclu s se fac o scriere a EPROM-ului;
Bit 0 (PGM) valideaz tensiunea Vpp pentru programarea EPROM-ului.

Se pune problema cum se poate ca un MC care nu a fost programat s lucreze sub comanda
unui program ca s poat avea acces la programarea unui registru. Pentru programare MC
trebuie s lucreze n modul bootstrap, mod n care MC intr prin forarea liniei IRQ n
timpul unui RESET. Programe simple utilizator pot fi introduse n RAM prin interfaa SCI
(Serial Communications Interface) i rulate. Programul se transmite prin interfaa serial,
dup care se ruleaz programul din RAM. Parametrii comunicaiei implicii la Reset sunt 8
bii de date i un bit de STOP, la viteza de 4800bps. Primul octet trimis reprezint numrul
total de octei care vor fi trimii. Coninutul EPROM-ului poate fi verificat prin citirea lui
tot prin SCI. Coninutul EPROM-ului se poate ascunde, aa nct s nu mai poat fi citit
din exterior prin poziionarea unui bit de securizare n registrul de opiuni (adresa 1FDFh).

10.2.2. MC M68HC08
Familia 6808 urmeaz n timp familiei 6805, bineneles cu mbuntiri care vor fi
amintite n acest subcapitol. MC din familia 6808 sunt compatibile cu cele din familia
descris n subcapitolul anterior (9.2.1.). Ca mbuntiri ale UC 6805 pot fi menionate:
191

indicatorul de stiv este un registru de 16 bii (13 la 6805);


registrul de index este de 16 bii, exist posibilitatea manipulrii lui separat a
octetului superior i a celui inferior (8 bii la 6805);
frecvena intern CPU standard este de 8MHz (2MHz la 6805);
se pot adresa 64K octei memorie de date sau program (2K-16K la 6805),
are 16 moduri de adresare (8 la 6805) i 78 de noi coduri de instruciuni;
se pot face mutri de date ntre locaii de memorie fr intermediul acumulatorului;
UC poate executa mpriri de operanzi de 2 octei la operanzi de 1 octet;
operarea secvenial a UC poate fi oprit de 2 tipuri de evenimente: reset sau
ntreruperi. Sursele de Reset suplimentare fa de 6805 sunt:
- detectarea unui cod de instruciune inexistent;
- tensiune de alimentare sub o limit acceptat
(LVI, Low Voltage Inhibit).
Un Reset comand ncrcarea registrului PC cu valoarea aflat la
adresele FFFEh i FFFFh.

sistemul de ntreruperi admite un numr maxim de 128 de surse de ntrerupere:


reset, SWI i IRQ0-IRQ125. Unele dintre aceste cereri de ntrerupere sunt
accesibile la pin. ntreruperea software are cea mai mare prioritate. n mod WAIT
ceasul UC este oprit, dar celelalte module au ceas, astfel nct orice ntrerupere
trezete UC. n mod STOP toate ceasurile sunt oprite i doar o ntrerupere extern
poate trezi UC.

Schema bloc a unui MC 6808 este prezentat n Fig. 10.17.


Monitor ROM (960bytes)
Memorie ROM sau
FLASH
(4096bytes)

+VDD (+5V
sau +3V)

Unitatea central
6805, 6808...

RESET
IRQ

Memorie RAM
(128bytes)

Oscilator

Memorie
EEPROM

Port A

Port B

Magistral
de date i adrese

Port C

Port D

ADC

Port E

Port F

Seriale

Timer

Port G

Fig. 10.17. Schema bloc a unui MC din familia 6808


4.1.Unitatea central 6808
192

Port H

Tastatur

10.2.2.1. Unitatea central


Unitatea central 6808 admite 2 moduri de lucru: un mod utilizator i un mod
monitor ROM. Modul de lucru poate fi alese prin poziionarea unui pin din exterior (IRQ)
n 1 sau 0 n timpul unui RESET. Modul monitor creeaz posibilitatea legrii MC cu un
calculator gazd printr-un canal serial, transferarea soft-ului de pe calculatorul gazd n
MC i execuia lui din RAM. Pentru MC echipate cu EEPROM n mod monitor se poate
programa EEPROM-ul. Legtura serial ntre calculator i MC este RS232 prin
intermediul pinilor unui port I/O. n mod monitor MC poate s execute programe din RAM
cu ajutorul unor comenzi simple monitor, toate funciile MC fiind valide. n modul monitor
COP este invalidat. Transferul de date este bidirecional. Fiecare comand spre MC este
urmat de un rspuns ecou al MC. Comenzile monitorului sunt:

READ - citete o locaie de memorie (se trimite cod+2 octei de adres i se


returneaz coninutul locaiei),
WRITE - scrie o locaie de memorie (se trimite cod+2 octei de adres+octetul
de scris)
IREAD - citire indexat, citete urmtorii 2 octei din memorie fa de ultima
adres accesat
IWRITE - scriere indexat, scrie urmtorii 2 octei din memorie fa de ultima
adres accesat
READSP - citete indicatorul de stiv
RUN - ruleaza program

Viteza de transfer implicit ntre MC i calculator este de 4800bps cu pinul PTC3 inut la 1
n timpul resetului i 9600bps cu pinul PTC3 inut la 0 n timpul resetului.

10.2.2.2. Interfee i periferice on chip


a. Porturi paralele I/O
MC 6808 poate gestiona 8 porturi I/O (A,B,C,D,E,F,G,H) cu linii care pot fi
programate ca ieiri sau intrri. Liniile nefolosite trebuie legate la mas sau la tensiunea de
alimentare pentru a preveni defectarea circuitului prin descrcri electrostatice sau
consumul excesiv de curent.
Fiecrui port i corespunde un registru de direcie (DDR) prin care se programeaz sensul
de transfer al pinului. Unele porturi au semnificaii duble, dac liniile lor sunt folosite i de
alte interfee:
portul B poate fi folosit ca 8 linii de intrare n ADC;
portul C este un port de 6 bii, bitul 2 se poate folosi pentru a furniza n exterior
ceasul sistemului;
portul D poate avea 2 bii folosii ca intrri pentru temporizator (Bit 6 i Bit 4);
portul E poate fi folosit ca i canal SPI i SCI;
portul F este un port de 7 bii care poate fi folosit ca intrri/ieiri pentru
temporizator;
portul G este un port de 3 bii, liniile pot fi folosite ca interfa pentru tastatur;
portul H este un port de 2 bii, liniile pot fi folosite ca interfa pentru tastatur.
193

b. Convertorul analog digital (ADC)


Convertorul A/D este un convertor pe 8 bii cu aproximri succesive care poate face
conversii continuu sau la primirea unei comenzi. Sfritul conversiei poate fi semnalizat cu
un bit indicator (flag) sau poate cere o ntrerupere. Ceasul de conversie poate fi selectat. Un
MC are 8 canale de conversie cu intrri multiplexate analogic.
Intrrile pentru ADC se fac pe pinii portului de uz general PTB7-PTB0. Selecia canalului
se face pentru a stabili care pin este intrare analogic. Ceilali pini pot fi folosii ca intrri/
ieiri de uz general. Dac valoarea citit este VREFH, atunci valoarea digital va fi FFh,
iar dac este VREFL atunci valoarea digital va fi 00h. Aceste tensiuni, mpreun cu
tensiunea de alimentare pentru blocul analogic al MC sunt furnizate din exterior. Schema
bloc a convertorului este dat n Fig. 10.18.

Registru de date ADR

ADSCR
Selecie
canal

ADC

Intrri
analogice

Cerere de
ntrerupere
Ceas de conversie

Fig. 10.18. Schema bloc a convertorului analog digital


Registrele ADC sunt:
registru de control i stare al ADC (ADSCR), care conine:
- Bit 7 COCO/IDMAS, conversie complet sau selecie ntrerupere DMA. Dac
ntreruperile sunt invalidate (AIEN=0), COCO este poziionat de fiecare dat cnd
se termin o conversie. n modul de conversie continu datele se suprascriu n
registrul de date dup fiecare conversie i COCO este poziionat doar dup prima
conversie. Dac ntreruperile sunt validate (AIEN=1), IDMAS selecteaz dac
ntreruperea solicit i un transfer DMA.
- Bit 6 AIEN (ADC Interrupt Enable) valideaz ntreruperile la sfritul unei
conversii.
- Bit 5 ADCO (ADC Continous Conversion), dac este setat se face conversie
continu.
- Bit4-0 ADCH4-0 selecteaz unul din cele 8 canale de conversie
registru de date (ADR)
registru de ceas (ADCLK) care conine:
- Bit 7-5 ADIV2-0 formeaz rata de divizare a ceasului de conversie de la ADICLK
(000) la ADICLK/16 (100).
- Bit 4 ADICLK selecteaz ca ceas de conversie ceasul intern sau un ceas generat de
temporizator.
194

O conversie ncepe dup scrierea registrului ADSCR. Rezultatul conversiei este stocat n
registrul de date (ADR) i la terminarea conversiei se poziioneaz bitul COCO. Dac se
opteaz pentru conversie continu, dup prima conversie urmeaz alta, care rescrie
registrul de date. Dac sunt validate ntreruperile, sfritul conversiei poate cere ntrerupere
ctre UC sau poate face i o cerere DMA.

c. Interfaa extern msCAN08 (Motorola Scalable CAN)


Protocolul CAN a fost definit de BOSCH n 1991 pentru utilizarea pe o magistral
la autoturisme, unde s ndeplineasc condiii specifice: procesare n timp real, fiabilitate
ntr-un mediu perturbat i pre mic. Caracteristici ale magistralei msCAN08 sunt:

transmisie serial sincron cu blocuri ntre 0-8 octei;


viteza de transfer pn la 1MBps;
transferul serial se face pe 2 linii, o intrare (RxCAN) i o ieire TxCAN).

Cuplarea la magistral nu se face direct, ci prin transceivere care pot suporta un curent
important i care pot detecta dac un MC are o linie defect care ar fora magistrala la
conectare direct (Fig. 10. 19.).
MC 1

MC 2

msCAN08

msCAN08

TxCAN RxCAN

TxCAN RxCAN

Transceiver

Transceiver

Magistrala

Fig. 10.19. Cuplarea la magistrala CAN


O implementare modern trebuie s respecte dou condiii:

orice dispozitiv CAN poate s transmit un ir de mesaje fr s elibereze


magistrala ntre mesaje. Arbitrarea magistralei se va face doar dup ce s-a
terminat transmiterea mesajului.
mesajele sunt astfel organizate nct cel mai prioritar mesaj va fi trimis naintea
celor care stau de mai mult timp n coada de ateptare.

Aceste cerine pot fi ndeplinite cu o schem de transmisie cu buffere duble. Chiar i aa,
unitatea central nu are ntotdeauna timp s aranjeze datele n buffer, aa nct la 6808 s-a
realizat o arhitectur cu 3 buffere.
Mesajul recepionat este stocat ntr-o stiv FIFO cu 2 nivele. Exist 2 buffere de recepie
de 13 octei aranjate ntr-o singur arie de memorie, astfel nct registrul de date
recepionate are o singur adres. Registrul RxBG (Background Receive Buffer) primete
datele seriale i le transfer n RxFG (Foreground Receive Buffer) care poate fi adresat de
unitatea central. Dac mesajul recepionat este corect (are un identificator valid) se
195

poziioneaz bitul RxF (Receiver Full Flag) i se genereaz o cerere de ntrerupere. n acest
timp n registrul RxBG se recepioneaz un nou cadru. Schema bloc pentru recepie i
transmisie este dat n Fig. 10.20.
RxBG
RxCAN

RxF

RxFG
Filtru

Date spre
CPU

TxE 0

Tx0
PRIO

TxCAN

Date de
la CPU

Tx1
PRIO

TxE 1
Tx2

TxE 2

PRIO

Fig. 10.20. Schema bloc de receptie, emisie CAN


Pentru a micora numrul de ntreruperi solicitate UC de ctre receptor s-a introdus un
filtru de acceptare. Datele msCAN au o anumit structur, primii bii fiind de identificare a
cadrului i de adres a destinaiei. Este posibil ca interfaa CAN s verifice aceti primi bii
i s fac transferul din RxBG n RxFG numai dac mesajul este destinat acestui MC.
Cnd ambele registre de recepie sunt pline i se recepioneaz date se genereaz o eroare
de suprascriere. Se abandoneaz recepia noilor caractere, se semnalizeaz eroarea, dar
transmitorul rmne funcional.
Transmiterea mesajelor se face cu o structur de 3 buffere, fiecare de 13 octei. Un registru
suplimentar TBPR (Transmit Buffer Priority Register) stabilete prioritatea mesajelor.
Fiecare buffer de transmisie semnaleaz UC faptul c este gol prin poziionarea unui bit
TXE (Transmit Buffer Empty) n registrul de stare CTFLG (CAN Transmitter Flag
Register). Bitul TXE poate cere o ntrerupere pentru ca UC s poat rencrca bufferul de
transmisie care s-a golit. Dac mai mult de un registru este plin i gata de transmisie, se
face apel la registrul de prioriti pentru arbitrare. Fiecare buffer de transmisie are o zon
de 8 bii (PRIO) n care programul utilizator scrie prioritatea mesajului cnd se transmite
mesajul de la UC (cea mai mic valoare reprezentnd cea mai mare prioritate).
Dac se transmite un mesaj cu prioritate mai mare i se dorete abandonarea mesajului
curent, se solicit aceasta cu bitul ABTRQ (Abort Request Flag) n registrul de control al
transmisiei CTCR (Transmission Control Register). Dac solicitarea de abandonare este
posibil, interfaa CAN va poziiona bitul ABTAK (Abort Request Acknowledge) i TXE
pentru a se putea transmite mesajul prioritar.
196

d. Interfaa cu tastatura
Interfaa cu tastatura const n 5 linii independente de intrare n MC care pot
solicita ntreruperi mascabile. Funcionarea acestei interfee este asistat de urmtoarele
registre:
registrul de stare i control al tastaturii (KBSCR) conine:
- Bit 3 - indicatorul existenei unei ntreruperi, KEYF. Bitul este 1 dac se afl n
curs de servire o ntrerupere de la tastatur;
- Bit 2 - confirmare, ACKK. Dac acest bit este poziionat se terge bufferul
ntreruperilor de la tastatur;
- Bit 1 - validarea ntreruperilor de la tastatur, IMASKK. Dac acest bit are
valoarea 0 sunt validate ntreruperile;
- Bit 0 - modul de ntrerupere, MODEK. Dac bitul este 1 se poate cere o
ntrerupere cu un front cztor sau cu un nivel 0 se poate cere o doar cu front
cztor.
registrul de validare a ntreruperilor de la tastatur care cu biii
- Bit 4 - Bit 0 valideaz pinul portului I/O ca cerere de ntrerupere de la tastatur
sau ca port standard.

10.2.2.3. Programarea memoriei EEPROM


Circuitele din familia 6808 pot avea 512 octei de memorie EEPROM care poate fi
tears i renscris fr o tensiune extern suplimentar. Memoria programat poate fi
protejat mpotriva unor scrieri sau tergeri accidentale.
Starea unui bit neprogramat este 1 logic. Programarea lui nseamn trecerea n stare 0.
Programarea pote fi facut n mod redundant, adic primii 256 de octei s fie identici cu
urmtorii.
Registrele EEPROM sunt:
registrul de control al EEPROM EEPROM Control Register (EECR):
- Bit 7 EEBCLK, validare ceas intern pentru EEPROM; selecteaz cesul folosit
pentru programarea EEPROM: ceasul intern sau un oscilator RC intern.
- Bit 5 EEOFF; invalideaz EEPROM-ul n modurile de lucru cu economie de
energie.
- Bit4, Bit 3 - EERAS 1, EERAS 0; stabilesc operaia care se execut conform
tabelului 10.9.
Tabel 10.9. Programarea operaiilor n registru de control
EEBPx EERAS1 EERAS0 Operaia
0
0
0
Programare de octet
0
0
1
tergere de octet
0
1
0
tergere bloc
0
1
1
tergere global
1
X
X
Nu se executa programare/stergere
197

Bit 2 - EELAT; dac este setat, comand memorarea datelor i adreselelor


pentru scriere iar dac este 0, se face citire din EEPROM.
Bit 0 EEPGM; dac este setat, valideaz scrierea sau tergerea. Poziionarea
lui EEPGM trebuie s fie precedat n alt pas de poziionarea lui EELAT.

registru EEPROM nevolatil (EENVR):


- Bit 7 EERA, arie redundant; configureaz memoria n dou jumti
redundante.
- Bit 4 - CON0; stabilete dac se valideaz securitatea memoriei (cu 0) sau nu.
- Bit 3-0 EEBP3-0, bii de protecie; daca aceti bii sunt 1, blocul de memorie
este protejat la scriere.
registru de configuraie a ariei, EEACR se poate citi ceea ce a fost nscris n registrul
EENVR. Din raiuni de siguran a informaiei, datele de configurare a EEPROM se scriu
ntr-un registru nevolatil, EENVR. La un RESET, datele din EENVR se scriu ntr-un
registru volatil corespondent (EEACR).
n modul STOP de economie de energie nu se poate face nscrierea sau tergerea memoriei
EEPROM.
Pentru nscrierea EEPROM se parcurg urmtorii pai:

se reseteaz EERAS1 i EERAS0 (i se seteaz EELAT n EECR)


se scrie octetul n EEPROM
se seteaz EEPGM
se ateapt un timp pentru ca programarea s poat fi executat
se reseteaz EEPGM
se ateapt un timp pentru ca tensiunea de programare s scad
se reseteaz EELAT

O tergere pe bloc sau global se face cu biii EERAS ca n tabelul 9.9., orice adres din
bloc fiind posibil. mprirea n blocuri este EEBP0 (0800h-087Fh), EEBP1 (0880h08FFh), EEBP2 (0900h-097Fh), EEBP3 (0980h-09FFh). n modul redundant EEBP2 i 3
nu au nici o semnificaie.

10.2.3. MC pe 16 bii - 6816


Unitatea central 6816 este o unitate central cu magistrala de date de 16 bii i o
magistral de adrese pe 20 de bii care permite adresarea a 1Moctet de memorie. UC
conine 2 registre acumulator de 16 bii i 3 registre index de 16 bii pe lng registrele
clasice. Unitatea central poate executa instruciuni pe 8 bii, pe 16 bii sau pe 32 de bii.
Toate instruciunile de la UC 6811 pot fi executate de 6816, dar cu alt numr de tacte, deci
cu alt vitez. Unitatea central funcioneaz la maximum 16MHz. Tehnologia de
fabricaie permite funcionarea i la viteze mai mici, chiar n regim static (ca i celelalte
UC). Unitatea central conine faciliti DSP (Digital Signal Processing), fiind posibile
nmuliri cu numere fracionare. UC permite 10 tipuri de adresare, din care 6 sunt preluate
de la 6811.

198

Pentru pstrarea compatibilitii, registrul PC i indicatorul de stiv sunt de 16 bii, dar


apare un registru nou, numit K, ce reine extensiile de la 16 bii la 20 de bii pentru
registrul PC i SP. n structura UC mai apar i registrele pentru nmuliri, 2 registre de 16
bii (H i I) i unul de 36 de bii pentru rezultat (MAC).
Pentru comunicaia ntre MC sau pentru adresarea memoriei externe s-a standardizat un
bus extern, numit IMB (Intermodule Bus), cu 16 linii de date i 24 linii de adres, la care sa aliniat i 6816. Acest bus este de tip asincron, permind transfer pe 8 sau 16 bii n urma
unui protocol (handshake).

10.2.3.1. Modulul de integrare (SIM, System Integration Module)


Acest modul, aprut de la 6811, grupeaz blocurile care controleaz sistemul i cuprinde:

configurarea sistemului i protecie:


- un monitor de bus, care reseteaz sistemul dac apar cicluri de bus mai
lungi de 8-64 tacte de ceas sistem;
- un monitor de HALT, care poziioneaz un bit n registrul de stare al
RESET-ului cnd a aprut o instruciune de HALT pe bus;
- un monitor de ntreruperi care supravegheaz apariia unei arbitrri n
timpul unui ciclu de ntrerupere;
- un ceas de gard (watch dog);
modul pentru sintetizarea ceasului; poate fi realizat din mai multe surse, dintro surs intern cu ajutorul unei bucle PLL, dintr-o surs extern cu ajutorul
buclei PLL sau direct dintr-o surs extern.
Modul de formare a bus-ului extern
Modul de test

10.2.3.2. Interfee
Interfeele seriale sunt grupate sub forma unui modul serial cu coad de ateptare
(QSM Queued Serial Module) care conine o interfa serial SPI i una SCI. Coada de
ateptare este format n RAM i are dimensiunea de 16 cuvinte de 8-16 bii fiecare.
Transmisia acestui ir de date poate fi executat automat, fr intervenia unitii centrale.
Modulul QSM este cuplat pe bus-ul IMB.
Convertorul analog numeric (ADC) este un convertor cu aproximaii succesive cu rezoluia
programabil de 8-10 bii, cu 8 canale multiplexate. Convertorul este conectat pe bus-ul
IMB.
Pentru date importante (cum ar fi cele din stiv) exist o memorie RAM static de 1K octet
care la cderea tensiunii de alimentare este alimentat de la un pin special, unde se poate
conecta o baterie.
Timerul are 11 canale, din care 2 sunt folosite pentru generarea semnalelor PWM.
Circuitul este capsulat n capsule de 132 sau 144 pini.
199

Schema bloc a circuitului este dat n Fig. 10.21.


SIM
Unitatea central
6816

Port C

Port E

IMB

Port F

Memorie SRAM
(1024 octei)
Magistral de date i
adrese IMB

QSM
(SCI, SPI)

Port QS

Timer

Port GP

Port ADC
PWM

Fig. 10.21. Schema bloc MC 6816

10.2.4. MC pe 32 de bii - 68300


MC 68300 este asemntor arhitectural cu MC pe 16 bii. n jurul UC sunt grupate
pe magistrala IMB un modul de integrare, un convertor analog digital cu 8 canale, un
modul de comunicaie serial cu coad de ateptare (QSM), 512 octei RAM static, 3,5K
octei RAM care pot fi folosii i de timer (TPURAM), un modul de timp (TPU, Time
Processor Unit), pn la 6 porturi I/O de uz general i 2 module flash EEPROM.
Ceasul intern al sistemului este de maximum 16MHz.
Unitatea central CPU32 este compatibil soft cu procesoarele din familia 68000. Ea
conine 16 registre generale de 32 de bii cu care se poate lucra pe 8, 16 sau 32 de bii, un
PC de 32 de bii, un SP de 32 de bii, un registru de stare i alte registre.
Circuitul de timp este o unitate microprogramat care poate lucra separat de UC, i care
conine propriul RAM. Temporizatorul este format din 16 canale independente. Fiecare
poate executa o funcie de timp i poate fi programat independent.
Memoria flash EEPROM servete la stocarea nevolatil a informaiilor cum ar fi rutine ale
sistemului de operare sau date care sunt apelate frecvent. Memoria EEPROM este foarte
rapid, ea poate rspunde n 4 tacte. MC este echipat cu 2 module de flash EEPROM, unul
de 16K octei i unul de 48K octei. Memoria EEPROM poate fi configurat pentru a lucra
n modul bootstrap. Memoria EEPROM poate fi tears doar neselectiv (n ntregime) i
are nevoie de o alimentare special.
200

10.2.5. Date comparative pentru MC Motorola CISC


Tabelul 10.10. arat principalele performane, comparativ, pentru MC din familia Motorola:
Tabel 10.10. Tabel comparativ pentru MC Motorola - CISC
MC
Magistrala
de Frecvena Linii I/O Interfee speciale
date
(MHz)
6805
8
2
31
6
6808
8
8
48
6
6816
16
16
48
6
68300 32
16
48
6

Pre (USD)
1.9
2.1
8.25
17.5

9.3. FAMILIA MCS-51 (MC cu arhitectur CISC)


8051 a fost propus de INTEL n a doua generaie de MC i este cel mai folosit i cel
mai bine vndut MC din lume. n 1976 Intel a prezentat familia de microcontrollere
MCS48 care este compus din 8048, 8748 i 8035. A aprut astfel pentru prima dat pe
pia un microcalculator complet pe un singur chip. MC includea o unitate central pe 8
bii, memorie ROM sau EPROM de 1024x8bii, RAM 64x8 bii, porturi I/O i timere. n
etapa a doua, INTEL a lansat familia MCS51 format din MC 8051, 8751 i 8031. INTEL
recomand ca punerea la punct a aplicaiei s fie realizat pe MC 8751 care este prevzut
cu memorie EPROM (4K octei). Memoria poate fi programat cu orice programator, dar
se recomand utilizarea programatorului de la INTEL (UPP, Universal PROM
Programmer). Pentru produse n serie mare se recomand 8051, care are memorie ROM,
programat de furnizor la comanda beneficiarului i care revine la un pre de cost mult mai
mic. MC 8031 nu conine ROM, dar se poate ataa n exterior ROM, PROM sau EPROM,
direct sau multiplexat.
8051 este un MC foarte puternic i uor de programat. Ca dovad, n tabelul 10.11. se
prezint modelele oferite de diferii furnizori, echivalente cu 8051:
Tabel 10.11. Modele echivalente 8051 oferite de diferii productori
Varianta

Numr
pini

Productor

RAM

Mem.
program

Observaii

MCS251
80C509L
80C517A

40
100qf
84

Intel
Siemens
Siemens

1K
256
256

16K
64Kx
64Kx

80C537A

84

Siemens

256

32K

80537
80517
73D2910
80C535A
80CE558
80C515A
80535

84
84
100qfp
68
80qfp
68
68

Siemens
Siemens
SSI
Siemens
Philips
Siemens
Siemens

256
256
256
256
256
256
256

64Kx
8K
128Kx
64Kx
64Kx
32K
64Kx

16 bit 80x51
ALU,PWM,CC,2UART,10bA/D
ALU,8PWM,CC,2UART,10bA/
D
ALU,8PWM,CC,2UART,10bA/
D
ALU,8PWM,CC,2UART,8bA/D
ALU,8PWM,CC,2UART,8bA/D
80C52+Ports+HDLC
10bA/D
Enhanced 80C552, i2c
10bA/D
Timer2CaptComp, 6 port
8/10bA/D

201

Varianta

Numr
pini

Productor

RAM

Mem.
program

Observaii

80515
80C535
80C51GB
87C51GB
80C592
87C592
87C598
80C552
87C552
80C562
SABC504
87C451
80C451
87C453
83CL580
80C320
80C310
87C520
80C51FX
87C51FA
87C51FB
87C51FC
8XC51FB
87C51FXL
80C152JD
80C152
8044
80C575

68
68
68
68
68
68
80
68
68
68
44
44
68
68
68
56,64
40
40
40
40
40
40
40
40
40
68
48
40
40

Siemens
Siemens
Intel
Intel
Philips
Philips
Philips
Philips
Philips
Philips
Siemens
Siemens
Philips
Philips
Philips
Philips
Dallas
Dallas
Dallas
Intel
Intel
Intel
Intel
Philips
Intel
Intel
Intel
Intel
Philips

256
256
256
256
256
256
256
256
256
256
256
256
128
128
256
256
256
256
256
256
256
256
256
256
256
256
256
192
256

8K
64Kx
64Kx
8K
64Kx
16K
32K
64Kx
8K
64Kx
64Kx
64Kx
4K
64Kx
8K
6K
64Kx
64Kx
16K
64Kx
8K
16K
32K
16K
32K
64Kx
64Kx
64Kx
64Kx

Timer2CaptComp 4 port 8b A/D


Timer2CaptComp 5 port 8b A/D
8051FA+PCA, 8bA/D
8051FA+PCA, 8bA/D
552-i2c+CAN+XRAM
552-i2c+CAN+XRAM
552-i2c+CAN+XRAM
10bA/D, i2c, CC,PWM
10bA/D, i2c, CC,PWM
8bA/D, i2c, CC,PWM
8bA/D,XRAM,CAN
10bA/D,XRAM
7port, 1 Handshake
7port, 1 Handshake
7port, 1 Handshake
LV 8052+ADC+i2c+WDOG
FAST, 2UART
Simpler 80C320
16K OTP enhanced 80C320
80C58i+PCA
8052+PCA,Enh (autovehicule)
8052+PCA,Enh(autovehicule)
8052+PCA,Enh(autovehicule)
87C51FB
3.3v 80C51FC
HDLC/SDLC
HDLC

87C575

40

Philips

256

8K

80C576

40

Philips

256

8K

87C576

40

Philips

256

8K

SABC501
SABC502
80C528
87C528
89CE528
87C524
80C550
80CL781
83CL781

40
40
40
40
44
40
40
40
40

Siemens
Siemens
Philips
Philips
Philips
Philips
Philips
Philips
Philips

256
256
256
256
256
256
128
256
256

64Kx
64Kx
64Kx
32K
32KF
16K
4K
64Kx
16K

SABC505C

202

8052+PCA,AnalogComp,WDO
G
8052+PCA,AnalogComp,WDO
G
8052+PCA,UPI,A/D,PWM,WD
OG
8052+PCA,UPI,A/D,PWM,WD
OG
40MHz
8052+XRAM+WDog
8052+Wdog,
8052+Wdog,
Flash
16K 87C528
8b AD WDog
LV 8052, WDog
LV 8052, WDog

Varianta

Numr
pini

Productor

RAM

Mem.
program

Observaii

80CL782
89S8252
89C55
89C52
87C54
87C58
87C52
80C154
83C154D
83C154
80C654
87C652
87C654
83CE654
DS5000
DS2250
DS5001
80C851
83C852
8052
8752
80C52

40
40.44
40.44
40.44
40
40
40
40
40
40
40
40
40
44qfp
40
40sim
80qfp
40
6
40
40
40

Philips
Atmel
Atmel
Atmel
Intel
Intel
Intel
Matra
Matra
OKI
Philips
Philips
Philips
Philips
Dallas
Dallas
Dallas
Philips
Philips
All
Intel
Siemens

256
256
256
256
256
256
256
256
256
256
256
256
256
256
128
128
128
128
256
256
256
256

64Kx
10K
20KF
8KF
16K
32K
8K
64Kx
32K
16K
64Kx
8K
16K
16K
32KR
32K
64Kx
64Kx
6K
64Kx
8K
64Kx

88SC54C
80CL410
80CL31
80CL610
83CL411
89C51
8751

8
40
40
40
40
40.44
40

Atmel
Philips
Philips
Philips
Philips
Atmel
All

256
128
128
256
256
128
128

64Kx
64Kx
64Kx
64Kx
64Kx
4KF
4K

87C51

40

All

128

4K

8031

40

All

128

64Kx

8051

40

All

128

4K

80C31L
87C752
87C749
87C751
87C748
87C750
89C2051
89C1051

40
28
28
24
24
24
20
20

Matra
Philips
Philips
Philips
Philips
Philips
Atmel
Atmel

128
64
64
64
64
64
128
64

64Kx
2KE
2KE
2KE
2KE
1KE
2KF
1KF

LV, faster 781


FLASH 8k, WDog
FLASH,fast, LV
FLASH,
16K 87C52i
32K 87C52i
8052
Enhanced 8052
Enhanced 8052
Enhanced 8052
i2c
i2c
i2c
i2c,
80x51
in capsula SIMM,
Enhanced DS5000
8051+256B EEPROM
ALU,2K EEPROM
8051+Timer2
8051+Timer2
8051+Timer2,(construit i de
Philips, Oki, Matra)
8052
LV, i2c
LV, 8051
LV,i2c
80CL31
FLASH,Fast,LV 87C51
Core proccessor, UART,
Tmr0+1
Core proccessor, UART,
Tmr0+1
Core proccessor, UART,
Tmr0+1
Core proccessor, UART,
Tmr0+1
LV 8051
87751+A/D, PWM
87C752,i2c
Small size, i2c
87C751 i2c
Small
20Pin 89C51
20Pin 2051, UART, Tmr

203

PCA- arie programabil de numrtoare (programmable counter array)


LV- tensiune redus 3,3V (low voltage)
PWM- modularea impulsurilor n lime (pulse width modulation)
CC- intrare i comparare (capture/compare)
UPI- Interfaa universal I/O (Universal Peripheral Interface (Philips))
i2c- Interfaa I2C (Philips)
Tmr- circuit de timp (timer)
Small- capsul de mici dimensiuni
Capsule: dip- Dual In Line Package
pqfp- Plastic Quad Flat Pack
lcc- Plastic Leaded Chip Carrier

10.3.1. Structura i funcionarea


Schema bloc intern este dat n Fig. 10.22.
ROM
Adrese

Unitatea central
Acumulator A
Ind. Stiv SP
Nr. program PC

Generator de
tact

(EPROM)

RAM

Magistral de date

Controller de
ntreruperi

Timer

P0

P1

Interf.
Serial

P2

P3

Fig. 10.22. Schema bloc a unui MC 8051


Unitatea central este o unitate aritmetic i logic pe 8 bii care conine urmtoarele
registre:

acumulator A - 8 bii;
registrul de stare PSW (Program Status Word) - 8 bii;
registrul B (8 bii) folosit n operaiile de nmulire i mprire;
indicatorul de stiv (Stack Pointer) - 8 bii;
un registru numrtor de date (DPTR Data Pointer) - 16 bii - care poate fi
manipulat i ca 2 registre de cte 8 bii (DPH i DPL) i servete ca baz n salturi
indirecte sau n transferuri externe;
numrtorul de program (PC Program Counter) - 16 bii.
204

Memoria pentru program (ROM) este separat i distinct de memoria pentru date, are alte
mecanisme de adresare i alte semnale de comand. MC poate lucra att cu memoria pe
chip ct i cu memorie extern; exist astfel posibilitatea de a mri capacitatea memoriei de
lucru. Memoria extern este adresat automat dac adresa din instruciune este n afara
zonei de memorie intern.
Familia 8051 are 32 de linii I/O, configurate ca 4 porturi de 8 bii. Fiecare linie poate fi
programat individual ca linie de intrare, de ieire sau bidirecional. Unele linii au
semnificaii alternative. Portul 0 este folosit i ca magistral multiplexat de adrese i date,
iar pentru transferuri care au nevoie de adrese de 16 bii, se folosete portul P2 pentru
octetul cel mai semnificativ de adres. Liniile portului 3 sunt folosite ca cereri de
ntrerupere (2 linii), intrri/ieiri pentru timer (4 linii) i linii seriale (2).
8051 are 2 timere de 16 bii, fiecare poate fi programat separat. Timerele pot fi utilizate
pentru a msura intervale de timp, pentru a determina lungimea unor impulsuri, ca
numrtoare, etc. Rezoluia este de 1s, intervalul maxim de timp fiind de 65,536ms.
Portul serial UART este un port serial full duplex cu rata de transfer pn la 31Kbaud.
Portul serial poate fi folosit att pentru comunicaii cu echipamente periferice ct i
comunicaii ntre circuite.
Controllerul de ntreruperi admite ntreruperi de la 5 surse:

de la portul serial (dac s-a transmis sau recepionat un caracter);


de la timere (cnd s-a nregistrat o depire);
de la 2 pini de intrare.

Fiecare surs poate fi validat sau invalidat individual. Prioritatea poate fi programat.
Fiecare surs are asociat o adres n memoria program (tabelul 10.12.).
Tabel 10.12. Adresele de salt pentru ntreruperi
Sursa de
ntrerupere

Adresa de salt

RESET
Extern 0
Timer 0
Extern 1
Timer 1
Port serial

0000h
0003h
000Bh
0013h
001Bh
0023h

10.3.1.1. Descrierea semnalelor la pini


Vcc- tensiunea de alimentare, +5V;
Vss- mas;
PORT 0* - este un port pe 8 bii bidirecional cu drena n gol. Este port de date i adrese
(octetul cel mai puin semnificativ) pentru memoria extern. De asemenea portul 0
primete octeii pentru programarea EPROM-ului intern iar n timpul verificrii
programului din EPROM, datele pot fi citite tot prin portul 0.
*

Ieirile sunt bufferate i pot suporta pn la 4 intrri LS TTL. Pinii programai ca ieiri n stare HIGH pot fi
folosii ca intrri. Ca pini de intrare, dac au fost forai n LOW din exterior, acetia furnizeaz curent.
205

PORT 1*- este un port pe 8 bii bidirecional, cu drena n gol. n timpul programrii i
testrii EPROM-ului, la portul 1 se stabilete octetul cel mai puin semnificativ de adres.
Pinii P1.0/T2 i P1.1/T2X au funcii duble. Astfel T2 este intrare extern n Timerul 2 iar
T2X este intrarea de comand a unei capturi n Timerul 2.
PORT 2*- este un port de 8 bii bidirecional. n timpul programrii i testrii EPROMului la portul 2 se stabilete octetul cel mai semnificativ de adres. Pentru adresarea
memoriei externe pe 16 bii portul 2 genereaz partea mai semnificativ a octetului de
adres. La adresare memoriei externe pe 8 bii portul 2 este registrul cu funcii speciale P2.
PORT 3*- este un port de 8 bii bidirecional. Pinii portului 3 au semnificaie alternativ
(tabelul 10.13.).
Tabel 10.13. Semnificaia dubl a pinilor de la PORT 3
Pin
Semnificaie
P3.0 RXD-intrare serial a porului pentru recepie
P3.1 TXD-ieire serial a portului pentru emisie
P3.2 /INT0-ntrerupere extern pentru Timer 0
P3.3 /INT1-ntrerupere extern pentru Timer 1
P3.4 T0-intrare extern n Timer 0
P3.5 T1-intrare extern n Timer 1
P3.6 /WR-strob pentru scrierea memoriei de date extern
P3.7 /RD-strob pentru citirea memoriei de date extern
RST este o intrare de RESET. Dac semnalul de intrare rmne n HIGH pe perioada a doi
cicli main n timp ce oscilatorul funcioneaz, are loc iniializarea MC.
ALE/PROG ALE (Address Latch Enable) valideaz octetul cel mai puin semnificativ de
adres n timpul accesului la memoria extern (PORT0). PROG este semnal de intrare
pentru impulsul de programare n timpul programrii EPROM-ului.
/PSEN (Program Store Enable) valideaz citirea programelor din memoria program
extern. Nu se activeaz la citirea datelor din memoria extern de date.
/EA/VP /EA (External Acces Enable) valideaz n stare HIGH memoria program intern,
iar n stare LOW valideaz memoria program extern. La VP se aplic tensiunea de 21V n
timpul programrii EPROM-ului.
XTAL1, XTAL2 se conecteaz cristalul de cuar sau un oscilator extern.

10.3.1.2. Gestionarea memoriei


MC8051 au spaii diferite de adresare pentru memoria program i memoria de date.
Spaiul maxim de adresare este de 64K att la memoria program ct i la cea de date. Un
extras din datele de catalog arat tipurile i dimensiunea memoriei pentru diferite circuite
din familie (tabel 10.14.).
Tabel 10.14. Echiparea cu memorie a diferitelor circuite 8051
MC
Memorie intern de
Memorie intern de
program
date
8031AH 128bytes RAM
8051AH 4Kx8 ROM
128bytes RAM
8751H
4Kx8 EPROM
128bytes RAM
8032AH 256bytes RAM
8052AH 8Kx8 ROM
256bytes RAM
8752BH 8Kx8 EPROM
256bytes RAM
206

a. Gestionarea memoriei de date (RAM)


Memoria intern este mapat n spaiul de adresare 00H - FFH (256bytes). n zona
80H -FFH sunt registrele speciale (SFR) care sunt adresabile direct. Zona 00H-7FH poate
fi adresat direct sau indirect. Memoria extern se afl ntre adresele 0000H-FFFFH.
Validarea folosirii memoriei de date se realizeaz cu semnalele /RD i /WR. Aceste
semnale (/RD i /WR) se folosesc i pentru selecia datelor din portul 0, unde datele sunt
multiplexate cu adresele. Adresele sunt validate cu semnalul ALE. Informaia poate fi
accesat cu adresare pe 8 sau pe 16 bii.

b. Gestionarea memoriei program (ROM, EPROM)


Se poate folosi memoria ROM intern (/EA n stare HIGH) sau cea extern (/EA n
stare LOW). Strobul pentru citirea memoriei externe este semnalul /PSEN. Toate citirile se
fac cu adresare pe 16 bii.

10.3.1.3. Circuitele timer


MC 8051 are 2 numrtoare de 16 bii, iar 8052 3 numrtoare. n modul de
funcionare ca temporizator registrul este incrementat la fiecare ciclu cu un impuls la 1/12
din frecvena oscilatorului. n modul de funcionare ca numrtor, registrul este
incrementat la fiecare tranziie din 1 n 0 la pinul extern corespunztor T0, T1 i T2. Rata
maxim de numrare este 1/24 din frecvena oscilatorului.
Programarea funcionrii timer-elor se face cu registrul TMOD din SFR, cu structura:
pentru numrtorul 1: GATE1, C/-T1 - M11, M01,
pentru numrtorul 2: GATE2, C/-T2 - M12, M02, unde:
GATE - gestioneaz controlul. Cnd GATE=1, timer-ul este activat doar ct timp
pinul /INT corespunztor este n HIGH i i bitul TR din registrul SFR
(TCON) este 1.
C/-T - selecteaz operarea ca timer (LOW) sau counter (HIGH)
M1
0
0
1
1

Tabel 10.15. Programarea modului de operare cu biii M0 si M1


M0 Modul de operare
0
Timer pe 13 bii (Mod 0)
1
Timer/Counter pe 16 bii (Mod 1)
0
TL0 este timer/counter pe 8 bii i TH0 este timer pe 8 bii (Mod 2)
1
Timer/Counter 1 oprit (Mod 3)

Semnificaia biilor din registrul special TCON este:


TF1, TR1, TF0, TR0, IE1, IT1, IE0, IT0, unde:
TF0, TF1- indicatorul de depire al timer-ului 0, respectiv 1. Este setat la depire
ca numrtor sau teporizator i este resetat cnd se apeleaz rutina de
ntrerupere a timerului corespunztor;
TR0, TR1-este setat sau resetat pentru a porni sau pentru a opri numrtoarele/
temporizatoarele;
IE0, IE1 - indicator de activare a ntreruperii pe front;
IT0, IT1 - controlul activrii ntreruperii (pe nivel IT=0, sau pe front IT=1).
207

Pentru MC care au al treilea timer exist registrul T2CON cu structura:


TF2, EXF2, RCLK, TCLK, EXEN2, TR2, C/-T2, CP/RL2, unde:
TF2 - indicator de depire;
EXF2 - indic apariia unui eveniment la pinii de control extern;
RCLK - cnd este setat, portul serial folosete ca i tact de recepie semnalul de
depire generat de timerul 2;
TCLK - cnd este setat, portul serial folosete ca i tact de emisie semnalul de
depire generat de timerul 2;
EXEN2- indicator de activare extern;
TR2 - pornete/ oprete timerul 2
C/-T2 - selecteaz funcionarea ca timer sau numrtor;
CP/RL2- indicator pentru memorare.

10.3.1.4. Interfaa serial UART


Portul serial este de tip asincron, full-duplex. Portul serial poate opera n 4 moduri:
Modul 0: datele seriale sunt transferate n ambele sensuri prin RXD. TXD furnizeaz
ceasul de transmisie. Rata transferului este 1/12 din frecvena de oscilaie.
Modul 1: transmisie asincron, se transmit date prin TXD, se recepioneaz prin RXD n
formatul 1 bit de start, 8 bii de date, 1 bit de stop, cu rata de transfer variabil
(programabil) cu un timer.
Modul 2: ca la modul 1, dar se transmite i un al 9-lea bit de date care poate fi bitul de
paritate, cu rata de transfer egal cu frecvena oscilatorului divizat cu 32 sau cu 64.
Modul 3: ca la modul 2, cu rata de transfer variabil (programabil) cu un timer.
Registrul de control al portului serial SCON (din registrele SFR):
SM0, SM1, SM2, REN, TB8, RB8, TI, RI;
SM0, SM1 programeaz modul de lucru al portului serial conform tabelului 10.16.
Tabel 10.16 Programarea modului serial cu bitii SM0 si SM1
SM0 SM1 Mod
0
0
Mod 0
0
1
Mod 1
1
0
Mod 2
1
1
Mod 3
SM2 - activeaz posibilitatea de lucru multiprocesor n modurile 2 i 3, prin
transmisia bitului special 9;
REN - activare/ dezactivare recepia;
TB8 - al 9-lea bit ce se transmite n modurile 2 i 3;
RB8 - al 9-lea bit ce se recepioneaz n modurile 2 i 3;
TI - indicator de ntrerupere a transmisiei;
RI - indicator de ntrerupere a recepiei.

208

10.3.1.5. Sistemul de ntreruperi


MC 8051 dispun de 5 nivele de ntrerupere, iar 8052 de 6 nivele. Exist 2 surse
externe, INT0 i INT1, care pot fi active pe nivel sau pe front n funcie de biii IT0 i IT1
din registrul special TCON. Indicatoarele de ntrerupere sunt biii IE0 i IE1 care se seteaz
automat cnd apare o ntrerupere i se reseteaz cnd s-a ncheiat tratarea ntreruperii.
ntreruperile generate de timere sunt date de biii TF0 i TF1 din registrul TCON. Aceti
bii sunt setai cnd apare o depire n numrtoarele/temporizatoarele 0 i 1. ntreruperea
pentru timerul 2 va fi generat de un SAU ntre TF2 i EXF2. Rutina de servire a
ntreruperii va determina care dintre aceti bii a cerut ntrerupere prin citirea registrului
T2CON.
ntreruperea de port serial este generat de un SAU logic ntre RI i TI. . Rutina de servire
a ntreruperii va determina care dintre aceti bii a cerut ntrerupere prin citirea registrului
SCON.
Fiecare din sursele de ntrerupere pot fi activate sau dezactivate prin setarea sau resetarea
unui bit din registrul SFR numit IE, cu structura:
EA, X, ET2, ES, ET1, EX1, ET0, EX0, unde:
EA - dezactiveaz toate ntreruperile cu IE=0. Cu IE=1 sunt validate ntreruperile
i se pot masca individual;
ET2 - mascare ntrerupere pentru timer-ul 2;
ES
- mascare ntrerupere port serial;
ET1 - mascare ntrerupere timer 1;
EX1 - mascare ntrerupere extern INT1;
ET0 - mascare ntrerupere timer 0;
EX0 - mascare ntrerupere extern INT0.
ntreruperilor pot fi tratate conform unei ierarhii implicite sau nivelul prioritilor poate fi
programat n registrul SFR numit IP.
prioriti implicite:
IE0 (cea mai mare prioritate), TF0, IE1, TF1, RI+TI, TF2+EXF2.
structura registrului IP:
X, X, PT2, PS, PT1, PX1, PT0, PX0, unde:
PT2 - stabilete nivelul de prioritate pentru ntreruperea timerului 2;
PS
- stabilete nivelul de prioritate pentru ntreruperea portului serial;
PT1 - stabilete nivelul de prioritate pentru ntreruperea timerului 1;
PX1 - stabilete nivelul de prioritate pentru ntreruperea extern 1;
PT0 - stabilete nivelul de prioritate pentru ntreruperea timerului 0;
PX0 - stabilete nivelul de prioritate pentru ntreruperea extern 0.
Nivelul prioritii poate fi programat n HIGH sau LOW. O ntrerupere LOW poate fi
ntrerupt de o ntrerupere LOW dar nu poate fi ntrerupt de o ntrerupere HIGH. O
ntrerupere HIGH nu poate fi ntrerupt.
209

10.3.1.6. Operarea cu economie de energie


8051 are dou moduri de operare cu putere redus; modul inactiv (Idle) i modul cu
tensiune sczut (Power Down).
n modul inactiv oscilatorulfuncioneaz, dar nu se execut nici o instruciune. Timerele i
portul serial funcioneaz i orice ntrerupere de la ele readuc circuitul n stare normal. Un
RESET hardware readuce circuitul n stare normal. Starea CPU se pstreaz n ntregime:
indicator de stiv, Program Counter, registre etc.
n modul cu tensiune sczut oscilatorul intern este oprit i toate funciile sunt oprite. Se
pstreaz doar RAM-ul intern i registrele speciale. Singura modalitate de a iei din aceast
stare este prin RESET hardware. n aceast stare tensiunea de +5V poate fi redus.
Modurile de operare cu economie de energie pot fi comandate prin registrul SFR PCON,
care are structura: PD, IDL unde:
PD
- bit pentru modul cu tensiune sczut;
IDL - bit pentru modul inactiv.

10.3.1.7. Formarea unor semnale externe


RESET-ul se comand pe intrarea RST a MC. Coninutul registrelor speciale SFR
va fi adus la 00H, cu excepia SBUF care va fi nedeterminat i PCON care va fi
0XXX0000 n binar. RAM-ul intern nu este afectat. La pornirea sistemului se poate realiza
un RESET automat cu un montaj ca n Fig. 10. 23.
VCC
R (4-10K)
RST

C (10)

Fig. 10.23. Circuit pentru formarea semnalului


RESET
Ca i generator de tact se poate folosi oscilatorul intern la intrrile X1 i X2, ca n
Fig.10. 24.
X1

X2

Fig. 10.24 Circuit pentru folosirea generatorului


intern de tact
Circuitul poate fi folosit i cu un tact extern, legnd X2 la mas, iar la X1 se leag un
oscilator extern.

210

10.3.1.8. Programarea EPROM-ului intern


Pentru a fi programat circuitul trebuie s fie alimentat i s aib cuplat generatorul
de tact pentru c transferul de date se face prin bus-ul intern al circuitului. Adresa pentru
EPROM-ul de programat trebuie s fie aplicat la portul 1 i pinii P2.0-P2.3 ai portului 2,
iar octetul de date de programat se aplic la portul 0. Ceilali pini ai portului 2, precum i
semnalele RST, /PSEN, /EA/Vpp trebuie s aib urmtoarele nivele (tabel 10.16).
Tabel 10.16. Condiii pentru operaiile de programare, verificare, setare bit siguran
Operaia
RST /PSEN ALE
/EA/Vpp P2.7 P2.6
Programare
1
0
impuls la 0 pentru 50ms Vpp
1
0
Verificare
1
0
1
1
0
0
Setarea bitului de 1
0
impuls la 0 pentru 50ms VPP
1
1
siguran
Semnalul ALE este un impuls la 0 pentru 50 ms pentru a efectua programarea. Tensiunea
Vpp este de +21V pentru 8751H i de -12,75V pentru 8752BH (A se consulta cu atenie
foile de catalog). Sursa de tensiune pentru Vpp trebuie s fie foarte bine filtrat i
stabilizat deoarece chiar i un mic impuls de tensiune poate produce vtmarea circuitului.
Verificarea programului se poate face dac bitul de siguran nu a fost programat. Citirea
se face n aceleai condiii ca i scrierea, cu excepia lui ALE care este 1, /EA este 1, iar
strobul de citire este P2.7. Pentru a nu se putea citi neautorizat coninutul EPROM-ului se
programeaz un aa numit bit de siguran care odat programat nu mai permite nici un
acces electric la memoria EPROM. Odat programat, acest bit se poate terge doar prin
tergerea ntregii memorii EPROM.
tergerea EPROM-ului se poate face la lumin ultraviolet (2537Angstrom), cu cel puin
15W.sec/cm2, adic o expunere de 20-30 min. la distana de 2-3cm la o lamp de
ultraviolete cu 12W/cm2.
Programarea rapid (Quick Pulse Programming) poate fi aplicat la circuitele 875XBH, i
are ca rezultat posibilitatea programrii unui circuit n numai 25 secunde. Programarea se
poate face cu o tensiune Vpp mai mic (12,75V). Semnalul ALE are forma unor impulsuri
multiple, 25 de impulsuri de 100 s.

10.3.2. Programarea MC din familia MCS-51


8051 are 111 instruciuni din care 64 sunt de un singur ciclu.

10.3.2.1. Setul de instruciuni 8051


Instruciuni pentru transferul de date:
Transferuri generale:
MOV - efectueaz un transfer pe bit sau pe octet de la surs la destinaie.
PUSH - incrementeaz registrul SP (Stack Pointer) i transfer un octet de la surs
la locaia din stiv adresat de SP.
POP - transfer un operand pe un octet de la locaia din stiv adresat de SP la
destinaie i decrementeaz SP.
211

Transferuri specifice acumulatorului:


XCH - mut octetul din surs n acumulator.
XCHD - mut biii LOW din octetul din surs n acumulator.
MOVX - mut un octet ntre memoria extern de date i acumulator. Adresa
memoriei de date extern poate fi specificat n registrul dublu DPTR.
MOVC - se citete un octet din memoria extern de program n acumulator.
Transferuri de adrese:
MOV DPTR, #data, ncarc imediat 16 bii de date n registrul dublu DPTR.
Instruciuni aritmetice:
Adunare:
INC - adun operandul cu 1 i pune rezultatul ca nou operand.
ADD - adun acumulatorul cu operandul surs i pune rezultatul n A.
ADDC - adunare ca la ADD dar se adun i bitul CY (Carry) din PSW.
DA
- ajustare zecimal, corecteaz suma care rezult din adunarea a doi
operanzi zecimali cu maxim 2 cifre.
Scdere:
SUBB - scdere cu mprumut, scade operandul din acumulator, apoi scade CY i
pune rezultatul n A.
DEC - scade 1 din operand i pune rezultatul ca nou operand.
nmulire:
MUL - execut o nmulire fr semn ntre acumulator i registrul B, rezultatul
obinut fiind pe 2 octei (octetul cel mai semnificativ se pune n B). Dac
toi biii din octetul cel mai semnificativ al rezultatului sunt 0 bitul OV i
CY din PSW se pun la 0.
mprire:
DIV

- execut mprirea fr semn a coninutului registrului A la coninutul


registrului B. Partea ntreag a rezultatului se pune n A, iar partea
fracionar n B.

Instruciuni pentru operaii logice:


Instruciuni logice cu un singur operand:
CLR - reseteaz A orice bit adresabil direct.
SETB - seteaz orice bit adresabil direct.
CPL - complementeaz coninutul lui A, fr a afecta PSW.
RL
- rotaie stnga a acumulatorului.
RLC - rotaie stnga a A prin CY.
RR
- rotaie dreapta a A.
RRC - rotaie dreapta a A prin CY.
SWAP - inverseaz niblurile n A.
Instruciuni logice cu 2 operanzi:
ANL - I logic.
ORL - SAU logic.
XRL - SAU EXCLUSIV logic.
212

Instruciuni de control:
Apeluri i salturi necondiionate:
ACAL - este o instruciune pe 2 octei de apelare a unui subprogram care se
folosete atunci cnd adresa de salt este cuprins n 2K ai paginii curente.
Cmpul de adres de 11 bii este concatenat cu cei mai semnificativi 5 bii
din PC.
LCALL- este o instruciune pe trei octei de apelare a unui subprogram care
adreseaz toi cei 64K ai memoriei.
RET - transfer controlul la adresa de ntoarcere care a fost n prealabil salvat n
stiv i decrementeaz registrul SP cu 2.
AJMP - este un salt necondiionat la adresa specificatanalog cu ACALL.
LJMP - este un salt necondiionat la adresa specificat analog cu LCALL.
SJMP - este un salt necondiionat scurt n cadrul a 256 de octei.
Salturi condiionate:
JZ
- execut salt dac acumulatorul este 0.
JNZ - execut salt dac acumulatorul nu este 0.
JC
- execut salt dac bitul de CY (Carry) este 1.
JNC - execut salt dac bitul de CY este 0.
JB
- execut salt dac bitul adresat este 1.
JNB - execut salt dac bitul adresat este 0.
JBC - execut salt dac bitul adresat este 1 i apoi terge bitul adresat.
CJNE - compar primul operand cu al doilea operand i face salt dac acetia nu
sunt egali.
DJNZ - decrementeaz operandul surs i pune rezultatul n operandul destinaie.
Dac rezultatul nu este 0 se execut salt.
ntreruperi:
RETI - ca i RET, dar activeaz ntreruperile.

10.3.2.2. Modurile de adresare


Adresare prin registre - programatorul are acces la 8 registre de lucru, notate R0-R7. Cei
mai puin semnificativi 3 bii ai codului instruciunii indic unul dintre aceste registre. Se
poate forma astfel o instruciune de un singur octet. De exemplu adunarea registrului R0 cu
R1, cu rezultatul n acumulator:
MOV A,R0
ADD A,R1
Adresare direct - se pot adresa locaii din RAM, porturi I/O sau registrele cu funcii
speciale. La codul instruciunii se adaug un octet care reprezint locaia care se folosete.
De exemplu se adun coninutul locaiei 30 din RAM la coninutul locaiei 40, cu rezultatul
n locaia 40:
MOV A,30h
ADD A,40h
MOV 40h,A
Adresare indirect prin registre - introdus pentru a putea lucra cu variabile al cror loc
n RAM se modific n cursul rulrii programelor. Ca registre index se folosesc registrele
R0 i R1, al cror coninut indic adresa n RAM. Cel mai puin semnificativ bit al codului
instruciunii indic registrul care este folosit ca index. n limbajul de asamblare al lui 8051,
213

adresarea indirect se reprezint cu @. De exemplu se adun coninutul locaiei adresat de


registrul R0 cu coninutul locaiei adresat de registrul R1, cu rezultatul n acumulator:
MOV A,@R0
ADD A,@R1
Adresare imediat - folosit cnd operandul este o constant cu o valoare cunoscut, care
se specific n codului instruciunii. n limbajul de asamblare al lui 8051 constanta este
precedat de semnul #. De exemplu adunarea lui 15 cu 18 zecimal, cu rezultatul n
acumulator:
MOV A,#15
ADD A,#18

10.3.3. Echipri speciale cu memorie


10.3.3.1. Memoria EEPROM (PHILIPS 80C851)
Memoria EEPROM are dimensiunea de 256 octei, poate reine informaiile
minimum 10 ani i poate fi supus la 10.000 de cicluri de tergere/scriere. Circuitul conine
multiplicatorul de tensiune pentru tergere i scriere.
Comunicaia ntre UC i EEPROM se realizeaz cu ajutorul a 5 registre:
EADRH (adresa F3h), EADRL (adresa F2h) sunt dou registre pentru adresare, primul
pentru partea LOW a adresei, cellalt pentru partea HIGH (pentru implementri viitoare i
pentru adresarea biilor de securitate).
EDAT (adresa F4h) este registrul de date n care se stocheaz octetul de scris sau octetul
citit. Sunt posibile i tergeri pe bloc de date, caz n care coninutul acestui registru nu
conteaz.
ETIM (adresa F5h) este un registru pentru timer necesar pentru a adapta timpul de citire/
scriere la frecvena sistemului i trebuie ncrcat cu valori funcie de tactul sistemului i de
caracteristicile EEPROM-ului.
ECNTRL (adresa F6h) este registrul de control care:
stabilete modurile de lucru: scriere, citire, tergere pe octet, tergere pe bloc;
conine un bit care semnaleaz c este n curs o scriere sau tergere.
Schema bloc a modulului este dat n Fig. 10.25.
CPU
Secveniator

ECNTRL

EEPROM

ETIM

EDATA

EADRH

BUS INTERN

Fig. 10.25. Schema bloc a modulului EEPROM


214

EADRL

Secveniatorul asigur secvena de timp corespunztoare pentru scriere sau tergere. Datele
i adresele se transfer prin intermediul registrelor de pe magistral.
O citire se poate realiza simplu:
Citire: MOV EADRL,#20H
MOV A,EDAT
Ca urmare a acestei secvene de program, coninutul locaiei 20h este citit n acumulator.
Memoria EEPROM este protejat cu un octet la adresa 8000h. Se poate valida securitatea
cu urmtoarea secven de program, cu scrierea activat:
Activare securitate:
MOV EADRH,#80H
MOV EADRL,#00H
MOV EDAT,#FFH
Acest octet nu mai poate fi modificat prin soft. Programul din EEPROM nu mai poate fi
citit sau modificat cu instruciuni MOVC din memorii externe, ci doar executat.

10.3.3.2. Memoria FLASH cu programare paralel


(ATMEL AT89C55)
Multe MC compatibile 8051 sunt echipate cu memorie FLASH. Unul dintre acestea
este AT89C55 care este echipat cu 20K octei memorie FLASH care poate fi programat i
tears (EPROM) n maximum 1000 de cicluri de scriere/tergere.
Programarea memoriei FLASH se poate face cu o tensiune mare, de +12V aa nct se pot
folosi inscriptoarele de EPROM sau se poate face cu +5V, pentru ca programarea s fie
posibil n sistemul gazd. AT89C55 este fabricat cu memoria tears (plin cu FFh) i
gata de a fi programat.
Programarea memoriei se face astfel:
!"pe liniile de adres se stabilete adresa locaiei de programat;
!"pe liniile de date se stabilete octetul de nscris;
!"se aplic un front pe /EA/Vpp la +12V (pentru programarea cu 12V);
!"se aplic un impuls ALE//PROG.
Starea programrii este indicat de bitul RDY//BSY (P3.4), linia fiind LOW n timpul
programrii i HIGH cnd programarea s-a terminat.
Dup nscriere se poate face verificarea a ceea ce s-a nscris, prin adresare i citirea
octetului de date.
Toat memoria FLASH se poate terge electric aplicnd semnalele de comand
corespunztoare (din tabelul care exist n foile de catalog) i aplicnd apoi un impuls
ALE//PROG de 10ms. Asemntor se programeaz (programare paralel) i circuitul
89C51 de la Philips.
215

10.3.3.3. Memoria FLASH cu programare paralel i serial ISP


(PHILIPS 89C51RC)
O facilitate interesant i util o au MC care au nscris n ROM un mic program
monitor care poate s gestioneze nscrierea memoriei FLASH prin canalul serial. Modul de
nscriere serial se numete In-System Programming (ISP) i este realizat printr-un canal
serial cu liniile TxD i RxD i liniile de alimentare de +5V i mas, precum i tensiunea
necesar nscrierii memoriei FLASH, +Vpp. Softul care gestioneaz canalul serial este un
monitor nscris n ROM. Dup programarea memoriei FLASH, ROM-ul poate fi invalidat.
Programul monitor determin rata de transfer cu care i se trimit date i transmite n ecou ce
a recepionat. Dup transmiterea caracterului pentru stabilirea ratei de transfer, se transmite
un octet de identificare care stabilete natura datelor care urmeaz. Numrul de octei care
urmeaz este limitat la 16. n foile de catalog sunt explicate comenzile care pot fi date pe
acest cale. Programul monitor ocup 1K i ROM-ul se numete Boot ROM.
La aceast memorie FLASH timpul de acces este de 100ns, timpul necesar nscrierii unei
locaii este de 20ms, iar tergerea se realizeaz n 3 secunde.

10.3.4. Interfee i periferice on chip speciale


10.3.4.1. Convertorul A/D
Circuitul analogic de intrare const ntr-un multiplexor analogic i un convertor
A/D de 8 bii cu aproximaii succesive. Tensiunea de referin pentru convertor i masa
analogic sunt conectate prin pini speciali. O conversie poate avea loc n 24 sau 48 de cicli
main, programabil, ceea ce nseamn un timp de conversie de 24s la un tact de 12MHz.
Convertorul este controlat de registrul de control ADCON care selecteaz i canalul de
conversie. Terminarea conversiei este semnalizat cu un bit tot n ADCON, iar rezultatul
conversiei este stocat n registrul ADCH. O conversie poate fi declanat n 3 feluri:

start n operare normal i revenire n operare normal;


start n operare normal revenire n mod inactiv (Idle);
intrare n mod inactiv i declanarea unei conversii din exterior prin pinul STDAC.

Schema bloc a convertorului este dat n Fig. 10.26.


Cu registrul ADCON (C4h) se poate programa:

selecia canalului analogic dorit;


se poate programa ca o conversie s fie declanat de pinul extern STADC;
se poate declana o conversie;
conine un bit care semnaleaz c s-a terminat conversia. Cu acest bit se poate
solicita o cerere de ntrerupere;
se poate selecta viteza de conversie la viteza maxim (24 cicli) sau mai mic
(48 de cicli).

216

Multiplexor
analogic

ADC0
ADC1
ADC2
ADC3

Selecie
canal

STDAC
Convertor Analog Digital

START

STOP

ADCON

Date
ADCH

BUS INTERN

Fig. 10.26. Schema bloc a convertorului analog digital

10.3.4.2. Interfaa PWM


Circuitul este prevzut cu un canal PWM la care frecvena de repetiie este
programat cu un registru de prescalare (PWMP- adresa FEh) care genereaz un ceas
pentru un numrtor de 8 bii. Coninutul numrtorului este comparat cu cel al registrului
PWM0 (adresa FCh); dac numrul este mai mare ieirea /PWM0 este LOW, dac este mai
mic sau egal /PWM0 este HIGH. Factorul de umplere poate fi astfel modificat ntre 0 i
255/255. Schema bloc a canalului PWM este dat n Fig. 10.27.
/PWM0

Comparator pe 8 bii

Numrtor
8 bii

PWM0

PWMP
(prescalare)

fosc/2

BUS INTERN

Fig. 10.27. Schema bloc a canalului PWM


Observaie: convertorul AD, interfaa I2C i canalul PWM0 pot lucra n modurile cu
economie de energie. Convertorul, interfaa I2C i canalul PWM0 rmn active n modul
idle al UC i pot genera o ntrerupere sau un RESET, terminnd astfel modul inactiv al UC.

217

10.3.4.3. Interfaa USB (EZ-USB seria 2100)


Familia EZ-USB de la Anchor Chips ( www.anchorchips.com ) echipeaz MC-ul
lor echivalent cu 8051 cu un modul USB inteligent, destinat legturii USB de mare vitez
(12Mbps). Modulul USB inteligent admite instruciuni avansate, de aceea punerea la punct
a lucrului cu USB devine mai rapid. MC este echipat cu RAM care poate fi ncrcat de la
un PC. Din acest motiv circuitul nu mai are ROM. Circuitul mai conine i o interfa I2C,
precum i linii I/O de uz general. Tot ca un avantaj se poate meniona c bus-ul de date i
adrese nemultiplexat este accesibil la pini speciali, ceea ce nseamn c nu se sacrific pini
I/O pentru cuplarea unor componente exterioare i nici nu este nevoie de latch-uri pentru
separarea datelor de adrese.
Schema bloc a acestui MC este dat n Fig. 10.28.

8051

RAM
4-8 Koctei

Interfaa cu memoria
extern (nemultiplexat)

PIO
(24 linii)

BUS INTERN

Interfa I2C

2K octei FIFO memorie


proprie

Interfaa USB inteligent

Transceiver USB

D+
D-

SCK

SDA

Fig. 10.28. Schema bloc a unui MC cu interfa USB


Modulul USB realizeaz n timpul iniializrii o enumerare i alocare de adrese a
dispozitivelor USB conectate. Aceast operaie este posibil ca urmare a mutrii unei
secvene de program din RAM-ul MC n RAM-ul modulului USB.
ncrcarea programului n RAM se poate face att de la un sistem PC ct i de la un
EEPROM serial prin interfaa I2C sau clasic, prin conectarea unei memorii ROM externe.
Operaia de enumerare iniial permite identificarea unui corespondent USB i creeaz
posibilitatea ncrcrii programelor de la sistemul gazd chiar prin USB.
218

10.3.4.4. Interfaa I2C (SIEMENS P80CL580)


Portul serial I2C are 2 linii, date seriale (SDA) pe poziia liniei P1.7 i ceas serial
(SCK) pe poziia bitului P1.6. Interfaa lucreaz n 4 moduri:

transmitor MASTER
receptor MASTER
transmitor SLAVE
receptor SLAVE

Aceste funcii pot fi controlate de registrul S1CON (Serial Control Register) i S1STA
(Serial Status Register). Cu datele se lucreaz prin S1DAT (Data Shift Register) iar adresa
se stabilete n S1ADR (Slave Address Register), Fig. 10.29.

S1ADR

SDA

B
U
S

S1DAT
Arbitrare i
sincronizare

SCK

Generare ceas

S1CON

I
N
T
E
R
N

S1STA

Fig. 10.29. Interfa I2C


Cu registrul de control S1CON (registru SFR la adresa DBh) se pot programa:

ceasul serial de transfer n mod MASTER (SCK), care este n funcie de tactul
sistemului i poate fi de maximum 100kHz;
se poate selecta dac liniile I/O (P1.6 i P1.7) au semnificaiile generale sau
speciale pentru I2C;
se poate porni transferul prin generarea de condiii de START repetate (mod
MASTER) sau verificarea bus-ului i generarea de START doar dac bus-ul
este liber (mod SLAVE);
se poate opri transferul prin generarea unei condiii de STOP;
se pot valida ntreruperile care se genereaz n urmtoarele condiii: s-a generat
o condiie de START, s-a recepionat adresa proprie, un octet s-a transmis sau
s-a recepionat;
se poate insera un ACK, (nivel LOW pe SDA) dup recepia unui caracter sau a
adresei proprii.
219

Registrul de stare S1STA (D9h - registru Read Only) poate fi folosit pentru generarea unei
ntreruperi i saltul la o rutin de servire.
n registrul de date S1DAT (DAh) se nscrie octetul care se transmite sau se recepioneaz;
cel mai semnificativ bit se transmite sau se recepioneaz primul.
n registrul de adrese S1ADR (DBh), la un dispozitiv MASTER se stabilete adresa
dispozitivului SLAVE cu care dorete un transfer de date.

10.3.4.5. Aria de numrtoare programabil (PCA)


Aria de numrtoare programabil este un circuit special de timp format din 5
module de 16 bii cu posibilitatea de captur i comparaie care se adaug timerelor
obinuite ale MC. Fiecare modul poate fi programat individual s lucreze n unul din
modurile:
captur pe front pozitiv sau negativ;
timer;
canal PWM;
ceas de gard (doar modulul 4).
Fiecare timer are un pin asociat din portul 1, ca n Fig. 10.30.
Modul 0 (16 bii)

Temporizator/
Numrtor (Baza de
timp pentru modulele
PCA)

Modul 1 (16 bii)

Modul 2 (16 bii)

Modul 3 (16 bii)

Modul 4 (16 bii)

P1.3

P1.4
P1.5

P1.6
P1.7

Fig. 10.30. Structura ariei de timp programabile (PCA)


Timerul comun pentru toate modulele este un timer obinuit. El poate funciona cu diferite
tacte programate n registrul SFR CMOD cu 2 bii, conform tabelului 10.17.
CPS1
0
0
1
1

Tabel 10.17. Programarea tactului pentru timer


CPS0 Tact pentru timer
0
frecvena oscilatorului/12
1
frecvena oscilatorului/4
0
Semnalul de depire de la timerul 0 standard
1
De la un pin extern (ECI, P1.2)
220

Fiecare modul are asociat un registru de comand (CCAPM0-CCAPM4) care controleaz


modul de operare al modulului:

se poate valida ca o coinciden n modul s genereze o ntrerupere;


se poate valida modul PWM;
se poate valida ca ieirea P1.x s schimbe starea dac a aprut o coinciden
ntre coninutul modulului i coninutul timerului;
se poate programa pe care front al intrrii P1.x s se fac numrarea
impulsurilor externe.

Fiecare modul mai are asociat un registru de 16 bii (cte dou de 8 bii; CCAP0HCCAP5H i CCAP0L-CCAP5L) care stocheaz valoarea numrat la apariia unei
coincidene. n mod PWM aceste registre controleaz factorul de umplere.
Funcionarea PCA:
n modul de captur, cnd apare o tranziie pe intrarea extern P1.x, se ncarc
valoarea la care a ajuns timerul comun n registrele de date (CCAPxH i
CCAPxL). n acest moment se poate genera o ntrerupere;
n mod timer, coninutul registrelor de date este incrementat de la intrarea
extern. Cnd se ajunge la o valoare egal cu cea stocat n timerul comun
poate fi generat o ntrerupere;
n mod PWM fiecare modul poate fi folosit ca un canal independent. Frecvena
semnalului PWM este aceeai i depinde de sursa timerului comun. Factorul de
umplere se poate modifica prin registrul CCAPxL;
n mod ceas de gard utilizatorul ncarc registrul CCAPxH i CCAPxL. Cnd
timerul comun ajunge la o valoare egal cu cea stocat de utilizator se
genereaz un RESET intern. Pentru ca s nu se ajung la RESET ntr-un
progam rulat normal, utilizatorul trebuie periodic s schimbe valoarea din timer
sau s reseteze ceasul de gard.

10.3.4.6. MC cu interfa pentru RAM nevolatil (NVRAM)


(DALLAS DS5000FP)
Un astfel de MC poate adresa o memorie extern SRAM (ntre 8K i 64K) care
poate fi fcut nevolatil prin alimentarea cu baterii. O baterie cu litiu poate funciona cca.
10 ani. Transferul de date cu memoria NVRAM se face pe un bus separat pentru a nu
micora numrul de linii I/O.
Circuitul nu are ROM pentru programul utilizator, programul fiind stocat n NVRAM,
programarea se realizeaz n sistem, prin interfaa serial a MC. La acest tip de MC
programul se poate schimba chiar i n timpul funcionrii. Programul se poate ncrca
iniial prin interfaa serial, sub comanda unui program existent ntr-un ROM intern numit
Boot ROM (sau BOOTSTRAP LOADER ROM) care este apoi invalidat i devine invizibil
la adresare.
Schema de conectare a unei memorii de 32K este dat n Fig. 10.31.

221

Vcc

DS5000FP

32Kx8 SRAM
Vcc0
/CE
/RW

3V Li

Vcc
/CS
/WE

RST
BD0-BD7

D0-D7

P0
A0-A14
P1

BA0-BA14

P2
P3

GND

Fig. 10.31. Schema de conectare a unei memorii RAM

10.3.4.7. Interfaa LCD (PHILIPS P83C434)


n jurul unui nucleu 8051 a fost construit un MC specializat pentru comanda
panourilor LCD. Rmn disponibile pentru uz general 12 linii I/O. Modulul LCD are 24 de
linii pentru comanda segmentelor, din care 2 pot fi folosite pentru comanda planurilor din
spate. Afiajul poate fi comandat cu tensiuni variabile obinute intern prin divizarea
tensiunii de alimentare cu rezistene. Schema bloc a MC este dat n Fig. 10.32.
Modul LCD
12
linii
I/O

Nucleu 8051

S00-S21
S22/BP3
S23/BP2
BP1
BP0

Fig. 10.32. MC cu modul de comand LCD


MC se poate folosi la comanda afioarelor cu pn la 4 planuri n spate. Cele 24 de linii de
comand a segmentelor pot comanda 12 caractere numerice formate cu 7 segmente sau 88
de elemente grafice. Funcionarea afiajului poate fi mai bine neleas n cazul concret al
unui singur plan n spate, pentru 2 elemente alturate ale afiajului, Fig. 10.33.
222

VDD
VSS

BP0
S00

S01
2 elemente de afisaj,
(primul aprins, al doilea stins)

Fig. 10.33. Comanda a doua elemente alturate ale afiajului LCD


Primul element este aprins pentru c ntre segment i planul din spate este o diferen de
potenial, iar al doilea este stins pentru c nu exist o diferen de potenial.
Comanda modulului de afiare se face cu 12 registre LCD0-LCD11 (adrese 9Ah-BFh) care
conin configuraia segmentelor stinse/aprinse pentru fiecare plan din spate.

10.3.4.8. MC specializat pentru TV i video (PHILIPS 83C145)


Acest MC este construit n jurul unui nucleu 8051 i are 8-16Koctei ROM sau
OTP, 256 octei RAM, controller pentru vizualizare pe ecran (On Screen Display OSD), 3
ieiri video digitale, memorie RAM pentru display de 128x10 bii, generator de caractere
(ROM 60 caractere x 18 linii x 14 puncte), 8 canale PWM de 6 bii i un canal PWM de
precizie de 14 bii, convertor numeric analogic. Nu se poate conecta memorie extern.
Schema bloc este dat n Fig. 10.34.
Nucleu 8051
(fra memorie)

On Screen Display OSD


RAM 128x10
ROM 60 x 18 x 14

RAM
ROM
Magistral de date

Porturi I/O
P3 P2 P1(4b) P0

8x6bit PWM

14bit PWM

DAC

Fig. 10.34. Schema bloc a unui MC specializat TV/video


Ceasul canalelor PWM se formeaz din tactul sistemului divizat cu 4. Acest tact este
aplicat tuturor canalelor PWM i unui numrtor de 14 bii. Canalele de 6 bii utilizeaz
doar partea mai puin semnificativ a numrtorului de 14 bii. Fiecare canal PWM are
223

asociat un registru SFR. La egalitatea valorii acestui registru cu coninutul numrtorului,


ieirea PWM schimb starea. Structura canalelor PWM este reprezentat n Fig. 10.35.
Registru SFR PWM0
Canal PWM0 (6 bii)

P1.3

Registru SFR PWM7


Numrtor 14 bii
Canal PWM7 (6 bii)
Tact= f/4

P0.6

Registru TDACL, TDACH

Canal PWM8 (14 bii)


P0.7

Fig. 10.35. Structura canalelor PWM


(ale MC specializat TV/video)
Convertorul numeric analogic este folosit pentru a realiza conversia analog numeric soft
(Fig. 10.36). Circuitul are 3 intrri analogice care pot fi comutate pe rnd la intrarea unui
comparator de tensiune. La cealalt intrare a comparatorului se aplic ieirea convertorului
numeric analogic. Cnd intrrile sunt egale, valoarea aplicat convertorului numeric
analogic este chiar valoarea numeric a semnalului analogic de intrare.
P1.0

MUX
ANALOGIC
Comparator

P1.1
P1.2
DAC (4 bit)

Fig. 10.36. Convertorul analog numeric


(al MC specializat TV/video)
Modulul OSD are rolul de a suprapune text pe o imagine de televiziune. Intrrile n acest
bloc sunt:
2 ceasuri video;
semnalul de sincronizare orizontal;
semnalul de sincronizare vertical.

224

Modulul OSD poate fi echipat cu EPROM, ceea ce nseamn c generatorul de caractere


poate fi programat. Modulul OSD permite 8 moduri de scriere umbrit a caracterului,
culoarea caracterului este selectabil, culoarea fondului este selectabil.

10.3.4.9. MC cu arie configurabil (TRISCEND E5)


Firma TRISCEND a realizat un MC compatibil 8051 care conine o arie de pori
configurabil (Configurable System-on-Chip CSOC). Acest MC integreaz pe un singur
chip un MC de uz general 8051, un bloc de RAM de mari dimensiuni i o arie de module
configurabile, toate acestea conectate ntre ele printr-un bus de mare vitez. Programarea
ariei se face prin programul de iniializare i se poate relua de ori cte ori.
Descrierea pe scurt a circuitului: ruleaz la o frecven de 40MHz i are echipare standard
(256 octei RAM, ceas de gard, trei timere, 2 canale DMA, interfa serial UART, 64K
octei RAM) i are n plus 3200 de module configurabile (CSL Configurable System Logic
- ceea ce nseamn cam 40.000 de pori).
Conectarea ntre modulele cofigurabile i restul sistemului, respectiv liniile I/O se
realizeaz prin magistrala CSI (Configurable System Interconnect), cu 8 bii de date
bidirecional, 32 de bii de adres, rata de transfer de maxim 40MBps. Magistrala CSI
permite lucrul multi master, master putnd fi unitatea central 8051, canalele DMA sau
interfaa JTAG.
Interfaa cu exteriorul poate fi realizat cu maxim 315 linii I/O (depinde de variant i
capsul), exist i posibilitatea conectrii memoriei externe, iar un modul de interfa IEEE
1149.1 JTAG permite testarea sistemului. Liniile I/O au caracteristici programabile (curent
de ieire, histerezis la intrare etc.). Schema bloc este dat n Fig. 10.37.
8051
CPU
256 x 8 RAM
Ceas de gard
3 x Timer
UART
Controller de
ntreruperi
2x DMA

RAM
64Koctei

Interfaa cu
memoria
extern

Interfaa
JTAG

BUS CSI

Matrice CSL

PIO

PIO

PIO

Fig. 10.37. Schema bloc a unui MC TRISCEND E5


225

Interfaa cu memoria extern permite legarea direct a unei memorii de 256K x 8 bii (de
regul FLASH) pentru nscrierea iniial a programului n MC. nscrierea iniial poate fi
realizat la RESET din aceast memorie FLASH extern n mod paralel, dar poate fi
realizat prin citirea programului prin interfaa serial de la un PROM serial. Programul
poate fi executat din FLASH sau poate fi copiat prin interfaa serial n RAM i executat
de acolo.
Modul serial elibereaz pini I/O care pot fi astfel folosii n alte scopuri. Procedura de
ncrcare poate s nu fie reluat dac RAM-ul se alimenteaz cu baterie.
Cu aria de module configurabile se pot realiza sisteme la cerere. Fiecare modul poate
ndeplini diverse funcii, combinaionale sau secveniale. Modulele configurabile sunt
aranjate ntr-o matrice, a crei dimensiuni depind de varianta de circuit. Modulele sunt
grupate cte dou, pentru a putea mpri resursele. Schema bloc a unui nod din matrice
este dat n Fig. 10.38.

Matrice
de
legturi

Matrice
de
legturi
Modul CSL

Linii lungi de
adres

Linii
scurte de
interconectare

Modul CSL

Matrice
de
legturi

Matrice
de
legturi

Linii lungi
I/O

Fig. 10.38. Schema bloc a unui modul de arie configurabil


Structura unei celule este dat n Fig. 10.39.

Intrri

Pori
configurabile
prin
programare

Bistabil D
D
Q
EN
T

Fig. 10.39. Structura unei celule configurabile


226

Ieiri

Structura porilor poate fi programat la iniializare i reprogramat de ori cte ori. O celul
poate ndeplini una din funciile:

logic (ieirea 1);


aritmetic;
de memorare (ieirea 2);
de magistral;
secvenial.

Testarea JTAG se poate realiza cu un calculator conectat la interfaa JTAG. Pinii folosii
sunt:
TCK ceas de testare (intrare n MC);
TMS comanda modului de test, intrare n MC, activ pe 0;
TDI date seriale de intrare n MC;
TDO date seriale de ieire din MC.
n modul de testare nu este nevoie ca MC s aib o memorie extern. Prin legtura JTAG
se poate programa matricea CSL i se poate observa modul de rulare al programului de
ctre MC prin intercalarea de break point-uri, rularea pas cu pas, citirea registrelor interne
etc.

10.3.4.10. MC pe 16 bii
(PHILIPS XA-G3, eXtended Architecture Controller)
Familia XA se bazeaz pe o extindere a arhitecturii MCS 51. Magistrala de adrese
este de 20 de bii (1M adresabil) dar se poate extinde la 24, circuitul fiind dotat cu 32K
octei ROM sau EPROM i 512 octei RAM. Unitatea central are 8 registre care pot fi
utilizate i ca baz de adresare, sunt posibile i operaii direct cu memoria, se pot face
nmuliri i mpriri. Tensiunea de alimentare este ntre 2,7 i 5V. Ca interfee, familia XA
este echipat cu 3 timere, un ceas de gard, 4 porturi de 8 linii i 2 interfee seriale UART
(Fig. 10.40.).
Memorie RAM
( 512 octei) i
ROM (EPROM)
(32K octei)

Unitatea central
XA

UART 1
UART 2

Ceas de gard

Timer
Adrese i date
multiplexate

Port 3

Port 1

Port 0

Magistrala
de date 16b

Port 2

Fig. 10.40. Schema bloc a unui MC XA pe 16 bii


227

10.3.5. Sistem minimal cu 8051


Schema electric simplificat a unui sistem minimal cu 8051 este dat n Fig. 10.41.

8051
X1

AD0-AD7
P0

LATCH
ADRESE
/A15

X2
RST

/WR
ALE

OE

BUS
ADRESE
A0-A15

P2
A8-A15
P1

RAM
STATIC 32K
A0-A14
CS D0-D7
/WE

/RD
/WR
PSEN

Port I/O liber

/RD

BUS
DATE
D0-D7

EPROM
A0-A14
A15

/PSEN

CS

D0-D7

/OE

Opional

Fig. 10.41. Sistem minimal cu 8051


Sistemul minimal conine RAM cu capacitatea de 32KB, selectat cu PSEN (care indic
faptul c nu este acces la memoria program) i /RD pentru o citire sau /WR pentru o scriere
n RAM.
Bus-ul de date i adrese este comun pentru AD0-AD7. Adresele se separ cu un latch
validat de semnalul ALE. Liniile de date sunt validate cu /RD sau /WR.
Memoria program EPROM este opional, (este necesar pentru modelele care nu au
EPROM sau OTP intern, de exemplu 8031) fiind selectat cu semnalul PSEN. Dac exist
EPROM extern /EA=LOW, iar dac se folosete EPROM-ul intern /EA=HIGH.
Circuitul se completeaz cu un generator de tact i dou componente pentru realizarea
RESET-ului, ca n unul din subcapitolele anterioare.
Pentru dezvoltri se poate folosi portul P1, care este liber, i canalul serial. Dac numrul
liniilor I/O nu este suficient, se poate folosi un expander cum este de exemplu 8243, care
poate extinde 4 linii la 4x4 linii bidirecionale (Fig. 10. 42.).

228

8051

8243

X1
P0

P4

X2
RST
P2.3
P2.2
P2.1
P2.0

P23
P22
P21
P20

P5
P6

/CS
PROG

P7

P1
P2.5
P2.4

Fig. 10.42. Expandarea liniilor I/O cu circuitul 8243

10.3.6. Date comparative pentru MC din familia MCS-51


Tabel 10.18. Tabel comparativ pentru MC din familia MCS -51
MC
Magistrala de Frecvena Linii
Interfee
Pre
date
(MHz)
I/O
speciale
(USD)
PHILIPS P87C51
8
16
32
2
4
PHILIPS S87C552 8
16
48
5
35
PHILIPS XA-G3
16
30
32
2
90
TRISCEND E5
8
40
128
2
27
INTEL 87C196
16
20
53
6
18

10.4. ALTE MC CISC


10.4.1 MC compatibile x86
O categorie important de MC sunt cele compatibile soft cu microprocesoarele
8086, datorit faptului c programele pot fi preluate direct de pe PC. AMD a realizat
familia de MC AMD Comm86, o familie de MC dedicate comunicaiilor. Aceste MC cu
performane foarte bune de vitez (tact pn la 50MHz i magistrala de date de 16 bii) pot
echipa aplicaii de comunicaii care rezult astfel ieftine.
Firma AMD (al doilea productor de microprocesoare n lume) a dezvoltat
microprocesoarele, urmrind creterea vitezei prin mrirea frecvenei de lucru, dar a
dezvoltat n paralel i MC, urmrind integrarea ct mai multor interfee pe chip. O serie
ntreag de sisteme de dezvoltare susin aceste MC ( www.amd.com ). Linia acestor MC a
fost preluat i de ali fabricani care au format parteneriatul Fusion E86.

10.4.1.1. Familia AMD Comm86


Schema bloc a unui MC reprezentativ este dat n Fig. 10.43. Acest MC
(Am186CU) conine o interfa USB.
229

Unitatea
central
Am186

Generare
chip
select (14)

Timer (3)

Canale
DMA (4)

Port
paralel cu
48 linii
I/O

Timer
pentru
watch dog

Controller de
ntreruperi
(17)

Interfa
pentru
RAM/ROM

Interfa serial

UART

UART de
mare vitez

USB

Controller
pentru

DRAM

PCB

Interfa
serial
sincron
(SSI)

Canale
Smart
DMA (4)

Fig. 10.43. Schema bloc a unui MC AMD Comm86


Modul de organizare a unitii centrale i a memoriei este la fel cu al binecunoscutului
procesor 8086. Memoria este organizat n segmente, fiecare segment are dimensiunea de
64K. Memoria este adresat cu un registru segment de 16 bii i un offset de 16 bii.
Registrele segment sunt CS, DS, SS i ES. Adresa fizic se obine prin deplasarea la stnga
cu 4 poziii a valorii segmentului i adunarea la offset. Se obine astfel un spaiu adresabil
pe 20 de bii (1M adresabil). Spaiul I/O const n 64K porturi de 8 bii sau 32K porturi de
16 bii cu care se pot executa operaii I/O prin intermediul instruciunilor IN i OUT.
Controllerul USB poate lucra la viteza de 12Mbps. Transceiverul USB este inclus n MC
pentru a minimiza numrul de componente externe care trebuie folosite. Controllerul USB
suport un numr nelimitat de descriptori, un total de 6 puncte de sfrit (endpoints) dar nu
suport funcii de gazd sau hub.
Interfaa serial poate lucra n mod DMA cu ajutorul a 4 canale DMA numite SmartDMA.
Se pot transfera date direct ntre memorie i periferic prin buffere de seializare/
deserializare. La o transmisie i recepie se folosesc canale DMA diferite; pentru un
transfer bidirecional se folosesc dou canale DMA.
Familia AMD Comm86 este echipat cu dou porturi seriale asincrone, unul de mare
vitez care poate funciona full duplex, la viteze de pn la 460Kbauds, iar cellalt
standard (full duplex, 115,2Kbauds). Portul de mare vitez conine buffere de 16 octei la
transmisie i 32 de octei la recepie. Portul serial de mare vitez poate detecta n mod
automat rata de transfer, fiind potrivit pentru cuplarea unui modem Hayes. Fiecare UART
are rata de transfer stabilit de la ceasul sistemului sau de la un ceas extern. Sunt suportate
cuvinte de 7,8 sau 9 bii, lucru cu paritate sau fr, detectare i generare de BREAK,
generare de adres la emisie i recunoatere de adres la recepie, control hard al fluxului
230

de date. Se pot folosi canalele DMA standard. Portul mai lent poate fi utilizat pentru
configurare, programare etc.
Portul serial sincron SSI poate transfera date bidirecional, half duplex. Acest port este
folosit pentru interfaarea n sistem, ntre MC i alte circuite, pentru a le programa sau
pentru a le citi starea. Viteza de transfer ajunge pn la 25Mbps. Portul SSI lucreaz ca
dispozitiv MASTER, celelalte circuite fiind SLAVE. Se trimite la nceput un octet de
comand dup care urmeaz un octet care se scrie sau se citete. Portul SSI are 3 pini:
SDEN pin de validare folosit pentru validarea SLAVE-ului. Dac sunt cuplate mai
multe dispozitive SSI este nevoie de folosirea cte unei linii din porturile I/O pentru
validarea fiecrui SLAVE;
SCLK pin de ceas;
SDATA pin bidirecional de date.
Polaritatea semnalelor SCLK i SDEN este programabil, la fel i ordinea biilor n
cuvntul de date (dac primul bit transmis este cel mai semnificativ sau cel mai puin
semnificativ). Ceasul de transmisie poate fi divizat intern cu un factor ntre 2 i 256.
Controlerul de ntreruperi poate accepta 36 de cereri de ntrerupere mascabile (19 surse
interne i 17 surse externe) i 8 ntreruperi nemascabile (externe sau interne). Prioritatea
ntreruperilor nemascabile este programabil.
Controllerul DMA standard are 4 canale care pot fi folosite pentru transferuri de date ntre
memorie i dispozitive I/O dar i ntre memorie i memorie sau dispozitivr I/O i
dispozitive I/O. Interfeele interne care pot lucra prin DMA sunt controllerul USB,
porturile seriale UART i timerul.
Am186CU are 48 de linii I/O, dintre care 34 au semnificaii alternative. Aceste linii pot fi
programate s lucreze ca intrri sau ieiri. Unii pini sunt prevzui intern cu rezistene de
pull-up sau pull-down sau sunt cu drena n gol. 8 din aceste linii I/O pot fi utilizate ca
cereri de ntrerupere extern.
Am186CU are 3 timere de 16 bii, dintre care timerul 0 i 1 sunt conectai n exterior la 2
pini, unul de intrare i unul de ieire. Aceste timere pot contoriza evenimente externe sau
pot genera forme de und complexe, nerepetitive. Timerul 2 nu este conectat n exterior, el
poate fi folosit pentru generarea de ntrzieri soft, pentru prescalarea la timerul 0 i 1, sau
ca surs de cerere DMA. Ceasul pentru timerele 0 i 1 poate fi la fel sau poate proveni de
la o surs extern.
Ceasul de gard poate genera intreruperi nemascabile (NMI) sau RESET dac nu este
redeclanat ntr-un interval programabil ntre 210 i 226 tacte de procesor. Uneori se poate
recpta controlul asupra execuiei programului printr-o ntrerupere nemascabil, dar
uneori este nevoie de un RESET al MC sau chiar al ntregului sistem (care poate cuprinde
i alte circuite n afara MC).
Interfaa cu magistrala este controlat de PCB (Peripheral Control Block). PCB controleaz
perifericele externe conectate n spaiul de memorie sau n spaiul I/O, memoria extern i
interfeele interne. Se genereaz semnle de selecie (chip select) separat pentru zona de
memorie sub 64K (LCS) sau peste (UCS) sau pentru spaiul I/O. Se genereaz semnale
231

care definesc dac transferul se face pe 8 sau pe 16 bii. Fiecare interfa integrat este
controlat cu ajutorul unui registru de 16 bii, localizat n interfaa respectiv. Fiecare
registru are ataat o zon de memorie de 1K octet.
Aceast familie de MC dispune de o magistral de date i adrese multiplexat. Adresele
sunt prezente pe magistral pe primul tact. Am186CU are n plus i o magistral de adrese
nemultiplexat, pe care adresa este prezent tot timpul instruciunii (t1-t4). Aceast
magistral nemultiplexat uureaz interfaarea cu memoria extern (SRAM, DRAM sau
EPROM). Pentru sistemele la care consumul de energie este important, se poate dezactiva
magistrala multiplexat.
n Fig.10.44. se arat diagramele de semnal pentru adrese i date n ambele situaii.
Magistrala multiplexat
CLKOUT
A19-A0 (linii de adrese)
AD15-AD0 (linii multiplexate)
(citire)
AD15-AD0 (linii multiplexate)
(scriere)
adrese

date

Magistrala nemultiplexat
CLKOUT
A19-A0 (linii de adrese)
AD15-AD0 (linii de date) (citire)
AD15-AD0 (linii de date) (scriere)

adrese

date

Fig. 10.44. Diagrame de semnal pentru magistrala multiplexat, respectiv


nemultiplexat
n exterior circuitul are o magistral nemultiplexat, pentru c o magistral multiplexat ar
mri costurile prin faptul c ar fi necesare circuite n plus pentru demultiplexare. Ca
semnale de comand a sensului de transfer pe magistral se folosesc semnalele /WHB
(Write High Byte) i /WLB (Write Low Byte) i semnalul /RD cu care se poate valida
ieirea circuitelor care se leag pe magistrala extern a MC.
Interfaa cu memoria RAM dinamic permite cuplarea memoriei DRAM EDO, cu timpi de
acces ntre 25-70ns, n mod 0WS (Zero Wait State) cu memoria cu timp de acces <40ns.
232

Pot fi cuplatemaximum dou bancuri de 256Kbit x 16bit. MC genereaz semnalele RAS i


CAS i de refreshul memoriei.
MC poate selecta circuite externe cu 6 semnale de CS n zona de memorie i 8 semnale de
CS n zona de memorie sau I/O. MC poate fi programat s simt semnalul READY de la
circuitul extern selectat, care se manifest n schimbarea unui bit n registrul de stare al CS.
n registrul de control al CS se poate programa numrul de stri de WAIT cu care lucreaz
respectivul circuit extern, pentru a ncetini magistrala. Semnalele CS sunt activate de
unitatea central la cicluri de memorie sau I/O, dar i de controlerul DMA.

10.4.1.2. Microcontrollere PC-AT AMD


Prin familia Elan SC a fost creat de firma AMD o combinaie ntre
microprocesoare i MC. Aceste MC conin o unitate central care este de fapt un
microprocesor pe 32 de bii i interfeele cele mai utilizate. Schema bloc a MC PC/AT Elan
SC310 este dat n Fig. 10.45.

Unitatea
central
Am386SX

Ceas de timp real


(146818A)

Timer
8254

Controller
de
memorie

Controller de
ntreruperi
(2x8259)

UART
(16450)

Port paralel
(EPP)

Controller de
magistral
ISA

Unitate pentru
Power
Management

Controller
DMA
(2x8237)

Interfa pentru
tastatur
(8042)

Fig. 10.45. Schema blos a MC PC-AT Elan SC310


Structura din Fig. 10.45. este foarte asemntoare cu structura unei uniti centrale PC AT.
Realizarea unui sistem cu Elan 310 este uurat de existena unor periferice standard pentru
magistrala ISA i a softului care funcioneaz pe PC AT. MC este perfect compatibil cu
DOS i WINDOWS.
Controllerul de memorie poate gestiona pn la 16M octei de RAM dinamic, ROM sau
Flash.
Cele mai performante MC dezvoltate de AMD sunt MC din familia ELAN. Acestea pot fi
echipate cu interfa LCD i pot lucra n mod cu consum redus, de aceea sunt gsite n
multe aplicaii ca sisteme GPS portabile, sau scannere portabile. Familia MC Elan SC400
conin porturi IrDA, porturi seriale i paralele, interfa pentru magistrala ISA etc. Cele
mai noi MC din aceast familie sunt echipate cu magistral PCI, deci se pot conecta cu
multe din echipamentele periferice dotate cu interfa PCI. MC din familia ELAN SC520
233

cu magistrala de date de 32 de bii sunt dotate cu interfa pentru SDRAM i un soft n


circuit numit AMDebug pentru uurarea lucrului.

10.4.1.3. Date comparative pentru MC compatibile x86


Tabel 10.19. Caracteristici prezentate comparative pentru MC compatibile x86
MC
Magistrala de Frecvena Linii I/O Interfee
Pre (USD)
date
(MHz)
speciale
Am186CU 16
50
48
5
20
Elan SC310 16 (32 UC)
33
8
5
35

10.4.2. MC low cost


10.4.2.1. MC cu magistrala de date pe 4 bii (Hitachi HD404374)
Cu toate c tendina general este s se resping ideea folosirii unui MC pe 4 bii,
un astfel de MC poate s controleze cu succes un sistem simplu, la un pre de cost mult sub
acela atins de un MC mai complex. Din pcate tendina productorilor este ca produsele la
care preul este n continu scdere s fie scoase din fabricaie. O prezentare a acestui MC
Hitachi va demonstra c are suficiente resurse pentru a comanda o aplicaie simpl, cum ar
fi de exemplu un ncrctor inteligent de acumulatori.
Schema bloc a MC este dat n Fig. 10.46.
Nr.de ev.

Controller de
ntreruperi

PWM

Unitatea central
HMCS400

Timer
A-8 bii
B-8 bii
C-8 bii

Memorie RAM i
ROM

Magistral de date de
4 bii

Port R

10 linii I/O

Port D
(de putere)

10 linii I/O

Interfa serial sicron

SCK

SI/SO

Fig. 10.46. Schema bloc a MC Hitachi HD404374


234

Convertor A/D,
6x 10 bii

Tensiunea de alimentare a acestui MC poate fi ntre 1,8-5,5V. El conine, n funcie de


varianta constructiv 20 de pini I/O de uz general, dintre care 4 admit un curent de 10mA,
iar 4 un curent de 15mA. Circuitul de timp este format din 3 timere de 8 bii. Dou timere
se pot grupa i se obine un timer de 16 bii. Circuitul de timp are 2 ieiri, din care una
PWM. Timerul poate lucra i ca numrtor al unor evenimente externe. Convertorul A/D
are 4 sau 6 canale sau poate lipsi la unele variante.
Generatorul de tact necesit n exterior un cristal, frecvena maxim fiind de 8,5MHz.
Exist un generator de tact separat pentru ceasul de timp real la care trebuie cuplat un
cristal de 32,768kHz.
Circuitul admite 2 ntreruperi externe i 5 interne i admite moduri de lucru cu economie
de energie. Timerele, interfaa serial i convertorul A/D pot intra n stare inactiv.
Memoria ROM, PROM sau EPROM este ntre 2K octei i 16K octei, iar cea RAM de 512
cuvinte de 4 bii.
Circuitul are un set de instruciuni bogat i moduri avansate de adresare. Faptul c setul de
instruciuni este propriu este unul dintre dezavantajele principale ale acestui MC.

10.4.2.2. MC din familia Z8 (Zilog)


Z8 a fost unul dintre primele MC pe 8 bii aprute pe pia. Faptul c i acum apare
n cataloage este o confirmare a faptului c a fost un MC reuit.
Schema bloc a acestui MC este dat n Fig. 10.47.
Ceas de
gard
Controller de
ntreruperi

Port 2

Unitatea central

Memorie OTP

2x Timer

Port 0

Port 1

2x comparatoare
analogice
Port 3

8 linii I/O
programabile
pe bit

8 linii de adres
sau 8 linii I/O
programabile pe
bit

8 linii de adrese/date
sau 8 linii I/O
programabile pe octet
4 linii I
4 linii O

Fig. 10.47. Schema bloc a MC din familia Z8


235

Porturile I/O pot lucra n moduri de transfer automat, transferul fiind coordonat de semnale
de protocol handshake. Astfel, portul 0 poate fi controlat de liniile portului 3 (P32 i P35),
portul 1 de liniile portului 3 (P33 i P34), portul 2 de liniile portului 3 (P31 i P36).
Porturile 0 i 1 pot fi comandate n nalt impedan. Liniile portului 3 sunt mprite i de
intrrile analogice ale comparatoarelor, tensiunea de referin pentru comparaie i ieirile
comparatoarelor. Rezultatul comparaiei poziioneaz un bit ntr-un registru de stare.
Acest MC nu are integrat memorie RAM; aceasta trebuie conectat n exterior, ceea ce
este un dezavantaj. Se poate conecta RAM astfel nct RAM+OTP s fie maximum 64K.
Controlerul de ntreruperi admite 3 surse externe i 6 surse de ntrerupere interne,
mascabile, cu prioritate programabil. 4 linii de cerere de ntrerupere sunt alocate portului
3 pentru protocoalele hanshake i 2 linii sunt alocate timerelor. Circuitul admite o
frecven de lucru de maximum 16MHz.
Sunt posibile 2 moduri de lucru cu economie de energie:
modul HALT, n care intr cu instruciunea HALT, care oprete tactul UC, dar nu
i tactul extern. Timerele i controlerul de ntreruperi rmn active. Circuitul poate
fi scos din starea de HALT cu o cerere de ntrerupere.
modul STOP, n care este oprit i tactul extern, asigur un consum mai mic de
10A. Ieirea din starea STOP se poate face doar prin RESET.
Cu acest nucleu firma Zilog a construit MC pentru diferite aplicaii. MC Z86L82 a fost
proiectat pentru a realiza funcii specifice telecomenzilor n infrarou. Circuitul este
echipat n plus cu RAM (256 octei) i un modul de generare i recepie automat a
irurilor complexe de semnale. Acest modul este format dintr-un registru
temporizator/numrtor de 8 bii i unul de 16 bii, Fig. 10.48.
Registru de ncrcare
T16

Timer 16 bii

Registru de captur
Filtru pt.
Glitch-uri i
detecie de
front

I/SAU logic

T8/T16

Registru de ncrcare
T8
Timer 8 bii

Registru de captur

Fig. 10.48. Modul de generare i recepie automat a irurilor de caractere


236

Modulul de generare i recepie se ocup cu modularea i demodularea semnalelor pentru


transfer n infrarou. Modularea se face dup un anumit algoritm i elibereaz unitatea
central de aceast sarcin.
Timerele au mai multe moduri de lucru:
mod numrare - numr pn la valoarea programat apoi se opresc sau pot
relua numrarea;
mod demodulare - ncarc serial irul de date ncepnd cu primul front.
n orice moment coninutul timerelor poate fi ncrcat n registrele de ncrcare i citit de
UC. Ieirea se poate face cu un I/SAU logic ntre timere, ceea ce creeaz posibilitatea
inserrii unor semnale de tact n semnalul emis.
Un alt MC a fost conceput pentru aplicaii de televiziune digital (DTC) pentru a echipa i
controla receptoare TV de televiziune digital sau receptoare de satelit. n jurul nucleului
Z8 au fost integrate un generator de caractere, o memorie video RAM i canale PWM.
Memoria ROM pentru generatorul de caractere i RAM sunt utilizate la suprapunerea pe
ecran a unor informaii (OSD On Screen Display) iar canalele PWM pentru obinerea
tensiunii de acord i nivelul semnalului audio.
Schema bloc a circuitului este dat n Fig. 10.49.
HSYNC VSYNC RED GREEN BLUE BLANK OSCIN

Nucleu Z8
8K octei ROM
Timer
Ceas de gard

Porturi I/O
P3(5 b)
P6(8b)

On Screen Display OSD


RAM 128 octei
ROM 3K octei

3x6 bit PWM

1x14 bit
PWM

3x8 bit
PWM

Fig. 10.49. Schema bloc a MC Z90102 folosit n aplcaii de televiziune digital

10.4.3. Familia COP8 (National Semiconductor)


MC COP8 sunt circuite avansate care pot include un numr nsemnat de interfee
speciale, ca SPI, convertoare A/D, CAN, MICROWIRE, i sunt proiectate n vederea
EMC, cu o radiaie emis mic (Quiet Design) ( www.national.com/cop8 ).
Schema bloc a acestui MC (COP888) este dat n Fig. 10.50.
237

Unitatea central COP888


-Timer T0 (16bii)
-Controller de ntreruperi
-Regitrii interni
-Unitate aritmetic i logic
-Interfa MICROWIRE PLUS

Interfa
serial SPI

USART

Memorie
-8Koctei ROM
-192octei RAM

CAN
Bus

Modul I/O (8x8bii)


L
M
N

CA/D

Timer T1,T2
(16 bii)

MIWU

Fig. 10.50. Schema bloc a MC din familia COP8


Circuitul are o arhitectur Harvard modificat. Ca i n arhitectura Harvard, memoria RAM
pentru date i memoria ROM pentru program au propriile spaii de adrese i magistrale
proprii de adresare. Frecvena maxim la care poate lucra circuitul este 10MHz, stabilit
din exterior cu un cristal de cuar.
Unitatea central poate executa anumite instruciuni (adunare, scdere, operaiile logice i
deplasarea) ntr-un singur tact (1s). UC are 5 registre: un acumulator A de 8 bii, PC de 15
bii (separat in dou registre PU i PL), un registru index pentru adresare B care poate fi
incrementat/decrementat automat, un registru pentru adresare alternativ X, indicatorul de
stiv SP. Registrele sunt mapate n zona de memorie, mai puin A i PC. UC permite 10
modurile de adresare, dintre care modurile indirecte pot fi cu autoincrementare sau
autodecrementare. Modurile de adresare sunt:

indirect prin registru - operandul din RAM este adresat cu coninutul


registrului B sau X
indirect prin registru cu autoincrementare sau autodecrementare
direct
imediat
imediat scurt - conine un cmp de 4 bii pentru operand (are 1 ciclu)
238

indirect - folosind ca adres registrul acumulator ca 8 bii mai puin


semnificativi
relativ (pentru salturi)
absolut pentru salturi (se poate introduce o adres de 12 bii pentru salt)
absolut lung (se poate introduce o adres de 15 bii de salt)
indirect - adresa de salt este indicat de acumulator (cei mai puini
semnificativi bii).

MC are 55 de instruciuni:
ADD- i ADC adunare
SUBC- scdere cu Carry
AND, OR, XOR- I, SAU, SAU EXCLUSIV logic
IFEQ, IFNE, IFBNE - instruciuni de verificare pentru salt, dac este egal, dac nu,
dac B nu este egal
SBIT, RBIT, IFBIT- poziionare bit, Reset bit, dac bit
RPND- Reset intern
LD- ncrcare
X- schimbare coninut cu memoria
CLR- tergere A
INC, DEC- incrementare, decrementare
LAID- ncrcare direct din ROM
RRC, RLC- rotaie
SWAP- interschimbarea niblurilor n A
SC, RC, IFC, IFNC- poziionare Carry, Reset, dac, dac nu
POP, PUSH- operaii cu stiva
JMPL, JMP, JP, JID- salt absolut lung, salt absolut, salt relativ, salt indirect
JSRL, JSR- salt la subrutin lung, scurt
RET- ntoarcere din subrutin
RETI- ntoarcere din ntrerupere
NOP- nici o operaie
Porturile I/O sunt portul C de 8 bii bidirecional, portul D de 8 bii de ieire cu
posibilitatea unui curent mare de ieire (10mA), port F de 8 bii bidirecional, port G de 8
bii bidirecional (cu semnificaii duble pentru MICROWIRE, timer i ceas de gard),
portul I de 8 bii folosit i pentru intrrile convertorului A/D, port L de 8 bii folosit i
pentru USART i sistemul MIWU (Multi-input Wake up ), portul M de 8 bii bidirecional
folosit i pentru SPI, MIWU, CAN i timer i portul N de 8 bii bidirecional folosit i ca
expander pentru comanda mai multor dispozitive SPI slave.
MC COP8 dispune de 3 timere (T0, T1, T2) asociate cu registre de ncrcare i captur.
Timerul T0 este un timer de 16 bii care numr tactul sistemului, folosit pentru strile cu
economie de energie (starea inactiv). Utilizatorul nu poate scrie sau citi acest timer.
Timerele 1 i 2 sunt identice, de 16 bii, asociate fiecare cu 2 registre R1A i R1B (R2A i
R2B). Fiecare timer are asociai 2 pini T1A i T1B (T2A i T2B). Timerele au 3 moduri de
lucru:
generare PWM independent de procesor. UC trebuie s ncarce parametrii
semnalului PWM, i apoi generarea este continu. La fiecare depire timerul
este ncrcat alternativ din registrele RA sau RB n care sunt stocate datele
pentru factorul de umplere;
239

numrare a evenimentelor externe, n care timerul numr avnd ca tact de


intrare pinul extern TA (pe frontul pozitiv sau negativ, programabil). Cnd
timerul s-a umplut este posibil generarea unei cereri de ntrerupere;
mod de captur, n care circuitul poate msura perioade de timp sau frecvene
din exterior. Timerul numr cu tact intern. Registrele RA i RB pot fi ncrcate
cu coninutul timerului, ncrcarea fiind comandat de cei doi pini externi.

Circuitul admite moduri de lucru cu economie de energie, modul inactiv (Idle) n care
oscilatorul i timerul 0 funcioneaz i modul HALT n care toate activitile MC sunt
oprite. Ieirea din modul HALT se poate face prin RESET, prin modalitatea Multi Wakeup
sau de la CAN. n modul inactiv consumul de energie scade la o treime din consumul
normal. Revenirea din starea inactiv se poate face la fel, prin RESET, prin sistemul Multi
Wakeup sau de la interfaa CAN. Intrarea n mod inactiv poate fi ntrziat cu o perioad
de timp programat cu timerul T0. Sistemul Multi Wakeup permite ca ieirea din strile cu
economie de energie s fie comandate de la pini exteriori, acetia fiind pinii portului L i
M. Biii care pot solicita trezirea pot fi validai individual printr-un registru de validare. De
asemenea se poate programa i frontul care poate solicita trezirea MC. Trezirea MC nu este
brusc, nti este pornit timerul 0 care numr 256 tacte, permind astfel tactului s treac
de unele variaii de form tranzitorii. Circuitul poate fi trezit i de o activitate pe magistrala
CAN, dar cadrul de date care produce trezirea circuitului se pierde.
MC COP8 sunt prevzute cu monitor de tact, care este un circuit de protecie cu rolul de a
rejecta un tact cu frecvena foarte mic. Astfel se garanteaz rejecia unui tact de 10Hz i se
garanteaz c un tact de min. 10kHz nu este rejectat. n modurile de economie de energie
unde se oprete tactul se semnalizeaz o eroare de ctre monitorul de tact. Semnalizarea
erorii se realizeaz prin pinul exterior G1 al portului G.

10.4.3.1. Interfaa serial USART


Spre deosebire de majoritatea MC care au interfaa serial sincron diferit de cea
asincron, COP8 are un modul USART. Transmisia poate avea loc cu tact intern (asincron)
sau cu tact extern (sincron). La transmisia sincron sunt posibile mai multe tipuri de cadre,
formate dintr-un bit de START, 7, 8 sau 9 bii de date, cu paritate sau fr i bii de STOP.
Schema bloc a blocului USART este dat n Fig. 10.51.
Caracterele seriale sunt transmise sau recepionate serial n registrele de transmisie sau
recepie. La recepia unui caracter, acesta se ncarc n bufferul de recepie i se cere o
ntrerupere i eventual se comand intrarea MC n stare activ dac era n stare inactiv,
prin MIWU. La emisie, un caracter se introduce n bufferul de transmisie de unde este
trecut n registrul de deplasare i se transmite serial, cerndu-se i o ntrerupere.
Ceasul se poate selecta intern sau extern. Dac este selectat ceasul intern, el se formeaz
din tactul sistemului cu o divizare printr-un numrtor de 16 bii (prescalare) i apoi un
numrtor de 11 bii.
Comanda USART se realizeaz cu un registru de stare i control.

240

Logica
WAKE UP

Cerere de
ntrerupere
ctre UC

Magistrala intern

Registru de
prescalare

Buffer
transmisie

Buffer
recepie

Rata Baud

Registru de
deplasare la
transmisie

Registru de
deplasare la
recepie

TxD

RxD

Selecie ceas

CLK

Fig. 10.51. Schema bloc a USART

10.4.3.2. Convertorul A/D


Circuitul COP888 conine un convertor A/D cu aproximaii succesive, cu 8 canale
i intrri multiplexate. Convertorul admite att intrri ct i unipolare. Convertorul poate
face o singur achiziie i se oprete sau poate fi comandat s fac achiziii continui (n
acest mod rezultatul ultimei achiziii este ntotdeauna n registrul cu rezultatul achiziiei).
Convertorul este comandat de un registru de comand ENAD care conine selecia
canalului, selecia modului de lucru, tactul pentru convertor (tactul sistemului divizat cu 2,
4, 6, 12) i startul conversiei. Cnd se termin o conversie, convertorul poziioneaz un bit
n registrul de comand ENAD i pune rezultatul n registrul rezultat ADRSLT. Achiziia
se face pe 8 bii, iar timpul minim pentru o conversie este de 600ns.
Unul din membrii familiei (COP888EK) este echipat cu un bloc analogic care permite
implementarea funciei de convertor cu integrare cu o singur pant, Fig. 10.52. Modulul
analogic permite comutarea la intrarea unui comparator a unuia dintre cele 6 canale
analogice sau a unei tensiuni de referin. La cealalt intrare a comparatorului se
conecteaz un condensator n exterior. Condensatorul este ncrcat de un generator de
curent. Perioadele de timp n care comparatorul este n una sau alta dintre stri se pot
determina cu modulul timer.

241

+Vcc
Surs de
curent

Timer
6 canale
analogice

Referin de
tensiune (Vcc/2)

Fig. 10.52. Schema bloc a modulului analogic

10.4.3.3. Interfaa CAN (Controller Area Network)


n acest MC este implementat o interfa CAN de joas vitez (1Mbps cu un
oscilator de 10MHz - specificaiile CAN 2.0 B) pentru cuplarea la magistrala CAN.
Circuitul este echipat cu cte 2 registre pentru emisie i 2 pentru recepie, ceea ce nseamn
c pot fi recepionate automat doar cadrele de 16 bii. Pentru recepionarea sau emisia
cadrelor mai lungi trebuie testat bitul de buffer de recepie plin (RBF) sau buffer de
transmisie gol (TBE). La recepia sau emisia unui caracter se poate genera o ntrerupere.
La transmisia CAN datele sunt codificate pentru a fi trimise pe linie n cod NRZ, iar la
fiecare grup consecutiv de 5 bii cu aceeai valoare logic se introduce un bit (deci o
tranziie) care se extrage la decodificare. Nivelele pe linie sunt numite dominant (0) i
recesiv (1).
Transferul de date prin CAN se face cu cadre (blocuri de date) care sunt citite de toate
dispozitivele cuplate la CAN dar sunt reinute de acestea doar daca le sunt adresate.
Structura unui cadru CAN este:

un bit de START OF FRAME (un bit dominant) - care se poate emite doar dac
magistrala este n stare inactiv;
cmpul de arbitrare - conine cmpul de identificare i bitul RTR (Remote
Transmission Request);
cmpul de control - conine lungimea cmpului de date i mrimea cadrului;
cmpul de date - poate conine 1-8 octei de date;
cmpul CRC - se termin cu un bit recesiv.

242

Cadrele pot fi:

de date - transmise de orice dispozitiv CAN;


cadre de comand (Remote) - dac un master poziioneaz bitul RTR,
dispozitivul CAN adresat poate trimite date dup transmisia cadrului curent. Un
cadru de comand nu conine date.
cadre de control - pot indica o eroare sau o suprascriere. Un cadru de
suprascriere poate fi emis de orice dispozitiv care nu a putut prelua mesajul i
urmtorii octei s-au nscris peste primii.

Fiecare dispozitiv CAN recepioneaz toate cadrele i dispune de un filtru de acceptare


care selecteaz cadrul cu adresa proprie a dispozitivului. n configuraie se pot aduga noi
dispozitive, cu adres proprie, fr nici un efort. Dac se recepioneaz un cadru eronat,
toate dispozitivele CAN trimit un cadru de control care indic o eroare. Fiecare cadru
eronat incrementeaz n dispozitiv un numrtor de erori (care este decrementat de cadrele
valide). Un numr de erori mai mare de o anumit limit produce decuplarea dispozitivului
de la magistrala CAN.
Schema bloc a modulului de interfa CAN este dat n Fig. 10.53.

Magistrala
intern
Registre de
comand,
stare i date

Circuit pt. comanda interfeei

Serializare/ deserializare

Gestionarea erorilor

Magistrala CAN
Transceiver

Tx

Generare CRC

TxEN

Registre de deplasare
MUX

Inserare (recunoatere adres)

Rx
VREF (Vcc/2)

Introducerea bilor de sincronizare


Wakeup

VREF

Fig. 10.53. Schema bloc a modulului de interfa CAN

243

Datele de emis sunt serializate, se calculeaz CRC, se insereaz biii de sincronizare i


adresa dispozitivului de destinaie, apoi datele sunt validate de TxEN ntr-o poart care
admite trecerea n nalt impedan. La recepie se poate face compararea cu un nivel de
tensiune de referin, apoi irul de date este trecut prin filtrul de acceptare, se extrag biii
de sincronizare i se verific CRC. Dac se recepioneaz un cadrul cu erori este
incrementat numrtorul de erori, iar dac nu, informaia este deserializat i este informat
unitatea central c un cadru (2 ocei) poate fi citit.
Funcionarea interfeei poate fi programat cu 15 registre de comand/ stare/ date.

10.4.3.4. Interfaa MICROWIRE


MICROWIRE PLUS este o magistral serial sincron introdus de National
Semiconductor pentru a conecta dispozitivele din familie: MC, convertoare, interfee,
memorii. Aceast magistral a fost introdus odat cu familia COP4. Structura este foarte
asemntoare cu cea a interfeei SPI, deci conectarea ntre elemente este foarte simpl. Ca
i la SPI, dispozitivul Slave cu care se face transferul trebuie selectat cu o linie special de
selecie. Transmisia fiecrui bit este sincron cu un impuls de tact.
Magistrala const n 3 linii, una de intrare de date, una de ieire de date i o linie de tact.
Tactul poate fi intern sau extern. Operarea cu tact intern se numete operare n mod Master,
iar cea cu tact extern Slave. Schema bloc a interfeei MICROWIRE este dat n Fig. 10.54.

Magistrala intern

Cerere de
ntrerupere
cre UC

Registru de
deplasare
MSB
LSB

SO

Selecie tact

SI

Registru de
control

SK

Fig. 10.54. Schema bloc a interfeei MICROWIRE


n modul Master i Slave trebuie definite liniile de intrare ieire corespunztor (n mod
Master tactul este de ieire) ca linii speciale ale portului G. Poziionarea bitului MSEL n
registrul de control valideaz funcionarea interfeei. Selecia tactului cu care se face
emisia/recepia se poate face prin selecia unui ceas extern sau ceas intern (tactul sistemului
divizat cu 2,4,8) tot n registrul de control.
Umplerea registrului de deserializare este indicat automat prin poziionarea bitului BUSY
din registrul PSW (Processor Status Word), pentru ca datele s poat fi preluate.
n Fig. 10.55. se arat conectarea mai multor dispozitive MICROWIRE pe magistral.
244

COP
Master
Driver LCD
CS1
EEPROM

CS2
CS3

Convertor
A/D
DO

DO DI SK

DO DI SK

DI

SK

SI
SO
SK

Fig. 10.55. Conecatrea dispozitivelor la magistrala MICROWIRE


Interfaa MICROWIRE este important i pentru c permite ncrcarea unui program la
pornirea MC dintr-un EEPROM cu interfa MICROWIRE, de exemplu NMC9306 (256
bii) printr-o conexiune simpl, Fig. 10.56.
COP8

NMC9306
SO

DI
DO

SI
SK

SK

CS

G0

Fig. 10.56. Schem de conectare a unui EPROM prin magistrala MICROWIRE

10.4.4. Familia TMS370 (Texas Instruments)


Familia TMS 370 const n 130 de MC standard i 27 de module funcionale
diferite, cu care se pot realiza la cerere noi MC, bazate pe o arhitectur von Neumann.
Memoria i dispozitivele I/O mpart aceeai zon de adresare. Frecvena maxim de lucru
este de 5MHz. Schema bloc a MC din familia TMS 370 este dat n Fig. 10.57.
Unitatea central este pe 8 bii de date, are un numrtor de program (PC), indicator de
stiv (SP), un registru de stare i registre de lucru. Registrele de lucru (256 situate n RAM)
pot fi accesate ntr-un singur ciclu i sunt mapate la nceputul memoriei. Arhitectura
unitii centrale, numit registru la registru, permite executarea de instruciuni aritmetice i
logice direct ntre 2 registre, fr intermediul acumulatorului, de exemplu instruciunea:
ADD R24, R47

adun coninutul registrului 24 cu coninutul registrului 47,


cu rezultatul n 47.
245

Memorie de date
256-512B EEPROM
Controller de
ntreruperi
Unitatea
central
TMS370

PACT
Ceas de
gard

Memorie de date
128B-3,5KB RAM

Mini SCI
Timer
1-16 bii
2A-16 bii
2B-16 bii

Memorie program
2-48KB ROM
sau 8-48KB EPROM

Modul I/O (5x8bii +1x1bit)


B
C
D
G
H

Magistrala
de adrese i
date n
exterior

3x
CA/D

Interfa
serial
SPI

Ceas de gard

2xSCI

Fig. 10.57. Schema bloc a MC din familia TMS 370


Magistralele de adrese i date sunt scoase n exterior prin porturile A, B, C i D.
Controlerul de ntreruperi poate gestiona 11 nivele de ntrerupere, din care 3 externe.
Memoria EEPROM este de 256 sau 512 octei i poate fi programat att cu inscriptoare
comerciale ct i de MC n circuit (MC are integrat sursa de tensiune pentru programare).
Memoria ROM/OTP/EPROM poate fi de 2-48K octei.
TMS370 are un numr maxim de 41 de pini I/O, funcie de tipul circuitului i funcie de
capsul, grupai n 6 porturi, A, B, C, D, G, H, programabili bit cu bit, ca intrare sau ca
ieire.
Timerul 1 este un timer pe 16 bii i poate fi configurat ca:

numrtor de prescalare pe 8 bii care reprezint tactul pentru celelalte timere i


pentru ceasul de gard;
numrtor de evenimente pe 16 bii, n care numr impulsurile de la un pin
exterior;
acumulator de impulsuri n care poate msura limea impulsurilor;
intrare de captur, n care poate stoca valoarea numrtorului la un impuls
exterior;
2 registre de comparare care semnalizeaz printr-o cerere de ntrerupere
egalitatea numrtorului cu a celuilalt registru de comparare;
generator independent PWM.

246

Timerul 2A i 2B sunt 2 timere de 16 bii care pot fi configurate ca:

tacte de uz general;
numrtor de evenimente pe 16 bii, n care numr impulsurile de la un pin
exterior;
acumulator de impulsuri n care poate msura limea impulsurilor;
intrare de captur, n care poate stoca valoarea numrtorului la un impuls
exterior;
2 registre de comparare care semnalizeaz printr-o cerere de ntrerupere
egalitatea numrtorului cu a celuilalt registru de comparare;
generator independent PWM.

Ceasul de gard este implementat separat de timer i dac nu este folosit ca ceas de gard
poate fi folosit ca timer.
Unele MC din familie au un modul timer programabil (PACT Programmable Acquisition
and Control Timer) care, odat programat nu mai necesit intervenia UC dect la servirea
ntreruperilor. PACT conine:

un pin de captur i un registru de 8 bii de captur pentru numrarea


evenimentelor externe;
timer de 20 de bii;
ceas de gard;
interfa serial SCI full duplex, cu implementare minim.

Interfaa serial SCI este compus din 2 interfee, SCI1 este pe 3 linii, iar SCI2 este pe 2
linii. Aceste interfee ofer posibilitatea transferurilor asincrone cu vitez de maxim
156kBauds, full duplex, cu buffere duble att la recepie ct i la transmisie. Modulul
serial controleaz formatul datelor, protocolul i detecia de erori. UC trebuie doar s scrie
octetul de transmis n registrul de transmisie sau s preia octetul recepionat din registrul de
recepie cnd a fost ntrerupt de canalul SCI.
Modulul serial SPI realizeaz transferul de date sincron.
Convertorul A/D este un convertor cu aproximaii succesive, pe 8 bii. Numrul de canale
de conversie difer n funcie de tipul circuitului i capsul, 4 canale la capsula cu 40 de
pini i 8 canale la capsula cu 44 de pini sau mai mare. Un MC poate avea maxim 3 module
de conversie (ADC1, ADC2, ADC3).
Circuitul admite 2 moduri de lucru cu economie de energie, modul inactiv, n care rmn
active tactul i timerul i modul HALT, n care este oprit i tactul i timerul. Coninutul
memoriei RAM se pstreaz n ambele moduri.

10.4.5. Familia ST Microelectronics


Firma ST provine din fuziunea firmelor franceze Thomson i SGS din Italia.
(www.st.com ).

247

10.4.5.1. MC cu logic dual (ST5xx)


MC cu logic dual (Dual Logic) realizeaz att operaii logice i aritmetice
booleene ct i operaii fuzzy. Datorit posibilitii de lucru cu algoritmi fuzzy, care
folosesc o descriere lingvistic a modelului i nu una matematic, aceste MC pot controla
sisteme complexe cu o mare acuratee. Schema bloc (ST52T301) este dat n Fig. 10.58.
Cerere de ntrerupere
extern
Unitatea central ST5 cu logic
dual
-ALU
-Nucleu Fuzzy

SCI

Port paralel
I/O

Memorie
2Koctei EPROM
(OTP)

Driver PWM
i pt. triac

CA/D

Unitate de control
-registre

Referin
de tensiune

Timer

Fig. 10.58. MC cu logic (ST52T301 )-Schema bloc


MC admit un tact de 5, 10 sau 20MHz, depinde de circuit. Exist variante cu EPROM
pentru prototip i cu OTP pentru serii mici, echivalente funcional. Conexiunea cu
exteriorul este realizat de un port paralel de 8 bii, un port serial asincron SCI i un
convertor analog digital cu 4 canale. Circuitul formeaz intern i referina de tensiune
pentru convertor. Driverul pentru triac i canalul PWM pot comanda direct dispozitive de
putere. Timerul poate lucra cu ceas intern sau extern i are un registru de prescalare.
Circuitul nu are magistralele accesibile la pini externi.
UC citete instruciunea din EPROM i dac este aritmetic sau logic o execut direct, iar
dac este instruciune fuzzy transfer controlul nucleului fuzzy, care citete n continuare
instruciunile din EPROM i le execut pn la prima instruciune STOP. Este posibil
amestecarea instruciunilor fuzzy cu cele aritmetice i logice. Este disponibil un set de 26
de instruciuni aritmatice i logice care pot fi executate n 4-7 tacte de ceas. Registrele
unitii centrale sunt PC (11 bii) i un registru de flag-uri.
Exist 4 spaii de adresare diferite:

16 registre de uz general de 8 bii, care pot fi referite printr-o adres zecimal,


Reg0-Reg15. Reg0-3 sunt conectate direct la intrarea fuzzy;
248

11 registre de intrare de 8 bii, IR0-IR10 conin date sau starea unor interfee.
De exemplu primele 4 sunt alocate convertorului A/D pentru valoarea
convertit, 2 pentru timer, unul pentru portul paralel, etc.;
16 registre de configurare de 8 bii care permit configurarea interfeelor;
3 registre pentru interfee de 8 bii care conin datele de iniializare pentru
interfee;
memoria program de 2K octei.

Nucleul Fuzzy are 4 intrri cu rezoluia de 8 bii, 2 ieiri cu aceeai rezoluie i posibilitatea
de a procesa reguli fuzzy cu numr maxim de 8 antecedente i 16 funcii pentru fiecare
intrare. Nucleul fuzzy este format dintr-o unitate de calcul ALPHA care realizeaz
intersecia dintre valoarea de intrare i funcia aferent (fuzzyficare), unitatea de calcul care
calculeaz valoarea de adevr pentru fiecare regul i defuzzyficator care stocheaz
rezultatul n 2 din registrele de intrare RI. Nucleul fuzzy are 11 instruciuni.
Memoria EPROM este mprit n 3zone:

locaii ntre 0 i 191 - conine funcii fuzzy;


locaii ntre 192-201 - conine vectori de ntrerupere;
locaii ntre 202-2048 - conine programul utilizator.

ST5 lucreaz n 2 moduri, mod Programare sau mod Lucru, funcie de 3 semnale de la pini
externi. n modul de Programare se poate realiza scrierea EPROM-ului, cu o surs extern
de +12V. Tot n modul de programare se poate verifica coninutul EPROM-ului.
Convertorul A/D este un convertor cu aproximaii succesive cu timp de conversie de 32s,
cu tact fix, provenind de la oscilator. n registrul de configurare se specific comenzi
pentru multiplexor, de exemplu ordinea de conversie a celor 4 canale analogice.
Rezultatele se depun n 4 registre de intrare RI. La sfritul unei conversii, convertorul
poziioneaz un bit care poate fi folosit ca i cerere de ntrerupere. Prin execuia
instruciunii:
LDRI Reg0 In0

intrarea analogic In0 este convertit i rezultatul trecut n registrul


Reg0.

Puterea consumat de circuit poate fi redus oprind convertorul A/D, ceea ce se poate
realiza cu un bit ntr-un registru de configurare. Tensiunea de alimentare a convertorului
este diferit de cea a restului circuitului, asigurnd precizia conversiei.
Timerul este un numrtor de 8 bii asociat cu un registru de prescalare de 16 bii.
Coninutul registrului de 8 bii poate fi citit sau scris. Timerul are nevoie de 3 semnale,
CLK, Reset Timer i START care pot fi generate intern sau extern. Timerul poate genera o
ntrerupere la sfritul numrrii sau la apariia unui semnal de START. Se pot astfel
realiza mai multe moduri de lucru ale timerului.
Portul paralel este un port de 8 bii, bidirecional, la care sensul transferului se poate
programa ntr-un registru de configurare. Portul paralel este asociat cu o linie (READY) cu
ajutorul careia se poate face un transfer cu protocol handshake.
249

Blocul SCI este un bloc standard UART, cu viteza de maximum 38400 Bauds. Formatul
datelor este: 1 bit de START, 8/9 bii de date, 1 bit de STOP. Blocul SCI este format din 3
pri: receptor, transmitor i generator de rat de transfer. Blocul de recepie este cu
buffer dublu, i testeaz bitul de START cu frecvena de 16x frecvena de transfer,
eliminnd astfel recepiile false. Mai mult, exist posibilitatea de a testa fiecare bit
recepionat de 3 ori. Eantioanele obinute se compar i dac nu sunt egale se atribuie
bitului valoarea logic obinut din majoritatea eantioanelor (votare majoritar) i se
poziioneaz un bit numit bit de recepie cu zgomot (NSERR). Cnd s-a recepionat un
cuvnt se poziioneaz un bit care poate cere o ntrerupere.
Modulul triac/PWM permite comanda direct a unor dispozitive de putere cum ar fi triacul,
IGBT, tranzistoare MOS de putere. Acest modul admite 3 moduri de funcionare:

mod PWM, se genereaz un semnal PWM cu frecvena fix i factor de umplere


variabil. Factorul de umplere poate rezulta din calcule sau fuzzy;
mod salv pentru comanda dispozitivelor de putere, n care se genereaz un
semnal de perioada reelei, cu lime care poate rezulta din calcule. Pentru acest
mod de lucru trebuie s existe un circuit exterior pentru detectarea trecerilor
prin 0 ale tensiunii reelei;
mod de reglare a fazei pentru comanda dispozitivelor de putere, n care se
genereaz un semnal de perioada reelei, cu defazaj variabil, care poate rezulta
din calcule. Pentru acest mod de lucru trebuie s existe un circuit exterior pentru
detectarea trecerilor prin 0 ale tensiunii reelei.

10.4.5.2. MC din familia ST6


Aceste MC sunt dedicate aplicaiilor cu costuri reduse. Schema bloc este dat n
Fig. 10.59.
Cerere de
ntrerupere
extern

Memorie:
-128 octei EEPROM
-192 octei RAM

Unitatea central
pe 8 bii ST6

SPI

Port paralel
I/O

Interfa pentru LCD


(ST62T80B)

CA/D de 8
bii

UART

Fig. 10.59. MC ST6 - schema bloc


250

Ceas de gard
Timer de 8 bii

Frecvena maxim este de 8MHz. Circuitul este echipat cu 22 de linii I/O, programabile ca
intrri sau ieiri, cu sau fr rezistene de pull-up.
Unitatea central ST6 are 6 registre: acumulatorul (A), 2 registre pentru adresare indirect
(X, Y), 2 registre pentru adresare direct (V,W) i PC. Stiva este realizat hardware, nu
consum din memoria RAM i nu este nevoie de indicator de stiv. Exist 3 spaii de
adresare diferite: spaiul de date (n RAM), spaiul pentru stiv i spaiul de program (n
EEPROM).
Familia este echipat cu 2 timere de 8 bii i un registru de prescalare de 7 bii.
Circuitul ST62T80B are o interfa pentru LCD. Pentru aceasta, circuitul genereaz un tact
separat de 32 KHz, care nu este afectat de modurile de economie de energie.
Cu aceeai unitate central (ST6) sunt echipate MC pentru aplicaii TV (ST6391-99), cu
schema bloc din Fig. 10.60.
R, G, B, VSYNC, HSYNC, BLANK

EEPROM 384
octei
RAM 256 octei

Unitate central
ST6

Porturi I/O
PA PB PC

On Screen Display
OSD

ROM 20K octei

6xPWM

Ceas de gard

CA/D

SPI

2xTimer

Fig. 10.60. MC pentru aplicaii TV (ST6391-99) schema bloc


Pe lng nucleul ST6, acest MC are inclus un modul OSD, un bloc cu 6 canale PWM i un
bloc de conversie A/D prin comparaie cu 5 nivele de tensiune.

10.4.5.3. MC din familia ST9


Aceast familie cuprinde MC puternice, echipate cu interfa USB, cu frecvene de
pn la 24MHz. Configuraia este dat n Fig. 9.61.
Unitatea central conine 256 de registre de uz general i poate executa instruciuni
aritmetice, logice, schimburi ntre registre i memorie sau ntre locaii de memorie. Stiva se
definete n RAM. Unitatea central controleaz o magistral de adrese de 22 de bii pentru
memorie, una de 8 bii pentru registre i una pentru DMA i ntreruperi. Setul de
251

instruciuni const n 94 de tipuri de instruciuni cu care se poate lucra pe bit, pe octet sau
pe 16 bii, n 14 moduri de adresare.

8 ntreruperi
externe
mascabile

Interfaa cu memoria extern,


16 bii de adres,
8 bii de date

+1nemascabil

Controller de
ntreruperi
Controller DMA
256 registre
Unitatea central

8/16 bii

Controller USB

2K RAM
Regulator de
tensiune

Ceas de
gard

20K ROM,
EPROM sau OTP

Timer

ST9
Magistrala de
memorie

Magistrala de
registre

P0

P1

Modul I/O
P3 P4 P5

I2C
P6

Controller
serial SCC

A/DC

Gestionarea
trezirii

Fig. 10.61. MC ST9 schema bloc


Circuitul admite 5 moduri de lucru, din care 4 cu economie de energie:

modul RUN este modul normal de funcionare;


modul SLOW este un mod de lucru n care energia consumat se reduce pe
baza ncetinirii funcionrii, adic funcionarea la un tact mai mic, obinut prin
divizarea tactului sistemului;
modul de ateptare a ntreruperilor suspend activitatea MC pn la sosirea
unei ntreruperi. UC nu mai are tact, rmn active doar interfeele i controlerul
de ntreruperi;
modul HALT n care se poate intra prin execuia instruciunii HALT. Tactul se
oprete pentru tot circuitul, i ieirea din aceast stare se poate face doar cu
RESET;
modul STOP n care se poate intra din program i se oprete tactul pentru tot
circuitul. Ieirea din aceast stare se poate realiza prin trezirea circuitului de la
un pin de trezire cu semnal aplicat din exterior.
Interfaa USB admite transfer la viteza maxim a USB (USB 1.1) i are integrat
transceiverul i regulatorul de tensiune. Sunt posibile 16 puncte de sfrit i se pot conecta
maximum 8 circuite USB. Interfaa USB are canale DMA pentru transferul de date rapid
cu memoria.

252

Modulul I/O are 44 de linii bidirecionale, cu rezistene pull-up sau pull-down,


programabil. Sunt prevzute linii de curent mare pentru a putea conecta direct LED-uri.
Timerul are la baz un numrtor de 16 bii care poate numra nainte sau napoi, asociat
cu 2 registre de comparaie de 16 bii. Exist i un registru de prescalare de 8 bii. Cu acest
timer sunt posibile 12 moduri de operare, cum ar fi generarea de forme de und complexe,
msurri de timp sau generri de semnale PWM.
Ceasul de gard este un timer de 16 bii care, dac nu se folosete ca ceas de gard, poate
ndeplini funcii generale de timp.
Controlerul serial SCC (Serial Communications Controller) poate transfera date serial
sincron sau asincron, cu posibilitatea unei game largi de formate. Pentru a se putea lucra cu
viteze mari de transfer se folosesc dou canale DMA asociate.
Interfaa I2C poate opera n mod multimaster sau slave i funcioneaz pn la o vitez de
400KHz. Orice eveniment pe magistral (magistral ocupat, recunoaterea adresei proprii)
poate genera o ntrerupere.
Convertorul A/D este un convertor cu aproximaii succesive de 8 bii care admite 6 intrri
analogice multiplexate.

10.4.5.4. MC pentru cartele inteligente (ST19)


Familia ST19 cuprinde MC cu acces serial special concepute pentru a avea preuri
mici la cantiti mari i pentru a asigura msuri de protecie a informaiei. Schema bloc a
MC este dat n Fig. 10.62.
EEPROM 8K
octei
ROM sistem

ROM utilizator
32K octei
RAM 960 octei
Unitatea central ST19
pe 8 bii
Magistral cu acces protejat la memorie

Administrator
de securitate

Interfa
serial

Timer de 8 bii

Generator de
numere aleatoare

Fig. 10.62. MC ST19 schema bloc


253

Sistem de
protecie

Interfa adiional
I/O

Memoria nu este cuplat direct la magistral, ci prin intermediul unei magistrale securizate
gestionate de administratorul de securitate pe baza generrii unor numere aleatoare.
Interfaa serial este compatibil ISO 7816-3, un standard special pentru cartele inteligente.
Alocarea contactelor este de asemenea standard (ISO 7816-2). Tensiunea de alimentare
poate fi ntre 3 i 5V.

9.4.6. Date comparative pentru MC Low-cost (Z8, COP8, TMS, ST)


MC
Z8
COP87xx
TMS370C712
ST62T15

Tabel 10.20. Tabel comparativ Z8, COP, TMS, ST


Magistrala de
Frecvena Linii
Interfee
date
(MHz)
I/O
speciale
8
8
14
2
8
10
33
6
8
5
41
4
8
8
20
3

Pre (USD)
0,9
10
9
5

10.5. MC RISC
10.5.1. Microcontroller PIC
ncepem prezentarea MC cu arhitectur RISC cu microcontrollerul PIC.
Productorul plasat cel mai bine pe piaa MC PIC este Microchip (www.microchip.com).
Un alt productor important de MC PIC este Motorola. Exist mai multe familii de MC
PIC; PIC12, PIC16, PIC17.

10.5.1.1. PIC12
Sunt MC cu preuri mici i uor de utilizat datorit arhitecturii RISC. MC are un
numr de 33 de instruciuni cu un grad mare de ortogonalitate, din care majoritatea se
execut ntr-un singur ciclu, iar cele de salt n dou cicluri. Spaiul mic ocupat (capsul de
8 pini) fac aceste MC foarte potrivite aplicaiilor miniatur precum i aplicaiilor casnice.
Pentru a putea fi realizat o i mai mare economie de spaiu, circuitul de RESET este
integrat. Sunt disponibile circuite cu OTP, cu EPROM sau EEPROM inclus, care fac
posibil att realizarea seriilor mari ct i a prototipurilor sau a aplicaiilor cu elemente care
se modific (de exemplu aplicaii de asigurare a securitii cu coduri variabile). Aceste MC
admit o frecven de pn la 4MHz.
MC PIC12 are o arhitectur Harvard, cu magistrale diferite pentru date i pentru
instruciuni. Acest lucru permite ca magistrala de instruciuni s fie mai mare (de 12 bii) i
ca urmare majoritatea instruciunilor pot fi de un cuvnt i pot fi executate ntr-un singur
ciclu.
Unitatea central este o unitate pe 8 bii care poate realiza funcii aritmetice i booleene:
adunare, scdere, deplasare i operaii logice cu date care se gsesc n registrul de lucru
(W) i n oricare registru de uz general. Setul de instruciuni are un mare grad de
ortogonalitate, ceea ce reduce mult timpul necesitat de realizarea unei aplicaii. O operaie
poate afecta biii de stare: Carry (C), Digit Carry (C ) i Zero (Z). Numrtorul de program
254

(PC) este un registru de 12 bii, ceea ce nseamn c poate adresa un spaiu de 2K cuvinte
de 12 bii.
Schema bloc a acestui MC este dat n Fig. 10.63.
Memoria program
ROM/OTP/EPROM

512 x 12 bii sau


1024 X 12 bii
M
A
G
I
S
T
R
A
L
A
I
N
S
T
R
.

Memoria de date
RAM 25 x 8 bii sau
41 x 8 bii
(set de registre )

Unitate central
ALU

PC

Magistral de date i adrese


SCL
tact

Timer

Ceas de
gard

Timer pt.
RESET

SDA
date

EEPROM serial
16 x 8

PIO

Fig. 10.63. PIC12 Schema bloc


Setul de registre localizat n RAM conine registre cu funcii speciale i registre de uz
general. Registrele generale pot fi apelate direct sau indirect, prin intermediul registrului
special FSR (File Select Register). Registrele i adresele lor sunt date n tabelul 10.21.
(pentru circuitul PIC12C509):
Tabel 10.21. Setul de registre PIC12C509
Registru
Adresa(H)
INDF
00
TMR0
01
PCL
02
STATUS
03
FSR
04
OSCCAL
05
GPIO
06
Registre generale 07-1F
INDF nu este un registru fizic, el folosete registrul FSR pentru adresri indirecte;
TMR0 este registrul pentru controlul timerului;
PCL partea mai puin semnificativ a PC;
STATUS arat starea MC;
FSR registru pentru adresare indirect;
255

OSCCAL registru de calibrare a oscilatorului intern, poate mdifica frecvena de


4MHz a oscilatorului ntre anumite limite;
GPIO pentru programarea pinilor I/O.
Stiva este de 12 bii i este realizat hard. Nu exist indicator de stiv i nu sunt instruciuni
de PUSH i POP, lucrul cu stiva fiind automat la instruciunile CALL i RETLW. Stiva
admite o adncime de 2 nivele.
Setul de instruciuni pentru acest MC este dat n tabelul 10.22.
Mnemonic
operanzi
ADDWF f,d
ANDWF f,d
CLRF f
CLRW
COMF f,d
DECF f,d
DECFSZ f,d
INCF f,d
INCFSZ f,d
IORWF f,d
MOVF f,d
MOVWF f
NOP
RLF f,d
RRF f,d
SUBWF f,d
SWAPF f,d
XORWF f,d
BCF f,b
BSF f,b
BTFSC f,b
BTFSS f,b
ANDLW k
CALL k
CLRWDT k
GOTO k
IORLW k
MOVLW k
OPTION k
RETLW k
SLEEP
TRIS f
XORLW k

Tabel 10.22. Setul de instruciuni PIC 12


i Descriere
Adun W cu f
I LOGIC ntre W i f
Face n f toi biii 0
Face n W toi biii 0
Complementeaz f
Decrementeaz f
Decrementeaz f i trece mai departe dac este 0
Incrementeaz f
Incrementeaz f i trece mai departe dac este 0
SAU W cu f
Mut f
Mut W n f
Nici o operaie
Rotaie la stnga prin Carry
Rotaie la dreapta prin Carry
Scdere W din f
Schimb f
SAU EXCLUSIV W cu f
Bitul b din f este fcut 0
Bitul b din f este fcut 1
Se testeaz bitul b din f i face salt dac bitul este 0
Se testeaz bitul b din f i face salt dac bitul este 1
I ntre W i constanta k
Chemare subrutin
Resetare ceas de gard
Salt necondiionat
SAU ntre W i k
ncrcare imediat a constantei k n W
ncrcare registru de opiuni
ntoarcere din subrutin cu plasarea k n W
Intrarea n mod inactiv
ncrcarea registrului TRIS
SAU EXCLUSIV ntre k i W
256

Dac valoarea bitului d este 0, rezultatul se stocheaz n W iar dac este 1, rezultatul se
stocheaz n f.
Registrul de opiuni (OPTION) este un registru special de configurare. Registrul TRIS este
folosit pentru a controla liniile I/O. Un 1 n TRIS pune linia corespunztoare n nalt
impedan, iar un 0 valideaz linia.
Liniile de intrare/ieire pot fi programate ca intrri sau ieiri cu registrul special GPIO.
Pinii pot avea semnificaii duble. La RESET toate liniile se definesc ca intrri. Unii pini
pot trezi MC din starea inactiv (Wake up). Operaiile de intrare ieire se fac prin
intermediul registrului GPIO, de exemplu instruciunea:
BCF GPIO,5

;stabilete un 0 pe linia 5 de ieire

Modulul timer 0 poate fi utilizat n urmtoarele moduri:

temporizator/numrtor pe 8 bii;
numrtor pentru prescalare de 8 bii;
ceas din exterior sau din interior.

Schema bloc a temporizatorului cu semnalele de comand este dat n Fig. 10.64.


Fosc/4
(intern)

Tact fr
sau cu
prescalare

Alegere
tact

GP2
(TOCKI)
(extern)

TIMER

Prescalare

Magistrala de date
TOC5

PS2 PS1 PS0

PSA

Fig. 10.64. Schema bloc a temporizatorului PIC12


Cu bitul TOC5 se alege sursa tactului, extern (de la un pin cu semnificaie dubl) sau
intern. Tacul merge direct la timer sau prin registrul de prescalare (registru de 8 bii),
programabil cu bitul PSA. Registrul de prescalare poate fi ncrcat cu biii PS2, PS1 i
PS0. Toi aceti bii de comand se afl n registrul de opiuni. Registrul de prescalare
poate fi folosit i de ceasul de gard, dar nu simultan cu timerul 0.
Memoria EEPROM cu care sunt echipate anumite circuite din familie poate fi de 16 octei,
poate fi supus la peste 1 mil. de cicluri de scriere/tergere i poate reine informaia mai
mult de 40 de ani. Transmisia se face serial sincron pe dou fire, unul de tact (SCL) i unul
de date, bidirecional (SDA), mapate n registrul GPIO ca bit 6 i bit 7, fr a avea
conexiune n exterior. Protocolul pentru transferul de date poate avea loc doar dac
magistrala de date nu este ocupat, cu SDA i SCL=1. Un START este determinat de
frontul SDA din 1 n 0, iar un front SDA din 0 n 1 reprezint un STOP. Data trebuie s fie
stabil pe SDA pe durata unui impuls de tact SCL (o tranziie din 1 n 0, urmat de una din
0 n 1). Subrutinele de scriere/citire a EEPROM-ului sunt disponibile pe site-ul firmei.
257

Pentru a asigura sigurana rulrii corecte a programului, circuitul este echipat cu un ceas de
gard, care poate fi resetat printr-o instruciune special, asigurnd o ntrziere de 18ms
pn s declaneze un RESET.
Familia PIC12 are posibilitatea de lucru ntr-un mod cu economie de energie, numit
SLEEP. n modul SLEEP oscilatorul este oprit, iar pinii I/O i pstreaz starea. Intrarea n
SLEEP se face cu o instruciune special. MC poate fi scos din acest mod de lucru printrun front aplicat la pin extern sau de ceasul de gard.
Ca i mod de generare a tactului extern, circuitul poate lucra n mai multe feluri:

cu cristal extern conectat la GP5/OSC1 i GP4/OSC2 dup o schem standard;


cu generator de tact extern, cuplat ntre GP5/OSC1 i mas;
pentru aplicaii care nu sunt critice la timp, se poate conecta n exterior la GP5
un grup RC, cu R (3k-100k) la +5V i C (20pF) la mas;
MC are un generator intern de 4MHz, a crui frecven poate fi modificat prin
scrierea registrului OSCCAL.

Alegerea sursei tactului, precum i activarea ceasului de gard se fac cu un registru de


configurare (de 12 bii) care nu este accesibil utilizatorului, fiind o informaie scris n
PROM/ EPROM la adresa FFFh.
Un RESET poate fi generat de una din urmtoarele surse:
-la conectarea tensiunii de alimentare, POR Power On Reset;
-un RESET extern /MCLR pe pinul GP3;
-un RESET cnd circuitul este n mod SLEEP pe /MCLR;
-de la ceasul de timp real n operare normal;
-de la ceasul de timp real n mod SLEEP;
-trezirea din mod SLEEP prin schimbarea strii unui pin extern.
Identificarea sursei de RESET se face prin poziionarea unor bii n registrul de stare,
registru al crui coninut nu se modific prin RESET.
Memoria poate fi programat n circuit (variantele cu EPROM). Aceasta se realizeaz
simplu, cu 2 linii, una de date i una de tact, conform Fig. 10.65.
Inscriptor
(ex. Calc. PC)

PIC12C5xx

+5V

Vdd

GND

Vss

Vpp

/MCLR/Vpp

CLK

GP1

D I/O

GP0

Fig. 10.65. Conexiune pentru programarea


EPROM
Intrarea n mod programare se face cu GP1 i GP0 inui la 0 pe un front cresctor al
/MCLR.
258

Pentru a sublinia dimensiunea i simplitatea de utilizare a acestui MC, n Fig. 10.66. este
descris capsula circuitului.
Vdd
GP5/OSC1
GP4/OSC2
GP3/MCLR/Vpp

PIC12C
1
2
3
4

8
7
6
5

Vss
GP0
GP1
GP2/T0CKI

Fig. 10.66. Capsula PIC12

10.5.1.2. PIC16
Cu o arhitectur asemntoare familiei PIC12, aceste MC au cteva mbuntiri:

35 de instruciuni fa de 33;
frecvena maxim 20MHz fa de 4;
posibilitatea de lucru n ntreruperi, cu 7 surse interne i o surs extern;
stiv automat cu 8 nivele;
13 linii I/O cu posibilitatea stabilirii individuale a sensului de transfer i cu o
linie de putere pentru comanda direct a unui LED;
magistrala de instruciuni este pe 14 bii, fa de 12 bii;
memoria ROM este de 512 x 14 cuvinte pn la 2K x 14 cuvinte;
memoria RAM este de 80-128 de octei.

Aceste MC sunt livrate n capsule cu 20 de pini.


ntreruperile sunt controlate de un registru de comand a ntreruperilor care poate valida
sau invalida global sistemul de ntreruperi i individual pe fiecare linie. Fiecare interfa
care poate cere ntrerupere are ataat un bit care poate fi testat pentru a determina sursa
ntreruperii.
Datorit posibilitii de lucru n ntreruperi, timerul 0, care funcioneaz la fel ca la PIC12
poate cere ntrerupere la trecerea numrtorului de la FFh la 00h. ntreruperea poate fi
mascat.
Pentru creterea siguranei n funcionare familia PIC16 are integrat un circuit de protecie
care genereaz un RESET la scderea tensiunii de alimentare (Brown-Out Reset). Acest
circuit poate fi validat sau invalidat cu un bit de comand.
MC din familia PIC 16 pot fi echipate cu o diversitate mult mai mare de interfee, cum ar fi
comparatoare, convertoare ADC i DAC, USART, I2C, SPI, PWM etc. Circuitul
PIC16C64x este echipat cu 2 comparatoare analogice. Intrrile lor sunt multiplexate cu
pinii I/O 0-3 i cu o referin de tensiune care poate fi folosit pentru comaparatoare. Cu un
registru de comand n zona registrelor cu funcii speciale se poate programa modul de
comparare. Se poate programa ca ieirea comparatoarelor s cear ntrerupere.
Comparatoarele pot fi programate s lucreze cu referin extern sau intern. n modul
SLEEP comparatoarele rmn active i pot trezi circuitul. Dac curentul consumat de
comparatoare n mod SLEEP este prea mare, ele pot fi dezactivate prin registrul de
comand. Modulul care genereaz referina de tensiune este un grup de 16 rezistene care
259

divizeaz tensiunea de intrare cu un factor programabil. Modulul poate fi validat sau


invalidat pentru economia de energie.
Circuitul PIC16C71x este echipat cu convertor A/D i un bloc suplimentar de timere.
Convertorul A/D este un convertor cu aproximaii succesive pe 8 bii, cu 4 intrri analogice
multiplexate i cu circuit de eantionare-memorare. Tensiunea de referin poate fi cea de
alimentare sau o referin extern la un pin I/O cu semnificaie dubl. Convertorul A/D
poate lucra i n modul SLEEP, pentru acest mod de lucru fiind integrat n circuit un
oscilator propriu pentru convertor. Convertorului i sunt ataate 3 registre, 2 de comand i
unul de date. Cu registrele de comand se poate programa:

selecia tactului pentru convertor (Fosc/2, /8, /32 sau ceas propriu);
selecia canalului analogic;
un bit pentru START conversie;
un bit pentru terminare conversiei - poate fi citit i testat prin program, sau
poate cere o ntrerupere;
un bit pentru oprirea convertorului pentru a nu mai consuma curent, dac nu
este folosit n mod SLEEP.

Modulul suplimentar de timere este numit CCP (Capture Compare PWM), dup funciile
pe care le poate ndeplini (un MC poate avea unul sau mai multe module CCP). Modulul
CCP conine un registru de 16 bii i folosete timerele suplimentare 1 i 2. Modurile de
lucru posibile pentru modulul CCP sunt:

mod captur - la apariia unui eveniment la pinul exterior 3, registrul CCP se


ncarc cu valoarea din timerul 1. Un eveniment poate fi un front cresctor, unul
descresctor, la fiecare 4 sau 16 fronturi cresctoare (prescalare). n momentul
evenimentului se poate cere o ntrerupere.
mod comparare - registrul CCP este permanent comparat cu coninutul
timerului 1. Dac apare o coinciden, se semnalizeaz prin schimbarea strii
pinului extern 3. n acelai moment se poate cere o ntrerupere.
mod PWM - se folosesc 2 timere, 1 i 2, unul pentru a determina perioada
semnalului i cellalt factorul de umplere. Ieirea PWM se face tot la pinul 3.

10.5.1.3. PIC17
PIC17 are urmtoarele mbuntiri fa de PIC16:

58 de instruciuni fa de 38;
frecvena maxim 33MHz fa de 20;
stiv automat cu 16 nivele fa de 8;
33 de linii I/O cu posibilitatea stabilirii individuale a sensului de transfer i cu o
linie de putere pentru comanda direct a unui LED;
magistrala de instruciuni este pe 16 bii, fa de 14 bii;
memoria ROM este de 2048 x 16 cuvinte;
memoria RAM este de 232 de octei;
magistralele de date, i adrese (multiplexate) sunt accesibile la pin;
unitatea central poate executa nmuliri;
sunt admise 11 surse de ntreruperi fa de 8.
260

Aceste MC sunt livrate n capsule cu 44 de pini.


Schema bloc este dat n Fig. 10.67.
Memoria program
ROM/OTP/EPROM
M
A
G
I
S
T
R
A
L
A
I
N
S
T
R
.

2K x 16 bii
Memoria de date
RAM 232 x 8 bii

Unitate central
ALU

PC
STIVA
16 x 16 bii
Magistrala de date i adrese

Timer

Ceas de
gard

Timer pt.
RESET

Controller de
ntreruperi

3 x TIMER

USART

PIO
Port C i D

Port B

Port A

Fig. 10.67. Schema bloc PIC17


i circuitele din familia PIC17 pot fi echipate cu o gam larg de interfee.
Sistemul de timere este compus din mai multe timere:

Timer 0 este un numrtor de 16 bii cu surs de numrare extern sau intern.


Poate lucra cu un registru de prescalare care d un tact divizat cu 1/1 pn la
1/256;
Timer 1 este un timer pe 8 bii care poate lucra mpreun cu Timerul 2 pentru a
forma un timer pe 16 bii. Poate lucra n regim de numrare a unor evenimente
externe. Timerul are asociat un registru, deci poate lucra n regim de comparare;
Timer 2 este la fel cu timerul 1. Timerul 1 i 2 pot lucra n mod PWM;
Timer 3 este pe 16 bii, cu un registru asociat.

Modulul USART poate fi configurat s lucreze n mod serial asincron full- duplex (pentru
a transfera date cu un terminal sau un PC), sau n mod sincron full-duplex (de ex. pentru a
lucra cu memorii externe EEPROM).
Observaie: este de remarcat la MC din familia PIC faptul c nu au nevoie de componente
externe pentru RESET i pentru ceas, ceea ce poate fi un avantaj.

261

10.5.2. MC ATMEL
Foarte bine plasate pe pia n zona aplicaiilor low cost sunt MC ale firmei
ATMEL. Firma fabric i MC echivalente 8051.

9.5.2.1. Familia AVR


Aceste MC sunt realizate de productor n diverse variante, ncepnd cu modelele
low cost AT90S2323, AT90S1200 i terminnd cu modele complexe AT90S4414,
AT90S8515, diferenele ntre acestea constnd n principal n mrimea i tipurile memoriei
RAM, FLASH, ROM, EPROM, EEPROM i a facilitilor oferite la interfaa cu
utilizatorul.
Seria de MC ATMEL este susinut de o campanie puternic de promovare astfel nct
productorul ofer gratuit software de dezvoltare ce include asamblor, debugger,
documentaie, exemple i note de aplicaie pe site-ul su www.atmel.com. Softul este
disponibil att n variant ce ruleaz sub sistemul de operare MS-DOS ct i n varianta
WINDOWS.
Toate MC din familie au o arhitectur Harvard, adic au spaii de adres i magistrale
diferite pentru memoria de date i memoria program. Dispun de o prelucrare de tip pipe
line a instruciunilor (n 2 trepte) astfel nct n timp ce o instruciune este executat,
cealalt se afl n ciclu de aducere din memorie (fetch) i astfele se execut cte o
instruciune n fiecare ciclu.
Schema bloc a unui circuit din familie este dat n Fig. 10.68.
Unitate central
32 registre de
uz general

Memoria program
FLASH 2K octei

Memoria de date

ALU

RAM 128 octei


EEPROM 128 de octei

PC

Magistral de date

SPI

Ceas de
gard

Timer

Oscilator

Port B

Fig. 10.68. MC din familia AVR schema bloc


262

Controller de
ntreruperi

Unul dintre cele mai mici MC este AT90S2323. Circuitul se alimenteaz (n funcie de
variant) la 5V sau la 3V i funcioneaz pn la frecvena de 10MHz. Curentul absorbit
este de 2,4mA n stare activ, 0,5mA n stare inactiv i 1A n starea Power Down.
In principal, circuitul este compus din:

unitatea central, n arhitectur RISC cu 118 instruciuni, majoritatea de un


ciclu i 32 de registre de uz general;
blocul de memorie, compus din memoria de program (FLASH de 2K octei care
suport n jur de 1000 de programri) i din memoria de date (128 octei de
RAM) i 128 octei de EEPROM, care suport n jur de 100.000 de programri;
interfeele sunt reprezentate de un timer de 8 bii cu prescalare, un timer pentru
ceasul de gard i o interfa serial SPI pentru programarea n circuit. Liniile
I/O sunt de regul cu semnificaie dubl.

Unitatea central poate executa majoritatea operaiilor ntr-un ciclu, ceea ce nseamn c
operanzii sunt n registrele generale, are loc operaia i rezultatul este stocat n unul dintre
registre. Se pot realiza i adresri indirecte cu 6 dintre cele 32 de registre, grupate cte 2
(ca s formeze registre de 16 bii); registrele duble sunt referite cu X, Y, Z. Se pot face
operaii ntre registre sau cu o constant. Instruciunile au formatul pe 16 bii, iar
indicatorul de program PC este pe 10 bii.
Memoria de date poate fi accesat tot ca registre, n acelai spaiu. Spaiul I/O conine 64
de adrese unde se gsesc registrele de control i de stare ale interfeelor. Stiva este definit
n RAM, deci exist un registru indicator de stiv SP de 8 bii. O imagine sugestiv a
spaiilor de memorie i I/O este dat n Fig. 10.69.
00h
Memoria program
FLASH
1Kx 16 bii

000h

32 registre de lucru

00h
EEPROM
128 octei

1Fh
64 registre I/O

SRAM
128 octei

60h
7Fh

3FFh
DFh

Fig. 10.69. Harta spaiilor de memorie i I/O

Memoria EEPROM dispune de un spaiu propriu de adresare, n care fiecare octet dintr-o
locaie poate fi citit sau scris. Accesul se face specificnd adresa, data i comanda n
registre speciale.

263

Acest MC permite 5 moduri de adresare:

adresare direct - adresa operandului este coninut n instruciune. Se pot


executa instruciuni cu un registru sau ntre 2 registre. Este accesibil astfel tot
spaiul de date;
adresare indirect - adresa operandului este n X, Y sau Z;
adresare indirect cu deplasament - adresa oprandului este rezultatul adunrii
registrelor Y sau Z cu adresa de 6 bii coninut n instruciune. Se acoper
astfel doar 63 de locaii fa de baza dat de registrele Y sau Z;
adresare indirect cu pre decrementare - registrele X, Y sau Z sunt decrementate
nainte de adresare;
adresare indirect cu post incrementare.

Setul de instruciuni este dat n tabelul 10.23.


Mnemonic
ADD
ADC
SUB
SUBI
SBC
SBCI
AND
ANDI
OR
ORI
EOR
COM
NEG
SBR
CBR
INC
DEC
TST
CLR
SER
RJMP
RCALL
RET
RETI
CPSE
CP
CPC
CPI
SBRC
SBRS

Tabel 10.23. Setul de instruciuni al familiei AVR


Operanzi Operaie
Operaie
Rd,Rr
Rd=Rd+Rr
Sum
Rd,Rr
Rd=Rd+Rr+C
Sum plus carry
Rd,Rr
Rd=Rd-Rr
Diferen
Rd,K
Rd=Rd-K
Diferen cu o constatnt
Rd,Rr
Rd=Rd-Rr-C
Diferen cu carry
Rd,K
Rd=Rd-K-C
Dif. cu const. i carry
Rd,Rr
Rd=Rd*Rr
SI logic
Rd,K
Rd=Rd*K
SI logic cu const.
Rd,Rr
Rd=Rd v Rr
SAU logic
Rd,K
Rd=Rd v K
SAU logic cu const.
Rd,Rr
SAU exclusiv
Rd=RdRr
Rd
Rd=$FF-Rd
Complement fa de 1
Rd
Rd=$00-Rd
Complement fa de 2
Rd,K
Rd=Rd v K
Set bit K n registru
Rd,K
Rd=Rd*(FFh-K)
Clear bit K n registru
Rd
RD=Rd+1
Increment
Rd
Rd=Rd-1
Decrement
Rd
Rd=Rd * Rd
Test de 0 sau Rd
Clear registru
Rd=RdRd
Rd
Rd=$FF
Set registru
k
PC=PC+k+1
Salt relativ la k
k
PC=PC+k+1
Salt la subrutin
PC=STACK
Return din subrutin
PC=STACK
Ret. din subrutin de tratare a
ntreruperii
Rd,Rr
if (RD=Rr) PC=PC+2 or 3 Compar , skip dac egal
Rd,Rr
Rd-Rr
Compar
Rd,Rr
Rd-Rr-C
Compar cu carry
Rd,K
Rd-K
Compar cu constat
Rr,b
if (Rr(b)=0) PC=Pc+2 or 3 Skip dac bitul b din Rr este 0
Rr,b
if (Rr(b)=1) PC=Pc+2 or 3 Skip dac bitul b din Rr este 1
264

Mnemonic
SBIC
SBIS
BRBS

Operanzi
P,b
P,b
s,k

BRBC

s,k

BREQ
BRNE
BRCS
BRCC
BRSH
BRLO
BRMI
BRPL
BRGE
BRLT
BRHS
BRHC
BRTS
BRTC
BRVS
BRVC
BRIE
BRID

k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k

LD
ST
MOV
LDI
IN
OUT
SBI
CBI
LSL
LSR
ROL

Rd,Z
Z,Rr
Rd,Rr
Rd,K
Rd,P
P,Rr
P,b
P,b
Rd
Rd
Rd

ROR

Rd

ASR
SWAP

Rd
Rd

BSET
BCLR
BST
BLD

s
s
Rr,b
Rd,b

Operaie
if (P(b)=0) PC=Pc+2 or 3
if (P(b)=1) PC=Pc+2 or 3
if(SREG(s)=1)
PC=PC+k+1
if(SREG(s)=0)
PC=PC+k+1
if (Z=1) PC=PC+k+1
if (Z=0) PC=PC+k+1
if (C=1) PC=PC+k+1
if (C=0) PC=PC+k+1
if (C=0) PC=PC+k+1
if (C=1) PC=PC+k+1
if (N=1) PC=PC+k+1
if (N=0) PC=PC+k+1
if (NV=0) PC=PC+k+1
if (NV=1) PC=PC+k+1
if (H=1) PC=PC+k+1
if (H=0) PC=PC+k+1
if (T=1) PC=PC+k+1
if (T=0) PC=PC+k+1
if (V=1) PC=PC+k+1
if (V=0) PC=PC+k+1
if (I=1) PC=PC+k+1
if (I=0) PC=PC+k+1
Rd=(Z)
(Z)=Rr
Rd=Rr
Rd=K
Rd=P
P=Rr
I/O (p,B)=1
I/O (p,B)=0
Rd(n+1)=Rd(n),Rd(0)=0
Rd(n)=Rd(n+1),Rd(7)=0
Rd(0)=C,Rd(n+1)=Rd(n),
C=Rd(7)
Rd(7)=C,Rd(n)=Rd(n+1),
C=Rd(0)
Rd(n)=Rd(n+1), n=0..6
Rd(3..0)=Rd(7..4),
Rd(7..4)=Rd(3..0)
SREG(s)=1
SREG(s)=0
T=Rr(b)
Rd(b)=T
265

Operaie
Skip dac bitul B din I/O este 0
Skip dac bitul B din I/O este 1
Salt dac SF este1
Salt dac SF este 0
Salt: egalitate
Salt: diferit
Salt: carry setat
Salt: carry este zero
Salt: mai mare sau egal
Salt: mai mic
Salt: minus
Salt: plus
Salt : mai mare sau egal, cu semn
Salt : mai mic dect 0, cu semn
Salt dac CF este setat
Salt dac CF este zero
Salt dac T este setat
Salt dac T este zero
Salt dac este overflow
Salt dac nu este overflow
Salt dac ntreruperea e activat
Salt dac ntreruperea e
dezactivat
Incarc registru indirect
Stocheaz registru indirect
Mut Rr n Rd
Mut constanta K n Rd
IN din portul P
OUT la portul P
Set bit b din portul P
Reset bit b din portul P
Shift logic stnga
Shift logic dreapta
Rotire spre stnga prin carry
Rotire spre dreapta prin carry
Shift aritmetic spre dreapta
Inverseaz jumtile
Seteaz flag s
Reseteaz flagul s
Stocheaz bitul b din Rr n T
Incarc T n bitul b din Rd

Mnemonic Operanzi Operaie


SEC
C=1
CLC
C=0
SEN
N=1
CLN
N=0
SEZ
Z=1
CLZ
Z=0
SEI
I=1
CLI
I=0
SES
S=1
CLS
S=0
SEV
V=1
CLV

V=0

SET
CLT
SEH
CLH

T=1
T=0
H=1
H=0

Operaie
Seteaz Carry flag
Reset Carry flag
Seteaz Negative flag
Reseteaz Negative flag
Seteaz Zero flag
Reseteaz Zero flag
Activeaz ntrerupere
Dezactiveaz ntrerupere
Seteaz flagul de semn
Reseteaz flagul de semn
Seteaz flagul overflow
complement fa de 2
Reseteaz flagul overflow
complement fa de 2
Seteaz T n SREG
Reseteaz T n SREG
Seteaz Half Carry Flag n SREG
Reseteaz Half Carry Flag n
SREG
No operation
Sleep
Watch dog reset

NOP
SLEEP
WDR
Anumite modele au i o instruciune de nmulire, MUL.
MC AVR au 3 surse de ntrerupere:

de la RESET, (din exterior, la punerea sub tensiune sau de la ceasul de gard);


de la un pin extern;
de la timer, la o depire.

ntreruperile pot fi mascate cu 2 registre de 8 bii, GIMSK- General Interrupt Mask i


TIMSK- Timer/Counter Interrupt Mask. La primirea unei ntreruperi se invalideaz
sistemul de nteruperi. Totui este posibil primirea nc a unei ntreruperi n timp ce este
servit prima, dac se revalideaz sistemul de ntreruperi. Rspunsul la o cerere de
ntrerupere dureaz minimum 4 cicluri, timp n care PC este salvat n stiv, SP este
incrementat cu 2 i se seteaz invalidarea ntreruperilor.
Sursele de RESET pot fi:

la punerea sub tensiune (Power On Reset), dac tensiunea crete i atinge un


anumit prag;
de la un pin extern, dac un nivel LOW este prezent mai mult de 50ns;
de la ceasul de gard dac este validat i a expirat perioada de timp pentru care
a fost programat s atepte o iniializare.

Dup RESET execuia programului ncepe de la adresa 000h. Un RESET pornete un


numrtor care contorizeaz un anumit numr de impulsuri ale ceasului intern al
266

circuitului. Contorul stabilete durata impulsului RESET intern pentru ca acesta s fie
suficient de lung pentru iniializarea tuturor circuitelor interne, Fig. 10.70.

Vcc
/RESET

Power On Reset

SAU
LOGIC

RESET
S

Ceas de gard

Oscilator RC
intern

Numrtor

/Q

RESET
INTERN

Fig. 10.70. Circuit intern pentru generarea semnalului RESET


Nu mai este astfel necesar nici o component exterioar pentru semnalul de RESET.
MC admite moduri de lucru cu economie de energie:

modul adormit (Power Down), n care se intr prin execuia instruciunii


SLEEP. Dac n modul SLEEP apare o ntrerupere extern, una de la ceasul de
gard sau un RESET, acestea sunt executate, circuitul trezindu-se. n acest mod
de lucru este oprit oscilatorul extern. Trezirea dureaz un interval de timp egal
cu cel necesar pentru un RESET.
modul inactiv, n care se intr cu aceeai instruciune, dar poziionnd un bit din
registrul de control. n acest mod unitatea central este oprit, dar timerul,
ceasul de gard i sistemul de ntreruperi continu s funcioneze. O ntrerupere
intern, una extern sau un RESET trezesc circuitul.

Circuitul admite ca surse de tact:

un cristal de cuar sau un rezonator ceramic, pentru aplicaii cu pretenii la


stabilitatea frecvenei, (elemente conectate la pinii Xtal1 i Xtal2);
un generator extern la un pin I/O (PB3);
generatorul RC intern, la 1MHz.

Selecia sursei ceasului pentru tact intern sau extern se face cu un bit n memoria FLASH.
Circuitul este programat implicit pentru tact extern. Lucrul cu ceas intern determin
posibilitatea utilizrii acestor MC cu componente externe extrem de puine.
Timerul care echipeaz circuitele AT902323 este un timer pe 8 bii cu un registru de
prescalare pe 10 bii. Timerul poate fi folosit cu tact intern (tactul sistemului divizat cu 8,
64, 256 sau 1024) sau cu tact extern. Sursa de tact pentru timer poate fi ceasul sistemului,
ceasul prescalat sau un tact extern. Funcionarea timerului este controlat de bii din din
dou registre (registru de mti pentru ntreruperi i registru de control al timerului). La
depire, numrtorul poate cere o ntrerupere.
267

Ceasul de gard are ca i tact un oscilator separat, integrat n MC i este complet separat de
timer. Ca i timerul, ceasul de gard are posibilitatea de prescalare. Controlul ceasului de
gard se face cu registrul WDTCR (Watchdog Timer Control Register). Pentru a evita
dezactivarea ntmpltoare a ceasului de gard, acesta trebuie dezactivat cu o secven de
program specific.
EEPROM este accesibil n spaiul I/O, prin urmtoarele registre:

registru de adrese EEPROM;


registru de date EEPROM;
registru de control EEPROM, care comand sensul transferului.

MC ATMEL AVR au linii I/O de uz general (AT902323 are 3 linii, AT902343 are 5 linii,
iar modelul AT90S1200 dispune de dou porturi: B de 8 bii i D de 7 bii). Fiecare linie de
port poate fi configurat independent fa de celelalte, att ca linie de intrare ct i ca linie
de ieire. De asemenea n modul de utilizare ca linie de intrare, fiecare linie poate fi
configurat cu un rezistor de pull-up intern ( valoarea aprox 40K ). Fiecare linie de ieire
poate susine un curent de 20mA (max 40mA valoare limit absolut) astfel nct se poate
folosi direct la comandarea de LED-uri. Fiecrui port i este alocat un registru de sens,
(DDRx, Port x Data Direction). Pinii I/O admit semnificaii duble.
Programarea memoriei FLASH i EEPROM se poate face serial, ntr-un mod cu tensiune
mare (12V) i un mod cu tensiune joas. Circuitele vin de la fabricant gata de a fi nscrise
(au coninutul FFh n fiecare locaie). n modul de programare cu tensiune nalt, tensiunea
de 12V valideaz programarea, nu are un rol funcional. Modul de programare n cele 2
variante este artat n Fig. 10.71.
12V
Ceas de
programare
serial

AT902323
/RESET
XTAL1/PB3

Vcc
PB2
PB1
PB0

GND
Tact

AT902323
/RESET
XTAL1/PB3

Vcc
PB2

4,5-5,5V
Date seriale de
ieire
Instruciuni seriale
de intrare
Date seriale de
intrare

Programare cu
tensiune mare

2,7-6,0V
SCK

Programare cu
tensiune mic

MISO

PB1

MOSI

PB0

Fig. 10.71. Programarea serial a memoriei EPROM (FLASH)


La programarea cu tensiune mare se poate programa memoria FLASH (intrarea pe PB1) i
memoria de date EEPROM (intrarea pe PB0). Pentru programarea memoriei FLASH se
trimite nti adresa apoi data (octetul LOW apoi cel HIGH). Confirmarea se obine prin
trecerea lui PB2 n HIGH. Memoria EEPROM se programeaz trimind nti adresa apoi
octetul de date, confirmarea fiind pe pinul PB2. Orice locaie poate fi citit folosind
instruciunea de citire i adresa, obinnd pe pinul PB2 coninutul respectiv. Tactul serial
este activ pe front cresctor. Scrierea, citirea i unele comenzi speciale (tergerea ntregii
268

memorii, scrierea biilor de securitate etc.) se comand prin trimiterea naintea adresei a
codului serial al comenzii respective (se gsete n foile de catalog).
La programarea cu tensiune mic se poate programa memoria FLASH i memoria
EEPROM tot serial, prin interfaa SPI. Datele se nscriu pe frontul cresctor a lui SCK. n
acest mod de lucru, confirmarea scrierii unei locaii se face prin trimiterea n ecou a
octetului scris. Comenzile se trimit la fel, prin coduri seriale.
Un programator pentru astfel de MC (mod de programare cu tensiune mare) se poate
realiza simplu, folosind interfaa CENTRONICS a unui PC, Fig. 10.72.

INTERFAA
CENTRONICS

12V
AT902323

STB

/RESET
XTAL1/PB3

Vcc
PB2

4,5-5,5V

PB1
GND

PB0

D0
D1
ACK

Fig. 10.72. Programarea unui circuit AVR folosind interfaa


CENTRONICS
Memoria este prevzut cu posibilitatea de protecie a programelor nscrise. Astfel, exist 2
bii de blocare n FLASH care nu pot fi teri dect prin tergerea ntregului program.
Aceti doi bii pot comanda:

dezactivarea unor viitoare programri ale memoriei FLASH sau EEPROM;


dezactivarea unor viitoare programri ale memoriei FLASH sau EEPROM i
blocarea verificrii.

Memoria mai este prevzut cu 2 bii care nu pot fi teri (fuzibili) care pot comanda:

dezactivarea modului serial de programare;


sursa intern sau extern pentru tact.

Modelul ATiny 10 este echipat cu un comparator analogic, care compar valoarea


analogic de la pinul PB0 cu cea de la pinul PB1. Ieirea comparatorului poate declana o
ntrerupere. Comparatorul este controlat de un registru de control i stare.
Modelul AT90S4433 este echipat cu 6 canale de conversie A/D pe 10 bii. Acest model
este un MC cu o echipare superioar: un timer suplimentar de 16 bii cu posibilitatea de
comparare, captur i generare PWM, un comparator analogic, un canal UART, un
convertor A/D pe 10 bii cu 6 canale i un sistem de ntreruperi care admite 14 surse de
269

ntrerupere din care 2 externe. Acest circuit are i posibiliataea de programare paralel,
deoarece are suficiente linii I/O. Schema bloc a acestui MC este dat n Fig. 10.73.
Oscilator intern

Unitate central
32 registre de
uz general

RESET

Memoria program

Ceas de
gard

FLASH 2K octei

Controller de ntreruperi

Memoria de date

ALU

RAM 128 octei


EEPROM 128 de octei

PC

Magistrala de date

SPI

ADC

Port B

Port C

Timer

Timer 16b

UART

Comparator

Port D

Fig. 10.73. MC AT90S4433 Schema bloc


Canalul serial UART permite transferul de date full duplex, cu 8 sau 9 bii de date, cu
generarea de rat de transfer. Canalul serial poate cere ntrerupere la transmisie complet,
registru de transmisie gol sau recepie complet. Recepia i transmisia se fac ca i la
celelalte MC, cu un registru de deplasare pentru serializare/deserializare i un registru de
date. Se poate realiza i o comunicaie serial multiprocesor (Multi- Processor
Communication Mode), prin transmisia n mesaj nti a adresei unui destinatar i apoi a
mesajului propriu-zis. Se poate astfel realiza o comunicaie n care un procesor este
MASTER iar celelalte SLAVE. Canalul serial este controlat de un registru de comand i
stare.
Comparatorul analogic, pe lng ntreruperea pe care o poate genera, poate s declaneze o
captur la timerul de 16 bii la acest tip de MC.
Convertorul A/D este un convertor cu aproximaii succesive cu eantionare memorare i cu
un bloc de multiplexare analogic pe 6 canale la intrare. Convertorul poate lucra cu
conversie singular sau conversie continu. Convertorul are pini de alimentare separai din
exterior i un pin pentru conectarea tensiunii de referin. Ca i tact de conversie,
convertorul accept tactul sistemului divizat cu un registru de prescalare. Tactul se poate
ncadra n valorile optime 50-200kHz. La terminarea unei conversii convertorul poate cere
o ntrerupere. Schema bloc a convertorului este dat n Fig. 10.74.

270

Cerere de
ntrerupere

Multiplexor
analogic

Intrri
analogice

Convertor Analog
Digital cu aprox.
succesive

Eantionare
Memorare

Selecie
canal

START

Date

Tact
conversie
ADMUX

ADCSR

ADCH, ADCL (10b)

BUS INTERN

Registru de
prescalare

CK

Fig. 10.74. Convertorul analog-numeric


Prin registrul ADMUX se comand cu 3 bii selecia unui canal din cele 6. Registrul de
control i stare ADCSR poate declana o conversie prin poziionarea unui bit. Funcionarea
convertorului poate fi validat/invalidat. Prin registrul de control se poate programa i rata
de prescalare. Pentru a micora perturbaiile introduse de unitatea central n timpul
achiziiei de date se poate comanda UC n stare inactiv. Dup efectuarea conversiei
ntreruperea de la convertor va trezi UC (ADC Noise Canceler Function).
nscrierea memoriei FLASH i EEPROM se poate face i n mod paralel, ceea ce nseamn
o vitez mai mare de scriere i un plus de simplitate la programare. Semnalele folosite n
acest mod de programare sunt date n Fig. 10.75.
RDY/BSY

AT90S4433
PD1

Vcc

/OE

PD2

PC,PB

/WR

PD3

BS

PD4

XA0

PD5

XA1

PD6

+12V

RESET

tact

XTAL

+5V
8 linii de date,
bidirecionale

Fig. 10.75. Semnale folosite la nscrierea paralel a memoriei


EEPROM (FLASH)
271

Pentru nscrierea sau citirea datelor se folosesc 8 linii cu semnificaii duble din porturile
PC i PB. /OE stabilete dac este vorba de scriere sau citire. Scrierea se face cu strobul
/WR. BS selecteaz octetul mai semnificativ sau mai puin semnificativ. Semnalele XA0 i
XA1 stabilesc dac se ncarc memoria FLASH, sau o adres a EEPROM, un octet de date
sau o comand. Sunt posibile 9 comenzi: tergere memorie, scriere bii de securitate,
scriere bii fuzibili, scriere FLASH, scriere EEPROM, citire bii de identificare, citire bii
fuzibili i de securitate, citire FLASH, citire EEPROM. Modul de scriere paralel poate fi
uor realizat prin intermediul interfeei CENTRONICS; citirea pentru verificare este mai
complicat.
Modelele AT90S4414 i AT90S8515 dispun de posibilitatea conectrii n exterior a unei
memorii SRAM suplimentare. Pentru aceasta sunt disponibile la portul A magistrala de
adrese (octet mai puin semnificativ) i magistrala de date multiplexate, iar la portul C
octetul mai semnificativ al magistralei de adrese. De asemenea sunt disponibile i
semnalele ALE (Address Latch Enable), /RD i /WR.

10.5.2.2. Familia ARM


Un nucleu cu arhitectur RISC de mare performan este ARM7DMI. Este
conceput cu o arhitectur von Neumann, cu magistrala de date pe 32 de bii, avnd 2 seturi
de instruciuni (ARM pe 32 de bii i THUMB pe 16 bii). Spaiul adresabil este de 4G.
O schem bloc sumar a acestui nucleu este dat n Fig. 10.76.
Emulator n circuit
(Ice Breaker)

Unitate central ARM


Magistrala de
adrese (32)
Registru pt. adrese
Bus C

Distribuitor de
magistrale

37 registre de 32 bii
Bus A
ALU pe 32 de bii

Controller JTAG

Bus B

Magistrala de
date (32)

Registru de date (32)

Fig. 10.76. MC ARM schema bloc


272

Decodor
ARM

Decodor
THUMB

Structura UC este pipe line pe 3 nivele; extragere cod, decodificare i execuie. UC poate
lucra cu date pe 8, 16 sau 32 de bii i poate executa nmuliri ntr-un singur ciclu. Nucleul
are integrat i circuitul de testare JTAG i un emulator n circuit.
Setul de instruciuni THUMB pe 16 bii este un subset al setului pe 32 de bii, cele mai
uzual folosite instruciuni. n acest fel se salveaz spaiu de memorare i se ctig vitez
de prelucrare.
Pentru a asigura un grad mare de paralelism n UC, exist mai multe magistrale de
legtur. Instruciunile sunt analizate i distribuite decodoarelor corespunztoare (THUMB
sau ARM). UC este echipat cu un set de 32 de registre i registre suplimentare pentru
nmulire. Pentru a se putea conecta o varietate ct mai mare de interfee, magistralele sunt
accesibile prin distribuitor n mai multe forme: unidirecional, bidirecional, multiplexat
etc.

10.5.3. MC AMD Am29


MC RISC ale familiei AMD sunt circuite complexe, de mare performan. Astfel,
MC Am29200 are o arhitectur pipeline pe 32 de bii cu 192 de registre generale, un spaiu
de adrese de 304M, posibilitatea conectrii memoriei ROM i DRAM organizate pe 8, 16
sau 32 de bii, controller DMA, 16 linii programabile I/O, port serial UART, registru de
serializare/deserializare pentru aplicaii video, controller de ntreruperi, timer i port JTAG.
Frecvenele de tact admise sunt pn la 16MHz. Unele MC din familie realizeaz i
nmuliri, iar altele pot lucra n virgul flotant.
Schema bloc a acestui MC este dat n Fig. 10.77.
Controlerul de memorie ROM (sau orice fel de memorie static) poate gestiona 4 bankuri
de memorie cu caracteristici i dimensiune diferit. Memoria poate aprea ca o zon
continu de 64M. Controllerul de DRAM poate gestiona tot 4 bancuri cu caracteristici i
dimensiuni diferite, pn la 64M.
Controlerul DMA are 2 canale i poate asigura transfer de date pe 32 de bii n interior i
pe 16 bii n exterior. Canalul de serializare/deserializare poate fi folosit la interfaarea cu
echipamente periferice rapide pe principiu serial, cum ar fi scrierea cu laser, semnale video
pentru afiaje sau scannere.
Setul de instruciuni conine 117 instruciuni grupate n mai multe clase: aritmetice, logice,
de comparaie, de deplasare, cu constante, n virgul flotant, de salt i diverse. Toate
instruciunile (mai puin cele n virgul flotant i a salturilor) se execut ntr-un singur
ciclu. Operanzii i rezultatul pot fi n oricare din cele 192 de registre. Se poate lucra cu date
n format pe 32, 16 sau 8 bii.
Pentru punerea la punct a programelor sunt posibile diferite metode de control, cum ar fi
execuia pas cu pas i observarea MC prin intermediul unor semnale externe. Un mod i
mai avansat este prin interfaa JTAG prin care se poate urmri funcionarea circuitului fr
un hardware suplimentar.

273

CS, RAS, CAS

JTAG
Controller DMA
Controller de ROM
i DRAM

UC Am 29000
Controller de
ntreruperi

Magistrala de date i instruciuni

Magistrala de adrese

Port serial

Serializare/
deserializare

Port I/O
programabil

Extensie bus pentru


interfee

Magistrala extern i
semnale de CS

Fig. 10.77. MC Am29 schema bloc

10.5.4. MC Super H (Hitachi)


O famile situat de asemenea la nivelul de sus al performaei este familia SuperH
de la Hitachi; aceast familie este compus din MC RISC pe 32 de bii.
Ca i caracteristici principale (SH7020) pot fi menionate:

frecvena de pn la 20MHz, tensiunea de alimentare 3,3V-5V;


16k octei ROM/EPROM i 1k octet RAM;
unitatea central are o structur pipeline cu 5 nivele, setul de instruciuni pe 16
bii, 60 de registre generale pe 32 de bii, 3 registre de control i 4 registre de
sistem; poate executa nmuliri;
controlerul DMA are 4 canale;
controlerul de ntreruperi are 9 pini externi i 30 de surse interne, nivelul de
prioritate este programabil;
timerul are 5 canale pe 16 bii care pot lucra n mod numrtor, captur,
comparare sau PWM;
controlerul de magistral admite interfaarea de DRAM, ROM sau SRAM.
suplimentar i alte interfee, cu posibilitatea de conectare pe 16 sau 8 bii, cu sau
fr stri de WAIT;
274

ceas de gard;
2 canale seriale SCI full duplex care pot lucra n mod sincron sau asincron;
2 de linii I/O.

Schema bloc a MC este dat n Fig. 10.78.


Controller DMA
RAM

UC SH-1
Controller de
ntreruperi

ROM/PROM/EPROM

Magistrala de date i adrese

Port serial
2xSCI

5 x Timer

Ceas de
gard

32x
I/O

Controller de bus

Port de date, adrese, comenzi


(3x16 bii i 1x10b)

Port B (16b)

Magistrala extern i
semnale de CS

Fig. 10.78. MC Super H schema bloc

10.5.5. MC Motorola PowerPC (MPC555)


Aa cum AMD a construit un MC n jurul unui nucleu compatibil x86, aa i
Motorola a conceput acest MC n jurul unui nucleu PowerPC. Acest MC are urmtoarele
caracteristici:

nucleu RISC PowerPC cu unitate n virgul flotant;


26 K octei memorie RAM i 448K octei FLASH (EEPROM) cu programare la
5V;
modul serial multicanal cu coad de ateptare (QSMCM, Queued Serial MultiChannel Module);
interfa CAN 2.0;
timer cu 50 de canale;
32 de intrri analogice ntr-un convertor analog digital dual;
interfa JTAG;
2 uniti de procesare a timpului (TPU, Time Processor Unit);
magistralele sunt accesibile la pin (24 de linii de adres, 32 de linii de date);
frecvena de operare 40MHz.
275

Schema bloc este dat n Fig. 10.79.

JTAG
Controller DMA
29K octei RAM

PowerPC
Controller de
ntreruperi

Unitate n
virgul flotant

448K octei FLASH (EEPROM)

Uniti de
procesare a
timpului

Magistrala IMB

QSMCM

Sistem I/O

CAN 2.0

CA/D

Fig. 10.79. MPC555 schema bloc

Controller de bus

Magistrala extern 24
linii de adrese i
2 linii de date

Unitile de procesare a timpului lucreaz independent de UC i conin fiecare 16 canale


independente. Fiecare canal const ntr-un numrtor, un registru de captur i unul de
comparare de 16 bii fiecare.
Convertorul A/D este cu aproximaii succesive, cu eantionare memorare i rezoluie de 10
bii.
Sistemul I/O conine 18 canale, din care 2 porturi paralele, 8 canale PWM i 2 canale
timer.

10.5.6. Date comparative pentru MC RISC


Tabel 10.24. MC RISC tabel comparativ
Magistrala de Frecvena Linii
Interfee
date
(MHz)
I/O
speciale
PIC12C508A
8
4
6
1
PIC16C71
8
20
20
7
PIC17C
8
33
33
3
ATMEL 90S1200 8
12
15
1
ATMEL
8
8
20
5
90S4433
AMD29200
32
16
16
3
MC

276

Pre
(USD)
0.8
3
10
1,5
7
47

10.6. CIRCUITE DSP I MSP


De regul circuitele DSP (Digital Signal Processor) i MSP (Mixed Signal
Processor) sunt considerate altceva dect microcontrollere. Ele au o structur ceva mai
deosebit; n jurul unei uniti centrale mai complexe pentru domeniul aritmetic grupeaz
interfee speciale.

10.6.1. Circuitul DSP56156 (Motorola)


Structura acestui circuit este dat n Fig.10.80.
Nucleu
DSP56100
Unitatea de control:
-generator de adrese de
program
-controlul decodificrii
instruciunii
-controller de ntreruperi

Interfaa cu
gazda

ALU
-aritmetice
-logice
-2 acumulatori de 40
de bii

Port OnCE
de testare

Comutator
pentru bu s
extern
(adrese)

3 x Bus de adrese

2 x Bus de date

CODEC Sigma
Delta

Timer 16b i
numrtor de
evenimente

2 x SSI (canale
seriale sinrone)

Generator de
tact cu PLL

1x Bus instruciuni

Memorie program:
-64 x 16 ROM (boot)
-2048 x 16 RAM sau
ROM

Comutator
pentru bus
extern (date)

Memorie de date:
2048 x 16 RAM

Fig. 10.80. SP56156 schema bloc


n acest circuit sunt integrate un nucleu DSP56100 (CISC) i un set de interfee i memorii.
Arhitectura este Harvard, cu o magistral de date de 16 bii, o magistral de instruciuni de
16 bii i o magistral de adrese. Nucleul are un mare grad de paralelism, avnd 3 uniti de
execuie care efectueaz operaii n paralel i 3 magistrale. Datorit arhitecturii Harvard
accesul la date i instruciuni este simultan, iar execuia n paralel realizeaz ase operaii
ntr-un ciclu. Magistralele sunt accesibile la pin pentru extensii de interfee.
Unitatea central poate funciona la frecvene de pn la 60MHZ i poate realiza la aceast
frecven de tact un ciclu de instruciune n 33ns. UC poate efectua nmuliri de 16x 16
ntr-un ciclu (2 tacte sistem) sau de 32 x 32 cu rezultat de 72 n 6 cicluri, adunri i scderi
277

de 40 bii ntr-un ciclu, operaii aritmetice cu numere ntregi i fracionare, transformat


Fourier FFT.
Programul iniial se poate ncrca n memoria RAM de program de pe magistrala extern,
prin interfaa serial SSI sau prin interfaa cu gazda. Programul de ncrcare se afl n
ROM-ul de ncrcare (Boot ROM). Exist modele cu ROM n loc de RAM pentru lucrul
independent. Circuitul poate lucra att independent dup ce RAM-ul a fost ncrcat ct i
ca SLAVE, ntr-o conexiune cu un calculator gazd. Interfaa cu calculatorul gazd se face
pe 16 bi de date i admite mod de transfer prin DMA.
Pentru legtura cu exteriorul se pot folosi 27 de linii I/O, cu semnificaii duble. Interfeele
i liniile I/O sunt vzute de UC ca i locaii n memoria de date.
Circuitul admite 2 moduri de lucru cu economie de energie, modul WAIT i modul STOP.
Sistemul de ntreruperi admite 2 cereri de ntrerupere extern.
Portul de depanare OnCE (On Chip Emulation) permite punerea la punct a programului
fr s fie nevoie de un hardware suplimentar.

10.6.2. Circuitul MSP430 (Texas Instruments)


Acest circuit este numit de Texas Instruments Mixed Signal Microcontroller i are o
structur mai apropiat de cea a unui MC. Aplicaiile tipice sunt cele n care este nevoie de
achiziia cu precizie a unui semnal analogic i transmisia valorii numerice (eventual dup
anumite prelucrri primare) unui calculator gazd. La modelul MSP430C32 rezultatul este
prezentat pe un afiaj LCD. Schema bloc a circuitului este dat n Fig. 10.81.

JTAG
8-16K octei ROM/OTP

Generator de tact cu PLL

MSP430
Controller de
ntreruperi

256/512 octei RAM

Ceas de
gard

Magistrala date (16b) i adrese (16b)

CA/D

Port I/O

Timer (8b)

-12 bii
-6 canale

-8 linii
-3 cereri de
ntrerupere

Interfa serial
UART

Timer

Fig. 10.81. MSP430 schema bloc


278

Interfa pentru
LCD

Unitatea central RISC pe 16 bii are un numrtor de program (PC), un indicator de stiv
(SP), un registru pentru constante i 16 registre interne generale. Setul de instruciuni are
51 de instruciuni i 7 moduri de adresare posibile. Instruciunile au un mare grad de
ortogonalitate. Instruciunile pot lucra cu date pe 8 bii sau date pe 16 bii.
Portul I/O pe 8 bii este foarte flexibil, fiecare bit poate fi programat individual ca intrare,
ieire sau cerere de ntrerupere i este controlat de 6 registre:

date de intrare;
date de ieire;
registru de direcie;
indicatori de ntrerupere;
selecia frontului care cere ntrerupere;
validarea ntreruperilor.

Interfaa cu LCD permite cuplarea unui afiaj static sau cu multiplexare. Modulul LCD are
memorie proprie unde stocheaz informaia de afiat. Modulul are 4 linii pentru planul din
spate i 21 de linii pentru segmente.

10.7 APLICAII
10.7.1. Comanda motoarelor cu MC
Motoarele pot fi:

de curent continuu cu perii sau fr perii;


de curent alternativ cu inducie;
motoare pas cu pas;
motoare cu reluctan comutat.

Cel mai simplu de comandat, pentru a obine o vitez variabil, sunt motoarele de c.c. cu
perii. Pentru a obine viteza variabil este suficient s aplicm o tensiune
variabil.Tensiunea variabil poate fi aplicat n mai multe feluri:

informaia numeric este convertit ntr-o informaie analogic i este aplicat


unui tranzistor (pentru comanda ntr-un sens) sau la doi tranzistori (pentru
comanda n ambele sensuri). Tensiunea variabil astfel obinut se aplic
motorului de c.c. Un dezavantaj este folosirea unui convertor D/A i puterea
pierdut n tranzistorii care lucreaz n zona liniar.
informaia numeric creeaz un semnal PWM, cu frecvena destul de mare ca
motorul, datorit ineriei, s integreze impulsurile. Motorul va avea o vitez
proporional cu factorul de umplere. Acest mod de comand este mult mai
simplu i tranzistorul, fiind n regim de comutaie nu disip inutil.

Un motor poate fi comandat de ctre un microcontroller att direct, ct i prin intermediul


unor interfee specializate, programabile.

279

10.7.1.1. Comanda PWM a unui motor de c.c. cu perii folosind un


MC Motorola 6805
Schema bloc de control a unui motor de c.c. cu perii realizat de un MC68HC705
este dat n Fig. 10.82.
MC68705
+5V
OSC1

PWMA1

Motor de c.c. cu
perii

OSC2

+5V

Vdd

Oprit
Cretere vitez
Scdere viteza

PC0
PC1
PC2

Vss

Fig. 10.82. Schema bloc de control a unui motor de c.c. cu perii


realizat de MC68HC705
Controlul vitezei poate fi realizat:

cu un program intern pentru un sistem care nu are nevoie de feedback sau de


schimbri dese ale progamului;
cu un program intern ghidat de cteva intrri, cu funcionalitile sugerate n figur.

Un program simplificat la maxim, care sugereaz modul n care se comand motorul este:
PORTA
PORTC
DRDA
DRDC
PWMAD
CTLA

EQU
EQU
EQU
EQU
EQU
EQU

Start
EQU
CLR CTLA
LDA #$20
STA PWMAD

adr

$00
$02
$04
$06
$10
$14

Se aloc denumiri sugestive porturilor A i C


precum i registrelor pentru stabilirea sensului

portul de date PWM (pe liniile port A


portul de control al PWM

*
registrul de control al PWM este Resetat
se trimite 20h n portul de date PWM
(factor de umplere 50%)

LDA #$00
STA
DDRC

registrul C este definit cu toate liniile de intrare


(se putea i cu CLR PORTC)

BRSET 0,PORTC,adr1
BSR adr_off

bitul 0 este setat (buton apasat)?


dac da, salt la subrutina motor oprit (off)
280

adr1

BRSET 1,PORTC,adr2
dac nu, se verific urmtorul buton
...........................................................
BRA adr
bucla se repet continuu

Adr_off

LDA #$00
STA PWMAD

se trimite 00h n portul de date PWM

Dezavantajul acestei scheme de control este c permite micarea motorului doar ntr-un
sens. Pentru a fi posibil schimbarea sensului este nevoie de un bit suplimentar pentru
comanda schimbrii polaritii tensiunii de alimentare a motorului.

10.7.1.2. Comanda PWM a unui motor de c.c. fr perii folosind un


MC Motorola 6805
Un motor de c.c. fr perii este format dintr-un rotor magnet permanent i un stator
format din bobine aranjate n grupe de cte 3 (la motorul cu 3 faze). Bobinele trebuie
alimentate ntr-o anumit succesiune pentru a obine sensul de rotaie dorit (ca la motorul
pas cu pas). Majoritatea motoarelor sunt echipate cu traductoare de poziie (Hall sau
optice). Un astfel de motor poate fi comandat cu vitez variabil prin modificarea
factorului de umplere (PWM), dar n acest caz trebuie modificat i viteza de comutaie.
Un sistem de acionare este dat n Fig. 10.83.
MC68705
OSC1
OSC2

+5V

ITC122

PWMA1
PWMA2
PWMA3

nfurri
stator

Vdd
PA0
PB7
PB6

Traductori
Hall
Motor de c.c. fr
perii

Vss

Fig. 10.83. Comanda PWM a unui motor de c.c. fr perii folosind


MC Motorola 6805
Acest sistem asigur performane de reglare superioare, avnd o complexitate mai mare.
Secvena de acionare pentru comanda motoarelor este transmis prin intermediul unui
amplificator de putere, ITC122. Semnalele digitale de la traductoare sunt citite pe 3 intrri
digitale.Aplicaia este detaliat n nota de aplicaii Motorola AN1702/D,
(http://mcu.motsps.com ).

10.7.1.3 Comanda PWM a unui motor de c.c. cu perii folosind un


MC 8051
n aceast aplicaie se folosete un MC cu arie de numrtoare programabil (PCA 83C51FA) care are posibilitatea de a programa 2 canale PWM. Unele aplicaii solicit
281

obinerea unei viteze precis controlate (cum ar fi la un casetofon), iar altele a unei
poziionri precise (cum ar fi la un plotter).
O comand bidirecional a unui motor folosind 2 canale PWM i o bucl de reacie
prevzut pentru a menine o vitez constant este artat n Fig. 10.84.
83C51FA
L293
(Driver)
P1.3

P1.4
Traductor Hall
cu ieire digital
(30137)

P1.6
P1.2
Generator de tact

Fig. 10.84. Comanda PWM a unui motor de c.c. cu perii folosind MC 8051
MC comand motorul folosind 2 canale PWM. Curentul necesar motorului nu poate fi
furnizat de MC, de aceea se folosete un circuit driver L293 care conine 4 canale de
amplificare, din care n acest caz sunt folosite 2 i un semnal de modificare a sensului. n
acest montaj modificarea sensului se face prin modificarea factorului de umplere la cele 2
canale PWM, Fig.10.85.

P1.3
P1.4
Tensiunea u
la bornele
motorului

Fig. 10.85. Diagrama de semnal pentru comanda fazelor


Cnd P1.3 i P1.4 sunt egale diferen de potenial la bornele motorului este zero. n cazul
(a), P1.3 este mai mult n 1 i motorul este alimentat cu +5V de la P1.3 la mas (P1.4) i se
rotete ntr-un sens. n cazul B el este alimentat de la P1.4 i se rotete n cellalt sens.
Viteza poate fi comandat prin variaia factorului de umplere a celor 2 canale PWM, fiind
proporional cu diferena lor.
Bucla de feedback se poate nchide montnd pe rotorul motorului 2 piese magnetice,
diametral opuse i formnd 2 impulsuri, la fiecare rotire a motorului, cu un traductor Hall
cu ieire digital. Semnalul este preluat de MC la un pin I/O de uz general, sau poate fi
282

preluat la un canal al PCA n mod numrtor (cum s-a realizat n acest caz), sau poate
genera o ntrerupere.
Pentru c motorul cu perii este foarte perturbator, se impun msuri de protecie. Se
recomand conectarea unor condensatori de 6,8F ntre bornele motorului i mas i de
0,33F ntre bornele motorului. De asemenea se recomand decuplarea tensiunii de
alimentare cu condensatori de 50F, 6,8F i 100nF n paralel, diode pentru eliminarea
vrfurilor de tensiune de la fiecare born a motorului la mas i +5V.
Cteva elemente din programul de comand sunt prezentate n continuare:
MOV CMOD,#06
MOV CCAPM0,#42H
MOV CCAPM1,#42H
MOV CCAP0L,#0H
MOV CCAP1L,#0H

:se stabilete intrarea pentru PWM de la pin exterior


:stabilete canalul 0 din arie n mod PWM
:stabilete canalul 1 din arie n mod PWM
:stabilete un factor de umplere 100% pentru canalul 0
:stabilete un factor de umplere 100% pentru canalul 1, ceea ce
:nseamn c motorul st.

Dup iniializarea acestor registre de comenzi trebuie pornit timerul, ceea ce se realizeaz
prin poziionarea bitului 6 (CR) din registrul de control CCON.
SETB CR
Rotirea cu vitez maxim ntr-un sens se comand cu secvena:
MOV CCAP0L,#0FFH
MOV CCAP1L,#0H
SETB CR
Rotirea cu vitez maxim n cellalt sens se comand cu secvena:
MOV CCAP0L,#0H
MOV CCAP1L,#0FFH
SETB CR
Traductorul de vitez d impulsuri canalului 4 programat n mod de captur. La primirea
unui impuls pe P1.6 se ncarc coninutul timerului n registrele CCAP3H i CCAP3L,
coninutul acestor registre fiind proporional cu timpul scurs ntre 2 impulsuri ale
traductorului.
MOV CMOD,#0
MOV CCAPM3
SETB IP.6
MOV IE,0C0H
SETB CR

:se stabilete tactul timerului ca fosc/12


:canalul 4 n mod captur
:se seteaz ntreruperea de la PCA la cea mai mare prioritate
:se valideaz ntreruperile de la PCA
:se pornete timerul

Cnd apare o ntrerupere, n CCAP3L i CCAP3H apare coninutul timerului.


O aplicaie asemntoare este descris de Jafar Modares n nota de aplicaii AP-425, de la
INTEL ( www.questlink.com ).
283

10.7.1.4. Interfaa inteligent pentru comanda motoarelor


HCTL 1100 (Hewlett Packard)
Comanda motoarelor este o aplicaie de larg interes att pentru specialitii din
domeniul electric ct i pentru specialitii din domeniul mecanic sau din alte domenii. De
exemplu multe echipamente periferice au n componen motoare (unitatea de hard disc,
unitatea de disc flexibil, imprimanta etc.). Comanda motoarelor este necesar i la
autovehicule sau n domeniul automatizrilor. Un circuit de interfa specializat n
comanda motoarelor este circuitul HCTL 1100. Acesta poate comanda att motoare pas cu
pas ct i motoare de curent continuu cu traiectorie determinat de vitez. Schema bloc a
interfeei HCTL-1100 este dat n Fig. 10.86.

Interfaa cu
microprocesorul
AD0/DB0
........
AD5/DB5
DB6
DB7
/ALE
/CS
/OE
R//W
RESET

LIMIT
STOP
Flaguri urgene
INIT Flaguri de stare
PROF

Port de
comand a
motorului
MC0
............
MC7

Generator de profil
Port PWM

REGISTRE
INTERNE

Comutator
Reacie
CHA
CHB

/SYNC Timer
EXTCLK

INDEX

PULSE
SIGN

PHA
PHB
PHC
PHD

Fig. 10.86. Schema bloc a interfeei HCTL-1100


AD0/DB0- AD5/DB5- sunt 6 linii de adrese multiplexate cu date. Selecia adresei se face
cu /ALE.
DB6, DB7- 2 linii de date
La nceput se stabilete adresa pe liniile de date, apoi cu /ALE, aceasta se stocheaz n
registrele interne. Apoi se stabilesc datele i se valideaz cu R//W. Semnalul /OE stabilete
momentul citirii datelor n registrul intern al lui HCTL1100.
Semnalele CHA, CHB i INDEX provin de la traductorul foto de turaie. Aceste impulsuri
incrementeaz un registru de poziie actual de 24 de bii (se incrementeaz sau
decrementeaz). Pentru evitarea impulsurilor eronate CHA i CHB, acestea trebuie s
rmn active cel puin 3 perioade EXTCLK pentru a fi luate n considerare.
Intrrile LIMIT i STOP sunt semnale de urgen care comand oprirea motorului
independent de procesorul sau MC gazd. Ieirile PROF i INIT pot fi interogate de MC
gazd pentru a afla starea circuitului. Cu /SYNC se pot sincroniza ntre ele mai multe
circuite HCTL 1100. Semnalul RESET aduce circuitul n starea iniial.
284

HCTL 1100 are 64 de registre interne pe 8 bii din care 35 utilizabile din exterior. Aceste
registre sunt adresate pe liniile de adres AD0-AD5.

10.7.1.5. Traductoare de poziie i sens


Traductorul optic de poziie i de sens este format dintr-un disc cu orificii
dreptunghiulare dispuse pe circumferin. Orificiile sunt sesizate de dou sisteme optice
decalate. Din formele de und generate de cele dou sisteme decalate se poate deduce
sensul rotaiei, ca n Fig. 10.87.
FOTO 1
FOTO 2

SENS

FOTO 1
SENS

FOTO 2

Fig. 10.87. Formele de und generate de traductorul de poziie i sens


Pe disc mai este realizat un orificiu pentru impulsul de INDEX. La o rotaie se genereaz
un impuls INDEX. Impulsurile de la traductoare sunt sensibile la perturbaii, de aceea se
impun msuri specifice EMC de protecie.
Aceste semnale pot constitui att semnale pentru stabilirea poziiei (prin numrarea
impulsurilor), a sensului prin verificarea defazajului ct i a vitezei, printr-un convertor
tensiune/frecven.

10.7.1.6. Comanda unui motor de curent continuu printr-un


convertor D/A
Cel mai simplu convertor este realizat cu un monostabil urmat de un FTJ.
Impulsurile declaneaz monostabilul care stabilete o perioad fix pentru starea HIGH a
semnalului. Prin FTJ se obine o tensiune proporional cu frecvena semnalului.
La ieirile MC0-MC7 se cupleaz un convertor D/A, ca n Fig. 10.88.
HCTL 1100
MC0
MC1

+5V

CD/A

Io

vo

+
Conv. I-U

MC7

Fig. 10.88. Conectarea unui motor de c.c. la HCTL 1100


285

Datele se stocheaz n registrul 08H al HCTL pe 8 bii. Pentru a putea comanda motorul n
ambele sensuri, se consider tensiuni negative n intervalul de comand 00H-7FH i valori
pozitive n intervalul 80H-FFH, Fig. 10.89.
+5V

2,5V

00H

40H

80H

C0H

FFH registrul 08H

-2,5V
-5V

Fig. 10.89. Generarea tensiunilor de comand

10.7.1.7. Comanda PWM a unui motor de c.c. folosind HCTL 1100


Comanda unui motor de c.c. se face cu semnaleul PULSE. Frecvena acestuia este
stabilit la EXTCLK/100. Semnalul SIGN comand sensul de rotaie. n registrul 09H al
HCTL 1100 se ncarc limea impulsului, Fig. 10.90.
Factor de umplere
100%
50%

80H 9CH

SIGN=1

00H
32H
registrul 09H

64H

SIGN=0

Fig. 10.90. Programarea HCTL 1100 pentru


comanda unui motor de c.c. cu modulaie PWM
Comanda se face cu valori zecimale, astfel 9CH=-100D nseamn un factor de umplere de
100%, 32H=50D nseamn 50% iar 64H=100D nseamn 100%.

10.7.1.8. Comanda unui motor pas cu pas


Se pot comanda motoare pas cu pas cu 2,3 sau 4 faze, cu diferite succesiuni de
comand a fazelor. Semnalul INDEX servete la stabilirea poziiei iniiale a motorului.
Succesiunea fazelor se poate programa prin registrul 07H. Pentru o programare n care
toate fazele sunt active se genereaz o secven ca n Fig. 10.91.
Frecvena impulsurilor poate fi variabil (programabil). Ca urmare se pot comanda i
motoare pas cu pas cu un anumit profil de vitez.
286

/INDEX
PHA
PHB
PHC
PHD

Fig. 10.91. Secven de comand a unui MPP cu patru faze

10.7.1.9. Cuplare circuitului HCTL 1100 la microcontroller


a. Cuplarea circuitului HCTL1100 la microcontrollerul AT90S1200
Circuitul driver pentru motoare pas cu pas i pentru motoare de curent continuu,
HCTL-1100, primete semnalele de comand i date de la microcontroller prin porturile
acestuia. Pe portul B al microcontrollerului se trimit date catre circuitul HCTL1100 i se
citesc date din acesta, iar pe portul D se trimit comenzi (semnale) pentru circuitul
HCTL1100, Fig. 10.92.
U4
1

SYNC

U4
AT90S1200

Y1

2MHz
5

30pF

C4

xtal2

reset

C3

xtal1

30pF

pb0
pb1
pb2
pb3
pb4
pb5
pb6
pb7
pd0
pd1
pd2
pd3
pd4
pd5
pd6

12
13
14
15
16
17
18
19

2
3
4
5
6
7
8
9

2
3
6
7
8
9
11

37
40
39
38
36

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

MC0
MC1
MC2
MC3
MC4
MC5
MC6
MC7

R/W
OE
CS
ALE
RESET

SIGN
PULSE
CHA
CHB
INDEX

R6
1
10K

PHA
PHB
PHC
PHD

34

VCC

EXT CLK

PROF
INIT
LIMIT
STOP

26
27
28
29
18
19
20
21
22
23
24
25
17
16
31
30
33
12
13
14
15

C6
1uF
HCTL1100

Fig. 10.92. Cuplarea HCTL 1100 la un MC AT90S1200


In continuare sunt prezentate rutine AT90S1200 pentru lucrul cu circuitul HCTL1100.
Procedurile prezentate ca exemple realizeaza RESET-ul, simuleaz citirea si scrierea
circuitului HCTL-1100.

287

.device AT90S1200
rjmp start
short_delay:

;total 1+80*(1+1/2)-1+4=124
;o ntrziere de 124 perioade de tact
ldi r26,80
;1 tact
sd:
dec r26
;1 tact
brne sd
;1/2 tact
ret
;4 tact
;#################################################################
;PROCEDURA RESET HCTL-1100
;#################################################################
rst:

cbi $12,4
;bitul de reset din portul D
rcall short_delay
;se menine pinul de reset in 0 logic
sbi $12,4
;reset ncheiat
ret
;#################################################################
;#################################################################
;PROCEDURA CITIRE
;#################################################################
cit:

clr r16
out $17,r16
sbi $12,0
ldi r17,0b00000001
out $18,r17
cbi $12,3
sbi $12,3
cbi $12,2
sbi $12,2

;portul B intrare
;comand read
;s-a selectat un registru din HCTL
;puls pe ALE
;puls pe CS

rcall short_delay
cbi $12,1
;OE=0
in r18,$18
;citire propriuzis din HCTL1100
sbi $12,1
;OE=1
ret
;#################################################################
;#################################################################
;PROCEDURA SCRIERE IN HCTL1100
;#################################################################
scr:
ser r16
out $17,r16
;portul B ieire
ldi r17,0b000000001 ;selecie latch din HCTL1100
out $18,r17
cbi $12,3
288

sbi $12,3
;puls ALE
cbi $12,0
;selecie R/W pe scriere
ldi r18,0b1111111 ;date de trimis n HCTL1100
out $18,r18
;scrierea propriuzis
cbi $12,2
sbi $12,2
;puls CS
sbi $12,0
;revenire la modul citire din HCTL1100
ret
;#################################################################
start :
ser r16
out $11,r16
;portul D ieire
rcall short_delay
rcall rst
rcall cit
rcall scr

;se invoc o mic intrziere


;se trimite comand reset la HCTL1100

b. Cuplarea circuitului HCTL1100 la microcontrolerul INTEL 8051


Exist dou moduri de cuplare a lui HCTL-1100 la MC 8051, i anume legarea la
magistrala de adrese/date/control sau la portul I/O. Alegerea uneia dintre metode sau a
celeilalte depinde de modul n care este folosit MC 8051. Dac MC 8051 folosete bus-ul
n aplicaia dat se recomand cuplarea lui HCTL pe bus. Este necesar hard suplimentar
(dou circuite TTL). La legarea pe bus se pot cupla pn la 4 circuite HCTL. Dac circuitul
nu folosete bus-ul, adic nu are conectat nici un fel de memorie exterioar se recomand
legarea lui HCTL la portul I/O, soluie care nu necesit hard suplimentar.
n Fig.10.93. se arat modul de legare la portul de I/O.
U4
1
Vcc

SYNC

U5
31
C7

19
Y2
2MHz

22pF
C8

18

22pF
Vcc

C9

10uF

R7
10K

12
13
14
15
39
38
37
36
35
34
33
32

EA/VP
X1

X2

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

RESET
INT0
INT1
T0
T1
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD

1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
17
16
29
30
11
10

2
3
4
5
6
7
8
9
37
40
39
38
36

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

PHA
PHB
PHC
PHD
MC0
MC1
MC2
MC3
MC4
MC5
MC6
MC7

R/W
OE
CS
ALE
RESET

SIGN
PULSE
CHA
CHB
INDEX

34

EXT CLK

PROF
INIT
LIMIT
STOP

HCTL1100

8051

Fig. 10.93. Conectarea HCTL 1100 la MC 8051

289

26
27
28
29
18
19
20
21
22
23
24
25
17
16
31
30
33
12
13
14
15

Din aceast figur se remarc simplitatea conectrii i hardul suplimentar minimal utilizat.
Un software minimal este prezentat n continuare (rutine de RESET, citire i scriere).
;##############################################################
;PROCEDURA RESET
;##############################################################
RS1100:
ORL P2,#0FH
;Seteaz liniile de R/W la citire, OE=1, CS=1,
AE=1

MOV P0,#0FFH
CLR P2.4
NOP

;Seteaz P1=HIGH
;Seteaz RESET pe LOW
;ntrziere corespunztoare unui

impuls de

5s
NOP
NOP
NOP
SETB P2.4
:Readuce linia RESET n HIGH
RET
;################################################################
;################################################################
;PROCEDURA CITIRE (Citete registrul lui HCTL)
;################################################################
RD1100
SETB P2.0
;Seteaz liniile R/W pentru citire
MOV P1,B
;Adresa de LATCH
CLR P2.3
:Se genereaz un puls ALE
SETB P2.3
MOV P1,#0FFH
CLR P2.2
;Se genereaz un puls CS
SETB P2.2
NOP
;ntrziere corespunztoare unui impuls de
4s
NOP
NOP
CLR P2.1
;Seteaz OE=0
MOV A,P0
;Se iau datele din HCTL 1100
SETB P2.1
;Seteaz OE=1
RET
;################################################################
;#################################################################
;PROCEDURA SCRIERE (Scrie n registrul lui HCTL)
;################################################################
WR1100
MOV P1,B
;Adresa de LATCH
CLR P2.3
:Se genereaz un puls ALE
SETB P2.3
MOV P1,#0FFH
CLR P2.0
;Seteaz liniile R/W pentru scriere
MOV P1,A
;Se emit datele
CLR P2.2
;Se genereaz un puls CS
290

SETB P2.2
SETB P2.0
;ntoarcere la modul de citire
MOV P1,#0FFH
RET
;###############################################################

10.7.2. Receptor radio cu acord digital cu 8051


Aceast aplicaie folosete un circuit TEA5757 (productor PHILIPS) care este un
radio cu acord digital pe un singur chip. Partea de receptor radio este un receptor stereo
AM/FM. Partea de acord este bazat pe logica FUZZY. Circuitul necesit un minim de
componente externe pentru a putea funciona.
Interfaa cu un MC este foarte simpl, se poate face pe 4 fire: ceas de date (BUS-CLOCK),
date (DATA), validare la scriere (WRITE ENABLE) i mod stereo/mono (MO/ST). MC
trebuie s dea 2 instruciuni: preset i cutare.
n mod preset MC trebuie s ncarce n radio informaii cum ar fi banda AM/FM, frecvena
sau modul stereo/mono. Circuitul de acord ncarc frecvena dorit ntr-un registru i
modific tensiunea de acord pn cnd frecvena de acord este egal cu frecvena dorit.
n mod cutare MC trimite doar banda AM/FM i direcia de cutare. Circuitul de acord
modific tensiunea de acord pn cnd apare o reacie (cmp radio mare). Atunci se
genereaz un semnal care blocheaz tensiunea de acord. Frecvena de acord este ncrcat
ntr-un registru i citit i memorat de ctre MC. Utilizatorul (MC) decide dac frecvena
corespunde unui post dorit; dac da este memorat pentru a se putea realiza o operaie de
preset, iar dac nu, se iniiaz o nou cutare.
Prin linia serial de date (DATA) MC ncarc n radio un registru de 25 de bii, cu
urmtoarele semnificaii ale biilor:

(MSB) start cutare;


sens cutare (spre frecvene mai mari sau mai mici);
mono/stereo;
2 bii pentru selecie band (AM/FM); pot fi selectate i unde medii/unde lungi;
3 bii la dispoziia utilizatorului;
2 bii care stabilesc valoarea cmpului electric la care se produce oprirea
cutrii;
15 bii care stabilesc frecvena de acord.

Un aparat de radio ct mai reuit comercial presupune un numr minim de componente. Se


poate folosi un MC din familia MCS-51 care are i interfa pentru LCD, avnd astfel un
radio cu afiaj. Schema bloc este dat n Fig. 10.94.

291

Radio cu acord
TEA5757H

Amplificator
audio
(TDA7050)

L
R

BUS CLK WE DATA

P2.0 P2.1

P2.2

MC P83C434 (Philips)
BP0 S00 S01 S02 S03 ..........

P0.0 ...............P0.5

Display LCD

Tastatura

Fig. 10.94. Schema bloc a unui aparat de radio cu MC din familia


MCS-51
Afiajul LCD este legat la portul special. Pentru interfaa cu radioul se folosesc 3 bii din
portul P2, iar pentru interfaa cu tastatura se folosete portul P0. Radioul mai este
completat cu un amplificator audio final de puterea dorit.

10.7.3. GPS cu MC Motorola


Motorola ofer un set de chipuri (chipset) pentru aplicaii GPS (Global Positioning
System). Setul este format dintr-un circuit de radio frecven (RF) i un MC. Aplicaiile
GPS au cunoscut n ultimul timp o dezvoltare deosebit. Se ofer astfel sisteme GPS
portabile; noile modele de autoturisme includ sisteme de navigaie bazate pe GPS, ca s nu
mai vorbim de aplicaiile clasice cum ar fi la navigaia aerian sau pe ap. Schema bloc a
sistemului GPS este dat n Fig. 10.95.
Blocul de radiofrecven recepioneaz semnalul GPS i l transform ntr-un semnal
digital serial. Totodat, realizeaz cu o bucl PLL i tactul de citire din semnalul
recepionat. Decodificarea i interpretarea semnalului sunt sarcinile MC.
MC este bazat pe o arhitectur RISC pe 32 de bii de date (MMC2003) i are pe chip un
modul GPS cu 12 canale, memorie ROM i FLASH, memorie RAM cu posibilitatea
alimentrii de la baterie (NVRAM), 2 porturi seriale UART, port serial SPI, timer, canal
PWM i intrri/ieiri generale. MC poate fi alimentat de la baterii fiind posibile astfel
aplicaii portabile. MC admite un tact de pn la 33MHz.
Alte informaii pot fi obinute la www.motorola.com/mcore/gps .
292

MMC2003
Bloc de
recepie

PLL

GPS 12
canale

FLASH
UC RISC

PIO/PWM

Timer

32Ko SRAM

SPI

256ko ROM

2x
UART

PSRF1111A RF

Fig. 10.95. Schema bloc a unui sistem GPS cu MC

10.7.4. Aplicaii auto


Evoluia revoluionar a prii electronice la autovehicule a dus la creterea rapid a
numrului de fire de legtur. Cablarea convenional nu este o soluie de viitor pentru c
nu ofer o posibilitate ieftin i fiabil de a conecta toate modulele ntre ele. Miniaturizarea
cablurilor i a conectorilor este o soluie de asemenea temporar. n viitor va fi necesar o
transmisie multiplexat a semnalelor, o soluie ieftin i fiabil de interconectare. nc nu
se fabric maini de serie cu acest mod de transmisie a semnalelor din cauza costurilor
mari, datorate mai ales de componentelor de comutaie de putere. Apariia MC, care sunt
componente foarte ieftine, i scderea preurilor la tranzistoarele FET de putere sunt factori
care nclin balana ctre transmisia multiplexat.
Firma National Semiconductor a gndit un astfel de sistem cu MC COP de 4 bii pentru a
realiza un cost ct mai mic (Abdul Aleat, Nota de aplicaii 454, 1997 i Venkata Gobburu,
Nota de aplicaii 453, 1993).
O schem bloc n care nodurile reelei de MC sunt constituite de echivalente 8051, iar
nodurile sunt conectate ntre ele printr-o legtur serial este dat n Fig. 10.96.
S-au figurat doar cteva din noduri. Aceast legtur serial nu poate fi prin UART
deoarece UART nu este o legtur multipunct. Se poate realiza o legatura I2C,
MICROWIRE sau CAN08. Fiindc 8051 cu I2C este uzual, se poate alege aceast variant,
chiar dac nu este cea mai performant.

293

UART (conexiune de test din


exterior cu un PC)

SDA SCK
MC Master

MC P80C2580
I2C, ADC, UART

MC pentru afiaj la bord


i introducere de date
P2.0 P2.1

P2.2

MC P83C434
BP0 S00 S01 S02 S03 ..........

P0.0 ...................P0.5

Display LCD
Tastatura
MC pentru
supravegherea motorului

MC P80C2580
I2C, ADC, UART

Temperatur
Temperatur
i existen ulei i existen ap

Vitez

Nr. km

MC pentru frna ABS

MC P80C2580

SLAVE

I2C, ADC, UART

Traductoare turaie

Comanda ventilelor

Fig. 10.96. Schema bloc a unui sistem auto realizat cu microcontrollere


echivalente 8051
294

O structur MASTER SLAVE este cea mai potrivit acestei aplicaii, deoarece este simpl
i implicit fiabil, o structur MULTI MASTER nefiind necesar. n fiecare nod al reelei
exist cte un MC, deci fiecare nod este inteligent i poate executa instruciunile primite de
la MASTER. Dup executarea operaiei dorite MC SLAVE comunic rezultatul circuitului
MASTER pentru ca acesta s poat afia confirmarea.
Afiarea rezultatelor i introducerea datelor se fac cu un afiaj LCD i o mini tastatur, dar
afiarea se poate completa cu bare de LED-uri i cu afiaje luminiscente acolo unde este
cazul. Cu ct informaia afiat este mai important, cu att afiajul trebuie s fie mai
luminos.
Un sistem de msur independent care se ocup cu o anumit mrime, se numete EIC
(Electronic Instrument Cluster).

10.7.5. Memorii seriale


Pentru a realiza montaje ct mai compacte i cu trasee ct mai puine, au nceput s
fie rspndite memoriile EEPROM i FLASH seriale. Acestea sunt utile acolo unde se cere
ca informaia s nu fie volatil, iar modificarea informaiei s poat fi fcut n sistem. De
regul interfaa serial este pe 2 sau pe 3 linii, o linie fiind tactul de citire/scriere, o linie
fiind de date (bidirecional la interfeele cu 2 linii sau o linie de citire i una de scriere
date). Se realizeaz i memorii cu interfee seriale speciale, cum ar fi SPI, I2C sau
MICROWIRE.
Aceste memorii pot fi folosite i la ncrcarea iniial a programului n MC, la punerea sub
tensiune, pentru MC care permit acest lucru (de exemplu EZ USB prin interfaa I2C).
O memorie de 16K bit cu interfa SPI produs de Fairchild (NM25C160) poate fi
renscris de 1 milion de ori, iar datele sunt reinute 40 de ani. Schema bloc este dat n
Fig. 10.97.
/CS
/HOLD
/WP

SCK
SI
SO

NM25C160

Interfa SPI

Fig. 10.97. Schema bloc a unei memorii seriale


Semnalul /CS valideaz funcionarea memoriei pentru a se putea cupla mai multe
dispozitive SPI, semnalul /HOLD suspend transmisia serial fr a o reseta iar semnalul
/WP protejeaz circuitul mpotriva scrierilor din greeal.
295

Interfaa SPI este o interfa standard, cu viteza admis pentru tact de maximum 2MHz.
Cu aceleai date generale Fairchild produce i memoria NM24C16 cu interfa
bidirecional pe 2 fire I2C. Linia de date I2C este bidirecional. Intrarea de date se face
prin intermediul unui trigger Schmitt. Circuitul este chiar mai simplu de utilizat, el nu mai
are semnale de /CS, /HOLD sau /WP, aceste funcii fiind realizate prin protocolul I2C.
Circuitul NM93C86A este dotat cu o interfa serial sincron MICROWIRE. Circuitul are
linii de selecie (CS), tact (SK), date de intrare (DI) i date de ieire (DO). Informaia este
considerat ca aranjat n cuvinte pe 8 sau 16 bii, dup cum semnalul exterior ORG este 0
sau 1.
Chiar dac cu o interfa MICROWIRE sunt dotate doar MC din familia COP8 de la
National Semiconductor, memoria se poate cupla direct la interfaa SPI cu care este
compatibil pin cu pin. Este nevoie doar de un software de aranjare a datelor i de
sincronizare.
Toate aceste memorii sunt programabile; nainte de a transmite irul de date trebuie
transmis unul sau mai multe cuvinte de comand care stabilesc operaia care urmeaz
(scriere, citire, tergere) i se programeaz anumite aspecte particulare de lucru cu interfaa
serial.

296

S-ar putea să vă placă și