Documente Academic
Documente Profesional
Documente Cultură
Micro Control Ere
Micro Control Ere
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
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
Oscilator
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
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
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.
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:
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.
164
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
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
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
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.
DZ
5V
100
0,1
VSS
Diod de
redresare
Rez. de
putere
Mas flotant
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.
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
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
176
Registru index
Indicator de stiv
178
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.
180
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
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
WRITE
Q
Driver
Intrare/
Ieire
digital
/Q
READ
Bit de
date
Buffer
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.
Bit 4
0
0
1
1
0
1
0
1
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.
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:
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
Dispozitiv slave
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
MSB
Selecie ieire
Numrtor COP
Generare de Reset
intern al UC
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
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
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
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
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.
189
Magistrala intern de
adrese si date
Registru
de control
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.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.
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
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
+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
Port H
Tastatur
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.
ADSCR
Selecie
canal
ADC
Intrri
analogice
Cerere de
ntrerupere
Ceas de conversie
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.
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
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
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.
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.
198
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
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
Pre (USD)
1.9
2.1
8.25
17.5
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
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
203
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
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:
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
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.
208
C (10)
X2
210
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.
ECNTRL
EEPROM
ETIM
EDATA
EADRH
BUS INTERN
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.
216
Multiplexor
analogic
ADC0
ADC1
ADC2
ADC3
Selecie
canal
STDAC
Convertor Analog Digital
START
STOP
ADCON
Date
ADCH
BUS INTERN
Comparator pe 8 bii
Numrtor
8 bii
PWM0
PWMP
(prescalare)
fosc/2
BUS INTERN
217
8051
RAM
4-8 Koctei
Interfaa cu memoria
extern (nemultiplexat)
PIO
(24 linii)
BUS INTERN
Interfa I2C
Transceiver USB
D+
D-
SCK
SDA
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
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.
Temporizator/
Numrtor (Baza de
timp pentru modulele
PCA)
P1.3
P1.4
P1.5
P1.6
P1.7
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.
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
Nucleu 8051
S00-S21
S22/BP3
S23/BP2
BP1
BP0
VDD
VSS
BP0
S00
S01
2 elemente de afisaj,
(primul aprins, al doilea stins)
RAM
ROM
Magistral de date
Porturi I/O
P3 P2 P1(4b) P0
8x6bit PWM
14bit PWM
DAC
P1.3
P0.6
MUX
ANALOGIC
Comparator
P1.1
P1.2
DAC (4 bit)
224
RAM
64Koctei
Interfaa cu
memoria
extern
Interfaa
JTAG
BUS CSI
Matrice CSL
PIO
PIO
PIO
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
Intrri
Pori
configurabile
prin
programare
Bistabil D
D
Q
EN
T
Ieiri
Structura porilor poate fi programat la iniializare i reprogramat de ori cte ori. O celul
poate ndeplini una din funciile:
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
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
/RD
BUS
DATE
D0-D7
EPROM
A0-A14
A15
/PSEN
CS
D0-D7
/OE
Opional
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
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)
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
Unitatea
central
Am386SX
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)
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
SCK
SI/SO
Convertor A/D,
6x 10 bii
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
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
Nucleu Z8
8K octei ROM
Timer
Ceas de gard
Porturi I/O
P3(5 b)
P6(8b)
1x14 bit
PWM
3x8 bit
PWM
Interfa
serial SPI
USART
Memorie
-8Koctei ROM
-192octei RAM
CAN
Bus
CA/D
Timer T1,T2
(16 bii)
MIWU
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
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.
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
241
+Vcc
Surs de
curent
Timer
6 canale
analogice
Referin de
tensiune (Vcc/2)
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
Magistrala
intern
Registre de
comand,
stare i date
Serializare/ deserializare
Gestionarea erorilor
Magistrala CAN
Transceiver
Tx
Generare CRC
TxEN
Registre de deplasare
MUX
Rx
VREF (Vcc/2)
VREF
243
Magistrala intern
Cerere de
ntrerupere
cre UC
Registru de
deplasare
MSB
LSB
SO
Selecie tact
SI
Registru de
control
SK
COP
Master
Driver LCD
CS1
EEPROM
CS2
CS3
Convertor
A/D
DO
DO DI SK
DO DI SK
DI
SK
SI
SO
SK
NMC9306
SO
DI
DO
SI
SK
SK
CS
G0
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
Magistrala
de adrese i
date n
exterior
3x
CA/D
Interfa
serial
SPI
Ceas de gard
2xSCI
246
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:
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.
247
SCI
Port paralel
I/O
Memorie
2Koctei EPROM
(OTP)
Driver PWM
i pt. triac
CA/D
Unitate de control
-registre
Referin
de tensiune
Timer
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:
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
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:
Memorie:
-128 octei EEPROM
-192 octei RAM
Unitatea central
pe 8 bii ST6
SPI
Port paralel
I/O
CA/D de 8
bii
UART
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
6xPWM
Ceas de gard
CA/D
SPI
2xTimer
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
+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
252
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
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.
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
Memoria de date
RAM 25 x 8 bii sau
41 x 8 bii
(set de registre )
Unitate central
ALU
PC
Timer
Ceas de
gard
Timer pt.
RESET
SDA
date
EEPROM serial
16 x 8
PIO
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
temporizator/numrtor pe 8 bii;
numrtor pentru prescalare de 8 bii;
ceas din exterior sau din interior.
Tact fr
sau cu
prescalare
Alegere
tact
GP2
(TOCKI)
(extern)
TIMER
Prescalare
Magistrala de date
TOC5
PSA
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:
PIC12C5xx
+5V
Vdd
GND
Vss
Vpp
/MCLR/Vpp
CLK
GP1
D I/O
GP0
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
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.
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:
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
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
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.
Memoria program
FLASH 2K octei
Memoria de date
ALU
PC
Magistral de date
SPI
Ceas de
gard
Timer
Oscilator
Port B
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 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
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
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
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:
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
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:
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
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
Memoria mai este prevzut cu 2 bii care nu pot fi teri (fuzibili) care pot comanda:
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
PC
Magistrala de date
SPI
ADC
Port B
Port C
Timer
Timer 16b
UART
Comparator
Port D
270
Cerere de
ntrerupere
Multiplexor
analogic
Intrri
analogice
Convertor Analog
Digital cu aprox.
succesive
Eantionare
Memorare
Selecie
canal
START
Date
Tact
conversie
ADMUX
ADCSR
BUS INTERN
Registru de
prescalare
CK
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
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.
Distribuitor de
magistrale
37 registre de 32 bii
Bus A
ALU pe 32 de bii
Controller JTAG
Bus B
Magistrala de
date (32)
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.
273
JTAG
Controller DMA
Controller de ROM
i DRAM
UC Am 29000
Controller de
ntreruperi
Magistrala de adrese
Port serial
Serializare/
deserializare
Port I/O
programabil
Magistrala extern i
semnale de CS
ceas de gard;
2 canale seriale SCI full duplex care pot lucra n mod sincron sau asincron;
2 de linii I/O.
UC SH-1
Controller de
ntreruperi
ROM/PROM/EPROM
Port serial
2xSCI
5 x Timer
Ceas de
gard
32x
I/O
Controller de bus
Port B (16b)
Magistrala extern i
semnale de CS
JTAG
Controller DMA
29K octei RAM
PowerPC
Controller de
ntreruperi
Unitate n
virgul flotant
Uniti de
procesare a
timpului
Magistrala IMB
QSMCM
Sistem I/O
CAN 2.0
CA/D
Controller de bus
Magistrala extern 24
linii de adrese i
2 linii de date
276
Pre
(USD)
0.8
3
10
1,5
7
47
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
JTAG
8-16K octei ROM/OTP
MSP430
Controller de
ntreruperi
Ceas de
gard
CA/D
Port I/O
Timer (8b)
-12 bii
-6 canale
-8 linii
-3 cereri de
ntrerupere
Interfa serial
UART
Timer
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:
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:
279
PWMA1
Motor de c.c. cu
perii
OSC2
+5V
Vdd
Oprit
Cretere vitez
Scdere viteza
PC0
PC1
PC2
Vss
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
*
registrul de control al PWM este Resetat
se trimite 20h n portul de date PWM
(factor de umplere 50%)
LDA #$00
STA
DDRC
BRSET 0,PORTC,adr1
BSR adr_off
adr1
BRSET 1,PORTC,adr2
dac nu, se verific urmtorul buton
...........................................................
BRA adr
bucla se repet continuu
Adr_off
LDA #$00
STA PWMAD
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.
+5V
ITC122
PWMA1
PWMA2
PWMA3
nfurri
stator
Vdd
PA0
PB7
PB6
Traductori
Hall
Motor de c.c. fr
perii
Vss
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
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
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
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
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.
SENS
FOTO 1
SENS
FOTO 2
+5V
CD/A
Io
vo
+
Conv. I-U
MC7
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
-2,5V
-5V
80H 9CH
SIGN=1
00H
32H
registrul 09H
64H
SIGN=0
/INDEX
PHA
PHB
PHC
PHD
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
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
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
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
;###############################################################
291
Radio cu acord
TEA5757H
Amplificator
audio
(TDA7050)
L
R
P2.0 P2.1
P2.2
MC P83C434 (Philips)
BP0 S00 S01 S02 S03 ..........
P0.0 ...............P0.5
Display LCD
Tastatura
MMC2003
Bloc de
recepie
PLL
GPS 12
canale
FLASH
UC RISC
PIO/PWM
Timer
32Ko SRAM
SPI
256ko ROM
2x
UART
PSRF1111A RF
293
SDA SCK
MC Master
MC P80C2580
I2C, ADC, UART
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 P80C2580
SLAVE
Traductoare turaie
Comanda ventilelor
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).
SCK
SI
SO
NM25C160
Interfa SPI
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