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.

Structura de baza a unui SI este prezentata in figura 1.1. Figura 1.1. Structura principiala a

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

1.2. Exemple de SI SI utilizat in controlul unui autovehicul In acest caz rolul SI este

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

diferite comenzi. SI utilizate in aparatura electocasnica In cazul acestor tipuri de echipamente SI are rolul

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

Sisteme Incorporate SI utilizate in aplicatii industriale SI au rolul de a asigura executia anumitor faze

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

SI utilizate in telecomunicatii

in care este integrat SI utilizate in telecomunicatii SI utilizate in cadrul acestor sisteme pot fi

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, predictibilitate

Criterii: pret, viteza de lucru

5

Sisteme Incorporate

1.4. Arhitectura tipica a unui SI

In figura 1.2 este prezentata arhitectura tipica a unui SI.

In figura 1.2 este prezentata arhitectura tipica a unui SI. Figura 1.2. Arhitectura tipica a unui

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 PC- 104 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 BIOS- ul sistemului, sistemul de operare in timp-real selectat (in cazul utilizarii lui PC- 104), 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 LED- uri);

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.

Cerinte Schemele bloc Functionale Schemele bloc generice ale generice ale componentei componentei hardware
Cerinte
Schemele bloc
Functionale
Schemele bloc
generice ale
generice ale
componentei
componentei
hardware
Formalizarea
software
comportamentala
Selectie
Selectie
Platforma
Module
Stabilirea
Hardware
Defalcarea
Software
platformei
hardware/
hardware
software
Integrarea
Module software
Blocuri hardware
modulelor
specifice
specifice aplicatiei
Integrarea blocurilor
specifice in platforma
hardware
software
aplicatiei
Sistemul de Operare
HW/SW
Simularea
Co-simulare
Functionalitatii
sistemului
Simularea de
nivel scazut a
softwareului
hardware
Testare hardware si software pe simulator/emulator
Proiectare
Dezvoltarea
fizica a
softwareului
hardwareului
aplicatie
Realizare
Testare
Verificarea HW/SW pe prototip
Prototip
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

Sisteme Incorporate Figura 2.1 . Schema bloc a microcontrolerului 8051 spatiul maxim adresabil de 64 Koct

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

Sisteme Incorporate Figura 2.2 . Structura si semnificatia bitiilor registrului PSW - stack pointer – SP

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.

– intrari folosite pentru conectarea cristalului de cuart. Figura 2.3 . Capsula microcontrolerului 8051 2.3.2.

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

Sisteme Incorporate Figura 2.4 . Structura de principiu a MP pentru microcontrolerul 8051 Semnalul de strobare

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.

In figura 2.5 se prezinta structura de principiu a MD. Figura 2.5 . Structura de principiu

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.

maxima de 64 Koct de la adresa 0000h pana la FFFFh. Figura 2.6 . Structura zonei

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

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

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

16

Sisteme Incorporate

Sisteme Incorporate Figura 2.8 . Conectarea MP externa si a MD externa la un microcontroler 8051.

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 registrii

- MD interna prin @R0, @R1 sau SP

- 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.

rezonator ceramic si capacitati la masa ca in figura 2.9. Figura 2.9 . Conectarea unui cristal

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.

Rezulta astfel variantele de conectare din figura 2.10. Figura 2.10 . Conectarea semnalelor de tact externe

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 S1…S6 fiecare stare durand doua perioade de tact denumite P1 si P2 (vezi figura 2.11).

doua perioade de tact denumite P1 si P2 (vezi figura 2.11). Figura 2.11 . Structura unui

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.

instructiuni diferite de MOVX si instructiuni de tip MOVX. Figura 2.12 . Executia instructiunilor intr-un singur

Figura 2.12. Executia instructiunilor intr-un singur ciclu masina

2.12 . Executia instructiunilor intr-un singur ciclu masina Figura 2.13 . Executia instructiunilor in doi cilcii

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

