Sunteți pe pagina 1din 71

SISTEME INCORPORATE

Curs

Sisteme Incorporate

1. Notiuni Introductive
Sistemele incorporate sunt sisteme de calcul care sunt parti componente a unor dizpozitive speciale. Functie de caracteristicile in ansamblu a echipamentului sistemele incorporate au un inalt grad de optimizare funtie de particularitatile ansamblului in care sunt integrate. In mod traditional sistemele incorporate sunt utilizate in cadrul sistemelor de masura si control al proceselor. Ca efect al marii dezvoltari ale circuitelor integrate in momentul de fata conducerea a numeroase aplicatii complexe isi gasesc solutiile (pot fi rezolvate) prin utilizarea sistemelor incorporate. Pentru a fi capabile sa sustina rezolvarea problemelor de conducere sistemele incorporate sunt echipate cu diferite tipuri de cicuite.

1.1. Definirea Sistemelor Incorporate


Sistemele incorporate (SI) sunt sisteme informatice de prelucrare a datelor incorporate in cadrul unui produs (echipament). Utilizarea sistemelor incorporate tine in acest moment numai de imaginatia proiectantului. Astfel, sistemele incorporate se regasesc in majoritatea echipamentelor electrocasnice (masini de spalat automate, cuptoare cu microunde, sisteme audio-video etc.), in echipamentele de telecomunicatie (telefoane mobile), in echipamente de conducere industriale (roboti, CNC-uri) precum si in domenii de inalta tehnologie (industria aerospatiala robotii Minuteman I & II, industria auto calculatoarele de bord). Structura de baza a unui SI este prezentata in figura 1.1.

Figura 1.1. Structura principiala a unui SI Dupa cum se observa SI, sunt sisteme inchise in care SI propriu-zis interactioneaza cu exteriorul prin intermediul sensorilor si a alementelor de ececutie punand la dispozitie si interfete utilizator.

______________________________________________________________________________________ 2

Sisteme Incorporate

1.2. Exemple de SI
SI utilizat in controlul unui autovehicul

In acest caz rolul SI este acela de a controla si monitoriza diversele elemente componente ale autovehiculului cum ar fi: sistemul de franare ABS, functionarea motorului, a cutiei de viteze, a sistemului de climatizare etc. De asemenea asigura vizualizarea informatiilor si poate primii din partea utilizatorului diferite comenzi. SI utilizate in aparatura electocasnica

In cazul acestor tipuri de echipamente SI are rolul ca pe baza informatiilor transmise de utilizator sa ececute o anumita secventa de lucru (de ex. in cazul masinii de spalat stoarcere).

______________________________________________________________________________________ 3

Sisteme Incorporate

SI utilizate in aplicatii industriale

SI au rolul de a asigura executia anumitor faze carateristice sistemului de productie in care este integrat SI utilizate in telecomunicatii

SI utilizate in cadrul acestor sisteme pot fi telefoanele mobile, sistemele de comunicatie wierless etc.

______________________________________________________________________________________ 4

Sisteme Incorporate

1.3. Caracteristicile SI
Datorita cerintelor functionale ale SI acestea au anumite caracteristici particulare. Astfel, SI trebuie sa fie: 1. Demne de incredere in: Siguranta R(t) reprezinta probabilitatea sistemului de a lucra corect la momentul t cu conditia ca acesta a lucrat la momentul t=0; Sustinere M(d) reprezinta probabilitatea sistemului de a lucra corect d unitati de timp dupa aparitia unei erori in functionare; Disponibilitate probabilitatea sistemului de a lucra la momentul t; Protectie in timpul functionarii nu se poate intampla nici o stricaciune; Securitate asigurarea confidentialitatii si autentificarii in cazul comunicatilor. 2. Eficiente din punct de vedere al: Consumului de energie; Dimensiunii programului de conducere (codul executatil); Operarii in timp-real; Al greutatii; Al costului de productie. 3. Dedicate spre o aplicatie concreta: cunoasterea comportamentului procesului in momentul proiectarii poate fi utilizat pentru minimizarea resurselor respectiv maximizarea robustetii SI. 4. Echipate cu interfete specializate cu utilizatorul (tastaturi si displayuri, fara mouse etc.). 5. Incadrate in restrictiile de timp-real impuse Un sistem de timp-real trebuie sa reactioneze la stimulii proveniti de la sistemul controlat (sau de la operator) in interiorul intervalul dictat de mediu in care isi desfasoara activitatea Pentru sistemele de timp-real, raspunsul corect generat prea tarziu sau prea devreme este gresit. O comparatie intre SI si calculatoarele de uz general este prezentata in tabelul 1. Tabelul 1. Compartatie intre SI si calculatoarele de uz general Sisteme Incorporate Calculatoare de uz general Dedicate aplicatiilor concrete Extins pentru o clasa de aplicatii Neprogramabile la nivel end-user Programabile prin end-user Timp de executie a aplicatiilor bine stabilit Cu cat mai rapid cu atat mai bine Criterii: pret, putere consumata, Criterii: pret, viteza de lucru predictibilitate
______________________________________________________________________________________ 5

Sisteme Incorporate

1.4. Arhitectura tipica a unui SI


In figura 1.2 este prezentata arhitectura tipica a unui SI.

Figura 1.2. Arhitectura tipica a unui SI Arhitectura tipica a unui SI este construita pornind de la cerintele de baza ale unui SI. Astfel, un SI contine: Microprocesoare/Microcontrolere reprezinta unitatea centrala a sistemului, modelul ales pentru implementare depinzand de cerintele impuse sistemului. De exemplu: in cazul unui SI care necesita putere de calcul foarte mare se utilizeaza un microprocesor (standardul pentru SI care utilizeaza microprocesoare este PC104 si va fi prezentat ulterior); in cazul sistemelor care nu necesita conditii speciale ca putere de calcul sau viteza mare de operare se vor utiliza microcontrolere iar in cazul sistemelor care trebuie sa opereze cu viteza mare (prelucrari de semnale in timp real) se vor utiliza DSP-uri. Functie de unitatea centrala aleasa sunt necesare sau nu utilizarea de circuite perifece specializate, memorii cache sau alte elemente specifice. Software-ul reprezentat prin: programele aplicatei (cod aplicatie), drivere corespunzatoare care pot fi implementate de proiectant (cod) sau se afla in BIOSul sistemului, sistemul de operare in timp-real selectat (in cazul utilizarii lui PC104), interfete utilizator, protocoalele de comunicatie etc. Blocul de memorie nevolatila implementat cu circuite de tip EPROM, EEPROM, FLASH, hard-discuri etc, care contin software-ul aplicatie. Blocul de memorie volatila implementat cu circuite de tip DRAM, SRAM etc., care vor fi utilizate pentru stocarea datelor.
______________________________________________________________________________________ 6

Sisteme Incorporate

Sistemele de generare a tactului (clock) avand rolul de a genera semnalele de tact corespunzatoare functionarii sistemului pe de o parte, iar pe de alta parte cu rol de gestiune a timpului. Aceste sisteme pot fi implementate cu circuite RTC, circuite specializate de generare a tactului sau alte sisteme integrate. Circuite specifice sunt circuite de tip ASIC, FPGA sau PAL cu ajutorul carora se implementeaza anumite functii specifice ale sistemului (de ex. decodificatoare, codificatoare, multiplexoare, logica combinationala etc.). Circuite standard sunt utilizate pentru implementarea porturilor de intrare/iesire (de ex. PIO i8255) sau pentru implementarea periferiilor corespunzatoare (de ex. implementarea sistemelor de intreruperi bazate pe circuitul controler de intreruperi i8259A). Circuite pentru comunicatii specifice conectarii sistemului functie de cerintele impuse, fie la o retea ethernet (de ex. controlerul de ethernet xxxxx), fie la un sistem de comunicatii RS-232 (de ex. i8251 impreuna cu circuitele driver corespunzatoare de ex. MAX232), fie la o interfata Centronix etc; Magistrala de I/O prin intermediul acesteia asigurandu-se conectarea cu exteriorul SI considerat (de ex: conectarea cu un panou de afisaj realizat cu LEDuri); Port de depanare acesta asigurand conectarea sistemului cu un sistem de calcul cu ajutorul caruia se pot efectua teste ale diferitelor subsisteme. Magistrale reprezinta optiuni ale proiectantului prin care se asigura compatibilitatea cu magistrale standard (de ex: ISA, PCI, VME etc.)

Din punct de vedere al standardelor impuse structurilor hardware ale SI se disting doua directii majore functie de tipul unitatii centrale de prelucrare aleasa. In cazul utilizarii microprocesoarelor standardul impus pentru SI este PC-104, reglementat prin standardul IEEE-P996. In cazul utilizarii microcontrolerelor ca unitate centrala a SI nu exista nici un standard international datorita faptului ca exista o multitudine de firme producatoare pornind de la microcontrolere de uz general (de ex. familia INTEL MCS51 8051, 8031, 80552 etc sau familia MOTOROLA HC11 68HC11) si terminand cu microcontrolere dedicate produse pentru aplicatii specifice.

______________________________________________________________________________________ 7

Sisteme Incorporate

1.5. Proiectarea SI
In figura 1.3 este prezentata ordinograma corespunzatoare fazelor de proiectare al unui SI.
Schemele bloc generice ale componentei hardware Cerinte Functionale Schemele bloc generice ale componentei software

Formalizarea comportamentala

Stabilirea platformei hardware

Selectie Platforma Hardware

Defalcarea hardware/ software

Selectie Module Software

Blocuri hardware specifice aplicatiei

Integrarea blocurilor specifice in platforma hardware

Integrarea modulelor software

Module software specifice aplicatiei Sistemul de Operare

Simularea Functionalitatii sistemului hardware

HW/SW Co-simulare

Simularea de nivel scazut a softwareului

Testare hardware si software pe simulator/emulator

Proiectare fizica a hardwareului

Dezvoltarea softwareului aplicatie

Realizare Prototip

Verificarea HW/SW pe prototip

Testare Software

Fabicatie de Serie

Figura 1.3. Organigrama procesului de proiectare al unui SI

______________________________________________________________________________________ 8

Sisteme Incorporate

2. Microcontrolere
2.1. Introducere
Evolutia microprocesoarelor, in ultimii ani, a avut loc pe doua directii principale si anume: 1) realizarea unor procesoare cat mai performante prin marirea lungimii cuvantului (de ex. 32 de biti), cresterea vitezei de procesare pe baza cresterii frecventei de tact (la sute si chiar mii de MHz) si prin introducerea unor tehnici de prelucrare in paralel (pipe-line) 2) realizarea unor procesoare de functionare in timp real, destinate conducerii proceselor si care, include, intr-un singur chip, toate elementele necesare pentru controlul rapid al evolutiei procesului condus. Acestea sunt asa numitele microcontrolere. Prin urmare un microcontroler este un circuit pe un chip care include: a) o unitate centrala de prelucrare pe 8,16 sau 32 de biti; b) un oscilator intern mai putin cristalul de cuart si condensatoarele; c) memorie RAM si ROM; d) un sistem de control al intreruperilor; e) un sistem de timere programabile; f) convertoare analog-digitale; g) un sistem de comunicatie seriala; h) intreri/iesiri numerice. Desigur exista si variante de microcontrolere care pot contine sau nu toate elementele prezentate mai sus. Prezenta resurselor de interfatare, a memoriei interne si a oscilatorului pe acelasi chip asigura realizarea anumitor aplicatii aproape exclusiv pe baza microcontrolerului. Reducerea hardware-ului necesar unei anumite aplicatii conduce la avantaje certe: - volum mic; - fiabilitate ridicata; - consum de energie mic; - pret de cost redus. Dintre familiile de microcontrolerele mai cunoscute se amintesc: - familia INTEL MCS51, 8XC196; - familia MOTOROLA HC11; - familia ZILOG Z8 etc. Trebuie insa facuta precizarea ca pe piata exista o multitudine de familii de microcontrolere unele de uz general iar unele specializate pentru diferite domenii de aplicabilitate.

______________________________________________________________________________________ 9

Sisteme Incorporate

2.2. Familia de microcontrolere INTEL MCS51


Una din cele mai raspandite si cunoscute familii de microcontrolere este cea a firmei INTEL MCS51 care contine o multime de tipuri de microcontrolere ce se deosebesc intre ele prin: a) tehnologia de realizare HMOS sau CHMOS; b) volumul (fara, 4Koct, 8 Koct, 16 Koct) si tipul (ROM, EPROM, OTP ROM) memoriei nevolatile; c) volumul memoriei RAM; d) viteza (frecventa de tact) 12, 16, 20, 24 MHz; e) numar de pini pentru intrari/iesiri 24, 32, 40, 48, 56; f) numarul circuitelor de temporizare contorizare 2,3; g) numarul surselor de intreruperi 5,6,7,10,11,15. Multimea tipurilor de microcontrolere este la randul ei divizata in mai multe linii de produse care reunesc acele tipuri ce se deosebesc doar prin volumul si tipul memoriei incluse (celelalte caracteristici sunt identice la o linie de produse). In continuare se va prezenta linia de fabricatie 8051 care este elementul cel mai reprezentativ al familiei MCS51.

2.3. Microcontrolerul 8051 2.3.1. Arhitectura interna


Arhitectura interna a microcontrolerului 8051 este prezentata in schema bloc din figura 2.1. Principalele caracteristici ale circuitului sunt: - UCP pe 8 biti optimizata pentru aplicatii de conducere. Include un procesor boolean care confera capacitati de prelucrare logica (booleana) extinse; - Spatiu de adrese pentru memoria program de 64 Koct; - Spatiu de adrese pentru memoria de date 64 Koct; - Memorie inclusa in chip: - 4 Koct memorie program (ROM); - 128 octeti memorie de date (RAM). - 32 linii intrare/iesire bidirectionale si adresabile individual organizate pe 4 porturi (P0,P1,P2 si P3); - un sistem de timer/countere bazat pe doua circuite timer pe 16 biti; - sistem de intreruperi cu 5 surse independente si doua nivele de prioritate; - unitate seriala care functioneaza in mod duplex de tip UART; - oscilator si circuit generator de tact incorporat. Caracteristic pentru familia MCS51 si implicit pentru microcontrolerul 8051 este separarea completa a memoriei program MP - si a memoriei de date - MD. Aceasta configuratie se mai numeste si configuratie HAVARD. Astfel spatiul maxim adresabil pentru MP este de 64 Koct din care 4 Koct sunt inclusi in chip, iar pentru MD exista un

______________________________________________________________________________________ 10

Sisteme Incorporate

Figura 2.1. Schema bloc a microcontrolerului 8051 spatiul maxim adresabil de 64 Koct externi chip-ului si 128 octeti interni. Pe langa acesti octeti interni mai exista in interiorul chip-ului un numar de registrii denumiti Registrii cu Functii Speciale SFR (Special Function Registers). Acesti registrii sunt: - acumulatorul pe 8 biti ACC; - registrul B folosit in timpul operatiilor de inmultire si impartire; - program counter PC; - program status word PSW registrul PSW contine informatii de stare (registru de fanioane), iar structura lui este prezentata in figura 2.2;

______________________________________________________________________________________ 11

Sisteme Incorporate

