50539933 curs microcontrolere

235
PREFA!" Se consider ! anul "97", când INTEL a anun#at producerea primului microprocesor, ca momentul trecerii de la electronica implementat ! cablat la electronica realizat ! programat. Primul microprocesor 4004 a fost conceput de M. E. Hoff ca un procesor pu#in simplificat pentru a putea fi implementat, la vremea aceea, pe un singur chip în siliciu. Ini #ial, microprocesorul nu a fost un computer- on-a-chip, de$i în timp a ajuns la acest stadiu; conceptul de microprocesor s-a dezvoltat $i spre alte implement !ri specifice: microcontroller, microcalculator,  procesor de semnale (DSP). Oricare din aceste circuite, pentru a deveni parte a unui sistem, impune un proces de proiectare care se bazeaz ! în egal! m!sur ! atât  pe componenta hardware cât $i pe componenta software. Microprocesorul, sau celelalte variante ale sale, integrat într-un sistem aduc acestuia acea performan #!, care atunci când este realizat ! de fiin#a uman! este referit! ca inteligen#!. În general, microprocesorul este integrat ca unitate central ! de procesare în sistemele digitale de calcul. Actual, aproape toate sistemele au o arhitectur ! de sistem digital particularizându-se în func #ie de aplicare/utilizare. Aplica#iile care nu sunt, în sensul clasic, sisteme digitale de calcul sunt în general implementate pe baz ! de microprocesor sau DSP. Implement!rile sistemelor pe  baz! de microcontroller ori DSP devin simple $i ieftine -–pentru c ! utilizeaz ! deja o component! de serie, devin performante – pentru c ! utilizeaz! o component! care  poate asigura suport pentru inteligen #!, devin flexibile – pentru c! utilizeaz ! o component ! ce poate fi programat !. For #a care a impus sistemele pe baz ! de microcontroller const ! în  programabilitatea unei componente de serie. Pentru sistemele la care o component ! de serie, chiar programabil ! în software, nu duce la rezultatele cele mai bune au ap!rut implement !rile pe baz ! de circuite ASIC (  Application Specific Integrated Circuits). Spre deosebire de sistemele pe baz ! de microcontroller, unde func#ionarea dorit! se ob#ine, în software, printr-un anumit program, la sistemele  pe baz! de circuite ASIC func#ionarea dorit ! se ob#ine prin structurarea hardware- ului cu un anumit program. Alegerea între o implementare pe baz ! de microcontroller, o implementare pe baz ! de circuit ASIC sau una combinat! depinde de aplica #ia respectiv ! $i de cerin#ele impuse. Prezenta carte constituie un material, dar f !r ! a absolutiza, pentru abordarea sistemelor pe baz ! de microcontroller. Materialul prezentat $i CD-ul

Upload: bogdan1106

Post on 17-Oct-2015

137 views

Category:

Documents


9 download