Sisteme Incorporate Figura 2.14 . Executia instructiunilor in doi ciclii masina de tip MOVX Dupa cum

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

Sisteme Incorporate Figura 2.15 . Ciclii de magistrala pentru instructiuni diferite de MOVX 2) Ciclii de

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.

pentru instructiuni de tip MOVX de citire din MD externa. Figura 2.16 . Ciclii de magistrala

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

Sisteme Incorporate Figura 2.17 . Ciclii de magistrala pentru instructiuni de tip MOVX de scriere in

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.

sistemului de intreruperi este prezentata in figura 2.18. Figura 2.18 . Structura de principiu a sistemului

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

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

Semnificatiile bitilor registrului TCON sunt:

IT0

-

-

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

daca este egal cu 0 cererea de intrerupere INT1 este activa pe nivel coborat

IE0

-

Fanionul intreruperii externe INT0 active pe frontul cazator. Se seteaza hard

IT1

-

cand este detectat frontul sau nivelul corespunzator intreruperii externe. Se reseteaza hard cand intreruperea este servita. -

(“0” logic)

 

-

daca este egal cu 1 cererea de intrerupere INT1 este activa pe frontul coborator

28

Sisteme Incorporate

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. TR0 - Bit de control pentru pornirea timerului T0. Setat/resetat soft pentru pornirea/oprirea timerului T0 TF0 - Fanion de depasire pentru timerul T0. Setat hard cand capacitatea timerului este depasita. Resetat hard la citirea vectorului de intrerupere pentru servirea intreruperii TR1 - Bit de control pentru pornirea timerului T1. Setat/resetat soft pentru pornirea/oprirea timerului T1 TF1 - Fanion de depasire pentru timerul T1. Setat hard cand capacitatea timerului este depasita. Resetat hard la citirea vectorului de intrerupere pentru servirea intreruperii

IE1

-

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

D6

D5

D4

D3

D2

D1

D0

EA

*

*

ES

ET1

EX1

ET0

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

daca este egal cu 1 cererea de intrerupere provenita de la timerul T0 este

ET0

-

-

daca este egal cu 0 cererea de intrerupere provenita de la timerul T0 este

 

-

invalidata

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

ES

-

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 comunicatie seriala este invalidata

-

EA

-

daca este egal cu 1 cererea de intrerupere provenita de la sistemul de comunicatie seriala este validata 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

intreruperi al microcontrolerului 8051 accepta doua nivele de

Sistemul 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

D6

D5

D4

D3

D2

D1

D0

Rezervat

Rezervat

Rezervat

PS

PT1

PX1

PT0

PX0

Semnificatiile bitilor registrului IP sunt:

PX0

-

-

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 1 cererea de intrerupere provenita de la timerul T0 are

daca este egal cu 1 cererea de intrerupere externa /INT1 are nivel de

daca este egal cu 1 cererea de intrerupere provenita de la timerul T1 are

daca este egal cu 1 cererea de intrerupere provenita de la sistemul de

PT0

-

-

daca este egal cu 0 cererea de intrerupere provenita de la timerul T0 are

 

-

nivel de prioritate redusa

nivel de prioritate ridicata

PX1

-

-

daca este egal cu 0 cererea de intreruperea externa /INT1 are nivel de

 

-

prioritate redusa

prioritate ridicata

PT1

-

-

daca este egal cu 0 cererea de intrerupere provenita de la timerul T1 are

 

-

nivel de prioritate redusa

nivel de prioritate ridicata

PS

-

-

daca este egal cu 0 cererea de intrerupere provenita de la sistemul de

 

-

comunicatie seriala are nivel de prioritate redusa

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.

raspunsul in timp la o cerere de intrerupere externa. Figura 2.19 . Raspunsul in timp pentru

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

Sisteme Incorporate Figura 2.20 . Cronogramele de functionare in modul temporizator Rezulta deci ca frecventa maxima

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