Figura 2.2. Structura si semnificatia bitiilor registrului PSW - stack pointer SP este un registru pe 8 biti, continutul lui fiind incrementat in timpul executiei instructiilor de depunere in stiva sau de apel a unei subrutine. Stiva poate fi pozitionata in orice zona a memoriei de date interna iar la initializarea circuitului in registrul SP se incarca valoare 07h; - data pointer DPTR este impartit in doua registre pe 8 biti DPH octetul superior respectiv DPL octetul inferior. Acest registru este folosit pentru memorarea adresei pe 16 biti a unei locatii de memorie din memoria de date externa, dar el poate fi folosit si ca doua registre independente pe 8 biti;
______________________________________________________________________________________ 12

Sisteme Incorporate

- Port 0,1,2,3 P0, P1, P2, P3 sunt latchurile corespunzatoare porturilor de intrare iesire P0, P1, P2 si P3; - Serial data buffer SBUF registru aferent sistemului de comunicatie seriala care contine doua buffere separate unul pentru emisie si unul pentru receptie. Cand data este transmisa la SBUF ea este incarcata in bufferul corespunzator emisiei iar la receptie data este preluata de la SBUF din bufferul de receptie; - Registrele timer/counter sunt registre pe 16 biti avand insa si diponibilitatea de a lucra pe 8 biti. Microcontrolerul 8051 are doua timere T0 si T1 impartite in TH0 partea high a timerului 0 respectiv TL0 partea low a timerului 0 si analog pentru T1: TH1 si TL1; - Registrele de control IP, IE, TMOD, TCON,SCON si PCON se refera la controlul sistemului de intreruperi, a timerelor , a portului serial sia consumului de putere. Structurile acestor registre precum si functiile lor vor fi prezentate ulterior. Fiecarui registru descris ii este alocata o adresa in cadrul zonei din memoria interna rezervata. Microcontrolerul 8051, la nivel de capsula este prezentat in figura 2.3. Semnificatiile pinilor sunt: - /EA-VPP intrare; cand valoarea logica aplicata la acest pin este 0 logic se realizeaza validarea memoriei program externe iar memoria program interna este invalidata si in acest caz intreg spatiul de 64 Koct ai memoriei program este extern chip-ului. Daca valoarea logica aplicata este 1 logic se valideaza memoria program interna. - /PSEN Program Strobe Enable iesire 0 activa; reprezinta strobul de citire din memoria program externa. /PSEN este activ in fiecare ciclu masina de extragere a codului operatiei din memoria de date externa. /PSEN nu este activat la accesarea memoriei de date externa el ramanand pe 1 logic. - ALE-/P Address Latch Enable iesire 1 activa; semnal folosit pentru memorarea octetului mai putin semnificativ al adresei intr-un latch extern, pentru memorarea adresei locatiei de memorie externa vizata; - RST intrare 1 activa; un 1 logic aplicat la acest pin are ca efect initializarea circuitului; - Port 0 este un port de I/O pe 8 biti bidirectionali cu iesirile de tip open drain. In timpul accesarii memoriei externe liniile portului au functii de magistrala de adrese/date multiplexata in timp. In timpul cat pe linii se gaseste adresa aceasta constituie partea mai ptuin semnificativa a adresei; - Port 1 este un port de I/O pe 8 biti bidirectionali cu iesiri de tip pullups. Liniile portului pot fi folosite ca intrari/iesiri generale; - Port 2 este un port de I/O pe 8 biti bidirectionali cu iesiri de tip pullups. In timpul accesarii memoriei externe liniile portului au functii de magistrala de adrese continand octetul mai semnificativ al adresei; - Port 3 este un port de I/O pe 8 biti bidirectionali cu iesiri de tip pullups. Liniile portului servesc ca semnale de control pentru sistemul realizat cu microcontrolerul 8051.

______________________________________________________________________________________ 13

Sisteme Incorporate

Functiile liniilor sunt: - P3.0 RxD intrarea de date seriala; - P3.1 TxD iesirea de date seriala; - P3.2 - /INT0 intrare cerere de intrerupere externa 0; - P3.3 - /INT1 intrarea cerere de intrerupere externa 1; - P3.4 T0 intrarea de clock pentru timer/counter ul T0; - P3.5 T1 intrarea de clock pentru timer/counter-ul T1; - P3.6 - /WR semnal de comanda a scrierii in memoria de date externa 0 activ; - P3.7 - /RD semnal de comanda a citirii din memoria de date externa 0 activ. - XTAL1, XTAL2 intrari folosite pentru conectarea cristalului de cuart.

Figura 2.3. Capsula microcontrolerului 8051

2.3.2. Organizarea memoriei in sistemele cu microcontroler 8051


Dupa cum s-a precizat mai sus, caracteristic pentru toate microcontrolerele familiei MCS51 este ca spatiul de adrese pentru MP este complet separat de spatiul de adrese aferent MD. MP are are dimensiunea maxima de 64 Koct. La sisteme cu microcontroler 8051, 4Koct de memorie de la adresele 0000h-0FFFh pot fi chiar cei 4 Koct de memorie ROM din chip. Selectia dintre cele doua variante se realizeaza cu ajutorul semnalului /EA (External Access). Cand /EA este strapat la 1 logic (Vcc) atunci toate apelarile la MP cu adrese intre 0000h 0FFFh sunt dirijate spre memoria ROM interna. Apelurile la MP de la 1000h la FFFFh sunt dirijate spre circuitele de memorie ROM externe microcontrolerului. Cand /EA este strapat la 0 logic (GND) atunci apelarile la MP sunt dirijate spre circuitele externe de memorie ROM. Structura memoriei ROM a microcontrolerului 8051 este prezentata in figura 2.4.
______________________________________________________________________________________ 14

Sisteme Incorporate

Figura 2.4. Structura de principiu a MP pentru microcontrolerul 8051 Semnalul de strobare pentru citire din MP externa este /PSEN (Program Strobe Enable). Semnalul /PSEN nu se activeaza la apelarile la MP interna si la apelarile la MD. In cazul MD si ea este impartita in doua: interna si externa. Memoria de date externa poate fi de maxim 64 Koct. Accesarea memoriei de date externa se face numai prin intermediul instructiunilor de tip MOVX prin activarea semnalelor /RD si /WR, vehiculate prin pinii portului P3 si anume P3.7 respectiv P3.6; ca semnale de strobare (de comanda a citirii respectiv a scrierii). In cazul accesarii MD interne aceste semnale nu se activeaza. In figura 2.5 se prezinta structura de principiu a MD.

Figura 2.5. Structura de principiu a MD pentru microcontrolerul 8051 MD interna se imparte este impartita la randul ei in doua zone de adresare, si anume: 1) zona de adrese 00h-7Fh care contine 128 de locatii ce reprezinta memorie RAM propriuzisa. Lungimea cuvantului ei este de 1 octet. Aceasta zona de memorie poate fi adresata direct si indirect. In figura 2.6 se prezinta structura de baza a acestei zone de MD interna.
______________________________________________________________________________________ 15

Sisteme Incorporate

2) zona de adrese 80h FFh contine tot 128 de locatii care este rezervata pentru registrele cu functii speciale SFR (Special Function Register) si poate fi accesata numai direct. In figura 2.7 se prezinta structura de baza a acestei zone de MD interna. Cuvantul de adresa pentru MD interna este de 8 biti si rezulta astfel o capacitate maxima de adresare de 256 de locatii. In cazul MD zonele interna si externa nu se exclud astfel incat zona MD externa este de capacitate maxima de 64 Koct de la adresa 0000h pana la FFFFh.

Figura 2.6. Structura zonei de adrese 00h-7Fh a MD interna

Figura 2.7. Structura zonei de adrese 80h FFh a MD interna


______________________________________________________________________________________ 16

Sisteme Incorporate

Figura 2.8. Conectarea MP externa si a MD externa la un microcontroler 8051. Astfel, in figura 2.8 se observa modul principial de conectare a MP si MD externe. Dupa cum s-a mai precizat semnalul /PSEN este utilizat pentru citirea din MP externa si nu este activ () logic) in cazul accesarii MD externe. Pentru accesarea MD externa se folosesc semnalele /RD si /WR pentru citire respectiv scriere. Semnalul ALE iesire 1 activa din microcontroler este folosit pentru memorarea octetului mai putin semnificativ al adresei intr-un latch (registru) extern. Portul P0 reuneste 8 linii bidirectionale prin intermediul carora se reazlizeaza magistrala multiplexata de adrese/date. Bitii care se vehiculeaza prin acest port ca biti de adresa constituie partea cea mai putin semnificativa si se preiau din registrul intern PC in cazul accesarii MP externa si din registrul DPL in cazul accesarii MD externa. Portul P2 port de intrare/iesire pe 8 biti contine pe liniile sale partea mai semnificativa a adresei in cazul accesarii memoriei externa. In cazul accesarii MP pe aceste linii se va plasa partea mai semnificativa a adrsei preluate din PC. In cazul accesarii MD externa partea mai semnificativa a adresei este preluata din registrul DPH.

2.3.3. Moduri de adresare la microcontrolerului 8051


Microcontrolerele din familia MCS51 folosesc cinci moduri de adresare: - adresare directa; - adresare indirecta prin registru; - adresarea registrilor; - adresare imediata; - adresare indexata.
______________________________________________________________________________________ 17

Sisteme Incorporate

Adresarea directa Operandul este specificat printr-un camp de adresa de 8 biti in instructiune. Numai cei mai de jos 128 octeti ai MD interne si SFR-urile pot fi adresate direct. Adresarea indirecta prin registru In adresarea indirecta adresa operandului este continuta intr-un registru. Atat MD interna cat si cea externa pot fi adresate indirect. Pentru adrese pe 8 biti se pot folosii registrele R0 sau R1 din grupul de registre selectat sau registrul SP. Pentru adrese pe 16 biti registrul folosit nu poate fi decat DPTR. Adresarea registrelor Accesul prin adresare a celor 8 registrii de lucru (R0-R7) depinde de banca selectata prin intermediul bitilor Register Bank din PSW. Cei mai putini semnificativi trei biti din codul instructiunii indica care registru este folosit. Acumulatorul, registrul B, DPTR pot fi, de asemenea, adresate ca registre. Adresarea imediata Adresarea imediata permite constante ca parte integranta in codul instructiunii din MP. Adresarea indexata Numai MP poate fi adresata indexat, si aceasta poate fi doar citita. Acest mod de adresare este folosit pentru citirea tabelelor de cautare in MP. Un registru de baza pe 16 biti (DPTR sau PC) indica baza tabelei, iar in acumulator se pune numarul intrarii din tabela. Adresa intrarii in tabela din MP se formeaza adunand continutul registrului acumulator la registrul de baza specificat. In tabelul 2.1 se prezinta sumar posibilitatile de utilizare a modurilor de adresare si accesarea spatiilor de memorie. Tabelul 2.1. Moduri de adresare. Mod de adresare Resurse care pot fi adresate Adresarea directa - Cei mai putini semnificativi 128 de octeti din MD interna - Registrele SFR Adresare indirecta prin - MD interna prin @R0, @R1 sau SP registrii - MD externa prin @R0,@R1 sau @DPTR Adresarea registrelor - R0 R7 - Acumulator, registrul B, CY (bit), DPTR Adresare imediata - Operandul se afla in MP imediat dupa octetul de cod Adresare indexata - MP prin @DPTR+A sau @PC+A

______________________________________________________________________________________ 18

Sisteme Incorporate

2.3.4. Setul de instructiuni ale microcontrolerului 8051


Setul de instructiuni se imparte in patru mari grupe: - instructiuni de transfer de date; - instructiuni aritmetice; - instructiuni logice; - instructiuni de salt si de transfer a controlului. Instructiuni de transfer de date Aceste instructiuni se impart in trei grupe distincte: - transferuri de uz general; - transferuri specifice acumulatorului; - transferuri de adresa. Transferuri de uz general - MOV permite transferul unui bit sau a unui octet de la un operand sursa la un operand destinatie; - PUSH incrementeaza continutul registrului SP si transfera octetul operandului sursa in stiva la adresa continuta in SP; - POP transfera un octet din stiva de la locatia adresata de SP la operandul destinatie si decrementeaza continutul lui SP. Transferuri specifice acumulatorului - XCH interschimba operandul sursa pe un octet si continutul acumulatorului A; - XCHD interschimba cei mai putini semnificativi 4 biti ai operandului sursa si cei mai putini semnificativi 4 biti ai acumulatorului A; - MOVX executa mutarea unui octet intre MD externa si acumulator. Adresa externa poate fi specificata de registrul DPTR (16 biti) sau de registrii R0 sau R1 (8 biti); - MOVC muta un octet din MP in acumulator. Valoarea anterioara din A se foloseste ca index intr-o tabela de 256 octeti a carei adresa se afla in registrul de baza (DPTR sau PC). Operandul la care se face accesul e transferat in acumulator. Transferuri de adresa - MOV DPTR,#data incarca o data pe 16 biti imediat in perechea de registre DPH si DPL. Instructiuni aritmetice Setul de instructiuni al microcontrolerului 8051 are incorporat instructiuni pentru realizarea operatiilor aritmetice de adunare, scadere, inmultire si impartire. In mod direct circuitul suporta doar operatii intre octeti fara semn. Prin folosirea indicatorului de depasire este permis ca in operatiile de adunare si scadere sa se foloseasca atat intregi
______________________________________________________________________________________ 19

Sisteme Incorporate

binari fara semn, cat si cu semn. Sunt posibile de asemenea si operatii aritmetice cu numere reprezentate in cod BCD impachetat. Adunare - INC incrementeaza operandul sursa cu o unitate si pune rezultatul in locul operandului; - ADD aduna continutul acumulatorului la operandul sursa si depune rezultatul in acumulator; - ADDC adunare cu transport aduna continutul acumulatorului la operandul sursa si apoi aduna 1 daca CY este setat (1 logic) si depune rezultatul in acumulator; - DA ajustare zecimala a adunarii pentru numere reprezentate in cod BCD corecteaza rezultatul insumarii dintre doi operanzi zecimali pe doua cifre. Suma zecimala impachetata care rezulta este depusa in acumulator iar indicatorul CY este setat daca rezultatul adunarii este mai mare de 77. Scadere - SUBB scadere cu imprumut scade al doilea operand sursa din primul operand, aflat in acumulator, scade 1 daca CY=1 si depune rezultatul in acumulator; - DEC decrementare scade o unitate din operandul sursa si depune rezultatul in locul operandului. Inmultire - MUL executa inmultirea fara semn a continutului acumulatorului cu continutul registrului B, rezultatul fiind pe doi octeti, octetul cel mai putin semnificativ in acumulator iar octetul mai semnificativ in registrul B. Fanionul OV este resetat daca jumatatea mai semnificativa a rezultatului este zero si este setat in caz contrar, fanionul CY este resetat iar fanionul AC nu este afectat. Impartire - DIV executa impartirea unui intreg fara semn pe 8 biti, aflat in acumulator, la un intreg fara semn pe 8 biti aflat in registrul B. Dupa impartire in acumulator se va gasii catul iar in registrul B restul. Instructiuni logice 8051 poate executa operatii logice atat la nivel de octet cat si la nivel de bit. De asemenea operatiile logice pot fi impartite in doua mari grupe: operatii logice cu un singur operand respectiv operatii logice cu doi operanzi. Operarii logice cu un singur operand - CLR pune continutul acumulatorului sau orice bit direct adresabil la zero; - SETB seteaza orice bit direct adresabil pe 1 logic;
______________________________________________________________________________________ 20

Sisteme Incorporate