TRANSCRIPT

  • PREFA

    Se consider anul 1971, cnd INTEL a anunat producerea primuluimicroprocesor, ca momentul trecerii de la electronica implementat cablat laelectronica realizat programat. Primul microprocesor 4004 a fost conceput de M.E. Hoff ca un procesor puin simplificat pentru a putea fi implementat, la vremeaaceea, pe un singur chip n siliciu. Iniial, microprocesorul nu a fost un computer-on-a-chip, dei n timp a ajuns la acest stadiu; conceptul de microprocesor s-adezvoltat i spre alte implementri specifice: microcontroller, microcalculator,procesor de semnale (DSP). Oricare din aceste circuite, pentru a deveni parte aunui sistem, impune un proces de proiectare care se bazeaz n egal msur attpe componenta hardware ct i pe componenta software.

    Microprocesorul, sau celelalte variante ale sale, integrat ntr-un sistemaduc acestuia acea performan, care atunci cnd este realizat de fiina uman estereferit ca inteligen. n general, microprocesorul este integrat ca unitate centralde procesare n sistemele digitale de calcul. Actual, aproape toate sistemele au oarhitectur de sistem digital particularizndu-se n funcie de aplicare/utilizare.Aplicaiile care nu sunt, n sensul clasic, sisteme digitale de calcul sunt n generalimplementate pe baz de microprocesor sau DSP. Implementrile sistemelor pebaz de microcontroller ori DSP devin simple i ieftine -pentru c utilizeaz dejao component de serie, devin performante pentru c utilizeaz o component carepoate asigura suport pentru inteligen, devin flexibile pentru c utilizeaz ocomponent ce poate fi programat.

    Fora care a impus sistemele pe baz de microcontroller const nprogramabilitatea unei componente de serie. Pentru sistemele la care o componentde serie, chiar programabil n software, nu duce la rezultatele cele mai bune auaprut implementrile pe baz de circuite ASIC (Application Specific IntegratedCircuits). Spre deosebire de sistemele pe baz de microcontroller, undefuncionarea dorit se obine, n software, printr-un anumit program, la sistemelepe baz de circuite ASIC funcionarea dorit se obine prin structurarea hardware-ului cu un anumit program. Alegerea ntre o implementare pe baz demicrocontroller, o implementare pe baz de circuit ASIC sau una combinatdepinde de aplicaia respectiv i de cerinele impuse.

    Prezenta carte constituie un material, dar fr a absolutiza, pentruabordarea sistemelor pe baz de microcontroller. Materialul prezentat i CD-ul

  • VI MICROCONTROLLERE

    alturat asigur un traseu de la descrierea funcionrii unui microcontroller generic,dar i cu exemplificri comerciale, pn la analiza, sinteza implementarea itestarea unui sistem. Deoarece oferta pe pia pentru microcontrollere este vast ivariat, pe acest traseu s-a accentuat prezentarea comparativ i critic ncercnd sse imprime cititorului analiza lucid n faa avalanei agresive a ofertelor de pia.Cartea a fost elaborat n cadrul programului Tempus RESUME (REtrainingSUpport for small and Medium Enterprises) de la Universitatea TRANSILVANIAdin Braov, program care a avut printre obiective i sprijinul dezvoltrii de sistemepe baz de microcontrollere n/i pentru ntreprinderi mici i mijlocii. innd contde aceast adres cartea nu este destinat numai inginerilor n specialitatea deelectronic i ingineria calculatoarelor ci i inginerilor de alte specialiti care au opractic sau doresc s abordeze acest domeniu al sistemelor pe baz demicrocontroller. Nu exist actual produse de HiTech care s nu se bazeze direct sauindirect pe microprocesor sau microcontroller. n consecin, ntr-o economie detranziie, cum este a noastr, care dorete s se impun, formarea de personal cares tie s proiecteze/implementeze/exploateze sisteme pe baz de microcontrollereste o necesitate prioritar.

    Mulumim tuturor celor care ne-au sprijinit, colegilor Catedrei deElectronic i Calculatoare, d-l asist. ing. Rzvan Brtucu i mai ales domnilorprofesori Marcian Crstea de la DMU Leicester - Marea Britanie, Josef Hoffmannde la Fachhochschule Karlsruhe - Germania, Dr. Peter Corcoran - NationalUniversity of Ireland, MSC Eng.Petronel Bigioi, doctorand la UniversitateaTransilvania Braov precum i studenilor aceleiai universiti.

    Braov, Ianuarie 2001

  • CUPRINS

    DESCRIERE GENERAL ________________________________________________ 1

    1.1 ISTORIC __________________________________________________________ 11.2 SCHEMA BLOC GENERAL ____________________________________________ 31.3 ARHITECTURA MC__________________________________________________ 5

    1.3.1 Unitatea central de prelucrare ____________________________________ 61.3.2 Memoria _____________________________________________________ 81.3.3 Dispozitive I/O _______________________________________________ 10

    1.4 SISTEMUL DE NTRERUPERI___________________________________________ 281.5 MANAGEMENTUL PUTERII____________________________________________ 341.6 SCHEMA BLOC A UNUI MC____________________________________________ 351.7 FAMILII DE MC ___________________________________________________ 371.8 CLASIFICAREA MC ________________________________________________ 41

    PROGRAMAREA SISTEMELOR CU MC _________________________________ 43

    2.1 PROIECTAREA PROGRAMELOR DE APLICAIE _____________________________ 432.1.1 Generaliti __________________________________________________ 432.1.2 Instruciuni ale MC____________________________________________ 502.1.3 Instrumente software de proiectare: MC 8051 _______________________ 562.1.4 Instrumente software de proiectare: MC PIC ________________________ 67

    MICROCONTROLLERE MOTOROLA ___________________________________ 71

    3.1 MC M68HC05____________________________________________________ 723.1.1 Memoria intern ______________________________________________ 723.1.2 Unitatea central______________________________________________ 733.1.3 Moduri de adresare ____________________________________________ 753.1.4 Setul de instruciuni ___________________________________________ 763.1.5 Sistemul de ntreruperi _________________________________________ 773.1.6 Interfee i periferice on-chip ____________________________________ 783.1.7 Managementul puterii__________________________________________ 873.1.8 Autoverificarea _______________________________________________ 883.1.9 Programarea EPROM __________________________________________ 88

    3.2 MC M68HC08____________________________________________________ 893.2.1 Unitatea central 6808 _________________________________________ 903.2.2 Interfee i periferice on-chip ____________________________________ 913.2.3 Programarea memoriei EEPROM ________________________________ 96

    3.3 MC PE 16 BII - 6816_______________________________________________ 973.3.1 Modulul de integrare (SIM, System Integration Module) ______________ 983.3.2 Interfee_____________________________________________________ 98

    3.4 MC PE 32 DE BII - 68300 ___________________________________________ 993.5 DATE COMPARATIVE PENTRU MC MOTOROLA CISC_____________________ 100

  • VIII MICROCONTROLLERE

    FAMILIA MCS-51_____________________________________________________ 101

    4.1 STRUCTURA I FUNCIONAREA_______________________________________ 1024.1.1 Gestionarea memoriei_________________________________________ 1044.1.2 Circuitele timer______________________________________________ 1044.1.3 Interfaa serial UART ________________________________________ 1064.1.4 Sistemul de ntreruperi ________________________________________ 1064.1.5 Operarea cu economie de energie________________________________ 108

    4.2 PROGRAMAREA MC DIN FAMILIA MCS-51 _____________________________ 1084.2.1 Setul de instruciuni 8051 ______________________________________ 1084.2.2 Modurile de adresare _________________________________________ 110

    4.3 ALTE INTERFEE I PERIFERICE ON-CHIP ______________________________ 1114.3.1 Interfaa I2C (Siemens P80CL580)_______________________________ 1114.3.2 Aria de numrtoare programabil (PCA) _________________________ 1134.3.3 MC cu interfa pentru RAM nevolatil - NVRAM (Dallas DS5000FP) __ 1154.3.4 MC specializat pentru TV i video (PHILIPS 83C145) _______________ 1154.3.5 MC cu arie configurabil (TRISCEND E5) ________________________ 116

    4.4 SISTEM MINIMAL CU 8051 __________________________________________ 1184.5 DATE COMPARATIVE PENTRU MC DIN FAMILIA MCS-51___________________ 119

    MICROCONTROLLERE RISC _________________________________________ 121

    5.1 MICROCONTROLLER PIC ___________________________________________ 1215.1.1 PIC12 _____________________________________________________ 1215.1.2 PIC16 _____________________________________________________ 1255.1.3 PIC17 _____________________________________________________ 127

    5.2 MC ATMEL ____________________________________________________ 1295.2.1 Familia AVR________________________________________________ 1295.2.2 Familia ARM _______________________________________________ 138

    CRITERII DE PROIECTARE ___________________________________________ 141

    6.1 CRITERIILE PENTRU ALEGEREA UNUI MC_______________________________ 1416.2 ALGORITMUL PROIECTRII SISTEMELOR CU MC __________________________ 1436.3 PROIECTAREA SISTEMELOR CU MC N VEDEREA SIGURANEI N EXPLOATARE __ 145

    6.3.1 Cablajul imprimat ____________________________________________ 1466.3.2 Ceasul de gard______________________________________________ 1476.3.3 Programarea defensiv ________________________________________ 147

    APLICAII___________________________________________________________ 149

    7.1 IMPLEMENTAREA UNEI APLICAII SIMPLE DE COMAND I CONTROL DIGITAL _______________________________________________________ 149

    7.1.1 Varianta de implementare cu microcontroller CISC__________________ 1517.1.2 Varianta de implementare cu microcontroller RISC. _________________ 163

    7.2 IMPLEMENTAREA INTERFEELOR LA PROCES ___________________ 1817.2.1 Convertoare A/D controlabile serial______________________________ 1827.2.2 Interfaarea paralel a convertoarelor A/D _________________________ 1897.2.3 Convertoare A/D complexe ____________________________________ 1957.2.4 Convertor D/A controlabil serial ________________________________ 2017.2.5 Programarea unui sistem de dozare gravimetric dotat cu MC _________ 205

    BIBLIOGRAFIE_______________________________________________________ 219

  • 1DESCRIERE GENERAL

    1.1 ISTORIC

    Privind evoluia istoric a operaiei de comand a unui proces putemcontura imaginea unui microcontroller (MC - se va folosi n continuare aceastprescurtare pentru a numi un microcontroller). Un controller este un sistem folositpentru a comanda i a prelua stri de la un proces sau un aspect al mediuluinconjurtor. La nceput un controller era un echipament de mari dimensiuni. Dupapariia microprocesoarelor dimensiunile controller-elor s-au redus. Procesul deminiaturizare a continuat, toate componentele necesare unui controller au fostintegrate pe acelai chip. S-a nscut astfel calculatorul pe un singur chip specializatpentru implementarea operaiilor de control; acesta este microcontroller-ul. Unmicrocontroller este un circuit realizat pe un singur chip care conine tipic:

    unitatea central; generatorul de tact (la care trebuie adugat din exterior un cristal de cuar

    sau n aplicaii mai puin pretenioase, un circuit RC); memoria volatil (RAM); memoria nevolatil (ROM/PROM/EPROM/EEPROM); dispozitive I/O seriale i paralele; controller de ntreruperi, controller DMA, numrtoare/temporizatoare

    (timers), covertoare A/D i D/A, etc.; periferice.

    Preul unui MC este redus din cauza cantitilor mari n care se fabric.Preul mic al MC aduce cu sine i micorarea preului sistemelor de control (semicoreaz inclusiv costul proiectrii).

    Diferenele dintre microprocesor i unitatea central a MC se atenueaz ntimp. Astfel, marii constructori de procesoare au realizat nite circuite care s-arputea numi super-microcontroller-e, aa cum sunt Motorola 68EC300, INTEL386EX sau IBM PowerPC 403GB, care sunt microcalculatoare pe un singur chip.

  • 2 MICROCONTROLLERE

    Cu un MC se poate realiza un controller integrat (Embedded Controller,EC). Un controller integrat face parte dintr-un sistem construit cu un anumit scop,altul dect calcule generale. Pe lng MC, un controller integrat are nevoie dehardware suplimentar pentru a-i ndeplini funcia.

    Importana MC este dovedit incontestabil de piaa care este n continucretere. Astfel, evoluia vnzrilor de MC n lume se reflrct n tabelele 1.1 i 1.2.

    Tabelul 1.1

    Evoluia vnzrilor MC n lume (n milioane dolari)

    MC '90 '92 '94 '96 '97 '98 '99(estimat)

    '00(estimat)

    4-bit 1393 1596 1761 1849 1881 1856 1816 17578-bit 2077 2862 4689 6553 7529 8423 9219 971516-bit 192 340 810 1628 2191 2969 3678 4405

    Tabelul 1.2

    Evoluia vnzrilor MC n lume (n milioane buci)

    MC '90 '92 '94 '96 '97 '98 '99(estimat)

    '00(estimat)

    4-bit 778 979 1063 1100 1096 1064 1025 9708-bit 588 843 1449 2123 2374 2556 2681 270016-bit 22 45 106 227 313 419 501 585

    Principalii productori de microprocesoare au realizat n 1994 i 1995urmtoarele cifre de afaceri (tabelul 1.3).

    Tabelul 1.3

    Cifre de afaceri realizate n anii 1994, 1995 din vnzarea de microprocesoare(n milioane dolari)

    Productor 1994 1995Intel 10800 8036AMD 881 992Motorola 781 827IBM 468 297TI 219 202Cyrix 210 240Hitachi 188 66NEC 100 82LSI Logic 58 51IDT 45 25

  • 1. Descriere general 3

    n prezent datele arat modificri de structur; de exemplu cifra de afaceria AMD se apropie de cea a lui INTEL. Cifra de afaceri, ca ordin de mrime, eradeja n anii 1994, 1995 apropiat de cea realizat din vnzri de microprocesoare(tabelul 1.4).

    Tabelul 1.4

    Cifre de afaceri realizate n anii 1994, 1995 din vnzarea de microcontrollere(n milioane dolari)

    Productor 1994 1995Motorola 1781 1511NEC 1421 1208Mitsubishi 945 708Hitachi 899 782Intel 835 605TI 807 534Philips 524 345Matsushita 500 413Lucent (AT&T) 492 275Toshiba 400 328

    1.2 SCHEMA BLOC GENERAL

    Vom defini un microcontroller pornind de la o reprezentare simplificat asa n interaciune cu mediul (figura 1.1).

    Memoria

    Unitateacentral

    deprelucrare

    Generator detact

    IntrriIeiri

    Programe

    Figura 1.1 Schema simplificat a unui microcontoller

  • 4 MICROCONTROLLERE

    Ca intrri se folosesc de regul semnale provenind de la comutatoareleindividuale sau de la traductoare (de temperatur, de presiune, foto, traductoarespecializate). Intrrile pot fi digitale sau analogice. Intrrile digitale vehiculeazsemnale discrete, informaia "citit" fiind informaia ce se eantioneaz lamomentul citirii liniei respective. Intrrile analogice vehiculeaz informaiiexprimabile prin funcii continue de timp. "Citirea" acestora de ctremicrocontroller presupune prezena unor circuite capabile s prelucreze acesteinformaii, fie comparatoare analogice, fie convertoare analog-numerice, ale crorieiri sunt citite de ctre MC.

    Ieirile sunt fie analogice, caz n care reprezint de fapt ieiri aleconvertoarelor numeric-analogice, fie sunt digitale, caz n care informaia este ngeneral memorat pe acestea pn la o nou scriere operat de ctre UC la un portal MC. Ieirile pot comanda dispozitive de afiare, relee, motoare, difuzoare, etc.

    O structur mai detaliat, care include blocurile principale, estereprezentat n figura 1.2.

    Memorie pentruprograme

    Memorie pentrudate

    Dispozitive I/O

    Unitatea centrala de prelucrare(UCP)

    Oscilator

    Intrridigitale

    Ieiridigitale

    Bus dedate

    Bus deadrese

    Reset

    Figura 1.2 Schema bloc a unui microcontroller

  • 1. Descriere general 5

    Se poate distinge o prim diferen fa de calculatoarele personale, undeintrrile se fac de regul de la tastatur i ieirile pe monitorul TV sau laimprimant. Dac un calculator personal este folosit pentru a prelucra informaii ia afia rezultatele pe monitor sau hrtie, un MC comand un proces.

    Un element important, fr de care un MC nu poate funciona, esteprogramul (sau programele), care se stocheaz n memoria proprie MC.

    Un MC poate fi definit ca un sistem de calcul complet pe un singur chip.Acesta include o unitate central, memorie, oscilator pentru tact i dispozitive I/O.Un MC poate fi privit ca un microprocesor care pe acelai chip mai coninememorie i o serie de interfee. Natura i complexitatea aplicaiei n care estefolosit MC determin performanele unitii centrale, capacitatea de memorie itipul interfeelor ce compun structura intern a MC.

    1.3 ARHITECTURA MC

    Arhitectura unui MC definete atributele sistemului aa cum sunt elevzute de un programator n limbaj de asamblare. Deoarece un microcontroller esteun caz particular de calculator, (calculator specializat pentru operaii I/O, realizatpe un singur chip), acesta este compus din cele cinci elemente de baz: unitate deintrare, unitate de memorie, unitate aritmetic i logic, unitate de control i unitatede ieire. Unitatea de control mpreun cu unitatea aritmetic i logic compunmpreun unitatea central de prelucrare pe care o vom referi n continuareprescurtat cu UCP. Unitile de intrare i ieire vor fi tratate mpreun i vor fireferite prescurtat ca sistem I/O.

    Blocurile componente ale MC sunt legate ntre ele printr-o magistralintern (bus). Magistrala vehiculeaz semnale de adres, de date i semnale decontrol. Mrimea acestor magistrale constituie una dintre caracteristicile cele maiimportante ale unui MC. Prin magistrala de adrese unitatea central de prelucrare(UCP) selecteaz o locaie de memorie sau un dispozitiv I/O, iar pe magistrala dedate se face schimbul de informaie ntre UCP i memorie sau dispozitivele I/O.ntre UCP i memorie sunt transferate att date ct i instruciuni. Acestea se pottransfera pe o singur magistral de date sau pe magistrale de date diferite.

    Arhitectura von Neumann prevede existena unui bus unic folosit pentrucirculaia datelor i a instruciunilor. Cnd un controller cu o astfel de arhitecturadreseaz memoria, bus-ul de date este folosit pentru a transfera nti codulinstruciunii, apoi pentru a transfera date. Accesul fiind realizat n 2 pai, estedestul de lent.

    Arhitectura Harvard prevede un bus separat pentru date i instruciuni.Cnd codul instruciunii se afl pe bus-ul de instruciuni, pe bus-ul de date se afl

  • 6 MICROCONTROLLERE

    datele instruciunii anterioare. Structura MC este mai complex, dar performanelede vitez sunt mai bune.

    Magistralele interne, dup numele lor, nu sunt accesibile n exterior lanivel de pin. Aceast stare caracterizeaz regimul normal de funcionare. nregimuri speciale de funcionare, numite diferit la diferitele tipuri de MC,semnalele magistralelor de adrese i de date sunt accesibile la nivel de pinsacrificnd funciile iniiale ale pin-ilor respectivi. Totodat este necesar s fielivrate n exterior i semnale de comand (cel puin comand de scriere WR icomand de citire RD). Aceast facilitate este util pentru extensii de memoriesau pentru a ataa sistemului interfee suplimentare. Ea nu este posibil n modnormal de funcionare deoarece aceasta ar presupune existena unui numr foartemare de pini, ceea ce ar fi neeconomic. Magistralele de adrese i de date pot fiaduse la pin multiplexat sau nemultiplexat. Familia MCS-51 este un exemplupentru acces multiplexat la magistrale. Accesul se face n doi pai; n primul pas seconecteaz liniile de adres la pinii portului sacrificat, iar n al doilea pas seconecteaz datele la aceiai pini. Pentru a putea utiliza informaia de adresare,adresa se memoreaz ntr-un latch, de asemenea exterior microcontroller-ului.Complicarea accesului la magistralele interne prin multiplexare este justificat deasemenea din raiunea meninerii unui numr ct mai mic de pini la capsul. MCmai puin performante (ex. - MC low cost) nu au magistralele interne accesibile lanivel de pin.

    Ca urmare a celor prezentate se poate aprecia performana unui MC dinpunct de vedere al magistralei interne dup urmtoarele criterii:

    dimensiunea magistralei de date; dimensiunea magistralei de adrese; accesibilitatea n exterior la magistrale; magistrale accesibile multiplexat sau nemultiplexat.

    1.3.1 Unitatea central de prelucrare

    Unitatea central de prelucrare este compus din unitatea aritmetic ilogic (UAL) i din unitatea de control.

    Unitatea aritmetic i logic este seciunea responsabil cu efectuareaoperaiilor aritmetice i logice asupra operanzilor ce i sunt furnizai. Modul deimplementare a operaiilor este transparent pentru utilizator; important pentruutilizatorul de MC este repertoriul operaiilor implementate pentru a apreciaposibilitatea implementrii optime a aplicaiei particulare de control. De asemeneaeste important timpul de execuie al fiecrei operaii pentru a aprecia dac timpulnecesar procesrii complete satisface cerinele de timp ale aplicaiei.

    Unitatea ce control este responsabil cu decodificarea codului operaieiconinut de codul unei instruciuni. Pe baza decodificrii unitatea de control

  • 1. Descriere general 7

    elaboreaz semnale pentru comanda celorlalte blocuri funcionale pentru a finalizaexecutarea unei instruciuni. Modul de implementare al acestui bloc este deasemenea transparent utilizatorului.

    Unitatea central de prelucrare conine un set de registre interne, similareunor locaii de memorie, folosite pentru memorarea unor date des apelate saupentru programarea unor anumite funcii. Diferitele familii de MC folosesc seturidiferite de registre. Exist ns cteva registre comune.

    A (Accumulator) - registrul acumulator - este folosit deseori pentru a stocaun operand i rezultatul operaiei aritmetice sau logice.

    PC (Program Counter) registru numrtor de program - este registrulcare stocheaz adresa urmtoarei instruciuni de executat. Dup un RESET(iniializarea MC), registrul PC se ncarc dintr-o locaie de memorie numit vectorde reset. Aceast locaie conine adresa primei instruciuni de executat. PC esteincrementat automat la execuia unei instruciuni.

    SP (Stack Pointer) registrul indicator de stiv - coninutul acestui registruindic adresa curent a stivei. Stiva reprezint o zon de memorie accesibil rapidn care se depun temporar informaii importante n desfurarea programului. Stivaeste definit de obicei n RAM. Implementarea accesului presupune existena unuiregistru de adresare (SP) i a mecanismului de memorare declanat de instruciunispecifice (instruciunile PUSH/POP).

    Un aspect important ce se reflect n arhitectura unui MC este modul deprogramare. Prin arhitectur nelegem felul n care sunt dispuse "resursele" unuiMC. Cu ct structura, funcionalitatea i accesul la acestea sunt mai profundstandardizate i simetrizate, cu att numrul de instruciuni de care dispune MCeste mai redus i viteza de execuie a programelor crete.

    Conceptul CISC (Complex Instruction Set Computer) pe baza cruia suntconstruite majoritatea MC, prevede existena unui numr mare de instruciuni (tipic>80), ceea ce face mai uoar munca programatorului. Multe din instruciuni suntspecializate, adic se pot folosi doar n anumite moduri de adresare sau cu anumiteregistre.

    Evoluia MC este spre arhitectura RISC (Reduced Instruction SetComputer), n cadrul creia un MC are un numr mic de instruciuni. Avantajelesunt un chip mai mic, cu un numr de pini mai mic, cu un consum mai redus i cuo vitez mai mare. Instruciunile sunt simetrice, adic pot fi folosite la fel n oricemod de adresare sau cu orice registru, nu au excepii sau restricii.

    n prezent un MC este cu mai mult dect o arhitectur RISC, el este cu oarhitectur SISC (Specific ISC). Instruciunile sunt specifice pentru a lucra optimcu dispozitivele I/O, permit manipularea la nivel de bit i sunt mai puineinstruciuni de uz general, aa cum ntlnim la microprocesoarele 8086, 68000 etc.

    n general MC cu arhitectur CISC dispun de un numr redus de registre.Acestea au funcii determinate (acumulator, registru index,etc), iar MC cuarhitectur RISC dispun de un numr mai mare de registre cu un mare grad deortogonalitate ceea ce nseamn c pot fi folosite simetric n orice mod de adresare(ATMEL AVR are 32 de registre)

  • 8 MICROCONTROLLERE

    Registrele interne pot avea diferite dimensiuni, astfel registrele acumulatorau dimensiunea egal cu cea a magistralei de date (8, 16 sau 32 bii). Registrulnumrtor de program are dimensiunea egal cu cea a magistralei de adrese.Registrul indicator de stiv poate avea dimensiunea mai mic dect a magistraleide adrese permind localizarea stivei ntr-o zon restrns a memoriei RAM.Exist i MC cu stiv automat, acestea nu au nevoie de indicator de stiv dar audezavantajul c nu se pot folosi mai mult de 2-4 nivele de stiv (MC din familiaPIC).

    1.3.2 Memoria

    MC folosesc diferite tipuri de informaii, care sunt stocate n diferite tipuride memorii. Instruciunile care controleaz funcionarea MC trebuie stocate ntr-omemorie nevolatil, unde informaiile se pstreaz i dup oprirea i repornireasursei de alimentare. Rezultatele intermediare i variabilele pot fi nscrise ntr-omemorie volatil, la acestea este important s se poat face scrierea /citirea rapid isimplu n timpul funcionrii.

    Memoria RAM (Random Access Memory) este o memorie volatil carepoate fi citit sau scris de unitatea central. Locaiile din RAM sunt accesibile norice ordine. Pe chip, memoria RAM ocup mult loc i implicit costurile deimplementare sunt mari. De aceea un MC include de obicei puin RAM. MemorieRAM static alimentat de la baterie se folosete pentru stocarea nevolatil acantitilor mari de date, la o vitez de acces mare i cu un numr nelimitat detergeri i renscrieri.

    Memoria ROM (Read Only Memory) este cea mai ieftin i cea mai simplmemorie i se folosete la stocarea programelor n faza de fabricaie. Unitateacentral poate citi informaiile, dar nu le poate modifica.

    Memoria PROM (Programmable Read Only Memory) este similar cumemoria ROM, dar ea poate fi programat de ctre utilizator. Dup posibilitile detergere, aceast memorie poate fi de mai multe feluri:

    Memoria EPROM (Erasable PROM) care se poate terge prin expunere laraze ultraviolete. MC cu EPROM au un mic geam de cuar care permite ca chip-uls fie expus la radiaia ultraviolet. tergerea este neselectiv, adic se poate tergedoar ntreaga informaie i nu numai fragmente. Memoria poate fi tears irenscris de un numr finit de ori. Programarea EPROM-ului necesit o procedurspecial, iar MC cu EPROM au nevoie de regul pentru nscrierea EPROM-ului deo tensiune auxiliar, de 12 V de exemplu. Unele MC au incluse circuite deprogramare a memoriei EPROM, cu ajutorul crora unitatea central poateprograma memoria EPROM. n timpul programrii memoria EPROM nu esteconectat la magistrala de date i adrese. Unele MC sunt prevzute cu mod specialde lucru, n care sunt vzute din exterior ca nite memorii EPROM obinuite i potfi astfel programate cu orice programator.

  • 1. Descriere general 9

    OTP (One Time Programmable PROM) se folosete pentru multe serii deMC. Memoria OTP este de fapt o memorie EPROM, dar chip-ul a fost capsulatntr-o capsul de material plastic fr fereastr, care este mult mai ieftin. Memorianu se poate terge sau reprograma. Preul unui MC cu OTP este mic, viteza estebun, dar aplicaiile sunt lipsite de flexibilitate.

    Memoria EEPROM (Electrically Erasable Programmable Read OnlyMemory) poate fi tears electric de ctre unitatea central, n timpul funcionrii.tergerea este selectiv, iar pentru renscriere trebuie parcuri mai muli pai.Memoria EEPROM echipeaz multe MC, fiind ieftin. n memoria EEPROM sememoreaz un mic numr de parametri care se schimb din timp n timp. Memoriaeste lent i numrul de tergeri/scrieri este limitat (tipic 10 000).

    Memoria FLASH este o memorie asemntoare EPROM i EEPROM nsensul c poate fi tears i reprogramat n sistemul n care este folosit (fr a finecesar un sistem dedicat). Are capacitatea unui EPROM, dar nu necesit fereastrpentru tergere. Ca i EEPROM, memoria FLASH poate fi tears i programatelectric. Memoria FLASH nu permite tergerea individual de locaii, utilizatorulpoate s tearg doar ntregul coninut.

    Din punct de vedere al locului i modului de programare a memoriilor detip PROM exist dou concepte:

    ICP (In Circuit Programming) programarea memoriei cnd MC seafl pe placa de cablaj imprimat a aplicaiei;

    ISP (In System Programming) presupune posibilitatea dereprogramare n funcionare a sistemului. De exemplu laautovehiculele comandate de MC, schimbarea tipului benzinei sauschimbarea unei legi privitoare la poluare pot fi actualizate nprogramul MC fr ca acesta s fie scos din autovehicul.

    n funcie de numrul aplicaiilor n care urmeaz s fie folosit MC serecomand folosirea MC cu ROM pentru volum mare de producie (ROM senscrie cu masc la fabricant), OTP pentru volum mic de producie i EPROMpentru prototipuri.

    Tipul de memorie i capacitatea memoriei din echiparea unui MC suntcaracteristici particulare fiecrui tip de circuit. Printre alte diferene, acetiparametri sunt diferii pentru membrii unei aceleiai familii de MC. Se vorprezenta date concrete pentru exemplificare ntr-un tabel recapitulativ la sfritulcapitolului (tabelul 1.6).

    Pentru a aprecia un MC sub aspectul componentei memorie este necesar sse considere urmtoarele caracteristici:

    varietatea tipurilor de memorie pe chip: RAM, ROM /OTP /EPROM/EEPROM /FLASH;

    capacitatea memoriei aflat pe chip; uurina cu care se poate programa (programare n circuit sau nu,

    necesitatea unor tensiuni de programare suplimentare).

  • 10 MICROCONTROLLERE

    1.3.3 Dispozitive I/O

    Dispozitivele I/O reprezint un aspect de mare interes atunci cnd estevorba de microcontroller-e, interes rezultat din nsi particularitatea unui MC:aceea de a interaciona cu mediul n procesul de control pe care l conduce.

    Dispozitivele I/O implementeaz funcii speciale degrevnd unitateacentral de toate aspectele specifice de comand i control n funcia respectiv.Exist o varietate mare de dispozitive I/O; dispozitivele I/O conduc operaiigenerale de comunicaie (transfer serial sau paralel de date), funcii generale detimp (numrare de evenimente, generare de impulsuri), operaii de conversieanalog/numeric, funcii de protecie, funcii speciale de comand, i enumerareapoate continua. Parte din resurse acoper funciile de control propriu-zis, iar o parteasigur funciile necesare aplicaiilor n timp real (sistemul de ntreruperi, timer).

    Din aceast mare varietate, parte din dispozitive se gsesc n configuraiatuturor MC sau sunt foarte des ntlnite, iar o alt parte de dispozitive o regsimdoar n MC construite pentru a optimiza aplicaii cu un grad mare departicularitate. n acest capitol, n continuare, vor fi prezentate dispozitive desntlnite n echiparea MC. n capitolele urmtoare, pe msur ce vor fi prezentateexemple de MC, vor fi descrise i o serie de dispozitive I/O speciale ce intr ncomponena acestora.

    Dispozitivele I/O sunt vzute de unitatea central ca porturi. Exist doufilozofii de alocare a adreselor (mapare) pentru apelarea porturilor de ctre unitateacentral. Porturile sunt mapate fie n spaiul de memorie, fie ntr-un spaiu propriu.Cele dou metode sunt exemplificate la MC produse de Motorola i MC produsede Intel. La MC Motorola dispozitivele I/O ocup adrese ntr-un spaiu comun cumemoria, ceea ce atrage dup sine reducerea numrului de locaii de memorie. MCde la Intel folosesc un semnal care indic dac la adresa curent se apeleaz olocaie de memorie sau un dispozitiv I/O.

    Avantajele maprii n spaii separate:

    Metoda nu este susceptibil de a provoca erori soft deoarece sefolosesc instruciuni diferite pentru a accesa memoria i dispozitiveleI/O;

    Dispozitivele I/O nu ocup spaiu de memorie; Decodificatorul de adrese pentru dispozitivele I/O este mai simplu

    deoarece spaiul de adresare al dispozitivelor I/O este mai mic.

    Dezavantaje ale maprii n spaii separate:

    instruciunile I/O sunt mai puin flexibile n comparaie cuinstruciunile de lucru cu memoria;

    instruciunile I/O nu permit folosirea modurilor de adresare folosite nlucrul cu memoria.

    Avantajul maprii n spaiu comun:

  • 1. Descriere general 11

    toate instruciunile de lucru cu memoria i toate modurile de adresaresunt utilizabile i n tratarea dispozitivelo I/O (programarea operaiilorI/O este foarte flexibil);

    Dezavantajele maprii n acelai spaiu:

    este susceptibil la erori software; spaiul de adresare disponibil pentru memorie este mai mic.

    Avantajul maprii ntr-un spaiu comun este acela c se poate opera cuporturile la fel ca i cu o locaie de memorie; multe operaii aritmetice i logicefolosesc operanzi direct de la port, datele pot fi mutate ntre porturi cu o singurinstruciune, coninutul unui port poate fi citit, incrementat i rezultatul scris dinnou la port de asemenea cu o singur instruciune.

    Se contureaz trei direcii de evoluie a MC din punct de vedere alresurselor disponibile pe chip. O direcie este dezvoltarea de MC de uz general caresunt puse la dispoziia utilizatorului pentru a realiza aplicaii de la A la Z. O adoua direcie o reprezint dezvoltarea de MC specializate care dispun de resursespecifice unui anume gen de aplicaii (automobile, telecomunicaii, Internet,acionri electrice, etc). Pentru aceste MC specializate att structura hardware ct iinstruciunile sunt specifice i sunt calate pe un gen particular de aplicaii. Exist oa treia tendin de dezvoltare de MC care dispun de resurse hardware configurabilela utilizator. ntre resursele configurabile se afl memoria, elemente de logicprogramat, module specializate, gen convertoare A/D i convertoare D/A, imodule de procesare avansat a datelor.

    Porturi paralele

    Porturile paralele I/O faciliteaz transferul simultan al mai multor bii ntreMC i mediu. Numrul de bii transferai ca urmare a executrii unei instruciunidepinde de organizarea particular a porturilor n cadrul MC; unele porturi suntorganizate pe 8 bii, altele pe un numr mai mare de bii. Sensul transferului, I(input) sau O (output) este programabil i se stabilete de obicei ntr-un registru desens. Pentru a veni n ntmpinarea cerinelor specifice de interaciune cu mediulsunt implementate mecanisme de apelare la nivel de bit pentru registrele porturilorparalele I/O. Mecanismul presupune o structur hardware corespunztoare iinstruciuni pentru manipularea informaiei la nivel de bit (un operand este un bit).Astfel, la execuia unei instruciuni orientat pe bit, exist posibilitatea de atransfera un singur bit, de a masca bii care nu sunt folosii ntr-o operaieparticular i de a efectua operaii logice pe un singur bit al unui port paralel I/O.Datorit capabilitii de manipulare la nivel de bit la descrierea caracteristicilorsistemului paralel I/O se specific numrul total de linii I/O.

    MC68HC705C8 dispune de 31 de linii I/O digitale de uz general grupate n patruporturi (A, B, C i D). Porturile A, B, i C sunt porturi de cte opt bii fiecare i pun

  • 12 MICROCONTROLLERE

    la dispoziie n total 24 de linii care pot fi folosite fie ca intrri, fie ca ieiri. Portul Ddispune de 7 linii care pot fi folosite doar ca intri.

    Circuitul de interfa al portului paralel este responsabil de corectitudineatransferului cu dispozitivul I/O. n acest scop se foloseste una din urmtoarelemetode de sincronizare:

    Transfer direct (brute-force method) n cadrul acestei metode interfaa aredoar rolul de a transfera semnalele de la unitatea central spre dispozitivul I/O(dac este o operaie de ieire) sau de la dispozitivul I/O la unitatea central(dac este o operaie de intrare). Se folosete acest tip de transfer dac secitete nivelul unui potenial, dac se comand la ieire un nivel logic (pentrucomanda unor LED-uri, de exemplu).

    Transfer strobat (strobe method) aceast metod folosete semnale destrobare pentru a indica starea stabil a semnalelor la porturile de intrare sau deieire. ntr-o operaie de intrare, dispozitivul de intrare genereaz semnalul destrobare cnd datele sunt stabile la pinii portului de intrare al interfeei.Stocarea informaiei n registrul de date al interfeei se face cu semnalul destrobe. Daca este vorba de o operaie de ieire, cnd semnalele de date suntstabile, interfaa elaboreaz semnal de strobare cu care dispozitivul I/O preiaefectiv datele. Aceat metod poate fi folosit dac interfaa i dispozitivul I/Olucreaz la viteze comparabile.

    Transfer cu protocol (handshake method) exist cazuri n care vitezele delucru ale celor dou pri implicate n transfer sunt mult diferite i metodelemai sus amintite nu ofer cadrul potrivit pentru transferul datelor. Soluia esteca interfaa i dispozitivul I/O s poarte un dialog numit handshake. Suntnecesare dou semnale de protocol; unul din ele este elaborat de circuitul deinterfa iar cellalt de dispozitivul I/O. Tranzaciile de protocol difer pentruoperaii de intrare i de ieire.

    n figura 1.3 este ilustrat organizarea portului A al unui circuit particular(MC68HC705C8).

    Bit 7 6 5 4 3 2 1 Bit 0DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1 DDRA0

    0 0 0 0 0 0 0 0

    Starea registrelor de ieire nu este influenat de Reset

    PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

    Figura 1. 3 Organizarea portului paralel A (MC68HC705C8)

  • 1. Descriere general 13

    Registrul DDRA (Data Direction Register port A) este un registru de 8 biica i registrul de date PA al portului A . Sub fiecare din registre este reprezentatstarea iniial a registrelor (dup reset). n cazul particular considerat, portului PAeste implicit port de intrare.

    O structur posibil de circuit pentru o linie bidirecional de scriere/citirela porturi este redat n figura 1.4. Se poate constata modul n care acioneaz bituldin registrul de sens asupra circuitului driver de ieire.

    n partea stng a diagramei sunt reprezentate legturile spre magistralaintern de date a MC. n funcie de natura operaiei efectuate (citire sau scriere) ide valoarea bitului din registrul de direcie sunt posibile operaiile exprimate ntabelul 1.5.

    Tabelul 1.5

    Funciile unui pin I/O

    Operaie Bit DDR Funcie pin I/Oscriere 0 Pinul I/O este n mod intrare;

    datele pentru scriere vor fi nscrise n latch-ul de ieirescriere 1 Datele pentru scriere sunt nscrise n latch-ul de ieire

    i transferate de buffer-ul [1] pinului I/Ocitire 0 Este citit starea pinului I/Ocitire 1 Pinul I/O este n mod ieire; este citit informaia din

    latch-ul de ieire.

    Se poate observa c o linie de ieire a unui port paralel este mai mult dectun latch simplu; totodat, informaia nscris n latch-ul de ieire nu se schimbdect dac se efectueaz o nou operaie de scriere la port.

    Unele porturi paralele sunt considerate cvasi-bidirecionale, ceea censeamn c o linie poate fi folosit n acelai timp ca ieire i ca intrare. Aceastflexibilitate este considerat de interes n aplicaii i este posibil printr-un truc.

    Bit DDR

    Bit port ieire(latch)

    [1]

    [2]

    [3]

    pinI/O

    [1] Buffer de ieire

    [2] Buffer de intrare (activ pentru DDR=0)

    [3]Buffer de intrare (activ pentru DDR=1)

    Figura 1.4 Circuit bidirecional de scriere/citire la portul paralel

  • 14 MICROCONTROLLERE

    Figura 1.5 reprezint structura unei linii cvasi-bidirecionale. Trucul const nexploatarea facilitilor unui etaj de ieire cu drena n gol (open-drain) care n acestexemplu este pevzut cu o rezisten conectat intern la sursa de alimentare.

    Fiecare linie poate fi folosit independent ca intrare sau ca ieire. Pentru afi folosit ca intrare este necesar ca latch-ul s fie nscris cu unu logic (nQ va fi nacest caz zero) pentru ca tranzistorul n1 s fie blocat. Dac nu este ataat nimic lapin, rezistena intern de pull-up va determina citirea unui unu logic la pin. Daclinia este forat exterior n zero logic, etajul va genera curent prin rezistena depull-up, iar informaia citit va fi un zero logic. Exist structuri mai complicatecare n unele situaii necesit conectarea n exterior a unei rezistene de pull-up.

    Pentru a interaciona cu mediul unui MC i sunt necesare multe conexiunila nivel de pin, ceea ce nseamn un circuit cu un numr mare de pini. Dinconsiderente de fiabilitate i economice se caut reducerea numrului de pini aiunui circuit integrat. n aceast situaie a fost necesar un compromis n urma cruias-a ajuns la soluia prin care se atribuie unui pin funcii multiple (dou sau maimulte). Pinii astfel sacrificai sunt pinii portului paralel. La pinii porturilor paralelesunt accesibile celelalte resurse ale circuitului; pot fi amintite conexiunileinterfeelor seriale, conexiunile cu exteriorul ale modulelor timer, canalele deintrare ale convertoarelor A/D, liniile pentru generarea ntreruperilor externe.

    n mod normal de operare magistralele interne ale unui MC nu suntaccesibile n exterior, la nivel de pin. Exist situaii n care este necesar extensiaresurselor (extensia memoriei, spre exemplu) caz n care este necesar accesul lamagistralele interne. Pentru rezolvarea acestei probleme sunt folosii tot piniiporturilor paralele. Din nou, pentru economie de pini sacrificai, aceiai pini suntfolosii consecutiv pentru a vehicula adrese i apoi date. Deoarece adresele folosescliniile doar ca ieiri, adresa este disponibil la pinii portului paralel n timpulprimului ciclu de ceas al execuiei unei instruciuni. Adresa este memorat ncircuite exterioare (n latch-uri). n al doilea ciclu de ceas se vehiculeaz pe aceste

    pinI/O

    D

    CLK

    Q

    Q n1

    Pull-upintern

    VCCCitire latch

    Citire pin

    Scriere latch

    Bus intern

    Figura 1.5 Structura unei linii cvasi-bidirecionale

  • 1. Descriere general 15

    linii datele. Modul de lucru n care magistralele interne sunt disponibile la pini estenumit mod expandat de lucru.

    Pentru a evalua capabilitatea porturilor paralele se recomand considerareaurmtoarelor nsuiri:

    Numrul de linii I/O; Posibilitatea de a programa sensul liniilor I/O; Alte resurse accesibile prin funcii multiple la liniile I/O; Posibilitatea accesului la magistralele interne Aspecte electrice de interfaare.

    Module de comunicaii seriale

    Comunicaia serial este o metod bine agreat i n contextul MCdeoarece ofer compatibilitate cu o gam extins de dispozitive i necesit unnumr minim de fire, implicit un numr minim de conexiuni (pini puini).

    n transferul serial de date este necesar s se cunoasc nceputul i sfritulinformaiei transferate. Pentru a identifica cele dou coordonate emitorul ireceptorul trebuie s fie sincronizai. Sincronizarea se poate realiza prin treimetode, dintre care numai dou sunt folosite n MC, urmnd s le considerm doarpe acestea n continuare. Oricare din metode presupune c durata unui bit esteaceeai att la emitor ct i la receptor (este folosit acelai semnal de ceas pentruserializarea informaiei). Numrul de bii transmii ntr-o secund reprezint ratade transfer numit baud rate; aceasta se msoar n bii/secund (bps). Durata unuibit este 1/(baud rate).

    Modulul serial asincron

    Prima metod considerat este transferul serial asincron. Modulul serialasincron este referit ca UART (Universal Asynchronous Receiver Transmiter).ntr-un transfer serial asincron nceputul fiecrui byte este marcat de o tranziie aliniei meninut pe durata corespunztoare unui bit. Sfritul este marcat deasemenea de un bit de stop; bitul de stop const n meninerea liniei pe durata unuibit ntr-o stare predefinit. ntre bitul de start i bitul de stop sunt transferai biii deinformaie. O secven complet este compus dintr-un bit de start, opt sau noubii de date i un bit de stop, n total 10 sau 11 uniti de cod. Interfaa serialasincron poate fi implementat n dou moduri ntr-un MC.

    Cea mai puin costisitoare soluie din punct de vedere al cheltuielilor deresurse hardware este un program care s genereze secvena de transfer ca icomponen i ca durat a fiecrui bit. Programul trebuie s msoare duratafiecrui bit. Soluia este costisitoare din punct de vedere al timpului consumat nrularea programului.

  • 16 MICROCONTROLLERE

    A doua soluie de implementare a interfeei seriale este i cea mai desntlnit n MC. Interfaa este realizat cu un modul hardware specializat. Unitateacentral nscrie informaia de transferat ntr-un registru al interfeei dup caresarcina serializrii i a generrii secvenei este finalizat de ctre hardware-ulinterfeei. n cazul recepiei interfaa preia secvena recepionat, extrageelementele de sincronizare i nscrie datele efective ntr-un registru. Datelerecepionate sunt accesibile unitii centrale n acest registru al interfeei. n cazuln care registrul de transmisie este gol sau registrul de recepie este plin interfaasemnalizeaz starea i poate chiar suspenda temporar execuia programuluiprincipal prin ntreruperi hardware. O schem bloc simplificat a unei interfeeseriale asincrone este reprezentat n figura 1.6.

    Ceasul pentru generarea ratei de transfer poate fi intern sau extern. n cazuln care se selecteaz ceas intern, acesta se formeaz din ceasul unitii centrale cu oprescalare. Pentru ca rata de transfer s fie programabil ceasul prescalat sedivizeaz n continuare folosind un numrtor al unui timer din resursele proprii.Interfaa UART dispune de un registru de stare i un registru de control cu ajutorulcrora se pot prgrama modul de lucru, parametrii de comunicaie, selectareaceasului, divizarea ceasului.

    Conexiunile interfeei seriale asincrone sunt disponibile la pini cu funciimultiple la unul din porturile paralele.

    Magistrala intern

    Registru dedeplasare la

    recepie

    Registru dedeplasare latransmisie

    Cerere de ntrerupere ctre UC

    Bufferrecepie

    Buffertransmisie

    Registru deprescalare

    Baud rate

    Selecie ceas

    CLK TxD RxD

    Figura 1.6 Schema bloc a UART

  • 1. Descriere general 17

    Modulul serial sincron

    Urmtoarele dou metode de sincronizare posibile la transferul serial sunttransfer serial sincron i transfer serial autosincronizat. Transferul autosincronizatse bazeaz pe utilizarea unui sistem special de codificare a datelor. Sistemulpermite ca din datele recepionate s se poat extrage semnalul de ceas. Aceastmetod nu este folosit n MC.

    Transferul serial sincron este folosit pentru comunicaii locale ntreprocesoare sau cu dispozitivele periferice. n transferul sincron datele transferatesunt nsoite de semnalul de clock. Semnalul de clock este transferat pe o liniededicat. Transferul serial sincron necesit trei conexiuni: emisie, recepie i clock.Interfaa hardware este mai simpl dect la transferul asincron. Protocolul dintreemitor i receptor include o scurt perioad de sincronizare la iniierea unuitransfer de date. Spre deosebire de transferul asincron, la care sincronizarea se faceprin bitul de start al fiecrui octet, la transferul sincron aceasta are loc o singurdat, la nceputul transferului unui bloc de date. Transferul serial sincron permiterate de transfer mai mari dect transferul serial asincron; rate de 1Mbps.

    ntr-o conexiune serial sincron unul din dispozitive este master iarcellalt este slave. Un transfer poate fi iniiat doar de un master. Master-ul scrie unoctet n registrul de transmisie de date al interfeei seriale sincrone. Datele sunttransferate unui registru de deplasare unde sunt serializate i transmise pe linia deemisie numit MOSI (Master Output Slave Input). Pe linia SCK (Serial Clock) estetransmis clock-ul. La slave datele ajung tot pe linia MOSI ntr-un registru dedeplasare unde sunt deplasate cu ceasul recepionat pe linia SCK. La umplerearegistrului de deplasare datele sunt transferate n registrul de recepie de date.

    Conexiunile interfeei seriale sincrone sunt disponibile la pini cu funciimultiple la unul din porturile paralele. Pinii asociai unei conexiuni seriale sincronesunt urmtorii:

    MISO Master In Slave Out Pinul MISO este configurat ca intrare ntr-unmaster i ieire dintr-un slave. MISO este conexiunea prin care se transmit datentr-un sens (de la slave la master). Ieirea MISO la un slave este n starea de naltimpedan dac dispozitivul slave nu este selectat.

    MOSI Master Out Slave In Pinul MOSI este configurat ca ieire dintr-unmaster i intrare ntr-un slave. MOSI este cea de-a doua conexiune prin care setransmit date n cellalt sens (de la master la slave).

    SCK Serial Clock Pinul SCK este ieire la un master i intrare la un slave. Prinaceast conexiune se transmite semnalul de sincronizare pentru transferul datelorpe liniile MISO i MOSI. Pe durata a opt perioade ale SCK se transfer ntremaster i slave un byte de informaie.

    nSS non Slave Select La pinul nSS se aplic semnalul care selecteaz undispozitiv slave; pentru un dispozitiv slave, semnalul trebuie s fie activ (low) petoat durata unei tranzacii n care este implicat. Pentru un dispozitiv master,

  • 18 MICROCONTROLLERE

    intrarea nSS se conecteaza permanent la 1 logic; n cazul n care la master, intrareanSS devine 0, se seteaza un flag de eroare (MODF) n registrul de stare al interfeeiseriale sincrone. Pinul nSS al unui master poate fi configurat i ca ieire de uzgeneral prin setarea unui bit n registrul de sens DDRD. Ceilali trei pini, amintiianterior, sunt dedicai interfeei sincrone atta timp ct este validat.

    n sistemele care folosesc funcia serial sincron exist un master i unulsau mai multe dispozitive slave. Exist mai multe soluii de interconectare; acesteavor fi prezentate n continuare.

    n cazul n care n sistem este un singur slave, conexiunea este fcut ca nfigura 1.7.

    Interfaa serial sincron permite interconectarea mai multor dispozitive,dintre care unul singur este master. Exist dou soluii pentru o conexiune multi-slave. n una din ele master-ul folosete ieiri de porturi pentru a selectadispozitivul slave cu care se face transferul; n cealalt soluie, toate dispozitiveleslave sunt selectate i sunt legate n inel. Conexiunea cu selecia fiecrui dispozitivslave este reprezentat n figura 1.8.

    Un alt mod de a realiza o conexiune serial sincron n care exist maimult dect un slave este reprezentat n figura 1.9. Acest tip de conexiune difer deprecedentul prin urmtaorele:

    Pinul MISO al fiecrui slave este conectat la pinul MOSI aldispozitivului slave vecin. Pinul MOSI de la master este n continuareconectat la pinul MOSI de la primul slave.

    Pinul MISO de la master este conectat cu pinul MISO al ultimuluidispozitiv slave.

    Intrrile nSS ale tuturor dispozitivelor slave sunt conectate la mas. Nueste necesar comanad de selecie de la master n aceast conexiune.

    SLAVE

    Registru dedeplasare (8b)

    MASTER

    Registru dedeplasare (8b)

    generatorclock

    MISO MOSI

    MOSI MISO

    SCK SCK

    nSS

    nSS

    +5V

    Figura 1.7 Conexiune serial sincron master-slave

  • 1. Descriere general 19

    Conexiunea din figura 1.9 folosete un numr minim de pini pentru acontrola un numr mare de dispozitive. Ca dezavantaj, master-ul nu poate selectaun anume slave pentru transferul de date, datele trec prin toate dispozitivele dininel pn la dispozitivul adresat.

    Interfaa serial sincron este folosit pentru a comunica cu periferice cumar fi un simplu registru de deplasare, un sistem de afiare LCD sau un sistem deconversie A/D. Modulul serial sincron este suficient de flexibil pentru a interfaa

    MOSI SCK MISO nSS

    RD

    SLAVE 0

    MOSI SCK MISO nSS

    RD

    SLAVE 1

    MOSI SCK MISO nSS

    RD

    SLAVE k

    MASTER

    RD

    SCK

    MOSI

    MISO

    nSSPB0PB1

    PBk

    +5V

    Figura 1.8 Conexiune serial sincron single-master multi-slave (varianta 1)

    .

    MOSI SCK MISO nSS

    RD

    SLAVE 0

    SCK

    MASTER

    RD

    MOSI

    MISO

    nSS

    MOSI SCK MISO nSS

    RD

    SLAVE 1

    +5V

    MOSI SCK MISO nSS

    RD

    SLAVE k

    Figura 1.9 Conexiune serial sincron single-master multi-slave (varianta 2)

    .

  • 20 MICROCONTROLLERE

    direct periferice cu standarde diferite, provenite de la diveri productori.Conexiunea serial sincron poate fi folosit i pentru a extinde numrul deintrri/ieiri acolo unde acesta este limitat de numrul de pini ai capsulei MC.

    Interfeele seriale amintite sunt ntlnite n MC cu urmtoarele nume:

    SCI (Serial Communications Interface) este un subsistem I/O serialindepenent, de tipul full duplex asincron (UART) numit astfel n MC Motorola.

    SPI (Serial Peripheral Interface) este un modul serial folosit pentru acomunica sincron la distane mici cu viteze de pn la 4 Mbps

    SCI+ este similar cu SCI, are n plus suport pentru comunicaii serialesincrone. Dispune de o ieire de ceas folosit pentru a transfera date n mod sincroncu un periferic de tip SPI.

    SIOP (Simple I/O Port) este o implemenatre mai simpl a SPI.

    Module Timer

    Natura aplicaiilor pentru care s-a nscut microcontroller-ul implic omultitudine de funcii de timp puse la dispoziia utilizatorului prin module de timpnumite timer. Un MC este echipat n mod obligatoriu cu un astfel de modul maimult sau mai puin complex. Un sistem timer obinuit pune la dispoziie un set defuncii implementate pe baza unui numrtor liber central i a unor blocurifuncionale pentru fiecare funcie n parte. Timer-ul are n structura sa, dintre toatecelelalte subsisteme, cele mai multe registre. Toate funciile unui timer pot generantreruperi independente; fiecare are controlul propriu i propriul vector dentrerupere.

    Modulele timer complexe sunt construite cu arii de numrare programabile(PCA). Pentru aplicaii speciale n timp real s-au construit module timer cu unitatearitmetic i logic proprie.

    Timer-ul este folosit pentru a msura timpul i pentru a genera semnale cuperioade i frecvene dorite. Timer-ele nu sunt doar circuite cu funcii detemporizare; n modulul timer sunt implementate cteva mecanisme care pun ladispoziia utilizatorului funcii specifice. Mecanismul de comparare permitecontrolul unor semnale de ieire; mecanismul de captur permite monitorizareaunor semnale de intrare; numrtoarele interne permit generarea de referine detimp interne, necesare n bucle de ntrziere, multiplexarea diferitelor sarcinisoftware, .a. Timer-ul poate fi folosit practic pentru orice funcie de timp, inclusivgenerarea unor forme de und sau conversii D/A simple. Funciile oferite de untimer sunt:

    1. Captur la intrare (IC - input capture) - aceast funcie se bazeaz peposibilitatea de a stoca valoarea numrtorului principal la momentul apariieiunui front activ al unui semnal extern. Facilitatea permite msurarea limiiunui impuls sau a perioadei unui semnal. Facilitatea poate fi folosit i careferin de timp pentru declanarea altor operaii.

  • 1. Descriere general 21

    2. Comparare la ieire (OC - output compare) - se compar la fiecare impuls deceas valoarea numrtorului principal cu cea a unui registru. Dac se constategalitate, n funcie de programarea anterioar pot avea loc urmtoareleevenimente: declanarea unei aciuni la un pin de ieire (opional), setarea unuiflag ntr-un registru sau generarea unei ntreruperi pentru unitatea central(opional). Funcia este folosit pentru a genera ntrzieri sau pentru a genera oform de und cu valori dorite pentru frecven i pentru factorul de umplere .

    3. ntreruperi n timp real (RTI real-time interrupt) ntr-un sistem existsarcini care trebuiesc executate periodic sau care nu permit depirea unuiinterval limit ntre doua execuii. Aceste sarcini sunt lansate ca rutine detratare a ntreruperii generate de timer.

    4. COP (computer operating properly) watchdog aceast funcie este folositpentru a reseta sistemul n cazul n care din erori de programare (bugs) sauerori n desfurarea programului datorate perturbaiilor mediului, registrulCOP nu este accesat ntr-un interval de timp prescris.

    5. Acumulare de pulsuri (pulse accumulator) este funcia folosit pentru anumra evenimentele ce apar ntr-un interval de timp determinat sau pentru amsura durata unui impuls.

    Numrtorul liber

    n figura 1.10 sunt prezentate elementele de baz din componena unuitimer, partea de numrtor liber.

    Numrtorul este pilotat de un clock provenit din clock-ul unitii centraledivizat cu un factor de regul programabil. Numrtorul este nscris cu 0 doar lareset, iar n rest este un registru de tip read-only. Cnd numrtorul tranziioneazdin starea FFFFh n starea 0000h, se seteaza flag-ul TOF (timer overflow) aflat

    ClockMC

    :1,4,8,16

    TCNT(H) TCNT(L)

    Numrtor16 biti La RTI, COP i

    acumulator de impulsuri

    TOI

    TOF

    Cerere de

    ntrerupere

    Figura 1.10 Schema bloc a unui timer (MC 68HC11) numrtorul liber

  • 22 MICROCONTROLLERE

    ntr-un registru neoperaional asociat modulului timer. Pentru a autoriza generareaunei ntreruperi este necesar s fie setat un flag de autorizare (TOI).

    Factorul de divizare a clock-ului este stabilit ntr-un registru asociat.Registrul TCNT de 16 bii permite citirea strii numrtorului. Se

    recomand citirea numrtorului folosind o instruciune care opereaz pe 16 bii; nacest fel ambii octei ai numrtorului aparin aceleiai stri de numrare. Dac sefac dou citiri, accesnd pe rnd partea mai semnificativ i partea mai puinsemnificativ, cele dou informaii nu vor aparine aceleiai faze de numrare.

    Captura la intrare

    Unele aplicaii necesit cunoaterea localizrii n timp a momentului ncare are loc un eveniment. ntr-un calculator, timpul fizic este reprezentat princoninutul unui numrtor, iar apariia unui eveniment este reprezentat printr-otranziie de semnal. Momentul apariiei evenimentului poate fi nregistrat prinmemorarea strii numrtorului.

    Funcia de captur la intrare este implementat de un circuit care areschema bloc reprezentat n figura 1.11.

    Timpul fizic este reprezentat de valoarea coninut de numrtorul liber.La apariia unui eveniment materializat printr-o tranziie la pinul ICx, coninutulnumrtorului liber este preluat n latch-ul de 16 bii din blocul de captur.Utilizatorul poate s valideze funcia de captur, poate s aleag frontul activ altranziiei i poate s autorizeze generarea unei ntreruperi ctre unitatea central ladetectarea frontului activ. Dac un canal de captur nu este validat, pinul de intrarece i este asociat poate fi folosit ca intrare de uz general. ntreruperile intrrilor decaptur sunt vectorizate, fiecrei ntreruperi i este alocat o poziie bine definit ntabela vecorilor de ntrerupere.

    Funcia de captur are multe aplicaii, cteva din ele descrise pe scurt ncontinuare:

    Latch16 bii

    TICx

    ICxF

    ICxI Cerere de

    ntrerupere

    Detector detranziii

    PinICx

    Figura 1.11 Funcia de captur la intrare schema bloc

  • 1. Descriere general 23

    1. Localizarea momentului apariiei unui eveniment - funcia de captur estefoarte util n cazul n care este necesar cunoaterea momentelor la care auavut loc evenimentele. Numrul de evenimente monitorizate sub acest aspecteste limitat de numrul de canale de captur ale MC.

    2. Msurarea perioadei pentru msurarea perioadei unui semnal necunoscut seprocedeaz la determinarea timpului scurs ntre dou tranziii consecutive deacelai fel; dou fronturi pozitive consecutive sau dou fronturi negativeconsecutive.

    3. Msurarea limii unui impuls Pentru a msura limea unui impuls semsoara timpul scurs ntre un front pozitiv i frontul negativ ce i urmeaz.Deoarece numrtorul liber este un numrtor pe 16 bii, intervalul maximmsurabil cu un ciclu de numrare este limitat la de 216 ori periada unui clock(clock-ul numrtorului). Dac se msoar intervale mai mari, se va lua nconsiderare i numrul de tranziii de la valoarea maxim la 0 a numrtoruluiliber.

    4. Generarea unei ntreruperi Fiecare canal de captur poate genera opional ontrerupere dac se detecteaz la intrarea de captur frontul stabilit a fi activ.

    5. Numrarea unor evenimente considernd c un eveniment este reprezentat deo tranziie de semnal, cu funcia de captur la intrare folosit n combinaie cufuncia de comparare la ieire, pot fi contorizate evenimentele ce apar ntr-uninterval de timp stabilit. La apariia unui eveniment se genereaz o ntrerupere;n rutina de servire a ntreruperii se incrementeaz un contor de evenimenterealiznd astfel nregistrarea numrului de apariii. Sfritul intervalului decontorizare este stabilit cu ajutorul funciei de comparare la ieire.

    6. Referin de timp aplicaia folosete n combinaie funcia de captur laintrare i funcia de comparare la ieire. Dac utilizatorul dorete s activeze unsemnal de ieire la un interval dorit dup detectarea unui eveniment, se vafolosi funcia de captur la intrare pentru a stabili momentul apariieievenimentului de referin. Se va aduna la valoarea numrtorului reinut lacaptur un numr dorit de cicluri de numrare i se va transfera aceast valoareregistrului de comparare. Cnd numrtorul liber atinge valoareacomparatorului se va genera o ntrerupere n rutina creia se va activa ieireadorit.

    Comparare la ieire

    Scema bloc a componentei care realizez funcia de comparare estereprezentat n figura 1.12.

    Un canal de comparare const dintr-un comparator pe 16 bii, un registrude comparare pe 16 bii, un circuit de generare de ntreruperi, o ieire de comparare

  • 24 MICROCONTROLLERE

    i o logic de comand. Un sistem timer dispune de mai multe canale de comparare(68HC11 are cinci canale de comparare).

    Principala aplicaie a unei funcii de comparare este ntreprinderea uneiaciuni la un moment de timp viitor bine determinat, cnd numrtorul liber atingeo anumit valoare. Aciunea ntreprins ar putea fi comutarea unui semnal,acionarea unui ntreruptor electronic, aprinderea unui LED, etc. Pentru a folosifuncia de comparare este necesar parcurgerea urmtoarei secvene:

    1. se copiaz valoarea din numrtorul liber (coninutul registrului TCNT);2. se adaug la copie o valoare determinat de ntrzierea dorit;3. se transfer rezultatul n registrul de comparare.

    Aciunea dorit la pinul ieirii de comparare se specific anterior de ctreutilizator ntr-un registru asociat modulului. Comparatorul compar valoareanumrtorului liber TCNT cu valoarea din registrul de comparare la fiecare clock.Dac se constat egalitate, se activeaz aciunea specificat la pinul de compararei se seteaz flag-ul asociat. De asemenea, se va genera o ntrerupere dac aceasta afost validat anterior prin bitul OcxI din registrul pentru validarea ntreruperilor.ntreruperile sunt vectorizate; fiecare canal are o a adres cunoscut n tabelavectorilor de ntrerupere.

    ntreruperile n timp real RTI

    Funcia RTI este folosit pentru a genera periodic ntreruperi; ntreruperilepot fi folosite pentru a comuta ntre aplicaii n sisteme multitasking sau pentru adeclana periodic execuia unei secvene. Perioada apariiilor ntreruperilor n timpreal este programabil. Ca rezoluie, funcia de ntrerupere nu este la fel deperformant ca i funcia de comparare.

    Comparator16 bii

    TOCx

    OCxF

    OCxI Cerere de

    ntrerupere

    Figura 1.12 Funcia de comparare la ieire schema bloc

    Ctrl.pin

    PinOCx

  • 1. Descriere general 25

    COP - Watchdog

    COP (Computer Operating Properly) este un ceas de gard, numitwatchdog, folosit pentru a detecta erorile de program. Folosirea ceasului de gardeste opional. n cazul n care se folosete, programul utilizator trebuie s resetezeperiodic un registru COP; dac nu are loc resetarea, unitatea centrala decide c aaprut o problem n rularea programului i reseteaz sistemul pentru a preveni odesfurare necontrolat a programului.

    Funcia ceasului de gard poate fi realizat folosind un canal timer de uzgeneral sau, situaia ntlnit n mod obinuit la MC, ceasul de gard este un timerdedicat, folosit doar pentru funcia gard. Structura unui modul watchdog estereprezentat n figura 1.13

    Ceasul de gard este un timer simplu compus dintr-un numrtor al cruiceas de numrare este programabil printr-un registru de prescalare. Dac circuituleste activat, numrtorul numr continuu. Dac numrtorul ajunge la valoareacea mai mare (FFFFh, dac este un numrtor de 16 bii). se genereaz un RESETctre unitatea central. Este sarcina programatorului s scrie periodic n registrul decontrol un cuvnt care s inii e numrtorul. n cazul n care programul apierdut controlul se va reseta si l.

    Acumulatorul de impu

    Modulul timer poate sacest registru pot fi numratnumrate chiar pulsuri interne,

    1. Numrare de evenimente front activ detectat la unprogram, cicluri ale unui numrate n acumulatorultranziii.

    BUS INTERN

    Registru deprescalare

    Registru decontrol

    Numrtor

    INIT

    RESET

    Figura 1.13 Schema bloc a unui modul watchdog

    Clockalizezstemulsuri

    dispun de un registru acumulator de impulsuri. ne evenimente exprimate prin pulsuri sau pot fiprovenite de la clock-ul unitii centrale.

    numrtorul de 8 bii este incrementat la fiecare pin. Un eveniment poate fi orice, segmente desemnal de intrare, uniti de timp, etc. Pentru a fi de impulsuri, acestea trebuiesc transformate n

  • 26 MICROCONTROLLERE

    2. Numrare gardat numrtorul de 8 bii funcioneaz n regim liber denumrare avnd la intrarea de clock un semnal provenit din clock-ul unitiicentrale divizat cu un factor constant. O aplicaie uzual n acest mod defuncionare este msurarea duratei unui puls (impuls singular). Numrtoruleste nscris cu 0 la nceputul pulsului, iar la sfritul pulsului se citete valoareasa.

    Module PWM

    Un semnal PWM (Puls Width Modulation) este folosit n multe aplicaii;comanda motoarelor de curent continuu sau comanda surselor de alimentare pot fiamintite ca principale aplicaii. n figura 1.14 este reprezentat un semnal PWM.

    Semnalul PWM este un semnal periodic la care se poate modifica n modcontrolat factorul de umplere. Modulele timer au resursele necesare generrii unuisemnal cu factor de umplere variabil. Deoarece, dup cum am mai amintit,semnalul PWM este utilizat n aplicaii exist module timer dedicate acesteifuncii; modulele PWM. Un modul PWM poate genera mai multe semnalemodulate. Structura unui canal PWM este reprezentat n figura 1.15.

    Registrul de prescalare genereaz clock-ul pentru un numrtor. Clock-ulde numrare este programabil. Coninutul numrtorului este comparat cu cel al

    T1

    T2Factorul de umplere este

    T2/T1

    Fig. 1.14 Semnal PWM

    clockintern

    Fig. 1.15 Schema bloc a canalului PWM

    BUS INTERN

    NumrtorPWM

    Comparator pe 8 biiPWM

    Registru prescalare

  • 1. Descriere general 27

    registrului PWM. Ct timp rezultatul comparaiei este mai mic sau egal, se vagenera un unu logic la ieirea PWM. Dac rezultatul comparaiei este mai mare, seva genera la ieirea PWM un zero logic. Dac registrele comparate sunt de opt biifactorul de umplere poate fi ntre 1/256 i 1. Un canal PWM odat programat vagenera la ieire semnalul periodic continuu, fr intervenia unitii centrale.

    Ca i la celelalte componente funcionale, n ceea ce privete globalmodulele timer (includem i modulele watchdog i PWM) vor fi prezentate nncheiere cteva criterii de apreciere:

    numrul de canale timer i dimensiunea registrului de numrare; flexibilitaea timere-lor, mecanisme implementate; existena unui ceas de gard (watchdog); numrul de canale PWM i dimensiunea registrului PWM.

    Module A/D i D/A

    Intrrile/ieirile analogice i convertoarele A/D nu sunt considerate caparte definit n contextul unui calculator; aceste elemente sunt importante nschimb atunci cnd considerm un microcontroller. Prezena modulelor A/D iD/A n structura unui MC contribuie la putereaacestuia n aplicaii deoareceinterfaarea cu mediul presupune necesitatea de a prelucra sau de a elabora mrimianalogice.

    Convertoarele A/D sunt des ntlnite printre perifericele on-chip.Convertoarele D/A nu sunt ntlnite n mod uzual printre unitile componentedeoarece sunt relativ uor implementate n exterior. Un convertor D/A simplupoate fi realizat folosind un timer n mod PWM i integrnd pulsul n exterior cuun simplu circuit RC.

    Convertoarele A/D integrate pe chip sunt convertoare cu aproximaiisuccesive sau mai rar, convertoare cu integrare. nsuirile convertoarelor nu suntdeosebite; sunt convertoare lente n comparaie cu cele implementate n circuiteindependente. Timpii de conversie obinuii sunt plasai n intervalul 10s-25s.Rezoluia este de 8, 10 sau 12 bii iar precizia de +/-1/2LSB. Modulul de conversieeste prevzut i cu un multiplexor analogic, astfel sunt disponibile mai multecanale de intrare. Unele MC sunt echipate i cu circuit de eantionare/memorare. ncazul n care circuitul de eantionare/memorare lipsete, semnalul analogic trebuiemeninut constant pe durata unei conversii. Tensiunea de referin necesarconvertorului poate fi generat n circuit sau dac nu, este necesar s fie furnizatdin exterior.

    n continuare, n figura 1.16 este prezentat o schem bloc simpl a unuimodul de conversie A/D. Circuitul analogic de intrare const ntr-un multiplexoranalogic, un circuit de eantionare/memorare i un convertor A/D cu aproximaiisuccesive. Tensiunea de referin pentru convertor i masa analogic sunt furnizatedin exterior la pini speciali. Clock-ul necesar convertorului este generat intern dinclock-ul unitii centrale.

  • 28 MICROCONTROLLERE

    Modulul A/D folosete un registru de control prin care se selecteazcanalul de conversie i modul de lucru pentru circuitul de eantionare/memorare.Declanarea i terminarea conversiei sunt semnalizate cu cte un bit tot n registrulde control. Rezultatul conversiei este stocat n registrul de date. Registrul de dateva conine ntotdeauna rezultatul ultimei conversii, de aceea acest registru trebuiecitit nainte de terminarea urmtoarei conversii, n caz contrar se pierde informaia

    Conversia poate fi declanat intern, considernd bitul asociat din registrulde control, sau din exterior printr-un semnal de comand aplicat la pin.Declanarea unei conversii la un moment de timp dorit, fr intervenia unitiicentrale, se poate realiza folosind un timer. Modulul poate fi programat s executeo conversie a unui canal i s se opreasc. Un alt mod de operare al modululuipoate fi conversia continu a unui canal pna la recepionarea unei comenzi dencheiere. Un alt mod de operare este conversia ciclic n care modulul execut pernd conversia fiecrui canal, dup care se oprete. n acest ultim mod sunt folositede obicei mai multe registre de date pentru memorarea rezultatelor conversiilor.Rezultatele sunt citite dup ncheierea unui ciclu. La terminarea unui ciclu deconversiei, opional, se poate genera o ntrerupere ctre unitatea central.

    n aplicaii de precizie se recomand ca pe durata conversiei s se comuteunitatea central n stare inactiv pentru ca aceasta s nu perturbe convertorul.

    1.4 SISTEMUL DE NTRERUPERI

    Sistemul de ntreruperi reprezint mecanismul ce asigur sincronizareafuncionrii unitii centrale cu evenimentele. Acest mecanism asigurimplementarea unui rspuns prompt i specific al sistemului la orice cerere de

    ADC0ADC1ADC2ADC3

    Muxanalogic Convertor Analog Digital

    Registru de control Registru de date

    Seleciecanal

    START STOPDate

    Figura 1. 16 Schema bloc a modului de conversie A/D

    pinstart

    E/nM

    bus intern

  • 1. Descriere general 29

    ntrerupere. Muli dintre productori au realizat pentru diversele familii demicrocontroller-e variante constructive care difer uneori substanial unele fa dealtele, scopul fiind fie acela al simplificrii sistemului, fie acela al asigurrii unorfaciliti ct mai adecvate aplicaiilor pentru care au fost proiectate respectivelemicrocontroller-e.

    nc din anii 1980-1985 s-a conturat un principiu care se confirm iastzi: "fiecare funciune complex cu procesorul ei", respectiv "fiecare funciune aunui sistem de comand cu rutina ei de servire a ntreruperilor".

    Evenimentele, sunt acele stri din funcionarea sistemului care trebuieavute n vedere la controlul acestuia. Ele trebuie s declaneze, cu o ntrziereminim, un rspuns adecvat din partea sistemului, rspunsul trebuind s fie descrisde ctre proiectant prin instruciuni incluse n cadrul unor rutine de servire antreruperilor.

    n cazul microcontroller-elor, ca de altfel i n acela al microprocesoarelor,aceste evenimente trebuie privite ca informaii de stare a sistemului, informaii cerezult fie urmare a prelucrrii de ctre UC a datelor, (evenimente ce genereaz aanumitele ntreruperi interne), fie urmare interaciunii sistemului cu mediulnconjurtor (numite i ntreruperi externe). Acest din urm aspect estepreponderent n cazul microcontroller-elor.

    Unitatea central a MC analizeaz n cadrul ultimei perioade de ceascorespunztoare fiecrui ciclu instruciune eventualele cereri de ntrerupere postatepe parcursul execuiei instruciunii curente.

    Ca orice sisteme deterministe, sistemele digitale dotate cu microcontroller-e sunt ancorate, n funcionarea lor, ntr-un spaiu multidimensional ce are dreptdimensiuni parametrii proprii i cei reglai de ctre sistem ("mrimile de stare") itimpul. Sistemul de ntreruperi este informat asupra evoluiei acestora prin canalede transfer a informaiilor generale (porturi, canale temporizatoare/numrtoare)sau specifice (interfee specializate UART, SPI, SCI, USB, I2C, etc), el dispune deo unitate de analiz a informaiilor ("controller-ul de ntreruperi" - CI),implementat intern, conectat via magistralele interne ale MC la unitatea decontrol a programelor), precum i de mecanismul prin care oprete execuia dectre UC a programului curent i realizeaz declanarea rutinei adecvate de servirea ntreruperilor.

    Realizarea strilor generatoare de cereri de ntrerupere este urmat deanaliza acestora de ctre CI. Aceast analiz presupune urmtoarele:

    Identificarea sursei generatoare a cererii de ntrerupere; Determinarea ordinii de servire a cererilor de ntrerupere, n cazul

    apariiei simultane a mai multor astfel de cereri.

    Ambele etape pot fi implementate att hard ct i soft, neexcluzndu-seposibilitatea unor implementri mixte.

    Identificarea sursei generatoare de ntrerupere se face prin corelaia ce estestabilit ntre canalul de transfer al cererii, registrul/registrele de memorare alacesteia i adresa de memorie la care este plasat adresa rutinei de servire a

  • 30 MICROCONTROLLERE

    ntreruperilor sau prima instruciune a rutinei de servire a ntreruperilor. Aceastsituaie este ntlnit la majoritatea microcontroller-elor, dar exist i excepii, cumar fi microcontroller-ele familiilor PIC "low range" i "middle range" de la firmaMicrochip, la care orice cerere de ntrerupere genereaz execuia unei rutine alcrei nceput este plasat la o adres unic, fix de memorie.

    Determinarea ordinii de servire, sau analiza prioritii cererilor dentrerupere, presupune scanarea n faza de analiz a tuturor canalelor de transferpentru cererile de ntrerupere sau a regitrelor corelate cu acestea ntr-o anumitordine prestabilit hard. Multe microcontroller-e dispun de mecanismul(implementat hard) ce permite "prioritizarea" unora dintre aceste canale, ceea ceimplic implementarea unor uniti de memorare a prioritilor (registre de setare aprioritilor pe dou sau mai multe nivele) i instituirea unor reguli de arbitrare.Fiecare dintre aceste nivele va fi scanat distinct, n ordinea descresctoare aprioritilor, majoritatea CI prezentnd doar dou nivele de prioritate: prioritar imai puin prioritar.

    n procesul de scanare, primul canal "activ" - care genereaz o cerere dentrerupere - va fi cel ce va fi "servit", respectiv va declana procesul de execuie arutinei de servire a ntreruperilor corespunztoare.

    Sunt ntlnite att microcontroller-e care permit ntreruperea unei rutine deservire a ntreruperilor de ctre o alt cerere de ntrerupere mai prioritar(ndeobte cunoscut ca sistem de ntreruperi "rentreruptibil"), ct imicrocontroller-e care nu permit o astfel de aciune.

    Muli productori pun la dispoziia proiectantului cte un flag devalidare/invalidarea global a ntreruperilor, ceea ce permite ca utilizatorul smodifice cum dorete mecanismul de aciune la apariia unui ntreruperi: permitesau inhib o ntrerupere prioritar aprut ulterior uneia mai puin prioritare, dar pedurata ct aceasta este servit.

    Multe microcontroller-e dispun de un mecanism bazat pe flag-uri(fanioane) de validare/invalidare a ntreruperilor, acest mecanism putnd fiimplementat att la nivelul UC al MC ct i la / sau la nivelul CI, respectiv lanivelul sistemului de analiz a cererilor de ntrerupere. Registrele de memorare acererilor de ntrerupere sunt dublate de registre ce memoreaz informaia devalidare a canalelor ntreruptoare ("registre de validare a ntreruperilor" sau"registre de mascare a ntreruperilor"), un canal corespunztor unei cereri dentrerupere invalidat va fi ignorat n procesul de scanare a cererilor de ntrerupere.

    Un principiu des aplicat la implementarea acestui sistem const n aceea cfiecare flag este setat printr-un mecanism hard i, n general, resetat soft, prinexecuia unor instruciuni de resetare a sa, ceea ce presupune pe de-o parte, luarean considerare prin program a strii semnalate, iar pe de alt parte, asigurreanclanarea mecanismului de ntrerupere, pentru situaia n care starea respectivse repet.

    Domeniul de adrese de memorie (SRAM sau PROM) n care sunt plasateinstruciunile de start a rutinelor de servire a ntreruperilor poart denumirea de"tabel a vectorilor de ntrerupere".

  • 1. Descriere general 31

    Unele microcontroller-e prezint o tabel a vectorilor de ntrerupere cuadrese fixe, specifice canalelor ntreruptoare, spre exemplu I8051, Atmel, PIC,altele permit plasarea tabelei vectorilor de ntrerupere la adrese de memorie ce suntstabilite de ctre proiectant, este cazul, spre exemplu, micocontroller-elor dinfamilia Z80 (Z8413, Z8414, Z8415, etc.)

    n prima situaie, plasarea la adres fix a tabelei vectorilor de ntrerupere,poate fi privit ca o restricie n dezvoltarea unor programe de aplicaie, dar aceastaeste doar o fals problem! Practic, noi putem realiza translatarea prin program atabelei vectorilor de ntrerupere la orice adres de memorie prin simpla introducerea unor instruciuni de salt ca prime instruciuni corespunztoare canalelorntreruptoare. Exemplificm aceasta pentru familia 8051.

    Tabela vectorilor de ntrerupere este cuprins ntre adresele: 0003H i0023H. Programul de translatare va trebui s se prezinte astfel:

    CSEGORG 00H

    START:JMP MAIN ;Adresa de salt la progamul principal

    ;ORG 03H ;Adresa din tabela vectorilor de ntrerupere

    ;corespunztoare ntreruperilor externe de;stare - canal 0 -

    ISR_EXT0:JMP NEW_ADDR_ISR0 ;Noua adresa a rutinei (poate fi plasat n

    ;memoria RAM extern);

    ORG 0BH ;Adresa din tabela vectorilor de ntrerupere;corespunztoare ntreruperilor datorate;depirii capacitii de numrarea a canalului;0 numrtor/temporizator

    ISR_T0:JMP NEW_ADDR_ISR1 ;Noua adresa a rutinei (poate fi ;plasat n

    ;memoria RAM extern);

    ORG 13H ;Adresa din tabela vectorilor de ntrerupere;corespunztoare ntreruperilor externe de;stare -canal 1 -

    ISR_EXT1:JMP NEW_ADDR_ISR2

    ;ORG 1BH ;Adresa din tabela vectorilor de ntrerupere

    ;corespunztoare ntreruperilor datorate;depirii capacitii de numrarea a canalului;1 numrtor/temporizator

    ISR_T1:JMP NEW_ADDR_ISR3

    ;;

  • 32 MICROCONTROLLERE

    ORG 23H ;Adresa din tabela vectorilor de ntrerupere;corespunztoare ntreruperilor provenite de la;UART

    ISR_SI:JMP NEW_ADDR_ISR4

    ;NEW_ADDR_ISR0:;Aici se vor plasa instruciunile corespunztoare rutinei de servire a ntreruperilor de la;sursa extern corespunztoare canalului 0.NEW_ADDR_ISR1:;Aici se vor plasa instruciunile corespunztoare rutinei e servire a ntreruperilor datorate;depirii de numrare la timer 0.NEW_ADDR_ISR2:;Aici se vor plasa instruciunile corespunztoare rutinei de servire a ntreruperilor de la;sursa extern corespunztoare canalului 1.NEW_ADDR_ISR3:;Aici se vor plasa instruciunile corespunztoare rutinei e servire a ntreruperilor datorate;depirii de numrare la timer 1.NEW_ADDR_ISR4;Aici se vor plasa instruciunile corespunztoare rutinei e servire a ntreruperilor provenite;de la UART.

    Plasnd n memoria RAM aceast tabel este posibil s realizm ceea ce secheam "servire dinamic a ntreruperilor". Acest procedeu de servire antreruperilor permite implemenarea uoar a comenzii unui automat secvenial cuun numr finit de stri. (spre exemplu: cazul unei linii automate de montaj sau deturnare, etc). Implementarea servirii dinamice a ntreruperilor const nmodificarea succesiv a adreselor la care plasm rutina de servire a ntreruperii(ISR).

    n figura 1.17 prezentm cazul unui automat cu un numr de trei stridistincte, fiecare rutin de servire a ntreruperilor (ISR) va rescrie adresa rutinei deservire corespunztoare evenimentului urmtor n tabela vectorilor de ntrerupere.Este evident c aceast tabel trebuie s fie locatat n memoria RAM a sistemului.

    Primuleveniment

    ISR corespunztoareevenimentului 1

    Scrie n Tabela Vectorilor dentrerupere, adresa ISR2

    Al doileaeveniment

    Al treileaeveniment

    ISR corespunztoareevenimentului 2

    Scrie n Tabela Vectorilor dentrerupere, adresa ISR3

    ISR corespunztoareevenimentului 3

    Scrie n Tabela Vectorilor dentrerupere, adresa ISR1

    Figura 1.17 Servirea dinamic a ntreruperilor ntr-un automat cu trei stri

  • 1. Descriere general 33

    Un exemplu tipic n acest sens l reprezint tastaturile ce prezint butoanemulti-funciune. S presupunem cazul butonului unic: START/STOP al unui utilaj.Vom exemplifica procedeul de servire dinamic prin programul care comutfunciunile butonului din START n STOP i invers. Programul este conceputpentru un microcontroller din familia 8051.

    CSEGORG 00H

    BOOT:JMP MAIN

    ISR_EXT0:JMP BUTON

    ;S-a considerat c prima linie de ntreruperi externe de stare reprezint canalul de transfer al;informaiilor corespunztor butonului START/STOP;

    ;nstruciunea corespunztoare etichetei BUTON este plasat n memoria RAM a;sistemului de comandBUTON:

    JMP BUTON_START;BUTON_START:;

    MOV DPTR,#BUTON+1;ncarc adresa din tabela vectorilor de ntrerupere

    MOV A,#LOW(BUTON_STOP)MOVX @DPTR,AINC DPTRMOV A,#HIGH(BUTON_STOP)MOVX @DPTR,A

    ;Schimb adresa de salt ctre rutina urmtoare n schema de comutare a rutinelor;Ultima rutin din schem trebuie s indice drept adres de salt prima dintre rutine

    RETIBUTON_STOP:;

    MOV DPTR,#BUTON+1;ncarc adresa din tabela vectorilor de ntrerupere

    MOV A,#LOW(BUTON_START)MOVX @DPTR,AINC DPTRMOV A,#HIGH(BUTON_START)MOVX @DPTR,A

    ;Schimb adresa de salt ctre rutina urmtoare n schema de comutare a rutinelor;Ultima rutin din schem trebuie s indice drept adres de salt prima dintre rutine

    RETIMAIN:;;Trebuiesc incluse instruciunile corespunztoare programului principalEND

  • 34 MICROCONTROLLERE

    n cazul sistemelor 8051 sau 68xx-68xxx, tabela vectorilor de ntrerupereeste ampl incluznd variate canale ntreruptoare. Astfel, pentru ntreruperileexterne de stare se dispune de dou linii de intrare INT0# i INT1#, CI putnd fisetat s reacioneze fie pe front (cel negativ), fie pe nivel logic (cel sczut -low),pentru canalele numrtoare temporizare dispunem pentru fiecare de adrese deservire corespunztoare strilor de depire a capacitii canalului ("overflow"), iarpentru unitatea UART dispunem de un vector unic att la recepie ct i pentrutransmisie. n cazul microcontroller-elor PIC (low/middle range) exist o singuradres (plasat la 0004H) pentru ntreruperi externe, ceea ce impune pentruproiectant s scrie o rutin de servire n care analiznd registrul ce memoreazcererile de ntrerupere va decide asupra rspunsului la cererea respectiv.

    1.5 MANAGEMENTUL PUTERII

    Pentru aplicaiile n care consumul de energie de la sursa de alimentareeste critic sunt implementate sisteme prin care pot fi dezactivate temporar parte dinmodulele componente. Economia de energie este esenial n cazul alimentrii dela baterii. Prin intrarea n starea de economie de energie memoria RAM nu-ischimb coninutul i ieirile nu-i schimb valorile logice. Sistemul de economiede energie ofer dou moduri de operare care difer prin numrul componentelordezactivate. Aceste moduri sunt numite Idle, Power Down la MC Intel i Wait,Stop la MC Motorola. Intrarea n unul din modurile de operare cu economie deenergie se face prin comenzi software. MC Motorola dispun de instruciuni caredetermin intrarea n mod Wait sau Stop. MC Intel intr n mod Idle sau PowerDown prin controlul unor bii din registrul PCON (Power Control Register).

    n ambele moduri de operare este ngheat funcionarea unitii centrale.n mod Power Down (Stop) este blocat oscilatorul intern ceea ce atrage

    dup sine blocarea tuturor funciilor interne. Timer-ul va nghea i interfeeleseriale i vor opri activitatea. Sistemul de ntreruperi, dup caz, este dezactivat(MC Intel) sau poate s ramn activ (MC Motorola). Coninutul memoriei i alregistrelor interne nu este alterat, iar liniile I/O rmn neschimbate. Din aceaststare se poate iei fie doar cu Reset la MC Intel. La MC Motorola se poate iei fiecu Reset, fie la sesizarea unei ntreruperi externe (sistemul de ntreruperi nu estedezactivat). n cazul n care revenirea se face la sesizarea unei ntreruperi externeactivitatea intern este reluat n aceleai condiii n care a fost abandonat(numrtoarele timere-lor continu din starea pe care au avut-o la intrare n modStop).

    n mod Idle (Wait) este ngheat doar funcionarea unitii centrale,celelalte funcii folosite rmn active (timer-ul, interfeele seriale i sistemul dentreruperi). Starea unitii centrale i a tuturor registrelor este pstrat ct timp

  • 1. Descriere general 35

    MC se menine n mod Idle (Wait). Pinii de port pstreaz starea pe care au avut-ola intrarea n acest mod. Din modul Idle se poate iei prin Reset sau la sesizareaunei ntreruperi interne sau externe.

    Consumul de energie este minim atunci cnd sunt activate cele mai puinefuncii. Consumul minim de energie se obine n modul de operare Power Down(Stop). n modul Idle (Wait) consumul este redus faa de regimul de operarenormal dar este mai mare dect n mod Power Down (Stop). n acelai timp,consumul n mod Idle (Wait) este cu att mai redus cu ct sunt mai puine funciiactive la intrare n mod. n mod Power Down (Stop) exist posibilitatea uneireduceri suplimentare a consumului prin reducerea tensiunii de alimentare (la uneleMC).

    OnNow este o iniiativ actual pentru modernizarea metodelor deeconomie de energie n sistemele cu microprocesoare. Se intenioneaz obinereaunui consum de energie (pentru un calculator PC) de o treime din cel actual i untimp de ieire din starea inactiv mai mic de 5 secunde. Informaii despre aceastiniativ se gasesc la adresa www.microsoft.com/hwedev/onnow.htm

    Un alt aspect important al alimentrii sistemelor construite cu MC estecalitatea semnalului furnizat de sursa de alimentare. Dac nivelul tensiunii dealimentare nu se ncadreaz ntr-o plaj permis este posibil ca programul sfuncioneze defectuos, s se abat de la cursul firesc. Pentru a elimina acest risc, pecare nu ni-l putem permite n sistemele de control, n MC sunt implementatemodule de monitorizare a tensiunii de alimentare. Acestea pot genera un Reset desistem sau o ntrerupere n cazuri considerate limit.

    LVR (Low Voltage Reset) este un circuit care monitorizeaz tensiunea dealimentare a unitii centrale i foreaz un reset dac se constat c aceasta estemai mic dect un minim predefinit.

    LVI (Low Voltage Interrupt) este un circuit care monitorizeaz tensiuneade alimentare a unitii centrale i genereaz o ntrerupere dac se constat caceasta este mai mic dect un minim predefinit. ntreruperea foreaz executareaunei rutine de oprire neforat.

    1.6 SCHEMA BLOC A UNUI MC

    Cu elementele prezentate pn la acest punct schema bloc a unui MC poatefi dezvoltat (n comparaie cu cele prezentate n figura 1.1. i figura 1.2);rezultatul este ilustrat n figura 1.18.

  • 36 MICROCONTROLLERE

    Schema este n continuare o reprezentare generalizat. Se poate observa cun MC este organizat n jurul unei magistrale interne pe care se vehiculeaz date,adrese i semnale de comand i control ntre blocurile funcionale.

    Unitatea central execut instruciunile pe care le primete prin magistralade date din memoria program. Structura Harvard este posibil i rspndit la MCpentru c de regul instruciunile sunt stocate n memoria ROM, iar datele n ceaRAM. Magistrala de date i cea de adrese pot fi separate sau multiplexate.Magistralele pot s nu fie disponibile n exterior (Motorola 6805) sau pot fidisponibile n exterior direct (MCS-51) sau multiplexate (MC pe 16 sau 32 de bii).

    Fiecare MC are un controller de ntreruperi care admite att intrri dinexterior ct i de la modulele interne. Unele MC dispun de un controller DMApropriu.

    Modulele I/O pot fi seriale sau paralele. Fiecare modul transfer date cuexteriorul prin intermediul registrului de date (RD). Modulul este programat(configurat) de unitatea central prin intermediul unui registru de comenzi (RC) ise poate citi starea modulului prin registrul de stare (RS). Prin RS se pot generantreruperi ctre unitatea central. Registrele modulelor I/O pot fi vzute de UC calocaii de memorie (la familia Moto