D6

D5

D4

D3

D2

D1

D0

GATE

C/-T

M1

M0

GATE

C/-T

M1

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)

C/-T

-

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)

M1

M0

-

Selectie mod de lucru

0

0

-

Mod 0 -

Timer/Counter pe 13 biti

0

1

-

Mod 1 -

Timer/Counter pe 16 biti

1

0

-

Mod 2 -

Timer/Counter pe 8 biti cu autoancarcare

1

1

-

Mod 3 -

Numai pentru T0

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

Sisteme Incorporate Figura 2.21 . Reprezentarea simbolica a timerelor in modul 0 Cand continutul celor doua

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.

se prezinta schema de principiu a modului 2 de functionare. Figura 2.22 . Reprezentarea simbolica a

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.

se prezinta schema de principiu a modului 3 de functionare. Figura 2.23 . Reprezentarea simbolica a

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

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

35

Sisteme Incorporate

Semnificatiile bitiilor registrului SCON sunt:

RI

-

Este un fanion care atunci cand are valoarea “1” constituie o cerere de 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)

TI

-

Este un fanion care atunci cand are valoarea “1” constituie o cerere de intrerupere din cauza unor situatii care apar in procesul de emisie (intreruperea emisiei de la blocul de emisie seriala). Este setat hard, prin

RB8

SM1

-

-

-

-

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

TB8

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

REN

modurile 2 si 3 - Bit de validare/invalidare a procesului de receptie. Daca REN=”0”

SM2

receptia este invalidata, daca REN=”1” receptia este validata. In modurile 2 si 3 valideaza/invalideaza caracteristicile de comunicatie

SM0

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 Selecteaza modul de functionare dorit pentru sistemul de comunicatie serial

0

0

-

Modul 0

- registru de deplasare

0

1

-

Modul 1

- UART pe 8 biti cu rata de emisie/receptie variabila

1

0

-

Modul 2

- UART pe 9 biti cu rata de emisie/receptie fixa fosc/64 sau

 

fosc/32

1

1

-

Modul 3

- UART pe 9 biti cu rata de emisie/receptie variabila

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.

SEND si se incheie odata cu dezactivarea acestui semnal. Figura 2.24 . Logica hard pentru modul

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 ->

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.

->D0).

in SBUF, va anula RECEIVE si va seta bitul RI. ->D0). Figura 2.25 . Cronogramele de

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

Cel mai des aceste semnale se obtin cu ajutorul timerului T1 Figura 2.26 . Logica hard

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:

f TxCLOCK

=

f OSC

2 SMOD

12 [256

(

TH

1)] 32

SMOD este un bit (D7) al registrului de control al puterii PCON. Uneori 2 SMOD 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 f OSC se poate determina valoarea (TH1) de preancarcare:

(

TH

1)

=

256

2 SMOD

f 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.

de transmis ii este atasat un bit de start si unul de stop. Figura 2.27 .

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

40

Sisteme Incorporate

Sisteme Incorporate Figura 2.28 . Lantul de circuite pentru obtinerea lui TxCLOCK Emisia: Este initiata de

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.

se va incarca “1” corespunzator valorii bitului de STOP. Figura 2.29 . Logica hard pentru modul

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.

valoarea gasita la pinul RxD este aceeasi, ea este validata. Figura 2.30 . Cronogramele de functionare

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

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

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

45

Sisteme Incorporate

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

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

PCON este:

microcontrolerele realizate in tehnologie HMOS

structura registrului

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

D6

D5

D4

D3

D2

D1

D0

SMOD

*

*

*

GF1

GF0

PD

IDL

Semnificatia bitiilor D0-D3 este:

IDL

-

Bit pentru selectarea modului de functionare in gol (asteptare)

PD

-

Bit pentru selectarea modului de functionare cu putere redusa

GF1 si GF2

-

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.

controlul intreruperilor, a timerelor si a portul serial. Figura 2.33 . Circutitele interne corespunzatoare modurilor

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.