- CPL se foloseste pentru complementarea continutului acumulatorului fara afectarea indicatorilor sau pentru complementarea oricarui bit direct adresabil; - RL, RLC, RR, RRC, SWAP sunt cinci operatii de rotire care se pot executa asupra acumulatorului. RL rotire la stanga, RR rotire la dreapta, RLC rotire la stanga prin CY, RRC rotire la dreapta prin CY, SWAP rotira la stanga cu 4 pozitii. Pentru RLC si RRC indicatorul CY devine egal cu valoarea ultimului bit care se elimina. SWAP roteste continutul acumulatorului cu patru pozitii pentru a interschimba bitii 0-3 cu 4-7. Operatii logice cu doi operanzi - ANL executa un SI logic la nivel de bit intre doi operanzi (atat pentru operanzi de tip octet cat si pentru operanzi de tip bit) si depune rezultatul in locul primului operand; - ORL executa un SAU logic la nivel de bit intre doi operanzi (atat pentru operanzi de tip octet cat si pentru operanzi de tip bit) si depune rezultatul in locul primului operand; - XRL - executa un SAU-EXCLUSIV la nivel de bit intre doi operanzi (atat pentru operanzi de tip octet cat si pentru operanzi de tip bit) si depune rezultatul in locul primului operand. Transferul controlului Exista trei categorii de operatii de salt si de transfer a controlului: - salturi conditionate si neconditionate; - apeluri si reveniri din subrutine; - intreruperi. Salturi conditionate Salturile conditionate se executa la indeplinirea unei conditii de salt. Destinatia va fi in domeniul 256 octeti centrat in jurul adresei de inceput a instructiunii urmatoare (de la 128 la +127). - JZ executa un salt daca continutul acumulatorului este zero; - JNZ executa un salt daca continutul acumulatorului este diferit de zero; - JC executa salt daca CY=1; - JNC executa salt daca CY=0; - JB executa salt daca bitul adresat este 1 logic; - JNB executa salt daca bitul adresat este 0 logic; - JBC executa salt daca bitul adresat este 1 logic si apoi reseteaza bitul adresat; - CJNE compara primul operand cu al doilea si executa un salt daca acestia sunt diferiti. Fanionul CY este setat daca primul operand este mai mic decat al doilea operand, altfel este resetat; - DJNZ decrementeaza operandul sursa si pune rezultatul in locul operandului. Se executa salt daca rezultatul este zero.

______________________________________________________________________________________ 21

Sisteme Incorporate

Salturi neconditionate - AJMP salt la adresa absoluta transfera controlul programului la adresa modificata cu valoarea continuta in operand. Operandul instructiunii este pe 11 biti asigurandu-se un spatiu de destinatie de maxim 2Koct; - LJMP salt lung transfera controlul programului la adresa continuta in operand. Operandul instructiunii este pe 16 biti asigurandu-se un spatiu de destinatie de maxim 64 Koct; - SJMP salt scurt transfera controlul programului la adresa continuta in operand. Operandul instructiunii este pe 8 biti asigurandu-se un spatiu de destinatie de maxim 256 octeti centrat in jurul adresei de inceput a urmatoarei instructiuni (de la 128 la +127); - JMP @A+DPTR executa un salt relativ la registrul DPTR. Operandul din acumulator este folosit ca offset (0-255) fata de adresa din DPTR. Apeluri si reveniri din subrutine - ACALL apelare la adresa absoluta salveaza in stiva adresa instructiunii urmatoare si apoi transfera controlul programului de la adresa destinatie. Este folosita cand adresa destinatie se afla in pagina de 2 Koct curenta; - LCALL - apelare lunga salveaza in stiva adresa instructiunii urmatoare si apoi transfera controlul programului de la adresa destinatie. Este folosita pentru asigurarea transferului controlului programului in orice zona de adresa din intreg spatiul de 64 Koct; - RET transfera controlul programului la adresa de intoarcere salvata in stiva de un apel anterior si decrementeaza cu doi continutul registrului SP pentru a actualiza continutul registrului SP dupa extragerea adresei. Reveniri din intreruperi - RETI transfera controlul ca si in cazul instructiunii RET dar in plus activeaza intreruperile pe nivelul de priorittate curent.

2.3.5. Sincronizarea unitatii centrale de prelucrare


Toate microcontrolerele familiei MCS51 au un oscilator incorporat care poate fi utilizat ca generator de tact pentru unitatea centrala de prelucrare. Pentru utilizarea oscilatorului intern se conecteaza intre XTAL1 si XTAL2 un cristal de cuart sau rezonator ceramic si capacitati la masa ca in figura 2.9.

Figura 2.9. Conectarea unui cristal de cuart la intrarile XTAL1 si XTAL2 Generatorul intern poate fi condus si de semnale de tact externe obtinute de la un oscilator extern. In tehnologia HMOS (varianta 8051) semnalul de la XTAL2 are rol
______________________________________________________________________________________ 22

Sisteme Incorporate

conducator a generatorului de tact intern. In tehnologia HCMOS (varianta 80C51) semnalul de la XTAL1 are rolul conducator a generatorului de tact intern. Rezulta astfel variantele de conectare din figura 2.10.

Figura 2.10. Conectarea semnalelor de tact externe

2.3.6. Ciclii masina si ciclii instructie a microcontrolerului 8051


Un ciclu masina consta intr-o secventa de 6 stari notate S1S6 fiecare stare durand doua perioade de tact denumite P1 si P2 (vezi figura 2.11).

Figura 2.11. Structura unui ciclu masina in cazul microcontrolerului 8051 Astfel, un ciclu masina este constituit din 12 perioade de tact. In cazul in care frecventa semnalului de tact este 12 MHz perioada unui ciclu masina este de o microsecunda. Numarul de ciclii masina necesari pentru executia instructiunilor depind de tipul instructiunilor care se executa. Astfel, instructiunile se pot impartii, tinand cont de numarul de ciclii masina in: 1) instructiuni care se executa intr-un singur ciclu masina (majoritatea instructiunilor) Exemple: instructiuni de tip: ADD A,Rn; INC A; DEC A; ANL A,Rn; MOV A,#data 2) instructiuni care se executa in doi ciclii masina; Exemple: INC DPTR; ANL direct,#data, MOV Rn,direct; MOV DPTR,#data16; ACALL adr11; LJMP adr16; MOVX A,@DPTR; MOVX @DPTR,A 3) instructii care dureaza mai mult de doi ciclii masina; Exemple: MUL AB; DIV AB. In mod normal intr-un ciclu masina sunt generate doua operatii de extragere de cod de operatie (fetch), chiar daca instructiunea aflata in curs de executie nu necesita mai mult de un octet pentru codul operatiei, unitatea centrala de prelucrare va ignora pur si simplu cel de al doilea ciclu (extrafetch) si continutul registrului PC nu va fi incrementat. Executia instructiunilor care necesita un singur ciclu masina este prezentata in figura 2.12. Dupa cum se observa ciclul de fetch incepe in starea S1 a ciclului masina, cand codul operatiei este incarcat in Registrul Instructie. Primul ciclu de fetch se incheie in starea S4. Al doilea ciclu de fetch extrafech incepe in starea S4 a aceluiasi ciclu masina. Executia instructiunii este incheiata in starea S1 a ciclului masina urmator.
______________________________________________________________________________________ 23

Sisteme Incorporate

Instructiunile care se executa in doi ciclii maisna se impart in: instructiuni diferite de MOVX si instructiuni de tip MOVX.

Figura 2.12. Executia instructiunilor intr-un singur ciclu masina

Figura 2.13. Executia instructiunilor in doi cilcii masina diferite de MOVX In mod similar, ca si la instructiunile care se executa intr-un singur ciclu masina, pe langa ciclul de fetch demarat in starea S1 din primul ciclu masina, in starea S4 din acelasi ciclu masina si in starile S1 si S4 din cel de al doilea ciclu masina se genereaza ciclii extrafetch care sunt ignorati continutul registrului PC nu este incrementat (figura 2.13). Instructiunile de tip MOVX dureaza, dupa cum s-a mai precizat, doi ciclii masina. In timpul celui de al doilea ciclu masina nu se mai genereaza ciclii de extrafetch executandu-se operatia de acces la MD externa. Aceasta este singura situatie cand ciclul de extrafetch este omis. In figura 2.14 se prezinta executia instructiunilor de tip MOVX.

______________________________________________________________________________________ 24

Sisteme Incorporate

Figura 2.14. Executia instructiunilor in doi ciclii masina de tip MOVX Dupa cum se observa, executia instructiunilor de tip MOVX demareaza in starea S1 a primului ciclu masina prin citirea codului operatiei. In starea S4 a primului ciclu masina demareaza ciclul de acces la memoria de date externa. In cazul instructiunilor care necesita mai mult de doi ciclii masina modul de desfasurare a operatiilor este similar ca pentru instructiunile care se executa in doi ciclii masina diferite de MOVX.

2.3.7. Ciclii de magistrala a microcontrolerului 8051


La fel cum instructiunile se pot impartii global in instructiuni diferite de MOVX si instructiuni de tip MOVX, ciclii de magistrala sunt impartiti functie de instructiuni. 1) Ciclii de magistrala pentru instructiuni diferite de MOVX In figura 2.15 se prezinta ciclii de magistrala pentru aceste instructiuni. In cazul acestor instructiuni se realizeaza numai accesul memoriei program externe. Un ciclu de magistrala incepe in starea S1P2 prin activarea semnalului ALE, semnal cu ajutorul caruia se asigura demultiplexarea informatiilor plasate pe liniile de adrese/date ale portului P0. La sfarsitul starii S1P2 pe liniile portului P2 va fi plasat octetul mai semnificativ al adresei (partea high a registrului PC PC-H) iar pe liniile portului P0 va fi plasat octetul mai putin semnificativ al adresei (partea low a registrului PC PCL). La sfarsitul starii S2P1 semnalul ALE este dezactivat, frontul cazator al acestui semnal fiind folosit pentru memorarea adresei de pe liniile portului P0 intr-un latch extern. La sfarsitul starii S2P2 este activat semnalul /PSEN , folosit ca semnal de comanda a citirii din memoria program externa. Datele (codul operatiei) plasate de MP sunt esantionate pe frontul crescator al semnalului /PSEN in Registru Instructie. In S4P2 incepe al doilea ciclu de fetch (extrafetch) care este similar cu primul cu observatia ca in cazul instructiunilor codificate pe un singur octet continutul registrului PC nu mai este incrementat.

______________________________________________________________________________________ 25

Sisteme Incorporate

Figura 2.15. Ciclii de magistrala pentru instructiuni diferite de MOVX 2) Ciclii de magistrala pentru instructiuni de tip MOVX. In figura 2.16 se prezinta ciclii de magistrala pentru instructiuni de tip MOVX de citire din MD externa.

Figura 2.16. Ciclii de magistrala pentru instructiuni de tip MOVX de citire din MD externa In figura 2.17 se prezinta ciclii de magistrala pentru instructiuni de tip MOVX de scriere in MD externa.

______________________________________________________________________________________ 26

Sisteme Incorporate

Figura 2.17. Ciclii de magistrala pentru instructiuni de tip MOVX de scriere in MD externa Dupa cum se observa secventa de citire a codului operatiei (fetch) din primul ciclu masina este identic cu cel prezentat pentru instructiunile diferite de MOVX. Din starea S4 se demareaza insa ciclul de magistrala pentru accesarea MD externa indiferent de faptul ca se executa citire sau scriere. Astfel, la inceputul starii S4P2 se activeaza semnalul ALE care in acest caz va stroba informatia de pe liniile portului P0 care vor contine partea mai putin semnificativa a adresei locatiei de memorie din MD externa care se doreste a fi selectata. Pe liniile portului P0 se va plasa continutul registrului DPL sau a unuia din registrele R0 sau R1 (aceasta din ultima situatie se refera la instructiunile MOVX A,@R0; MOVX A,@R1 pentru citire respectiv MOVX @R0,A si MOVX @R1,A pentru scriere). Pe liniile portului P2 se va plasa continutul registrului DPH in cazul instructiunilor MOVX A,@DPTR pentru citire respectiv MOVX @DPTR,A pentru scriere. In cazul accesarii MD externe prin intermediul registrilor R0 sau R1, pe durata accesarii portul P2 poate fi folosit ca iesire de uz general. Semnalele /RD respectiv /WR se activeaza la sfarsitul starii S6P2 a primului ciclu masina si sunt active pana la sfarsitul starii S3P2 a celui de al doilea ciclu masina. Pe liniile portului P0, de la sfarsitul starii S5P2 a primului ciclu masina pana la sfarsitul starii S4P1 a celui de al doilea ciclu masina se vor vehicula date scrise/citite la/de la memorie. In cazul citirii datele vor fi active de la sfarsitul starii S2P1 a celui de al doilea ciclu masina pana la sfarsitul starii S3P2 a aceluiasi ciclu masina. Pe durata accesarii MD externe semnalul /PSEN este inactiv. Ciclul de accesare a MD externe se incheie la sfarsitul starii S4P1 din al doilea ciclu masina cand este demarat un ciclu normal de extrafetch.

______________________________________________________________________________________ 27

Sisteme Incorporate

2.3.7. Sistemul de intreruperi al microcontrolerului 8051


Sistemul de intreruperi al microcontrolerului 8051 accepta cereri de intrerupere de la 5 surse distincte dupa cum urmeaza: a) doua intreruperi externe /INT0 si /INT1; b) doua intreruperi generate in urma activitatii timerelor T0 si T1; c) o intrerupere generata in urma activitatii sistemului de comunicatie seriala. Global, structura sistemului de intreruperi este prezentata in figura 2.18.

Figura 2.18. Structura de principiu a sistemului de intreruperi Intreruperile externe /INT0 si /INT1 pot fi active pe frontul cazator sau pe nivel. Selectarea variantei dorite se face cu ajutorul bitilor IT0 si respectiv IT1 ai registrului TCON. Acest registru este adresabil si la nivel de bit. Structura registrului TCON este: D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 IE1 D2 IT1 D1 IE0 D0 IT0

IT0

IE0

IT1

Semnificatiile bitilor registrului TCON sunt: - - daca este egal cu 0 cererea de intrerupere INT0 este activa pe nivel coborat (0 logic) - daca este egal cu 1 cererea de intrerupere INT0 este activa pe frontul coborator - Fanionul intreruperii externe INT0 active pe frontul cazator. Se seteaza hard cand este detectat frontul sau nivelul corespunzator intreruperii externe. Se reseteaza hard cand intreruperea este servita. - - daca este egal cu 0 cererea de intrerupere INT1 este activa pe nivel coborat (0 logic) - daca este egal cu 1 cererea de intrerupere INT1 este activa pe frontul coborator

______________________________________________________________________________________ 28

Sisteme Incorporate

IE1

TR0 TF0

TR1 TF1

- Fanionul intreruperii externe INT1 active pe frontul cazator. Se seteaza hard cand este detectat frontul sau nivelul corespunzator intreruperii externe. Se reseteaza hard cand intreruperea este servita. - Bit de control pentru pornirea timerului T0. Setat/resetat soft pentru pornirea/oprirea timerului T0 - Fanion de depasire pentru timerul T0. Setat hard cand capacitatea timerului este depasita. Resetat hard la citirea vectorului de intrerupere pentru servirea intreruperii - Bit de control pentru pornirea timerului T1. Setat/resetat soft pentru pornirea/oprirea timerului T1 - Fanion de depasire pentru timerul T1. Setat hard cand capacitatea timerului este depasita. Resetat hard la citirea vectorului de intrerupere pentru servirea intreruperii