bloc interna a circuitului este prezentata in figura 3.1. Figura 3.1 . Schema bloc interna a

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

-

selectie circuit 8255. Intrarea zero activa.

/RD

-

intrare zero activa. Microprocesorul/microcontrolerul receptioneaza un octet

de date sau informatii de stare de la circuitul 8255. /WR - 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

A0

/RD

/WR

/CS

 

0

0

0

1

0

Citire continut PA

0

1

0

1

0

Citire continut PB

1

0

0

1

0

Citire continut PC

1

1

0

1

0

Combinatie ilegala

0

0

1

0

0

Scriere in PA

0

1

1

0

0

Scriere in PB

1

0

1

0

0

Scriere in PC

1

1

1

0

0

Scriere cuvant de comanda

*

*

*

*

1

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:

2 – Mag. bidirectionala Cuvantul de comanda si control pentru definirea modului de lucru are urmatoarea
2 – Mag. bidirectionala Cuvantul de comanda si control pentru definirea modului de lucru are urmatoarea

50

Sisteme Incorporate

Sisteme Incorporate D7 obligatoriu pe “1” Porturile A si B pot fi definite separat In timp

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

D6

D5

D4

D3

D2

D1

D0

0

*

*

*

DPBC2

DPBC1

DPBC0

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

PB

PC-H

PC-L

D7

D6

D5

D4

D3

D2

D1

D0

I

I

I

I

1

0

0

1

1

0

1

1

I

I

I

E

1

0

0

1

1

0

1

0

I

I

E

I

1

0

0

1

0

0

1

1

I

I

E

E

1

0

0

1

0

0

1

0

I

E

I

I

1

0

0

1

1

0

0

1

E

E

E

E

1

0

0

0

0

0

0

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.

aferente acestui mod este prezentata in figura 3.2. Figura 3.2 . Cronogramele de functionare a circuitului

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:

/STB

-

intrare 0 activa – cand semnalul este zero. Valoarea de la intrarea portului

IBF

-

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

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.

Cronogramele semnalelor aferente acestui mod este prezentata in figura 3.3.

52

Sisteme Incorporate

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

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

Portul B

/STB_A

PC-4

/STB_B

PC-2

IBF_A

PC-5

IBF_B

PC-1

INTR_A

PC-3

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

D6

D5

D4

D3

D2

D1

D0

1

0

1

1

1/0

1

1

1/0

Modul 1 iesire strobata

In modul 1 iesire strobata semnalele de control al iesirilor sunt:

/OBF

-

intrare “0” activa prin care se indica faptul ca UC a Inscris o data In portul

/ACK

-

de iesire specificat. intrare “0” activa prin care se informeaza circuitul I8255 ca data de la

portul A sau B a fost acceptata de periferic (semnalul --ACK se primeste de la periferic) INTR - iesire “1” activa, cerere de Intrerupere. Poate fi utilizat pentru a Intrerupe 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

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

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

Portul B

/OBF_A

PC-7

/OBF_B

PC-1

/ACK_A

PC-6

/ACK_B

PC-2

INTR_A

PC-3

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

D6

D5

D4

D3

D2

D1

D0

1

0

1

0

1/0

1

0

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

-

/OBF

-

indica faptul ca UC a scris o data de iesire In portul A

PC6

-

/ACK

-

valideaza “bufferul de iesire cu trei stari” al portului A

PC5

-

IBF

-

pentru a trimite data catre periferie (activat de periferic). indica faptul ca data a fost incarcata in registrul de intrare.

PC4

-

/STB

-

incarca datele in registrul de intrare

PC3

-

INTR_A

-

cerere de Intrerupere valabila atat pentru operatii de intrare cat si de iesire

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

D6

D5

D4

D3

D2

D1

D0

1

1

1

*

1/0

1/0

1/0

1/0

Cronogramele semnalelor aferente acestui mod este prezentata in figura 3.5.