Fanioanele IE0 si IE1 sunt setate hard cand pe canalul corespunzator a sosit o cerere de intrerupere. Daca intreruperea este activa pe front, dupa apelul subrutinei de tratare a intreruperii fanionul se reseteaza. Daca intreruperea este activa pe nivel, atunci sursa de intrerupere este testata asupra mentinerii conditiei care a generat setarea fanionului. Intreruperile generate de activitatea timerelor sunt prezentate prin starea fanioanelor TF0 si TF1 din registrul TCON. Intreruperea aferenta sistemului de comunicatie seriala este generata printr-un SAU asupra a doua fanioane RI (care se seteaza in urma aparitiei unui eveniment la receptie) si TI (care se seteaza in urma aparitiei unui eveniment la emisie), fanioane care fac parte din registrul SCON. Ambele fanioane sunt setate hard dar resetarea lor se face numai soft. Toti bitii care genereaza intreruperi (IE0,IE1,TF0,TF1,RI,TI) se pot seta/reseta prin soft cu acelasi efect ca in situatiile prezentate mai sus. Fiecare cerere de intrerupere poate fi validata sau invalidata individual precum si global prin bitii registrului validare intreruperi IE (registru adresabil pe bit). Structura acestui registru este: D7 EA D6 * D5 * D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0

Semnificatiile bitilor registrului IE sunt: EX0 - - daca este egal cu 0 cererea de intreruperea externa /INT0 este invalidata - daca este egal cu 1 cererea de intrerupere externa /INT0 este validata ET0 - - daca este egal cu 0 cererea de intrerupere provenita de la timerul T0 este invalidata - daca este egal cu 1 cererea de intrerupere provenita de la timerul T0 este validata EX1 - - daca este egal cu 0 cererea de intreruperea externa /INT1 este invalidata - daca este egal cu 1 cererea de intrerupere externa /INT1 este validata ET1 - - daca este egal cu 0 cererea de intrerupere provenita de la timerul T1 este invalidata
______________________________________________________________________________________ 29

Sisteme Incorporate

- daca este egal cu 1 cererea de intrerupere provenita de la timerul T1 este validata - - daca este egal cu 0 cererea de intreruperea provenita de la sistemul de ES comunicatie seriala este invalidata - daca este egal cu 1 cererea de intrerupere provenita de la sistemul de comunicatie seriala este validata EA - Bit de validare/invalidare globala a sistemului de intreruperi - daca este 0 sistemul de intreruperi este invalidat global (nici o sursa de cerere de intrerupere nu mai este luata in considerare); - daca este 1 sistemul de intreruperi este validat, acceptarea sau nu a unei intreruperi depinzand de starea bitului corespunzator din registrul IE Sistemul de intreruperi al microcontrolerului 8051 accepta doua nivele de prioritate: a) redusa b) ridicata. Atribuirea nivelului de prioritate pentru fiecare din cele 5 surse de intreruperi se face prin intermediul bitiilor registrului IP Interrupt Priority (registru adresabil pe bit). Structura acestui registru este: D7 Rezervat D6 Rezervat D5 Rezervat D4 PS D3 PT1 D2 PX1 D1 PT0 D0 PX0

Semnificatiile bitilor registrului IP sunt: PX0 PT0 PX1 PT1 PS daca este egal cu 0 cererea de intreruperea externa /INT0 are nivel de prioritate redusa daca este egal cu 1 cererea de intrerupere externa /INT0 are nivel de prioritate ridicata daca este egal cu 0 cererea de intrerupere provenita de la timerul T0 are nivel de prioritate redusa daca este egal cu 1 cererea de intrerupere provenita de la timerul T0 are nivel de prioritate ridicata daca este egal cu 0 cererea de intreruperea externa /INT1 are nivel de prioritate redusa daca este egal cu 1 cererea de intrerupere externa /INT1 are nivel de prioritate ridicata daca este egal cu 0 cererea de intrerupere provenita de la timerul T1 are nivel de prioritate redusa daca este egal cu 1 cererea de intrerupere provenita de la timerul T1 are nivel de prioritate ridicata daca este egal cu 0 cererea de intrerupere provenita de la sistemul de comunicatie seriala are nivel de prioritate redusa daca este egal cu 1 cererea de intrerupere provenita de la sistemul de comunicatie seriala are nivel de prioritate ridicata

Bitii D5,D6,D7 sunt rezervati si nu au voie sa fie setati.


______________________________________________________________________________________ 30

Sisteme Incorporate

O intrerupere de prioritate mica poate fi intrerupta de o cerere de prioritate ridicata dar nu poate fi intrerupta de vreo cerere de prioritate redusa. O intrerupere de prioritate ridicata nu poate fi intrerupta de vreo alta cerere de intrerupere. Daca se receptioneaza simultan doua sau mai multe cereri de intreruperi de acelasi nivel de prioritate, acestea vor fi servite in baza unei ordini prestabilite si anume: a) cererea de intrerupere externa /INT0 cea mai prioritara; b) cererea de intrerupere provenita de la timerul T0; c) cererea de intrerupere externa /INT1; d) cererea de intrerupere provenita de la timerul T1; e) cererea de intrerupere provenita de la sistemul de comunicatie seriala cea mai putin prioritara. Acceptarea unei intreruperi Fanioanele corespunzatoare cererilor de intrerupere IE0,IE1,TF0,TF1 si ES sunt testate in starea S5P2 a fiecarui ciclu masina. Daca un fanion, prin testare, este gasit 1 logic, sistemul de intreruperi va genera o instructiune LCALL la rutina de servire corespunzatoare, cu conditia ca aceasta generare hard sa nu fie blocata de una din urmatoarele conditii: 1. O intrerupere de prioritate egala sau mai mare este in curs de executie; 2. Ciclul de testare a fanioanelor nu este ultimul din ciclul instructie aflat in executie; 3. Instructiunea care se executa este RETI sau o scriere in registrele IE sau IP. La acceptarea unei intreruperi si generarea hard a instructiunii LCALL se salveaza automat in stiva continutul registrului PC (dar nu se salveaza continutul registrului PSW) si se incarca in PC o adresa dependenta de sursa de intrerupere. Adresele care sunt alocate prntru cele 5 surse de intrerupere sunt: - pentru IE0 0003h - pentru TF0 000Bh - pentru IE1 - 0013h - pentru TF1 001Bh - pentru ES 0023h. Revenirea in programul principal, dupa executia rutinei de tratare a intreruperii, se face prin instructiunea RETI, care informeaza unitatea centrala de prelucrare ca rutina de tratare a intreruperii a fost incheiata, reface continutul registrului PC la valoarea de dinaintea acceptarii intreruperii, executia continuand din acel punct. Raspunsul in timp la o cerere de intrerupere Dupa cum s-a prezentat mai sus, fanioanele corespunzatoare cererilor de intrerupere IE0,IE1,TF0,TF1 si ES sunt testate in starea S5P2 a fiecarui ciclu masina. Daca cererea de intrerupere este activa si sunt indeplinite conditiile de acceptare a intreruperii, urmatoarea instructiune care se executa este LCALL, ea fiind generata hard de microcontroler. Deoarece instructiunea LCALL se executa in 2 ciclii masina, rutina de
______________________________________________________________________________________ 31

Sisteme Incorporate

tratare a intreruperii este lansata in executie la al treilea ciclu masina dupa acceptarea intreruperii. In figura 2.19 este prezentat raspunsul in timp la o cerere de intrerupere externa.

Figura 2.19. Raspunsul in timp pentru o cerere de intrerupere In ciclul C2 s-a considerat ca in curs de executie este o instructiune RETI sau o scriere in registrele IE sau IP, punandu-se astfel in evidenta modul in care este ignorata cererea de intrerupere.

2.3.8. Sistemul de temporizare contorizare al microcontrolerului 8051


Microcontrolerul 8051 are doua timer/countere T0 si T1 pe 16 biti. Fiecare registru pe 16 biti asociat este impartit in doua registre pe 8 biti neadresabile pe bit denumite TH0 (octetul mai semnificativ) si TL0 (octetul mai putin semnificativ) pentru T0 respectiv TH1 (octetul mai semnificativ) si TL1 (octetul mai putin semnificativ) pentru T1. Ambele timer/countere pot opera independent fie ca si contor (counter) fie ca temporizator (timer). In modul de operare timer continutul registrului T0 sau T1 este incrementat la fiecare ciclu masina executat. Dupa cum se cunoaste, un ciclu masina dureaza 12 perioade de tact ceea ce inseamna ca frecventa semnalului de tact prin care se asigura comanda de incrementare a registrului folosit este 1/12 din fclk. In modul de operate counter, continutul registrului T0 sau T1 este incrementat la fiecare detectie a unei tranzitii din 1 in 0 a semnalului aplicat din exterior la pinul Tx (T0 sau T1). Esantionarea intrarii Tx se face in starea S5P2 a fiecarui ciclu masina. Daca la doua testari succesive se gasesc valorile 1 respectiv 0 pe linia Tx testata, continutul registrului aferent counter/timer-ului folosit se incrementeaza cu o unitate. Noua valoare din counter/timer-ul folosit este insa disponibila numai dupa starea S3P1 a urmatorului ciclu masina in care a fost detectata tranzitia. Cronograma semnalelor aferente functionarii in modul temporizator este prezentata in figura 2.20.

______________________________________________________________________________________ 32

Sisteme Incorporate

Figura 2.20. Cronogramele de functionare in modul temporizator Rezulta deci ca frecventa maxima a semnalului aplicat la intrare (pinul T0 sau T1) are valoarea: fmax=fclk/24 . Programarea timerelor T0 si T1 se face cu ajutorul unui cuvant de comanda a modului de lucru - registrul TMOD (nu este adresabil pe bit). Structura registrului TMOD este: D7 GATE D6 C/-T D5 M1 D4 M0 D3 GATE D2 C/-T D1 M1 D0 M0

Bitii D0-D3 se refera la timerul T0 iar D4-D7 la timerul T1. Semnificatiile bitiilor sunt: GATE - Bit de control. Cand bitul TRx din registrul TCON este 1 logic si GATE=1, numararea nu va incepe decat daca la pinul /INTx avem un semnal 1 logic (modul de control hard); cand GATE=0 numararea nu va incepe decat atunci cand bitul TRx este setat pe 1 (modul de control soft) - Selectie counter sau timer. Daca valoarea bitului este 0 s-a selectat modul de lucru timer (temporizator) iar daca este 1 s-a selectat modul de lucru counter (contor) - Selectie mod de lucru - Mod 0 Timer/Counter pe 13 biti - Mod 1 Timer/Counter pe 16 biti - Mod 2 Timer/Counter pe 8 biti cu autoancarcare - Mod 3 Numai pentru T0

C/-T

M1 0 0 1 1

M0 0 1 0 1

Modul 0 Timer/Counter pe 13 biti In acest mod de lucru registrul corespunzator timerului utilizat (T0 sau T1) este configurat ca un registru pe 13 biti astfel: THx complet (8 biti) si cei mai putini semnificativi 5 biti din TLx. In figura 2.21 se prezinta schema de principiu a modului 0 de functionare.

______________________________________________________________________________________ 33

Sisteme Incorporate

Figura 2.21. Reprezentarea simbolica a timerelor in modul 0 Cand continutul celor doua registre ajunge la 11111.11111111 la urmatorul impuls noua valoare din registre va fi 00000.00000000 si in acelasi timp fanionul TFx din registrul TCON este setat. Daca intreruperea corespunzatoare este validata, efectul setarii lui TFx se manifesta printr-o cerere de intrerupere. Modul 1 Timer/Counter pe 16 biti In acest mod de lucru registrul corespunzator timerului utilizat (T0 sau T1) este configurat ca un registru pe 16 biti astfel: THx complet (8 biti) si TLx complet (8 biti). Cand continutul celor doua registre ajunge la 11111111.11111111 la urmatorul impuls noua valoare din registre va fi 00000000.00000000 si in acelasi timp fanionul TFx din registrul TCON este setat. Daca intreruperea corespunzatoare este validata, efectul setarii lui TFx se manifesta printr-o cerere de intrerupere. Modul 2 Timer/Counter pe 8 biti cu autoancarcare In acest mod de lucru timerul Tx este configurat ca un registru pe 8 biti. Ca registru de numarare se utilizeaza registrul TLx iar in registrul THx se pastreaza valoarea pe 8 biti care va fi incarcata automat in TLx la fiecare trecere din FFh in 00h. Cand se efectueaza trecerea de la FFh la 00h nu se genereaza numai comanda de autoincarcare si se seteaza si fanionul TFx. In figura 2.22 se prezinta schema de principiu a modului 2 de functionare.

Figura 2.22. Reprezentarea simbolica a timerelor in modul 2


______________________________________________________________________________________ 34

Sisteme Incorporate

Modul 3 Doua timere pe 8 biti In acest mod registrele TL0 si TH0 sunt folosite ca doua numaratoare independente. In figura 2.23 se prezinta schema de principiu a modului 3 de functionare.

Figura 2.23. Reprezentarea simbolica a timerelor in modul 3 Pentru comanda lui TL0 se folosesc bitii de control ai timerului T0: C-/T, GATE, TR0, /INT0 si TF0. TL0 poate fi folosit fie ca si counter fie ca si timer. In cazul registrului TH0 acesta poate fi folosit numai in mod timer (temporizator) si foloseste bitii TR1 si TF1 de la timerul T1. In modul de lucru 3, timerul T1 poate fi blocat pur si simplu (ca si cand TR1=0) sau poate fi folosit in modurile 0,1,2 dar cu observatia ca nu va genera cerere de intrerupere (nu va opera asupra lui TF1).

2.3.9. Sistemul de comunicatie seriala al microcontrolerului 8051


Realizeaza o comunicatie duplex adica poate realiza simultan atat emisie cat si receptie. Sistemul de comunicatie seriala este realizat in jurul a doua registre cu functii speciale: (o parte pentru emisie si alta pentru receptie) desemnate prin aceeasi adresa 99h (unul poate fi numai citit iar celalalt numai scris) si acelasi mnemonic SBUF. Pentru comanda si controlul sistemului de comunicatie seriala exista un registru de comanda SCON. Structura registrului SCON (adresabil pe bit) este: D7 SM0 D6 SM1 D5 SM2 D4 REN D3 TB8 D2 RB8 D1 TI D0 RI

______________________________________________________________________________________ 35

Sisteme Incorporate

Semnificatiile bitiilor registrului SCON sunt: - Este un fanion care atunci cand are valoarea 1 constituie o cerere de RI intrerupere din cauza unor situatii care apar in procesul de receptie (intrerupere receptie de la blocul de receptie seriala). Este setat hard la sfarsitul timpului afectat receptiei celor 8 biti de date in modul 0 sau la jumatatea bitului de STOP in celelalte moduri. Exceptie fac cazurile cand SM2=1. Trebuie resetat prin program (soft) - Este un fanion care atunci cand are valoarea 1 constituie o cerere de TI intrerupere din cauza unor situatii care apar in procesul de emisie (intreruperea emisiei de la blocul de emisie seriala). Este setat hard, prin logica interna, la sfarsitul timpului afectat emisiei celor 8 biti de date in modul 0 sau la inceputul emisiei bitului de STOP in celelalte moduri. Trebuie resetat prin program (soft). - Reprezinta al 9-lea bit receptionat in modurile 2 si 3 In modul 1 daca RB8 SM2=0 este bitul de STOP care a fost receptionat. Daca SM2=1 nu are loc incarcarea bitului de STOP receptionat. In modul 0 nu este utilizat. - Programabil prin soft si reprezinta al 9-lea bit care va fi emis in TB8 modurile 2 si 3 - Bit de validare/invalidare a procesului de receptie. Daca REN=0 REN receptia este invalidata, daca REN=1 receptia este validata. - In modurile 2 si 3 valideaza/invalideaza caracteristicile de comunicatie SM2 multiprocesor ale sistemului de comunicatie seriala. In modul 1 poate fi folosit pentru verificarea validitatii bitului de STOP receptionat. In modul 0 nu are semnificatie si trebuie pus pe 0 logic SM0 SM1 - Selecteaza modul de functionare dorit pentru sistemul de comunicatie serial - Modul 0 - registru de deplasare 0 0 - Modul 1 - UART pe 8 biti cu rata de emisie/receptie variabila 0 1 - Modul 2 - UART pe 9 biti cu rata de emisie/receptie fixa fosc/64 sau 1 0 fosc/32 - Modul 3 - UART pe 9 biti cu rata de emisie/receptie variabila 1 1 Modul 0 - registru de deplasare Logica hard prin intermediul careia se executa modul 0 de functionare este prezentata in figura 2.24. Cronogramele aferente modului 0 sunt prezentate in figura 2.25. In acest mod de lucru, rata de transfer este comandata printr-un semnal care marcheaza starea S6 (ultima a unui ciclu masina) si prin urmare rata de transfer este fixa si egala cu fosc/12. Emisia: Este initiata de orice instructiune care foloseste registrul SBUF ca registru destinatie. Semnalul de comanda a scrierii in SBUF care apare in starea S6P2 provoaca, in afara de inscrierea octetului ce va fi emis serie (prezent pe magistrala interna) in SBUF, inscrierea valorii 1 in bistabilul care constituie al 9-lea rang a registrului de deplasare emitator si constituie, totodata semnal de start pentru logica de
______________________________________________________________________________________ 36

Sisteme Incorporate

comanda a emisiei. Desi octetul care trebuie transmis serie este prezent in SBUF emisia propriuzisa incepe la activarea semnalului SEND si se incheie odata cu dezactivarea acestui semnal.

Figura 2.24. Logica hard pentru modul 0 de functionare al sistemului de comunicatie seriala Activarea semnalului SEND se realizeaza cu o intarziere egala cu durata unui ciclu masina. In modul 0 atat emisia cat si receptia bitilor octetilor data se realizeaza prin
______________________________________________________________________________________ 37

Sisteme Incorporate

pinul P3.0 (RxD) cu atributie alternativa. Semnalul SEND valideaza legatura de la iesirea registrului de deplasare la pinul P3.0 (RxD) si cea a generatorului SHIFT-CLOCK (tact de deplasare) la pinul P3.1 (TxD). Pe timpul cat SEND este activ, in fiecare stare S6P2 se genereaza un impuls SHIFT pentru comanda deplasarii cu o pozitie a continutului registrului SBUF. Deplasarea are loc dinspre rangurile mai semnificative spre cele mai putin semnificative (D7 -> D6 -> ...->D0). Pe masura ce pe la un capat sunt emisi bitii data pe la celalalt capat al registrului se introduce zero. Cand cel mai semnificativ bit al octetului data este in pozitia de iesirelanga el se afla "1" incarcat initial in bistabilul celei de a 9-a pozitii iar toate celelalte pozitii contin zero. Aceasta situatie este sesizata de detectorul de zero. Din acest moment logica de control emisie va genera, cu o intarziere de un ciclu masina, un ultim impuls SHIFT , va dezactiva SEND si va seta fanionul TI. Aceste ultime doua actiuni au loc la inceputul celui de al 10-lea ciclu masina dupa comanda scrie in SBUF. Receptia: Receptia este initiata de conditia REN=1 si RI=0. In starea S6P2 al urmatorului ciclu masina, logica de control receptie serie va inscrie bitii 1111.1110 in registrul de intrare cu deplasare de receptie iar in urmatoarea faza activeaza RECEIVE. Prin acesta se valideaza legatura logica de generare a lui SHIFT-CLOCK la pinul P3.1 (TxD) pentru functia alternativa de iesire. In fiecare stare S6P2 pe durata cat RECEIVE este activ se genereaza tactul SHIFT care provoaca deplasarea la stanga cu o pozitie a registrului de intrare. Valoarea care se incarca la dreapta este cea care a fost esantionata in starea S5P2. Pe masura ce pe la dreapta se introduc bitii datei pe la stanga ies bitii 1 incarcati initial. Cand 0-ul de la initializare ajunge la pozitia limita stanga este sesizat de logica de control receptie serie care va mai genera un ultim impuls SHIFT si va incarca continutul registrului cu deplasare in SBUF, va anula RECEIVE si va seta bitul RI.

Figura 2.25. Cronogramele de functionare a sistemului de comunicatie seriala in modul 0

______________________________________________________________________________________ 38

Sisteme Incorporate

Modul 1 - UART pe 8 biti cu rata de emisie/receptie variabila Logica hard prin intermediul careia se executa modul 1 de functionare este prezentata in figura 2.26. Cronogramele aferente modului 1 sunt prezentate in figura 2.27. Rata de emisie sau de receptie este comandata prin frecventa semnalelor TxCLOCK si RxCLOCK. Cel mai des aceste semnale se obtin cu ajutorul timerului T1

Figura 2.26. Logica hard pentru modul 1 de functionare al sistemului de comunicatie seriala

______________________________________________________________________________________ 39

Sisteme Incorporate

programat in modul 2 de functionare. In aceasta situatie lantul de circuite pentru obtinerea lui TxCLOCK de exemplu este prezentat in figura 2.28. In acest caz formula de calcul a frecventei semnalului TxCLOCK este:

TxCLOCK

OSC

SMOD

12 [256 (TH 1)] 32

SMOD este un bit (D7) al registrului de control al puterii PCON. Uneori 2SMOD este notat printr-un coeficient K ale carui valori sunt: K=1 cand SMOD=0 si K=2 cand SMOD=1. Daca se cunoaste rata de transfer dorita (baud_rate ) si fOSC se poate determina valoarea (TH1) de preancarcare:

(TH 1) = 256

SMOD

OSC

384 baud _ rate

Uneori cand se doreste o rata de transfer foarte mica se poate folosii timerul T1 in modul 1 (divizor pe 16 biti) iar reancarcarea sa se faca prin subrutina de tratare a intreruperii declansate (deci prin soft). In acest caz factorul de divizare variabil va fi 1/[65536-(T1)] unde continutul lui T1 (T1) poate fi intre 0 si 65535. Daca in modul 0 bitii octetului data erau emisi sau receptionati fara vreun bit auxiliar cu rol in transmisie, in modul 1 octetului de transmis ii este atasat un bit de start si unul de stop.

Figura 2.27. Cronogramele de functionare a sistemului de comunicatie seriala in modul 1.


______________________________________________________________________________________ 40

Sisteme Incorporate

Figura 2.28. Lantul de circuite pentru obtinerea lui TxCLOCK Emisia: Este initiata de orice instructiune care foloseste registrul SBUF ca registru destinatie. Semnalul scrie in SBUF incarca totodata un 1 in pozitia a 9-a a registrului cu deplasare si semnaleaza blocului logica de control emisie seriala ca a fost comandat un transfer (se da startul). Emisia propriuzusa incepe in starea S1P1 a ciclului masina care urmeaza dupa primul impuls TxCLOCK ulterior comenzii scrie in SBUF. In continuare timpii afectati transmisiei unui bit sunt sincronizati cu numaratorul divizor cu 16 si nu cu semnalul scrie in SBUF. Emisia propriuzisa incepe prin activarea semnalului SEND care face ca TxD sa devina zero (emitere bit de START). Dupa o perioada TxCLOCK se activeaza semnalul DATA care valideaza legatura de la bitul de iesire al registrului SBUF (registru cu deplasare) la TxD. Dupa o alta perioada TxCLOCK se genereaza primul impuls de deplasare -SHIFT a continutului lui SBUF la dreapta. Pe masura ce bitii datei ies la dreapta, de la stanga se incarca zero. Cand cel mai semnificativ al datei este la iesire in stanga sa este 1-ul incarcat la initializare in a 9-a pozitie iar toate celelalte pozitii mai la stanga sunt pe zero, situatie sesizata de detectorul de zero care determina logica de control emisie seriala sa mai genereze un ultim impuls de deplasare SHIFT si apoi sa dezactiveze semnalul SEND si sa seteze bitul TI. Dezactivarea lui SEND inseamna ca iesirea TxD trece in 1 logic. O noua emisie se poate relua dupa cel putin o perioada TxCLOCK (timp necesar pentru bitul de STOP si in care sa se incarce din nou SBUF deci o noua comanda scrie in SBUF). Receptia: Se initiaza la detectarea unei tranzitii din 1 in 0 la pinul de intrare RxD (tranzitia corespunde inceperii bitului de START). In acest scop RxD este esantionata cu o rata (cadenta) de 16 ori mai mare decat viteza de transfer stabilita. Cand o tranzitie este detectata, divizorul cu 16 de la receptie se reseteaza, asigurandu-se astfel sincronizarea emisiei cu receptia, si toti bitii registrului de deplasare de intrare (9 biti) sunt pusi pe 1 logic (se incarca 1FFh). Cele 16 stari ale divizorului cu 16 impart fiecare perioada RxCLOCK in 16 parti. In starile 7, 8 si 9 ale divizorului, detectorul de bit esantioneaza valoarea lui RxD (aproximativ la mijlocul duratei de bit). Valoarea acceptata va fi cea vazuta in cel putin doua din cele trei esantionari. Aceasta valoare se aduce la intrarea registrului de deplasare de intrare si la logica de control receptie serie. Daca valoarea acceptata la esantionarile bitului presupus de START nu este zero, circuitul de receptie se reseteaza si trece din nou la supravegherea lui RxD pentru a detecta o noua tranzitie (aceasta situatie se mai numeste si START fals provocat de perturbatii). Daca bitul de START se dovedeste valid acesta este incarcat in registrul de deplasare de intrare si receptia restului bitilor va continua.
______________________________________________________________________________________ 41

Sisteme Incorporate

Pe masura ce pe la dreapta intra bitii datei pe la stanga ies bitii 1 incarcati la initializare. Cand bitul de START (0 logic) ajunge in cea mai din stanga pozitie a registrului de deplasare de intrare (registru pe 9 biti) logica de control receptie serie va mai genera un ultim proces de esantionare si deplasare si va incarca cele 8 pozitii mai putin semnificative ale registrului de deplasare de intrare in registrul SBUF iar pozitia a 9-a (cea mai semnificativa) in bitul RB8 din registrul SCON (deci RB8 va contine valoarea gasita pe durata bitului de STOP) si va seta bitu;l RI tot in SCON. Aceste ultime 3 actiuni (incarcarea in SBUF, in RB8 si setarea lui RI) se executa daca si numai daca sunt indeplinite in momentul generarii impulsului de deplasare final urmatoarele doua conditii: 1) RI=0 (receptia nu a fost intrerupta) 2) Fie SM2=0 fie bitul de STOP receptionat este egal cu 1. Daca oricare din cele doua conditii nu sunt indeplinite receptia cadrului este iremediabil pierduta iar in acest moment, indiferent daca sunt sau nu indeplinite conditiile unitatea trece la supraveghere pentru o noua tranzitie din 1 in 0 la pinul RxD.
Modurile 2 si 3 - UART pe 9 biti cu rata de emisie/receptie fixa respectiv variabila

In cazul emisiei, bitului TB8 i se poate asocia o valoare 0 sau 1 prin soft. La receptie al 9-lea bit se incarca in bitul RB8 al registrului SCON. In modul 2 frecventa de tact fTxCLOCK si fRxCLOCK are valori fixe fOSC/32 sau fOSC/64 functie de valoarea bitului SMOD din registrul PCON. In modul 3 frecventa de tact fTxCLOCK si fRxCLOCK se obtine cu ajutorul timerului T1 programat in modul 2 de functionare. Generarea semnalelor de tact se face in mod similar ca la modul 1 al sistemului de comunicatie seriala. Procesul de emisie-receptie pentru modurile 2 si 3 este similar cu cel prezentat pentru modul 1 cu observatia ca intre bitii de START si STOP se insereaza un al 9-lea bit notat TB8 la emisie si RB8 la receptie. Logica hard prin intermediul careia se executa modul 2 de functionare este prezentata in figura 2.29. Cronogramele aferente modului 2 sunt prezentate in figura 2.30. Logica hard prin intermediul careia se executa modul 3 de functionare este prezentata in figura 2.31. Cronogramele aferente modului 3 sunt prezentate in figura 2.32. Emisia: Este initiata de orice instructiune care scrie date in SBUF. Semnalul de comanda scrie in SBUF incarca octetul data transmis de unitatea centrala de prelucrare iar in bitul D, care reprezinta a 9-a pozitie, valoarea bitului TB8 din registrul SCON incarcata anterior, si se da comanda de start pentru logica de control emisie serie. Emisia propriuzisa incepe sincronizat pe semnalul de tact TxCLOCK (deci dupa primul impuls TxCLOCK care urmeaza lui scrie in SBUF) prin activarea semnalului SEND care determina trecerea terminalului TxD in starea 0 corespunzator bitului de START. Dupa o perioada TxCLOCK se activeaza si semnalul DATA care valideaza legatura intre rangul D0 al registrului SBUF si pinul TxD si este emis spre exterior bitul cel mai putin semnificativ D0. Dupa o alta perioada TxCLOCK se da primul impuls SHIFT de deplasare la dreapta al continutului registrului SBUF astfel in pozitia de iesire ajunge bitul D1 iar in
______________________________________________________________________________________ 42

Sisteme Incorporate

pozitia mai semnificativa al lui SBUF va fi bitul TB8 iar in bistabilul celei de a 9-a pozitii se va incarca 1 corespunzator valorii bitului de STOP.

Figura 2.29. Logica hard pentru modul 2 de functionare al sistemului de comunicatie seriala

Procesul continua in acelasi mod cu deosebirea ca de la stanga in bistabilul celei de a 9-a pozitii se incarca 0. Cand TB8 ajunge in pozitia de iesire in stanga sa se afla un bit egal cu 1 si apoi numai zerouri. Aceasta situatie este sesizata de detectorul de zero si va provoca din partea logicii de control emisie un ultim impuls de deplasare SHIFT in urma caruia la iesirea din SBUF ajunge valoarea 1 (bitul de STOP) care insa nu va mai
______________________________________________________________________________________ 43

Sisteme Incorporate

fi emisa intrucat se inactiveaza si semnalele DATA si SEND care intrerup legatura la pinul TxD. Cu toate acestea valoarea logica valoarea logica care se instaleaza la pinul TxD corespunde lui 1 logic (/SEND = 1) ca si bitul de STOP. In acelasi timp se seteaza si fanionul TI din registrul SCON semnaland incheierea emisiei si cerand un nou octet pentru a fi emis. Receptia: Este declansata odata cu setarea bitului REN din registrul SCON si consta in urmarirea starii pinului RxD care este esantionat cu o frecventa de 16 ori mai mare decat cea a semnalului fRxCLOCK in vederea detectarii unei tranzitii din 1 in 0 care va fi interpretata ca tranzitia de la inceputul bitului de START. La detectarea unei tranzitii este resetat divizorul cu 16 aferent partii de receptie. In felul acesta se face sincronizarea intre tacturile de la emisie si cele de la receptie. In registrul cu delasare de intrare se incarca 1FFh. La mijlocul unei perioade a tactului de receptie RxCLOCK (starile 7,8 si 9 ale divizorului cu 16 de la receptie) se esantioneaza valoarea la pinul RxD. Daca la cel putin doua esantionari din 3 executate valoarea gasita la pinul RxD este aceeasi, ea este validata.