aferente acestui mod este prezentata in figura 3.5. Figura 3.5 . Cronogramele de functionare a circuitului

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.

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

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

A0

 

0

0

Canal 0

0

1

Canal 1

1

0

Canal 2

1

1

Registrul Cuvintelor de comanda

Informatiile pe care circuitul i8253 le primeste prin semnalele de comanda sunt:

/CS

/RD

/WR

A1

A0

 

1

*

*

*

*

Circuit neselectat

0

1

1

*

*

Nicio operatie

0

1

0

0

0

Scrie (incarca) in canalul 0

0

1

0

0

1

Scrie (incarca) in canalul 1

0

1

0

1

0

Scrie (incarca) in canalul 2

0

1

0

1

1

Scrie (incarca) cuvantul de comanda

0

0

1

0

0

Citeste calanul 0

0

0

1

0

1

Citeste canalul 1

0

0

1

1

0

Citeste canalul 2

0

0

1

1

1

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

D6

D5

D4

D3

D2

D1

D0

SC1

SC0

RL1

RL0

M2

M1

M0

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

M1

M0

Stabilesc modul de lucru

0

0

0

Modul 0

0

0

1

Modul 1

*

1

0

Modul 2

*

1

1

Modul 3

1

0

0

Modul 4

1

0

1

Modul 5

58

Sisteme Incorporate

RL1

RL0

Comanda de citire sau preancarcare

0

0

Memorare continut numarator in registrele pentru citire

0

1

Citire/Scriere octet mai putin semnificativ si pune octetul mai semnificativ pe zero

1

0

Citire/Scriere octetul mai semnificativ si pune octetul mai putin semnificativ pe zero

1

1

Citire/Scriere 2 octeti, cel mai putin semnificativ primul

SC1

SC0

Selectie canal

0

0

Selectie canal 0

0

1

Selectie canal 1

1

0

Selectie canal 2

1

1

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

D6

D5

D4

D3

D2

D1

D0

1

1

/COUNT

/STATUS

CNT2

CNT1

CNT0

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

D6

D5

D4

D3

D2

D1

D0

OUTPUT

NULL

RL1

RL0

M2

M1

M0

BCD

COUNT

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.

incarcarea celui de al doilea octet porneste noua numarare. Figura 3.7 . Cronogramele de functionare in

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.

numar, dupa orice ultim front crescator al intrarii GATE. Figura 3.8 . Cronogramele de functionare in

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

Sisteme Incorporate Figura 3.9 . Cronogramele de functionare in modul 2 Mod 3 – Generator de

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.

precizarilor fiind identice cu cele facute la modul 2. Figura 3.10 . Cronogramele de functionare in

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

Sisteme Incorporate Figura 3.11 . Cronogramele de functionare in modul 4 Modul 5 – Monostabil declansat

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.

numarare completa dupa frontul crescator al oricatrei declansari. Figura 3.12 . Cronogramele de functionare in modul

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
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
Cu doua stari
Numerice
(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 Tampon specializate Logica CPU administrarii Proces schimburilor
Adaptare
Interfata de proces
Subansamble
Tampon
specializate
Logica
CPU
administrarii
Proces
schimburilor
Subansamble
Tampon
specializate
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 Port Memorie Intrare/ Iesire CPU Magistrala de Date /MEM_RD /MEM_WR
Magistrala de Adrese
Port
Memorie
Intrare/
Iesire
CPU
Magistrala de Date
/MEM_RD
/MEM_WR

Figura 4.3. Structura de principiu al unui sistem „memory mapped”

Magistrala de Adrese Port Memorie Intrare/ Iesire CPU Magistrala de Date /MEM_RD /MEM_WR /IO_RD /IO_WR
Magistrala de Adrese
Port
Memorie
Intrare/
Iesire
CPU
Magistrala de Date
/MEM_RD
/MEM_WR
/IO_RD
/IO_WR