Figura 2.30. Cronogramele de functionare a sistemului de comunicatie seriala in modul 2

Daca la citirea bitului de START valoarea acceptata este 1 se va considera ca a fost un START fals, se va reseta logica de control receptie si se trece in continuare la urmarirea intrarii RxD pentru a detecta o noua tranzitie din 1 in 0. Daca valoarea acceptata pentru bitul de START este 0 ea se incarca in registrul cu deplasare de intrare (registru care in modurile 1,2 si 3 are 9 biti) si procesul continua.

______________________________________________________________________________________ 44

Sisteme Incorporate

Figura 2.31. Logica hard pentru modul 3 de functionare al sistemului de comunicatie seriala

______________________________________________________________________________________ 45

Sisteme Incorporate

Figura 2.32. Cronogramele de functionare a sistemului de comunicatie seriala in modul 3

Comanda de deplasare SHIFT la receptie se da corelat cu starea a 9-a a divizorului cu 16, deci preluarea bitului receptionat se face la mijlocul intervalului cat el este prezent la pinul RxD si cand au incetat orice fenomene tranzitorii ale trecerii de la un bit la altul. Pe masura ce de la dreapta intra bitii datei pe la stanga registrului cu deplasare ies bitii pusi pe 1 la initializare. Cand in pozitia cea mai din stanga ajunge bitul de START (valoare 0) in dreapta sa se afla bitii D0-D7. Acest lucru este sesizat de logica de control receptie care va mai genera dupa o perioada RxCLOCK un ultim impuls SHIFT care va provoca o ultima deplasare la stanga (bitul de START se pierde iar in pozitia cea mai din dreapta se incarca bitul care la emisie a fost notat cu TB8). Corelat cu acest ultim impuls SHIFT se comanda incarcarea bitiilor D0-D7 in registrul SBUF, a ultimului bit receptionat (la emisie a fost TB8) in bitul RB8 din registrul SCON si se seteaza fanionul RI din SCON semnaland incheierea procesului de receptie a unui octet si invitand unitatea centrala de prelucrare sa-l preia. Aceste ultime trei operatii au loc daca si numai daca sunt indeplinite doua conditii si anume: 1) valoarea anterioara a lui RI este 0 si 2) valoarea bitului SM2 din registrul SCON sa fie "0 sau valoarea celui de al 9-lea bit receptionat este "1. Daca oricare din aceste conditii nu este indeplinita receptia cadrului este iremediabil pierduta. O perioada de tact RxCLOCK mai tarziu (cat la pinul RxD a fost bitul de STOP) indiferent daca conditiile de mai sus sunt indeplinite sau nu, unitatea trece din nou la supravegherea pinului RxD pentru detectarea unei noi tranzitii RxD. In modurile 2 si 3 nu se efectueaza nici o verificare asupra corectitudinii bitului de STOP.

______________________________________________________________________________________ 46

Sisteme Incorporate

Comunicatii multimicrocontroler

Modurile 2 si 3 sunt dedicate pentru implementarea sistemelor multimicrocontroler. In aceste moduri 9 biti sunt receptionati, al 9-lea regasindu-se in bitul RB8 al registrului SCON. Prin activarea (setarea) bitului SM2 din registrul SCON o cerere de intrerupere datorata activarii fanionului RI nu este validata (generata) decat daca bitul RB8 (al 9-lea bit receptionat) este pe 1. Aceasta facilitate este utilizata pentru implementarea sistemelor de comunicatie multimicrocontroler astfel: cand microcontrolerul master doreste sa transmita un bloc de date la un circuit slave, in prima etapa va emite un octet care semnifica adresa circuitului slave cu care se doreste a se intra in dialog. Un octet de adresa difera de un octet de date prin faptul ca bitul TB9 (al 9-lea bit emis) este 1 in cazul adreselor, respectiv 0 in cazul datelor. Cu bitul SM2=1 receptia unui octet de date nu va genera intrerupere. In schimb receptia unui octet de adresa va genera intrerupere la fiecare circuit slave in rutina de tratare a intreruperilor verificandu-se adresa receptionata. Daca adresa receptionata este identica cu cea alocata, circuitul slave va reseta bitul SM2 si va fi pregatit sa receptioneze octetii de date. Circuitele slave care nu gasesc coincidenta intre adresa asociata si cea receptionata isi vor mentine bitul SM2 pe 1.

2.3.10. Controlul puterii consumate de microcontrolerul 8051


In cazul microcontrolerului 8051 controlul puterii consumate se face prin intermediul registrului PCON (Power CONtrol) neadresabil pe bit. Pentru microcontrolerele realizate in tehnologie HMOS structura registrului PCON este: D7 D6 D5 D4 D3 D2 D1 D0 SMOD * * * * * * * Dupa cum se observa singurul bit care are semnificatie este D7 (SMOD). Bitului SMOD este utilizat de catre sistemul de comunicatie seriala in modurile 1,2 si 3 (vezi paragraful referitor la sistemul de comunicatie seriala al microcontrolerului 8051). Ceilalti biti ai registrului PCON sunt rezervati. Pentru microcontrolerele realizate in tehnologie CHMOS structura registrului PCON este: D7 SMOD D6 * D5 * D4 * D3 GF1 D2 GF0 D1 PD D0 IDL

Semnificatia bitiilor D0-D3 este:


IDL PD GF1 si GF2

Bit pentru selectarea modului de functionare in gol (asteptare) Bit pentru selectarea modului de functionare cu putere redusa Biti fanion de utilizare generala aflati la dispozitia utilizatorului

Circuitele interne care implementeaza modurile de functionare in gol si de functionare cu putere redusa sunt prezentate in figura 2.33.
______________________________________________________________________________________ 47

Sisteme Incorporate

Se observa faptul ca modul de functionare in gol (de asteptare) blocheaza doar unitatea centrala de prelucrare, oscilatorul continua sa lucreze si primesc semnal de tact blocurile pentru controlul intreruperilor, a timerelor si a portul serial.

Figura 2.33. Circutitele interne corespunzatoare modurilor e functionare in gol sau cu putere redusa a microcontrolerului 8051

Starea unitatii centrale de prelucrare este pastrata in intregime (indicatorul de stiva SP, contorul de program PC, registrul de stare PSW, acumulatorul si toate celelalte registre isi pastreaza continutul) pe durata starii de asteptare. Starea de asteptare se instaleaza la sfarsitul instructiei care a pozitionat bitul IDL pe 1. Exista doua posibilitati de a iesi din acest mod: 1) prin activarea oricarei intreruperi; in rutina de tratare a intreruperilor bitul IDL trebuie sters. 2) Cu un RESET hard. Regimul de lucru cu putere redusa se instaleaza la executia unei instructiuni care a pozitionat bitul PD pe 1. Acesta blocheaza oscilatorul din chip si prin blocarea semnalului de tact este oprita orice activitate dar raman neafectate continutul memoriei RAM interne, a registrelor SFR. Singura posibilitate de iesire din aceasta stare este resetarea hard. In modul de lucru cu putere redusa tensiunea de alimentare Vcc poate fi redusa pana la 2 V.

______________________________________________________________________________________ 48

Sisteme Incorporate

3. CIRCUITE PERIFERICE
3.1. Circuitul port paralel de intrare/iesire (PIO) 8255
Circuitul 8255 este un circuit port general de intrare/iesire paralel. Schema bloc interna a circuitului este prezentata in figura 3.1.

Figura 3.1. Schema bloc interna a circuitului I8255 Descriere generala

Circuitul 8255 contine 4 porturi, doua de 8 biti si doua de 4 biti. Fiecare port poate fi programat prin intermediul unui registru de control, sa fie port de intrare sau port de II iesire. Fiecare port de 4 biti este folosit si pentru manevrarea unor semnale de comanda si stare in conjunctie cu porturile A si B. Comunicarea cu magistrala de date a unitatii centrale de prelucrare (microprocesor/microcontroler) se face prin intermediul bufferului magistralei de date pe liniile D0 D7. Prin acestea se transmit atat date cat si cuvinte de control sau stare. Logica de comanda citire/scriere primeste urmatoarele semnale:
/CS /RD /WR

- selectie circuit 8255. Intrarea zero activa. - intrare zero activa. Microprocesorul/microcontrolerul receptioneaza un octet de date sau informatii de stare de la circuitul 8255. - intrare zero activa. Microprocesorul/microcontrolerul inscrie un octet de date sau un cuvant de comanda (control) in 8255.

______________________________________________________________________________________ 49

Sisteme Incorporate

- intrari de selectie pentru resursele interne ale circuitului (porturi; registre de control) 8255. RESET - Semnal de intrare 1 activ. In cazul in care este activ are ca efect stergerea informatiei din toate registrele interne inclusiv registrul cuvintelor de comanda si pune porturile A; B si C in modul de intrare.
A0,A1

Modul de selectare a resurselor interne este: A1 0 0 1 1 0 0 1 1 * A0 0 1 0 1 0 1 0 1 * /RD 0 0 0 0 1 1 1 1 * /WR 1 1 1 1 0 0 0 0 * /CS 0 0 0 0 0 0 0 0 1

Citire continut PA Citire continut PB Citire continut PC Combinatie ilegala Scriere in PA Scriere in PB Scriere in PC Scriere cuvant de comanda Circuit neselectat

Logica de comanda grup A si B contin, registrul cuvantului de comanda (control). In acest registru se inscrie cuvantul de comanda aferent. Citirea acestui registru nu este permisa. Porturile circuitului 8255 au 3 moduri de functionare, care pot fi selectate prin inscrierea cuvantului de comanda corespunzator in registrul de control. Cele 3 moduri de lucru sunt: - Mod 0 I/O obisnuita - Mod 1 I/O strobata - Mod 2 Mag. bidirectionala Cuvantul de comanda si control pentru definirea modului de lucru are urmatoarea structura:

______________________________________________________________________________________ 50

Sisteme Incorporate

D7 obligatoriu pe 1 Porturile A si B pot fi definite separat In timp ce partile portului C sunt legate de definirea modului de lucru a porturilor A si B. Al doilea tip de cuvant de comanda caracterizat prin faptul ca bitul D7 = 0 se utilizeaza pentru setarea respectiv resetarea oricarui bit din portul C. Aceasta caracteristica este foarte utila la implementarea automatelor secventiale unde se cere adeseori schimbarea valorii unei singure variabile de iesire. Cuvantul de comanda are urmatoarea configuratie: D7 0 D6 * D5 * D4 * D3 DPBC2 D2 DPBC1 D1 DPBC0 D0 SP

DPBC2,DPBC1,DPBC0 contin combinatia corespunzatoare bitului din portul C care se doreste a fi controlat (000 bitul PC0 , 111 bitul PC7). SP contine valoarea care se transmite bitului selectat prin DBPC2, DBPC1, DBPC0 (SP= 1 bit setat, SP=0 bit resetat). MODUL 0 intrare/iesire normala

In acest mod data este scrisa sau citita simplu la/de la portul specificat. Oricare port poate fi intrare sau iesire. In acest mod sunt posibile 16 configuratii de intrari/iesiri.
PA I I I I I .......... E PB I I I I E E PC-H I I E E I E PC-L I E I E I E D7 1 1 1 1 1 1 D6 0 0 0 0 0 0 D5 0 0 0 0 0 0 D4 1 1 1 1 1 0 D3 1 1 0 0 1 0 D2 0 0 0 0 0 0 D1 1 1 1 1 0 0 D0 1 0 1 0 1 0

Atunci cand PC-L si PC-H sunt definite (programate) diferit (unul intrare si celalalt iesire) operatia de citire din port va transfera valorile intrarilor de la partea definita ca port de intrare si imaginea iesirilor de la partea definita ca iesire. Deci pe durata unui ciclu de citire sunt accesibile toate liniile indiferent daca au fost programate ca intrari sau iesiri.
______________________________________________________________________________________ 51

Sisteme Incorporate

Pentru partea programata ca iesire, toate liniile sunt accesibile individual, folosind al doilea cuvant de comanda. Cronogramele semnalelor aferente acestui mod este prezentata in figura 3.2.

Figura 3.2. Cronogramele de functionare a circuitului 8255 in modul 0 intrare normala (a) respectiv iesire normala (b) Modul 1. Intrare/iesire strobata numai Portul A si Portul B

In acest mod datele se transfera la/de la portul specificat In conjunctie cu semnalele de strobare sau de stabilire a legaturii. In modul 1 porturile A si B pot fi programate fie ca intrari fie ca iesiri si In aceasta situatie o parte din liniile portului C devin semnale pentru generarea si acceptare a stabilirii legaturii cu dispozitivele periferice.
Modul 1. Intrare strobata

In modul 1 intrare strobata semnalele de control al intrarii sunt: - intrare 0 activa cand semnalul este zero. Valoarea de la intrarea portului respectiv (A sau B) este inscrisa in registrul de intrare - semnalul de iesire 1 activ prin care se indica faptul ca data a fost inscrisa in IBF registrul de intrare dar nu a fost inca citita de microprocesor/microcontroler. INTR - iesire 1 activa, cerere de intrerupere. Se activeaza dupa incarcarea datelor in bufferul de intrare.
/STB

Cronogramele semnalelor aferente acestui mod este prezentata in figura 3.3.

______________________________________________________________________________________ 52

Sisteme Incorporate

Figura 3.3. Cronogramele de functionare a circuitului 8255 in modul 1 intrare strobata

Semnalele /STB; IBF si INTR nu sunt comune pentru porturile A si B. In functie de modul de programare, semnalele se obtin prin intermediul liniilor portului C astfel: Portul A /STB_A PC-4 IBF_A PC-5 INTR_A PC-3 Portul B /STB_B PC-2 IBF_B PC-1 INTR_B PC-0

Liniile ramase nefolosite PC6, 7 pot fi configurate ca linii generale de intrare/iesire. Pentru validarea generarii cererilor de Intrerupere INTR-A si INTR-B pentru fiecare port In parte exista un bistabil INTE (INTE-A pentru portul A si INTE-B pentru portul B) controlat prin program. Pentru INTE-A bitul asociat este PC4 iar pentru INTE-B bitul asociat este PC2. Cuvantul de comanda pentru setarea modului 1 intrare strobata pentru porturile A si B este: D7 1 D6 0 D5 1 D4 1 D3 1/0 D2 1 D1 1 D0 1/0

Modul 1 iesire strobata

In modul 1 iesire strobata semnalele de control al iesirilor sunt: - intrare 0 activa prin care se indica faptul ca UC a Inscris o data In portul /OBF de iesire specificat. - intrare 0 activa prin care se informeaza circuitul I8255 ca data de la /ACK portul A sau B a fost acceptata de periferic (semnalul --ACK se primeste de la periferic) - iesire 1 activa, cerere de Intrerupere. Poate fi utilizat pentru a Intrerupe INTR UCP cand un dispozitiv de iesire a acceptat datele transmise si prin urmare se poate initia un nou transfer de iesire. Cronogramele semnalelor aferente acestui mod este prezentata in figura 3.4.
______________________________________________________________________________________ 53

Sisteme Incorporate

Figura 3.4. Cronogramele de functionare a circuitului 8255 in modul 1 iesire strobata

Semnalele /OBF; /ACK si INTR nu sunt comune pentru porturile A si B. In functie de modul de programare, semnalele se obtin prin intermediul portului C astfel: Portul A /OBF_A PC-7 /ACK_A PC-6 INTR_A PC-3 Portul B /OBF_B PC-1 /ACK_B PC-2 INTR_B PC-0

Liniile ramase nefolosite PC4,5 pot fi configurate ca linii generale de intrare/iesire. Pentru validarea generarii cererilor de Intrerupere INTR-A si INTR-B pentru fiecare port In parte exista un bistabil INTE (INTE-A pentru portul A si INTE-B pentru portul B) controlat prin program. Pentru INTE-A bitul asociat este PC6 iar pentru INTE-B bitul asociat este PC2. Cuvantul de comanda pentru setarea modului 1 iesire strobata pentru porturile A si B este: D7 1 D6 0 D5 1 D4 0 D3 1/0 D2 1 D1 0 D0 1/0

Modul 2 Magistrala bidirectionala

Acest mod de functionare furnizeaza mijlocul de comunicare cu un dispozitiv periferic pe o singura magistrala de 8 biti In ambele sensuri (emisie si receptie). In acest mod de lucru se poate folosi numai portul A care va folosi si 5 biti ai portului C pentru semnale de control si stare: PC7 PC6 PC5 PC4 PC3 /OBF /ACK indica faptul ca UC a scris o data de iesire In portul A valideaza bufferul de iesire cu trei stari al portului A pentru a trimite data catre periferie (activat de periferic). indica faptul ca data a fost incarcata in registrul de intrare. incarca datele in registrul de intrare cerere de Intrerupere valabila atat pentru operatii de intrare cat si de iesire

IBF /STB INTR_A -

______________________________________________________________________________________ 54

Sisteme Incorporate

INTE1 asociat cu --OBF este controlat de PC6 (pentru iesire) INTE2 asociat cu IBF este controlat de PC4 (pentru intrare) In acest mod de lucru portul B poate fi programat fie in mod 0 fie in mod 1. Cuvantul de comanda va avea structura: D7 1 D6 1 D5 1 D4 * D3 1/0 D2 1/0 D1 1/0 D0 1/0

Cronogramele semnalelor aferente acestui mod este prezentata in figura 3.5.

Figura 3.5. Cronogramele de functionare a circuitului 8255 in modul 2 magistrala bidirectionala

______________________________________________________________________________________ 55

Sisteme Incorporate

3.2. Circuitele timer/counter i8253/i8254


Schema bloc interna a circuitelor timer/counter i8253/i8254 este prezentata in figura 3.6.

Figura 3.6. Schema bloc interna a circuitelor timer/counter i8253/i8254

OBSERVATIE: Deoarece din punct de vedere al schemei bloc interne si a modurilor de functionare ale canalelor, circuitele i8253 si i8254 sunt identice, se va face prezentarea circuitului i8253 urmand a se preciza, pentru i8254, numai diferentele.
Functionarea circuitului i8253

Dupa cum se observa din figura 1 in structura interna a circuitului i8253 intra: - un buffer al magistralei de date; - o logica de comanda citire/scriere; - un registru a cuvintelor de comanda; - 3 canale de lucru. Vehicularea informatiei de date intre circuit si unitatea centrala de prelucrare UCP se face prin intermediul bufferului magistralei da date. Datele sunt emise sau receptionate de circuit in cazul executiei de catre UCP a unor instructii de tipul IN sau OUT. Logica de comanda citire/scriere stabileste sensul in care circula informatia si genereaza semnalele interne de comanda necesare functionarii circuitului. Ea opereaza cu urmatoarele semnale:
______________________________________________________________________________________ 56

Sisteme Incorporate

/RD = 0, UCP citeste date de la circuit; /WR = 0, UCP scrie date in circuit; /CS = 0, selectie circuit. Valoarea sa nu influenteaza asupra operatiei curente de numarare.

Liniile A0 si A1 ale magistralei de adrese servesc pentru selectarea canalelor si a registrului cuvintelor de comanda, dupa cum urmeaza: A1 0 0 1 1 A0 0 1 0 1 Canal 0 Canal 1 Canal 2 Registrul Cuvintelor de comanda

Informatiile pe care circuitul i8253 le primeste prin semnalele de comanda sunt: /CS 1 0 0 0 0 0 0 0 0 0 /RD * 1 1 1 1 1 0 0 0 0 /WR * 1 0 0 0 0 1 1 1 1 A1 * * 0 0 1 1 0 0 1 1 A0 * * 0 1 0 1 0 1 0 1

Circuit neselectat Nicio operatie Scrie (incarca) in canalul 0 Scrie (incarca) in canalul 1 Scrie (incarca) in canalul 2 Scrie (incarca) cuvantul de comanda Citeste calanul 0 Citeste canalul 1 Citeste canalul 2 Valabil numai pentru i8254. Comanda speciala de citire inapoi

Cele 3 canale sunt complet independente unul fata de altul. Fiecare are modul sau de functionare si de numarare, fiecare trebuind sa fie programat individual. Capacitatea canalelor este de 16 biti iar continutul lor poate fi un numar binar sau un numar codificat BCD. Valoarea maxima cu care pot fi ele preancarcate este 65535 in binar sau 9999 in BCD. Canalele sunt incarcate initial prin program de catre UCP, continutul lor fiind, in principiu decrementat de impulsurile primite la intrarea CLK conditionat de modul de functionare si de starea liniei de intrare GATE. Pe linia de iesire OUT se va obtine un semnal a carui forma depinde de modul de programare ales pentru canalul in cauza. Fiecare canal poate functiona in unul din urmatoarele moduri: Mod 0 numarator de evenimente; Mod 1 monostabil redeclansabil; Mod 2 generator de impulsuri; Mod 3 generator de semnale dreptunghiulare; Mod 4 monostabil declansabil prin program (soft); Mod 5 monostabil declansabil prin semnal (hard).
______________________________________________________________________________________ 57

Sisteme Incorporate

Pentru precizarea modului de lucru si a altor informatii UCP trebuie sa trimita pentru fiecare canal cate un cuvant de comanda. O parte din bitii acestor cuvinte de comanda indica la care canal se refera. Aceste cuvinte de comanda sunt primite prin bufferul magistralei de date intr-un registru al cuvantului de comanda de unde sunt dirijate catre elementele de memorare (registrul cuvant de comanda) aferente fiecarui canal.
Programarea circuitului i8253

Fiecare canal este programat individual prin scrierea cuvantului de comanda corespunzator si a inca 1 sau 2 cuvinte (octeti) reprezentand numarul cu care se preincarca canalul. Ordinea in care se transmit octetii ce reprezinta numarul de preincarcare este: intai cel mai putin semnificativ si apoi cel mai semnificativ. In aceeasi ordine se si citesc, in cazul unei operatii de citire a continutului canalului. Pentru fiecare canal intai se transmite cuvantul de comanda si apoi octetii continand numarul de preincarcare. Nu este necesar ca transmiterea cuvantului de comanda si a octetilor sa se efectueze consecutiv, dar trebuie mentinuta ordinea descrisa mai sus. In cazul in care numarul de preincarcare este pe doi octeti trebuie insa ca acestia sa fie trimisi consecutivi. Numaratorul unui canal nu este incarcat pana cand valoarea de preincarcare este scrisa de UCP si urmata de un front crescator si un front descrescator al semnalului CLK al canalului respectiv. Orice citire a continutului numaratorului unui canal inainte de frontul descrescator al semnalului CLK poate duce la invalidarea datei. Ordinea in care se programeaza cele 3 canale (canalul 0 nu este necesar sa fie primul programat la fel cum canalul 2 nu trebuie sa fie ultimul). Structura cuvantului de comanda este: D7 SC1 D6 SC0 D5 RL1 D4 RL0 D3 M2 D2 M1 D1 M0 D0 BCD

Semnificatiile bitilor cuvantului de comanda sunt:


BCD = Daca are valoarea 0 numarul de preincarcare este codificat in binar Daca are valoarea 1 numarul de preincarcare este codificat BCD M2 0 0 * * 1 1 M1 0 0 1 1 0 0 M0 0 1 0 1 0 1

Stabilesc modul de lucru Modul 0 Modul 1 Modul 2 Modul 3 Modul 4 Modul 5

______________________________________________________________________________________ 58

Sisteme Incorporate

RL1 0 0

RL0 0 1

1 1
SC1 0 0 1 1

0 1
SC0 0 1 0 1

Comanda de citire sau preancarcare Memorare continut numarator in registrele pentru citire Citire/Scriere octet mai putin semnificativ si pune octetul mai semnificativ pe zero Citire/Scriere octetul mai semnificativ si pune octetul mai putin semnificativ pe zero Citire/Scriere 2 octeti, cel mai putin semnificativ primul Selectie canal Selectie canal 0 Selectie canal 1 Selectie canal 2 Combinatie nepermisa pentru 8253. Comanda de citire inapoi pentru 8254

Citirea continutului unui canal se poate face in doua moduri: 1) normal citirea se face pe D0-D7 prin selectia canalului dorit folosind liniile A1A0. Singura cerinta a acestei metode este de a asigura un numar stabil la citire. In acest scop operatia in curs (de numarare) trebuie inhibata la numaratorul selectat pentru citire fie prin intrarea GATE fie prin logica externa care sa inhibe impulsurile CLK cand se face citirea; 2) prin memorare in acest mod citirea se face prin trimiterea mai intai a unui cuvant de comanda de memorare (cuvant cu RL1 si RL0 PE 0) care determina inscrierea informatiei din numarator intr-un registru intern cu aceeasi adresare ca si numaratorul. In cazul transmiterii unei comenzi de memorare, bitii D3-D0 isi pierd semnificatia.
Comanda de citire inapoi NUMAI pentru i8254

Aceasta comanda este folosita pentru verificarea: - valorii din numarator; - starea curenta a pinului OUT; - starea fanionului de zero (NULL COUNT) a canalului selectat. Comanda este scrisa in registrul cuvant de comanda si are urmatoarea structura: D7 1 D6 1 D5 D4 /COUNT /STATUS D3 CNT2 D2 CNT1 D1 CNT0 D0 0

Semnificatiile bitilor sunt:


/COUNT = 0 Citeste in registrul intern valoarea din numaratorul corespunzator canalului selectat
______________________________________________________________________________________ 59

Sisteme Incorporate

/STATUS = 0 Citeste intr-un registru intern starea canalului selectat CNT2 = 1 Selectie canal 2 CNT1 = 1 Selectie canal 1 CNT0 = 1 Selectie canal 0

Comanda de citire inapoi poate fi folosita pentru citirea simultana a celor 3 canale. Pana la citirea valorii din canalul selectat numararea este blocata. Octetul de stare care poate fi citit (/STATUS = 0) are urmatoarea structura: D7 OUTPUT D6 NULL COUNT D5 RL1 D4 RL0 D3 M2 D2 M1 D1 M0 D0 BCD

Semnificatiile bitilor octetului de stare:


OUTPUT = Prin valoarea sa indica starea logica a pinului OUT 0 nivel logic 0 pe linia OUT 1 nivel logic 1 pe linia OUT NULL COUNT = Indica prin valoarea sa daca continutul numaratorului este 0 sau nu 0 continutul numaratorului nu este zero 1 continutul numaratorului este zero RL1, RL0 = Au aceeasi semnificatie ca la programare M2, M1, M0 = Au aceeasi semnificatie ca la programare BCD = Au aceeasi semnificatie ca la programare

Modurile de functionare ale circuitelor i8253/i8254 Mod 0 Numarator de evenimente

Dupa inscrierea modului de lucru (cuvantul de comanda) iesirea OUT va fi trecuta in 0 logic. Dupa ce numarul este incarcat in numarator, OUT va ramane pe 0 si numaratorul va numara impulsurile (evenimentele) de la intrarea CLK. Cand se ajunge la valoarea finala (continutul numaratorului este zero) OUT va trece in 1 logic si ramane la aceasta valoare pana cand canalul este reincarcat cu un nou mod de lucru sau cu un nou numar moment in care OUT este trecut in 0 logic. Inregistrarea evenimentelor este validata de semnul GATE = 1. Daca GATE = 0 evenimentele nu sunt numarate. Cand GATE redevine 1 numararea continua de la valoarea ramasa in numarator. Reincarcarea numaratorului in timpul numararii are loc astfel:
______________________________________________________________________________________ 60

Sisteme Incorporate

- incarcarea primului octet opreste numararea curenta - incarcarea celui de al doilea octet porneste noua numarare.

Figura 3.7. Cronogramele de functionare in modul 0 Mod 1 Monostabil programabil

Dupa inscrierea modului de lucru iesirea OUT este trecuta in 1 logic. OUT devine 0 logic la numarrea urmatorului impuls dupa frontul crescator al intrarii GATE. OUT redevine 1 la terminarea numararii. Daca o noua valoare de numarat este incarcata in timp ce OUT = 0 aceasta nu va afecta durata impulsului pana la urmatoarea comanda GATE de declansare (urmatoarea tranzitie din 0 in 1). Numarul curent poate fi citit la orice moment fara a afecta impulsul monostabilului. Monostabilul este redeclansabil, deci OUT va ramane pe 0 pentru intregul numar, dupa orice ultim front crescator al intrarii GATE.

Figura 3.8. Cronogramele de functionare in modul 1 Mod 2 Generator de impulsuri

Iesirea OUT este 1 logic pe durata a N-1 impulsuri aplicate la intrarea CLK si 0 logic pe durata celui de al N-lea impuls unde N este numarul cu care s-a incarcat numaratorul. Acest lucru are loc daca GATE este pe 1 logic. Cand GATE devine 0 logic se forteaza OUT pe 1 logic si decrementarea inceteaza iar tranzitia din 0 in 1 a lui GATE reinitializeaza numararea de la valoarea inscrisa prin program ceea ce echivaleaza cu resincronizarea hard a numaratorului. Cand este inscris acest mod OUT va ramane pe 1 logic pana cand numaratorul este incarcat. Astfel se poate asigura sincronizarea prin soft. Daca numaratorul este reincarcat intre impulsurile de iesire perioada prezentata nu va fi afectata, dar perioada urmatoare va reflecta noua valoare.

______________________________________________________________________________________ 61

Sisteme Incorporate

Figura 3.9. Cronogramele de functionare in modul 2 Mod 3 Generator de semnale dreptunghiulare

Este similar cu modul 2 cu exceptia faptului ca OUT va fi 1 logic pana cand o jumatate de numar a fost completata (pentru numere pare) si va trece pe 0 logic pentru cealalta jumatate a numarului. Aceasta se realizeaza prin decrementarea numaratorului cu 2 pe frontul cazator al fiecarui impuls de tact CLK. Cand numaratorul ajunge la valoarea finala (0) starea iesirii OUT se schimba si numaratorul este reincarcat cu numarul intreg si procesul se repeta. Daca numarul este impar si OUT = 1, primul impuls de tact (dupa ce numarul este incarcat) decrementeaza cu 1, impulsurile ulterioare decrementeaza cu 2. La atingerea valorii finale OUT este pe 0 logic si intreg numarul este reincarcat. Primul impuls urmator reincarcarii decrementeaza numaratorul cu 3, impulsurile urmatoare decrementeaza numaratorul cu 2, apoi intreg procesul se repeta. Pe aceasta cale daca numarul este impar iesirea OUT va fi pe 1 logic timp de (N+1)/2 perioade si respectiv pe 0 logic timp de (N-1)/2 perioade. Restul precizarilor fiind identice cu cele facute la modul 2.

Figura 3.10. Cronogramele de functionare in modul 3

Modul 4 Monostabil declansat prin program

Dupa incarcarea numaratorului iesirea OUT ramane pe 1 logic (stare in care se afla dupa inscrierea modului de lucru) pe durata a N impulsuri CLK (pana se ajunge la valorea finla 0) cand OUT va trece in 0 logic dupa ce revine pe 1 logic la urmatorul impuls CLK. Acest mod de functionare se reia dupa reincarcarea prin program a numaratorului. Daca GATE este 0 logic numararea este inhibata. Daca numaratorul este reincarcat intre impulsurile de iesire, perioada prezenta nu este afectata dar urmatoarea va reflecta noua valoare.

______________________________________________________________________________________ 62

Sisteme Incorporate

Figura 3.11. Cronogramele de functionare in modul 4 Modul 5 Monostabil declansat prin semnal

Numaratorul va porni numaratoarea dupa frontul crescator al intrarii de declansare GATE si va trece OUT in 0 logic pentru o perioada a semnalului CLK cand se ajunge la valoarea finala. Numaratorul este redeclansabil. Iesirea OUT nu va lua valoarea 0 logic pana la o numarare completa dupa frontul crescator al oricatrei declansari.

Figura 3.12. Cronogramele de functionare in modul 5

______________________________________________________________________________________ 63

Sisteme Incorporate

4. Sistemele de interfatare ale Sistemelor Incorporate


Sistemul de interfatare reprezinta elementul cel mai caracteristic al structurii Sistemelor Incorporate. El serveste la adaptarea intre semnalele din/sau spre exterior (proces) si cele cu care poate opera microsistemul. Principalele tipuri de semnale intalnite la conectarea cu exteriorul sunt prezentate in figura 4.1.
Semnale

Semnale purtatoare de informatii

Analogice

Continue

De tip "curent"

0 - 10 mA cc 4 - 20 mA cc

De tip "tensiune"

De nivel mare (110 V cc sau ac)

De nivel mediu (n *10 V cc sau ac) De nivel mic (0 - 20 mV)

Discontinue

Impulsuri cu frecventa modulata

In amplitudine In durata

Quasinumerice

Impulsuri cu amplitudine si durata constante dar cu informatia continuta

In frecventa unui tren de impulsuri In perioada unui tren de impulsuri In numarul de impulsuri dintr-o secventa

Numerice

Indicand starea unor elemente (se mai numesc semnale logice sau semnale binare)

Indicand valoarea numerica a unor marimi

In forma binara In forma BCD

Semnale de comanda

Analogice

De tip "curent"

0 - 10 mA cc

4 - 20 mA cc

De tip "tensiune"

+/- 10 Vcc

Numerice

Cu doua stari (pornit - oprit) Propriu-zise (marimi de referinta)

Figura 4.1. Principalele tipuri de semnale

In general, in organizarea sistemului de interfatare se disting cate doua categorii pentru fiecare sens: intrari numerice si intrari analogice, respectiv iesiri numerice si iesiri analogice.
______________________________________________________________________________________ 64

Sisteme Incorporate

In oricare din aceste sisteme, una din problemele de baza este aceea ca semnalul sa ajunga curat (neafectat de perturbatii) si fara erori la utilizator, si pe cat posibil sa se asigure o decuplare intre circuitele de forta (curenti tari) si cele de prelucrare a informatiei (de curenti slabi, de comanda). Solutiile tehnice pentru rezolvarea acestor probleme sunt specifice caracteristicilor semnalelor.

4.1. Principii de structurare pe nivele ale interfetelor


Sistemele incorporatesunt (SI) in estenta sisteme de calcul specializate (sisteme echipate cu microprocesor sau microcontroler), si ca atare conectarea acestora cu exteriorul (procesul) respecta principiile generale de interfatare a unei unitati centrale de prelucrare (CPU) cu procesul. O schema generala de interfata, asa cum este prezentata in figura 4.2, evidenteaza trei nivele de transfer al informatiei. Nivelul 1 se refera la interfata proprie CPU si asigura schimburile de informatii pe linii de legatura, organizate in sistemul magistrala. Nivelul 2 se refera la interfata prin legatura directa a sistemului de intrare/iesire, asigurand administrarea schimburilor de informatie intre CPU si elementele de cuplare la perifericele de proces. Nivelul 3 se refera la interfata speciala pentru terminale de proces si asigura conexiunea cu traductoarele (instrumente de proces) considerate periferice speciale. La acest nivel se intalnesc semnale prelevate din proces si semnale dirijate spre proces
Adaptare Interfata de proces Subansamble specializate Proces Subansamble specializate

Tampon Logica administrarii schimburilor Tampon

CPU

Nivelul 1

Nivelul 2

Nivelul 3

Figura 4.2. Structura generala a unei interfete

Se observa ca cele 3 nivele de transfer al informatiei implica doua subansamble hardware: unul care asigura interfata propriu-zisa de proces (intre nivelele 2 si 3), incluzand si perifericele specializate (display, imprimante etc.), altul care asigura adaptarea, specifica fiecarui mod de legatura a CPU, dar indiferent de perifericul de proces. In cazuri particulare, cele doua subansamble pot fi realizate unitar, situatie in care nivelul 2 dispare.

4.2. Transferul de informatii la nivelul 1 al interfetelor


Nivelul 1 al interfetelor, care contine CPU, se caracterizeaza prin existenta memoriilor si a unor unitati specializate de intrare/iesire, in esenta porturi numerice care
______________________________________________________________________________________ 65

Sisteme Incorporate

pot fi selectate de adresele de control, incarcate (scrierea de date de catre CPU) sau citite (citire de date executata de CPU). Functie de tipul CPU utilizat adresarea porturilor de intrare/iesire se poate realiza in doua moduri distincte: - memory mapped in cazul in care CPU nu detine spatiu distinct de adrese pentru operatiile de intrare/iesire fata de zona alocata memoriei. De ex. Microcontrolerele din familiile MCS51 si Motorola HC11 (vezi figura 4.3) - memory mapped I/O mapped in cazul in care CPU detine spatiu separat de adrese pentru memorii si porturile de intrare/iesire. De ex. Microprocesoarele din familiile INTEL 8086 si Motorola 68000 (vezi figura 4.4).
Magistrala de Adrese

Memorie CPU

Port Intrare/ Iesire

Magistrala de Date
/MEM_RD /MEM_WR

Figura 4.3. Structura de principiu al unui sistem memory mapped


Magistrala de Adrese

Memorie CPU
Magistrala de Date
/MEM_RD /MEM_WR /IO_RD /IO_WR

Port Intrare/ Iesire

Figura 4.4. Structura de principiu al unui sistem memory mapped I/O mapped

In cazul sistemelor memory mapped accesul la porturile de intrare/iesire (PIE) se face in mod identic ca si accesarea memoriei (prin instructii specifice de accesare a memoriei). Adresele alocate pentru PIE sunt cuprinse in harta adreselor care contine si adresele memoriilor putandu-se utiliza acelasi decodificator de adrese pentru obtinerea semnalelor de selectie corespunzatoare. In cazul sistemelor memory mapped I/O mapped acestea sunt caraterizate prin faptul ca accesul la PIE se realizeaza prin instructiuni specifice, de genul IN/OUT,
______________________________________________________________________________________ 66

Sisteme Incorporate

diferite de cele specifice accesarii memoriei. In acest caz spatiile de adresare pentru memorii, respectiv PIE sunt complet separate utilizandu-se decodificatoare de adrese separate pentru obtinerea semnalelor de selectie pentru memorii, respectiv PIE.

4.3. Transferul de informatii la nivelul 2 al interfetei


Pentru a putea descrie schimburile de informatii la nivelul 2, trebuie urmatite mai intai structurile hardware ale subansamblelor ce asigura transmiterea informatiilor intre nivelele 2 si 3. Aceste subansamble se pot grupa in doua clase mari: - module de achizitie de date de la proces (module de intrare - MI); - module de distributie de date catre proces (module de iesire - ME). MI si ME pot fi, la randul lor, grupate in doua mari categorii, dupa cum datele sunt numerice sau analogice.
Module de intrari numerice (MIN)

Asigura introducerea sub forma binara in SI a unei informatii referitoare la starea procesului, sarcinile modulelor fiind: o colectarea si centralizarea informatiei numerice; o selectarea liniilor de intrare si adaptarea impulsurilor receptionate la caracteristicile de intrare ale elementului receptor; o transferul informatiei obtinute catre CPU. Numarul si nivelul semnalelor numerice provenind de la proces variaza in limite largi. In general, informatia este transmisa prin niveluri de tensiune. Pentru asigurarea corectitudinii informatiei si pentru protejarea sistemului de calcul semnalele de la senzori sufera o seama de transformari (prelucrari) astfel incat sa se asigure compatibilitate cu semnalele de nivel TTL. Structura de principiu al unui bloc de prelucrare a semnalelor de intrare (BPSI) este prezentata in figura 4.5.

Adaptare

Filtrare

Limitare si Filtrare

Separare Galvanica

Formare

Uext

Figura 4.5. Schema de principiu al BPSI

In figura 4.6 este prezentata o schema electrica de principiu utilizata in implementarea BPSI.

______________________________________________________________________________________ 67

Sisteme Incorporate

VCC

R5

R1 1 2

D1

R4 1 5

R2 C1

R3

D2 C2 2 4

ISO1

Uext

Figura 6. Schema electrica de principiu a unui BPSI

Structura de principiu a unui MIN este prezentata in figura 4.7.


S1 BPSI 1 S2 BPSI 2 MUX RT CPU

Sn BPSI n

BC Uext

Figura 4.7. Structura de principiu a MIN

Semnalele numerice primite din proces sunt aduse la nivel TTL prin intermediul BPSI. Prin intermediul multiplexorului MUX se asigura memorarea in registrul tampon RT a informatiei continute pe canalul indicat de adresa trimisa de CPU si interpretata de blocul logic de comanda BC. Structura din figura 4.5 poate fi adaptata si pentru cazul cand pe canale se transmit combainatii de cod (cuvinte de mai multi biti); in acest caz informatia poate fi transmisa fie serial, fie paralel.
Module de iesiri numerice (MEN)

MEN converteste semnalele transmise de SI in comenzi numerice cu caracteristici nivel, durata, putere specifice elementelor carora sunt destinate. Exista trei modalitati de furnizare a semnalelor numerice pe canale de tip ON/OFF, care asigura comenzi binare de tip inchis-deschis, pe canale cu iesire in tren de impulsuri (modulate in frecventa sau durata) utilizate in general pentru comanda motoarelor (de curent continuu sau pas cu pas) si pe canale cu iesiri in cod de impulsuri utilizate in general pentru comanda dispozitivelor de afisare a datelor. Schema de principiu pentru un MEN este prezentata in figura 4.8.

______________________________________________________________________________________ 68

Sisteme Incorporate

Etaj Final

Amplificator de Putere

Separare Galvanica

RT1

BPSE 1 Spre Proces


Etaj Final Amplificator de Putere Separare Galvanica

RT2

CPU

BPSE 2

Etaj Final

Amplificator de Putere

Separare Galvanica

RTn

BPSE n BC

Figura 4.8. Strucutra de principiu a MEN

In figura 4.8 a fost indicat si blocul de prelucrare al semnalelor de iesire numerice BPSE. In figura 4.9, functie de elementul final al canalelor de tip ON/OFF, sunt prezentate doua tipuri de module si anume: a) cu iesire pe releu (figura 4.9.a); b) cu iesire pe tranzistor (figura 4.9.b).
Uext RL1 4 3 D1 VCC RELAY SPST 1 5 ISO1 U1A Comanda 1 2 74LS07 R1 1 2

Iesire tip contact (Spre proces)

a)
Ue R3

Q1A D2 R2 VCC R4 1 5 Xs

ISO1 U1A Comanda 1 2 74LS07 R1 R5

Q2A

b) Figura 4.9. Schemele de principiu ale modulelor de tip ON/OFF: a) cu iesire pe releu; b) cu iesire pe tranzistor

______________________________________________________________________________________ 69

Sisteme Incorporate

Module de intrari analogice (MIA)

Indiferent de structura globala, MIA foloseste urmatoarele elemente de baza: - element de jonctiune, care realizeaza conectarea la MIA a liniilor pe care se transmit semnalele din proces; - elemente de prelucrare primara a semnalului analogic (EPP), care realizeaza in principal functii de filtrare si compensare; - multiplexoare (MUX), care asigura selectarea punctului de masurare dorit, prin aceasta creindu-se posibilitatea utilizarii in comun a unui CAN de toate circuitele de intrare; - amplificatoare (A), care au drept scop aducerea semnalului analogic in gama necesara conversiei A/N, precum si adaptarea de impedanta; - dispozitivul de esantionare si memorare (DEM), ce consta dintr-un esantionator si un extrapolator de ordinul 0, care pastreaza valoarea semnalului esantionat pe durata necesara conversiei; - convertorul analog/numeric (CAN), care realizeaza conversia in forma numerica (de obicei in cod binar natural sau in BCD) a semnalelor analogice; - registrul tampon (RT), care contine valoarea numerica a semnalului solicitat de CPU, si eventualele informatii referitoare la terminarea conversiei, incadrarea semnalului masurat intre anumite limite etc.; - blocul de comanda (BC) asigura desfasurarea secventiala corespunzatoare a tuturor operatiilor din cadrul MIA. Structura generala a unui MIA este prezentata in figura 4.10.
Semnale analogice din proces Spre CPU

EPP

A MUX

DEM

CAN

RT

BC

Intrari de comanda

Figura 4.10. Structura generala a MIA

Amplasarea amplificatorului depinde esential de nivelul semnalului, de viteza de lucru, de domeniul dinamic al CAN. O amplasare inainte de MUX determina utilizarea unui multiplexor mai putin pretentios si a unui CAN cu numar de biti mai mic, intrucat semnalele primite de la MUX sunt aceeasi amplitudine. Aceasta varianta se recomanda pentru un numar mic de canale (deoarece se utilizeaza cate un amplificator pe fiecare canal). O alta varianta ce se poate utiliza in acelasi scop consta in amplasarea dupa MUX a unui amplificator cu factor de amplificare programabil (AFAP), care este un amplificator de semnal mic a carui amplificare este controlata de SI, in asa fel incat sa se modifice odata cu selectarea canalului de masura de MUX.

______________________________________________________________________________________ 70

Sisteme Incorporate

Module de iesiri analogice (MEA)

Prin intermediul acestor module SI transmite in exterior (procesului) comenzile necesare sau poate fi cuplat cu diverse blocuri de stocare, vizualizare sau semnalizare a informatiei. In realizarea MEA se disting doua variante principale, care se deosebesc dupa modul de utilizare al CNA. In figura 4.11 se prezinta o schema care utilizeaza un CNA comun pentru toate canalele, ceea ce constituie un avantaj; acest avantaj este contracarat de faptul ca structura necesita un demultiplexor analogic si memorii analogice MAi pentru memorarea comenzii analogice pe durata cat e necesara in proces.

MA1 CNA De la CPU MUX MAn Proces

Figura 4.11. Schema bloc de principiu al MEA cu un singur CNA

O a doua varianta utilizeaza cate un CNA pentru fiecare canal in parte, permitand o demultiplexare numerica si memorarea numerica intr-un registru ce precede CNA, dupa care semnalul este adus in gama de semnal unificat prin adaptoarele de gama (AG) (figura 4.12).
RT CNA AG

De la CPU

RT MUX (numeric)

CNA

AG Proces

RT BC

CNA

AG

Figura 4.12. Schema bloc de principiu al MEA cu CNA pe fiecare canal

______________________________________________________________________________________ 71

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