Sunteți pe pagina 1din 431

Universitatea Politehnica Timişoara

Facultatea de Automatică şi Calculatoare

Sisteme Încorporate
Anul 3 CTI

Titular: prof. dr. ing. Mircea POPA

1
Sisteme Încorporate

Curs 1

2
Sisteme Încorporate
n Conţinut:
q Introducere
q Arhitecturi de microcontrolere
n Arhitectura 8051
n Arhitectura HCS 12
n Arhitectura PIC 16F8X
q Conectarea memoriei externe
n Conectarea memoriei externe la microcontrolerele cu magistrale externe
n Conectarea memoriei externe la microcontrolerele fără magistrale externe
q Conectarea porturilor externe
n Plasarea porturilor externe în spaţiul de memorie
n Plasarea porturilor externe în spaţiul de intrare - ieşire
q Sistemele Arduino
q Sistemele Raspbery Pi
q Reducerea consumului sistemelor încorporate
q Aplicaţii
n Comanda unor elemente de vizualizare şi execuţie
n Aplicaţii în industria automobilelor
n IoT

3
Sisteme Încorporate
n Bibliografie:

q S. Goshal, 8051 Microcontroller: Internals, Instructions, Programming &


Interfacing; Pearson, 2010
q H.W. Huang, HCS12/9S12 An Introduction to Software and Hardware
Interfacing, Delmar, 2010
q M. Popa, Sisteme cu microcontrolere orientate pe aplicaţii; Orizonturi
Universitare, Timişoara, 2003

4
Sisteme Încorporate

n Obiectivele cursului:
q Cunoaşterea definiţiei, caracteristicilor, structurii şi
funcţionării unui sistem încorporat (SI);
q Studiul problemelor tipice ce apar la proiectarea
unui SI bazat pe microcontroler;
q Studiul componentelor şi instrumentelor specifice
utilizate în proiectarea SI;
q Studiul unor aplicaţii tipice;
q Dobândirea de cunoştinţe în vederea proiectării
unui SI bazat pe microcontroler cu o
funcţionalitate predeterminată.

5
Sisteme Încorporate
1. Introducere
1.1. Ce sunt SI?
q Definiţia 1: Un SI este un sistem integrând hardware şi software şi
proiectat pentru o anumită funcţionalitate;
q Definiţia 2: Un SI este in sistem de calcul cu scop predefinit inclus într –
un dispozitiv pe care îl conduce;
q Definiţia 3: Un SI este un sistem de calcul cu cerinţe specifice; spre
deosebire de calculatorul de uz general, SI execută sarcini predefinite;
q Definiţia 4: Un SI este un sistem de procesare a informaţiei, parte a unui
sistem mai mare sau a unui dispozitiv;
q Definiţia 5: Un SI este este o combinaţie de hardware şi software cu
programare şi facilităţi fixe, proiectat pentru un tip de aplicaţii;
q Definiţia 6: Un SI este o combinaţie de hardware şi software şi, posibil,
elemente mecanice sau alte elemente, proiectat pentru a realiza o
funcţie dedicate; în unele cazuri, SI sunt părţi ale unui sistem mai mare
sau produs, ca de exemplu sistemul ABS (“Antilock Bracking System”)
dintr – un automobil;

6
Sisteme Încorporate
q Definiţia mea: SI constituie un subdomeniu al domeniului ingineriei
calculatoarelor, bazat pe circuite logice programabile de utilizator şi
orientat pe aplicaţii de timp real;

n Circuite logice programabile de utilizator:


q Microprocesorul: un circuit logic programabil de utilizator pentru aplicaţii
de uz general;
q Microcontrolerul: un circuit logic programabil de utilizator pentru aplicaţii
de timp real.
q DSP - ul: un circuit logic programabil de utilizator pentru procesarea
digitală a semnalelor analogice;
n Căi de dezvoltare diferite:
q Microprocesoarele: pentru aplicaţii de procesare (viteză cât mai mare şi
capacitate de memorie gestionabilă cît mai mare);
q Microcontrolerele + DSP - urile: pentru aplicaţii de uz real (consum mic,
dimensiuni mici, cost redus, siguranţă mare, fiabilitate mare).

7
Sisteme Încorporate
n SI sunt destinate unei aplicaţii sau unei familii de aplicaţii;
n SI pot conţine un microcalculator dar, în general, sunt sisteme de
sine – stătătoare incluse în dspozitivul pe care îl conduc;
n SI se bazează pe microcontrolere sau DSP – uri;

n Diferenţe ale SI faţă de calculatoarele de uz general:


q Interfaţa cu omul: led – uri, LCD – uri, comutatoare, minitastaturi;
q Sisteme de intrare/ ieşire simple, fără periferie;
q Pot include porturi de diagnosticare;
q Pot include FPGA – uri, ASIC – uri, circuite analogice;
q Software – ul are o funcţionalitate fixă şi specifică aplicaţiei; un calculator
de uz general poate executa mai multe programe, alegerea făcînd – o
utilizatorul, pe cînd un SI poate executa mai multe programe dar
alegerea o face programatorul.

8
Sisteme Încorporate
1.2. Domenii de aplicabilitate
n Industria automobilelor: numărul SI în automobile este în continuă creştere,
infrastructură;
n Transporturi: trenuri, infrastructură, transportul naval;
n Industria aeronautică: sisteme anticoliziune, sisteme de pilotare, sisteme de
control a zborului etc.; Industria aerospaţială: ...
n Robotică; Telecomunicaţii; Medicină: echipament medical, monitorizarea
pacienţilor;
n Aplicaţii domestice: aparatură electrocasnică, jucării, aparatură electronică
etc.; automatizări domestice : sisteme de alarmă şi protecţie, sisteme de
control a luminii, temperaturii, apei, sisteme multimedia etc.;
n “Smart cities”, ”Smart buildings”, ”Smart homes”: ...
n Industrie: conducerea proceselor, echipamente de fabricaţie, echipamente
chimice, monitorizarea personalului etc.
n Industria militară: ...
n Industria hotelieră: ...
n Agricultură: ...

9
Sisteme Încorporate
1.3. Caracteristici şi cerinţe
n Un SI trebuie să lucreze în condiţii mai restrictive decât un calculator
de uz general.
n Caracteristici şi cerinţe:
q Conectare la mediul exterior, monitorizându – l, prin intermediul
senzorilor şi comandîndu – l, prin intermediul actuatorilor; un actuator
poate fi definit ca un dispozitiv care converteşte valori numerice în efecte
fizice;
q Funcţionare reactivă: un sistem reactiv este în continuă interacţiune cu
mediul înconjurător şi execută sarcinile la rata determinată de mediu; un
sistem reactiv poate fi gândit ca fiind într – o anumită stare, aşteptând o
intrare; pentru fiecare intrare execută una sau mai multe operaţii şi
generează o ieşire; un asemenea sistem poate fi modelat foarte bine de
un automat;
q Funcţionare în timp real: timpul devine un parametru al execuţiei
operaţiilor; există constrîngeri de timp hard (produc efecte grave, uneori
dezastruoase, la nerespectare) şi soft (produc efecte negative la
nerespectare);

10
Sisteme Încorporate
q Eficienţa: un SI trebuie să fie eficient; aceasta poate fi evaluată cu
următoarele metrici:
n Consumul de energie: trebuie minimizat, mai ales în cazul SI mobile;
n Dimensiunea codului: cod mare → memorie de program mare, posibil
externă → circuite suplimentare → dimensiune mai mare a SI, consum mai
mare, fiabilitate mai mică;
n Execuţie implicînd minim de circuite;
n Greutate şi dimensiune mici;
n Cost redus.
q Funcţionare în medii grele: căldură excesivă, vibraţii, coroziune,
fluctuaţii ale tensiunii de alimentare;
q Dependabilitate: foarte importantă datorită conexiunii cu mediul
exterior; cuprinde următoarele aspecte ale unui sistem:
n Fiabilitate: probabilitatea ca un sistem să nu se defecteze;
n Mentenabilitate: probabilitatea ca o defecţiune să poată fi reparată într – un
timp anumit;
n Siguranţă: probabilitatea ca o defecţiune să nu cauzeze efecte catastrofale;
n Disponibilitate: probabilitatea ca un sistem să fie disponibil.

11
Sisteme Încorporate
1.4. Direcţii în studiul SI

n Hardware şi circuite de bază (microcontrolere, DSP – uri);

n Limbaje de programare;

n Sisteme de operare;

n Reţele de SI;

n Modelare, simulare şi validare;

n Aplicaţii.

12
Sisteme Încorporate
1.5. SI şi “ubiquitous and pervasive computing”
n Primul val în domeniul calculatoarelor: calculatoarele mari, 1
calculator - mai mulţi oameni;
n Al 2 – lea val: PC – urile, 1 calculator – 1 om;
n Al 3 – lea val (“post PC era”): “ubiquitous and pervasive computing”,
mai multe calculatoare – 1 om.
n “Ubiquitous computing” (“ubicomp”) şi “pervasive computing” (UPC):
q Formulate în perioada 2001 - 2003;
q Este un model de calcul post desktop, în care sistemele de calcul se află
în jurul omului, fiind oricând pregătite să proceseze informaţia;
q Spre deosebire de modelul desktop în care un utilizator folosea un
sistem de calcul pentru a realiza o sarcină, în UPC omul determină
procesarea informaţiei de către mai multe sisteme, în activitatea sa
curentă, fără a fi necesar să fie conştient de acest lucru;
q Se bazează pe sisteme de calcul de dimensiuni mici, de multe ori
nesesizate de om, cu anume sarcini, care comunică între ele şi,
eventual, cu un sistem central; se bazează pe SI;

13
Sisteme Încorporate
q Domenii de cercetare necesare în UPC:
n Sisteme încorporate şi reţele de SI,
n Calcul distribuit,
n Calcul mobil,
n Senzori şi reţele de senzori,
n Interacţiune om – maşină,
n Inteligenţă artificială.
q UPC se află la intersecţia a 3 subdomenii din domeniul TIC:
n Procesarea,
n Comunicaţiile şi
n Interfaţa cu utilizatorul.
q Procesarea: se bazează pe echipamente; există o gamă largă de la
Palmcomputers, telefoane inteligente pînă la sisteme de dimensiuni
foarte mici incluse în mediul înconjurător; se împart în 3 tipuri:
n Senzori,
n Procesoare şi
n Actuatoare.

14
Sisteme Încorporate
n Echipamentele trebuie să poată lucra singure, să aibă alimentare proprie şi să
poată comunica.
q Comunicaţiile: echipamentele sunt interconectate, formînd reţele, iar
comunicarea se poate face:
n Cu fir, de ex. Ethernet sau
n Fără fir, de ex. cu tehnologiile WiFi, Bluetooth, ZigBee etc.
q Interfaţa cu utilizatorul:
n Activă: prin voce, recunoaşterea fizionomiei etc.
n Pasivă: echipamentele sesizează prezenţa omului, activitatea sa şi
reacţionează fără a fi necesar ca omul să fie conştient de acest lucru.
q Aplicaţii în multiple domenii:
n Sănătate: monitoritarea stării pacienţilor şi planificarea medicaţiei → scade
numărul zilelor de spitalizare;
n Monitorizarea şi îngrijirea la domiciliu: în Anglia, acum, 20% din populaţie are
peste 65 ani → va creşte la 40% în 2025;
n Monitorizarea mediului ambiant;
n Sisteme de transport inteligente: pentru creşterea securităţii, pentru trasee
alternative etc.;
n Case inteligente: de ex. sistemul de iluminare.

15
Sisteme Încorporate
q Probleme:
n Inginereşti: lipsa tehnologiilor ieftine pentru plasarea echipamentelor; lipsa
surselor de alimentare potrivite; defecţiunile (depanarea va fi dificilă datorită
interconectării);
n Intimitatea personală (“Privacy”): are 2 aspecte:
q Monitorizarea permanentă a omului va afecta intimitatea sa;
q Transferul de date poate fi interceptat de persoane neautorizate.
n Securitatea: monitorizarea permanentă a omului poate arăta punctele slabe
din mediul său;
n Siguranţa: introducerea unor asemenea echipamente poate afecta siguranţa
omului; de ex. dacă un asemenea echipament este introdus în automobil şi
omul se foloseşte de această facilitate, siguranţa sa va fi afectată în cazul
defectării sale;
n Mediul: utilizarea pe scară largă a acestor echipamente ridică probleme de
depozitare, reciclare, afectare a mediului;
n Sănătate: datorită comunicării fără fir se pune problema radiaţiilor, mai ales în
condiţiile apropierii echipamentelor de corpul uman şi funcţionării lor continue;
n Diviziunea digitală: problema este de natură socială şi constă în posibila
izolare a celor care din diferite motive nu folosesc UPC

16
Sisteme Încorporate
1.6. Caracteristici de piaţă
n Unități produse:
q La nivelul anului 2000, 8 miliarde de procesoare au fost fabricate din
care 2% s - au folosit în PC – uri, laptop – uri, servere, staţii de lucru iar
restul de 98% în SI; 5 miliarde dintre acestea au fost pe 8 biţi;
q 17393,6 milioane de unități în 2013; se așteaptă o creștere la 39108,5
milioane unități până în 2020 (rată de 12,3%/an);
n Structura pieții:
q Domeniul automotive avea 33,8% din piață în 2013; se așteaptă o
creștere cu 14%/an până în 2020;
q Domeniul domestic: există o variantă a legii lui Moore: “pentru
majoritatea produselor din domeniul electronicii de consum capacitatea
codului se va dubla la fiecare 2 ani” (Vaandrager);
q Zona Asia Pacific deținea 38,2% din piață în 2013; se așteaptă o
creștere cu 7,8%/an până în 2020;
q Companii: Renesas, Fujitsu, Samsung, STMicroelectronics, Texas
Instruments, Freescale Semiconductor, Infineon Technologies;

17
Sisteme Încorporate
n Vânzările de microcontrolere:
q Piaţa de microcontrolere la:
n 2015: 8,6 miliarde dolari;
n 2020: se așteaptă 26,9 miliarde dolari;
n 2024: se așteaptă 102,18 miliarde dolari;
q Direcții:

18
Sisteme Încorporate
q Direcții:

19
Sisteme Încorporate
n Direcții de segmentare a pieții:

20
Sisteme Încorporate
1.7. Structura unui SI
n Unitatea centrală,
n Memoria,
n Intrări/ ieşiri specifice,
n Software de bază,
n Software aplicativ.

n Unitatea centrală: pentru a decide dacă un procesor este potrivit


pentru un SI trebuiesc luate în considerare câteva trăsături:
q Numărul pinilor de I/ E: numărul pinilor de I/ E tebuie comparat cu cel al
liniilor care trebuiesc monitorizate/ comandate; unii pini de I/ E pot fi
multiplexaţi;
q Numărul interfeţelor;
q Cerinţele de memorie;
q Numărul liniilor de întrerupere;

21
Sisteme Încorporate
q Facilităţi de timp – real: registre de captare/ comparare, PWM etc.;
acestea pot fi realizate şi fără facilităţi specifice dar cu preţul timpului;
q Viteza: nu este dată întotdeauna doar de frecvenţa tactului, trebuie
cunoscută şi structura internă: de ex. un microcontroler Atmel la 8 MHz
este mai rapid decît un microcontroler PIC la 20 MHz;
q Setul de instrucţiuni: RISC sau CISC; subsetul de instrucţiuni de decizie
şi la nivel de bit are importanţă deosebită;
q Instrumente de dezvoltare: decisive în testare şi depanare; costul lor
trebuie luat în considerare.
n Memoria
q Situaţia ideală: atunci când memoria internă, de date şi de program, este
suficientă;
q În caz contrar, este necesară memoria externă;
q Capacitatea de memorie gestionată de un microcontroler este mai mică
decît cea gestionată de un microprocesor, fiind în domeniul nx10 octeţi –
nx10 Mo, aplicaţiile de timp real nu cer, în general, multă memorie.

22
Sisteme Încorporate
n Intrări/ ieşiri specifice:

q Microcontrolerele includ interfeţe şi module periferice ca urmare ele nu


mai apar de sine – stătătoare în SI;
q SI nu au periferice: harddisk – uri, monitoare, imprimante, mouse etc.
q Intrările/ ieşirile SI sunt specifice:
n Citesc informaţia de la senzori analogici sau digitali,
n Primesc comenzi din exterior, fie pe linii digitale fie de la comutatoare,
minitastaturi,
n Afişează informaţia pe led – uri, LCD – uri, afişaje cu 7 segmente,
n Comandă actuatori;
q SI pot comunica pe linii seriale, cu sau fără fir, cu alte SI sau
calculatoare de uz general;
q Pot dispune de port serial pentru programare în sistem;
q Pot dispune de port pentru depanare în sistem.

23
Sisteme Încorporate
n Software de bază:
q Constă în sisteme de operare în timp real (RTOS), necesar pentru SI
complexe, de exemplu cele distribuite;
q Exemple de RTOS: NetBSD, eCOS, Windows CE, OSEK etc.
q SI simple, de exemplu majoritatea din aplicaţiile domestice, nu necesită
software de bază.

n Software aplicativ:
q Implementează funcţionalitatea cerută;
q Necesită limbajul de programare şi mediul de programare;
q Asigură operaţii ca: monitorizare, procesare, comandă şi control.

24
Sisteme Încorporate
2. Arhitecturi de microcontrolere
2.1. Arhitectura 8051
n Microcontroler pe 8 biţi, nucleul unei familii în continuă dezvoltare;
n Caracteristici:
q este realizat în tehnologie CMOS,
q include 4 Ko memorie ROM şi 128 octeţi memorie RAM,
q include procesor boolean,
q include o unitate aritmetică şi logică,
q are 4 porturi de intrare/ ieşire care pot fi utilizate ca porturi de uz general dar au şi
funcţiuni specifice,
q poate adresa 64 Ko memorie externă de program şi 64 Ko memorie externă de
date,
q are 2 contoare/ temporizatoare, independente,
q include un port serial UART full duplex,
q set de instrucţiuni orientat pe aplicaţii în timp real, instrucţiuni simple şi rapide,
q poate gestiona 5 surse de întreruperi, cu 2 nivele de priorităţi,
q consum mic: 16 mA în modul normal, 3,7 mA în modul Idle şi 50 µA în modul
Power Down.

25
Sisteme Încorporate
n Structura internă
Întreruperi externe

Sistem de 4 ko 1280 Registre cu


întreruperi ROM RAM funcţiuni
speciale

CPU

Generator Logică de Port Contor Contor


de tact control a Porturi de I/E serial 0 1
magistralei

P0 P1 P2 P3 TxD RxD T0 T1

26
Sisteme Încorporate
n Diferenţele între membrii familiei de microcontrolere bazate pe
80C51 apar la nivelul structurii interne şi a vitezei de lucru, adică a
frecvenţei tactului acceptat la intrările oscilatorului intern.

n Toţi membrii familiei includ blocurile de mai sus şi sunt păstrate


toate caracteristicile acestora, de la organizare pînă la adrese, dar
apar resurse suplimentare:
q mai multă memorie internă care poate fi şi programabilă,
q mai multe registre interne,
q mai multe contoare/ temporizatoare,
q mai multe porturi de intrare/ ieşire,
q noi blocuri ca generator de ieşiri cu durate programabile (PWM),
q convertor analog/ digital,
q interfeţe SPI, CAN şi I2C
q etc.

27
Sisteme Încorporate

2.1.1. Configuraţia terminalelor:

10 39-32
(11) P3.0 / RXD P0.0-7 / AD0-7 (43-36)
11
(13 P3.1 / TXD
12
(14) P3.2 / INT0
13
(15) P3.4 / INT1 1-8
14 8
(16) P3.5 / T0 P1.0-7 (2-9)
15 0
(17) P3.6 / T1
16 C
(18) P3.7 / /WR
17 5 24-31
(19) P3.8 / /RD
1 P2.0-7 / A8-15 (24-31)
19
(21) XTAL1 30
18 ALE (33)
(20) XTAL2 29
40 /PSEN (32)
(44) VCC 31
20 9 /EA (35)
(22) VSS
RST (10)

28
Sisteme Încorporate

2.1.2. Organizarea memoriei


n 16 linii de adrese dar poate gestiona 128 Ko;
n Distinge între spaţiul de memorie de program şi cel de memorie de
date, activînd semnale de comandă diferite:
q /PSEN pentru memoria de program şi
q /RD, /WR pentru memoria de date.
n Primii 4 Ko din memoria de program sunt interni; accesul la ei se
face cu terminalul /EA = 1;
n Dacă terminalul /EA = 0 sau dacă accesul se face la o locaţie cu
adresa peste 0FFFH, va fi adresată memoria externă de program;
n Locaţii cu funcţiuni predeterminate din memoria de program:
q 0000H pentru RESET,
q Acceptarea unei cereri de întrerupere: 0003H pentru INT0, 000BH
pentru T0, 0013H pentru INT1, 001BH pentru T1 şi 0023H pentru
interfaţa serială;

29
Sisteme Încorporate
n Memoria de date: internă şi externă;
n Memoria de date internă:
q 128 octeţi, ocupă zona 0000 – 007FH;
q Structura memoriei:
n 00H – 07H: bloc 0,
n 08H – 0FH: bloc 1,
n 10H – 17H: bloc 2,
n 18H – 1FH: bloc 3,
n 20H – 2FH: Bit RAM,
n 30H – 7FH: Data RAM;
n Zona 00 - 1FH este divizată în 4 blocuri de cîte 8 octeţi, notate cu
Blocul 0 – 3;
n Există un grup de registre, R0-7 care se suprapune, la un moment
dat, peste un singur bloc din cele 4;
n Blocul care se suprapune peste registrele R0-7 este selectat de
programator prin intermediul rangurilor RS1 şi RS0 din registrul de
stare al programului, PSW ("Program Status Word");

30
Sisteme Încorporate
n Zona 00 - 1FH poate fi accesată direct, prin intermediul unei adrese
pe 8 biţi sau prin adresare de registru;
n Execuţia instrucţiunii DEC R5:

PSW RS1 RS0

RS1 = RS0 = 1

R5 Bloc 3

(1D) – 1 → 1D

31
Sisteme Încorporate
n Registrele R0 şi R1 pot fi folosite pentru adresarea indirectă a
memoriei de date;
n Ex.: instrucţiunea INC @R0:

PSW RS1 RS0

RS1 = RS0 = 1

R0

32
Sisteme Încorporate
n Avantajul adresării memoriei prin intermediul registrelor R0-7:
instrucţiuni scurte:
q Pentru adresare de registru sunt necesare doar 3 ranguri care se
găsesc, împreună cu codul instrucţiunii, în primul octet al acesteia.
q La adresarea indirectă, prin intermediul registrelor R0 sau R1 este
nevoie de un singur rang, aflat, de asemenea, în primul octet al
instrucţiunii;
n Zona 20H - 2FH din RAM-ul intern este denumită Bit RAM, întrucît
fiecare din cei 128 biţi poate fi adresat individual;adresare:
q Prin adresa lor: 00 - 7FH, cu 00 pentru bitul 0 de la locaţia 20H şi 7FH
pentru bitul 7 de la locaţia 2FH;
q Prin octeţii 20H - 2FH; astfel biţii 00 - 07 pot fi adresaţi ca 20.0 - 20.7,
biţii 08 - 0FH ca 21.0 - 21.7 etc.;
n Zona 30H - 7FH este denumită Data RAM şi este o zonă de
memorie RAM de uz general;
n Memoria internă RAM poate fi adresată prin adresare directă sau
indirectă; adresarea directă prin orice combinaţie în domeniul 00 –
7FH iar adresarea indirectă prin registrul R0 sau R1;
33
Sisteme Încorporate
n Comanda memoriei externe:
n Comandă 64 Ko memorie de program şi 64 Ko memorie de date
deşi dispune doar de 16 linii de adresă:
q memoria de program va fi comandată cu semnalul /PSEN iar
q memoria de date va fi comandată cu semnalele /RD şi /WR;

n În timpul transferurilor cu memoria externă, liniile portului P2 vor


constitui jumătatea superioară a magistralei de adrese iar liniile
portului P0 vor constitui o magistrală multiplexată de adrese/ date;
n Pentru demultiplexarea ei este necesară memorarea
informaţiei de adresă într-un registru extern, la comanda frontului
posterior al semnalului ALE;
n Atunci când memoria externă implicată în transfer este cea de
program, adresa ce apare pe liniile porturilor P0 şi P2 este generată
de numărătorul de program, PC;

34
Sisteme Încorporate
n Conectarea memoriei externe de program şi date, câte 64 Ko:
P0.0-7 D0-7

/EA
R A0-7
E Memoria
8 de
0 G
program
C externă
5 ALE STB
(64 ko)
1
P2.0-7 A8-15

/PSEN /OE
/CE

/RD
/WR D0-7

A0-7 Memoria
de
date
externă
A8-15 (64 ko)

/CS
/WE
/OE

35
Sisteme Încorporate
n În cazul aplicaţiilor ce necesită mai puţină memorie de program şi de
date decât 64 Ko, nu mai este necesar ca cele 2 blocuri de memorie
să se suprapună în spaţiul de adresare al microcontrolerului iar
selecţia lor se va face utilizând şi linii mai semnificative din
magistrala de adrese;

n Accesul la memoria externă de date se face prin intermediul


registrului DPTR sau registrelor R0 şi R1;
n Varianta cu DPTR: se folosesc instrucţiunile:
q MOVX @DPTR,A şi
q MOVX A,@DPTR;
q Prima instrucţiune transferă conţinutul acumulatorului în memorie, la
adresa indicată de DPTR, iar a doua instrucţiune transferă conţinutul
locaţiei cu adresa indicată de DPTR în A;
q În timpul transferurilor cu memoria externă de date, adresa ce apare pe
liniile porturilor P0 şi P2 este pe 16 biţi şi este generată de DPTR;

36
Sisteme Încorporate
n Varianta cu R0 şi R1: se folosesc instrucţiunile:
q MOVX @Ri,A şi
q MOVX A,@Ri;
q Ex.: MOVX @R0,A: conţinutul registrului R0 este interpretat ca o adresă
(pe 8 biţi) şi conţinutul registrului A este încărcat la adresa respectivă;
q Conţinutul registrelor R0 sau R1 va fi adresa ce apare pe liniile portului
P0; această adresă este doar pe 8 biţi şi va permite accesul într-o
pagină de 256 octeţi;
q Conţinutul registrului P2 va apare pe liniile portului P2 şi poate fi folosit
pentru paginare, asigurînd plasarea paginii de 256 octeţi în spaţiul de
adresare de 64 Ko al microcontrolerului;
q Rangurile neutilizate ale registrului P2 pot funcţiona ca linii de intrare/
ieşire independente;

q Avantaje:
n accesul extern este mai rapid (instrucţiuni doar pe 8 biţi) şi
n rămân libere linii ale portului 2 care pot fi folosite în alte scopuri.

37
Sisteme Încorporate
n Dacă întregul program ce se execută se obţine din memoria
externă, atunci intrarea /EA trebuie să fie conectată la 0;

n Dacă se doreşte rularea de programe din memoria externă de date


atunci este necesară suprapunerea unui spatiu de memorie externă
de program cu un spaţiu de memorie externă de date ceea ce se
poate realiza cu o combinaţie a semnalelor /PSEN şi /RD;

n Întrucît semnalul /PSEN se activează mai repede decât semnalul


/RD este necesar ca memoria externă de date din care se execută
programe, să fie suficient de rapidă pentru a răspunde cerinţelor
semnalului /PSEN;

n Memoria externă de date din care se doreşte execuţia de programe


trebuie să fie plasată în spaţiul de adresare al microcontrolerului,
într-o zonă diferită de cea care corespunde atât memoriei externe
de program cât şi memoriei externe de date;

38
Sisteme Încorporate
n Să se conecteze la un microcontroler 80C51 8 Ko de memorie
EPROM, 8 Ko memorie RAM şi încă 8 Ko memorie RAM din care
se poate executa şi program. Se vor folosi circuite de 8 Ko.

39
Sisteme Încorporate
n Să se conecteze la un microcontroler 80C51 16 Ko memorie
EPROM, 16 Ko memorie RAM şi încă 16 Ko memorie RAM din care
se poate executa şi program. Se vor folosi circuite de 16 Ko.

40
Sisteme Încorporate
n Să se conecteze la un microcontroler 80C51 32 Ko memorie
EPROM, 32 Ko memorie RAM şi încă 32 Ko memorie RAM din care
se poate executa şi program. Se vor folosi circuite de 32 Ko.

41
Sisteme Încorporate
n Să se conecteze la un microcontroler 80C51 32 Ko memorie
EPROM, 64 Ko memorie RAM şi încă 32 Ko memorie RAM din care
se poate executa şi program. Se vor folosi circuite de 32 Ko.

42
Sisteme Încorporate

Curs 2

1
Sisteme Încorporate
2.1.3. Registrele cu funcţiuni speciale:
n Microcontrolerul 80C51 conţine un grup de registre interne, cu
funcţiuni speciale, SFR (“Special Function Registers”);
n Există câteva tipuri de registre şi anume:
q registre de uz general,
q registre care corespund porturilor,
q registre pentru comanda modulelor periferice şi
q registre pentru transferul datelor cu modulele periferice.

n Registrele cu funcţiuni speciale sunt adresabile în mod direct,


adresele lor se află în zona 80H – FFH;
n Registrele ale căror adrese se termină în 0 sau 8 pot fi adresate şi la
nivel de bit;
n Tabelul următor prezintă registrele şi adresele lor;

2
Sisteme Încorporate
n Adrese:

3
Sisteme Încorporate
n ACC: este registrul acumulator;
n B: este un registru cu rol predeterminat în instrucţiunile de înmulţire
şi împărţire; pentru celelalte instrucţiuni este registru general;
n SP ("Stack Pointer"): este indicatorul de stivă; este incrementat
înaintea unei depuneri în stivă prin intermediul instrucţiunilor CALL
sau PUSH; după iniţializare este încărcat cu valoarea 07H deci stiva
începe de la adresa 08H; poate fi încărcat, prin program;
n DPH, DPL ("Data Pointer High, Low"): sunt două registre pe cîte 8
biţi care alcătuiesc împreună DPTR ("Data Pointer Register"), DPH
fiind jumătatea superioară din DPTR iar DPL fiind jumătatea
inferioară din DPTR;
n PSW ("Program Status Word"): este registrul de stare al
programului; conţine indicatorii de condiţii; rangurile PSW.4 şi
PSW.3 denumite şi RS1, respectiv RS0 permit selectarea blocului 0
– 3 din memoria internă RAM care se suprapune peste grupul R0–7;

4
Sisteme Încorporate

n Structura registrului de stare PSW:


7 0
CY AC FO RS1 RS0 OV - P

n PSW.0: indicator de paritate;


n PSW.1: indicator la dispoziţia utilizatorului;
n PSW.2: indicator de depăşire;
n PSW.4- 3: ranguri pentru selectarea blocului 0 – 3 din RAM intern,
activ, după relaţia: 00 – bloc 0, 01 – bloc 1, 10 – bloc 2, 11 – bloc 3;
n PSW.5: indicator la dispoziţia utilizatorului;
n PSW.6: indicator de Carry auxiliar (util la operaţii în BCD);
n PSW.7: indicator de Carry.

5
Sisteme Încorporate
n TH0, TL0 ("Timer 0 Counter"): sunt două numărătoare pe cîte 8 biţi
care alcătuiesc împreună un numărător pe 16 biţi pentru contorul/
temporizatorul 0;
n SBUF ("Serial Data Buffer"): este un tampon folosit la transferul
serie şi este fizic alcătuit din 2 registre: un tampon pentru transmisie
şi unul pentru recepţie; transmisia este iniţiată prin scrierea unui
octet în SBUF; la citire, se primeşte un octet de la tamponul pentru
recepţie;
n P0, P1, P2, P3: sunt registrele ce corespund porturilor P0, P1, P2
respectiv P3; dacă un port este ieşire şi se scrie 1 sau 0 în un rang
din registrele P0 - P3, terminalul corespunzător al portului va avea
nivelul logic 1 sau 0;
n IP, IE, TMOD, TCON, SCON, PCON: sunt registre de control care
vor fi prezentate pe măsură ce se descriu modulele periferice pe
care le controlează.

6
Sisteme Încorporate
2.1.4. Periferia internă
Contoarele/ temporizatoarele 0,1
n Microcontrolerul 80C51 dispune de 2 contoare/ temporizatoare
implementate cu două numărătoare independente, pe 16 biţi, notate
cu TIMER 0 şi TIMER 1;
n TIMER 0 este alcătuit din numărătoarele TH0 şi TL0 iar TIMER 1
este alcătuit din numărătoarele TH1 şi TL1;
n Există 2 surse de tact pentru fiecare din cele două contoare/
temporizatoare;
n Dacă funcţia îndeplinită este cea de temporizator atunci sursa este
tactul microcontrolerului, fOSC divizat la 12 deci numărătorul va fi
incrementat în fiecare ciclu maşină;
n Dacă funcţia îndeplinită este cea de contor atunci sursa este un
semnal extern, T0, respectiv T1;
n Ti este testat în fiecare ultimă stare a unui ciclu maşină şi un front
căzător al acestui semnal va incrementa numărătorul;

7
Sisteme Încorporate
n Frontul căzător este detectat dacă într-un ciclu maşină se citeşte
valoarea 1 la terminalul Ti şi în ciclul următor se citeşte valoarea 0 la
acelaşi terminal Ti; întrucît sunt necesare 2 cicluri maşină pentru o
detectare, rezultă că frecvenţa maximă de numărare este de 1/ 24
din frecvenţa tactului (1 ciclu = 12 perioade de tact la 8051 clasic);
n Funcţionarea contoarelor TIMER 0 şi TIMER 1 este controlată de 2
registre:
q TMOD ("Timer Mode Register") cu structura:

GATE C//T M1 M0 GATE C//T M1 M0


q TMOD.0-1: M0, M1: fixează modul de lucru pentru TIMER 0.
q TMOD.2: C/ /T: stabileşte sursa tactului pentru numărare:
n 0: sursa tactului este fOSC divizat la 12, 1: sursa tactului este T0;
q TMOD.3: GATE: controlează pornirea şi oprirea numărării:
n 0: pornirea/ oprirea este controlată de rangul TR0, 1: numărarea este pornită dacă TR0 = /INT0 = 1 şi este oprită
dacă TR0 = 0 sau /INT0 = 0;
q TMOD.4-5: idem cu TMOD.0-1 dar pentru TIMER 1;
q TMOD.6: idem cu TMOD.2 dar pentru TIMER 1;
q TMOD.7: idem cu TMOD.3 dar pentru TIMER 1;

8
Sisteme Încorporate
q TCON ("Timer Control Register"), cu structura:
7 0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

q TCON.0: IT0: stabileşte dacă întreruperea externă care soseşte pe intrarea /INTO
va fi luată în considerare pe frontul căzător (1) sau pe nivel (0);
q TCON.1: IE0: indicator pentru întreruperea externă 0; este setat dacă s-a detectat
întreruperea externă /INT0; este anulat dacă întreruperea este deservită, atunci
cînd aceasta este luată în considerare pe front, adică IT0 = 1;
q TCON.2-3: idem cu TCON.0-1 dar pentru TIMER 1;
q TCON.4: TR0: rang de control pentru pornirea/ oprirea numărării la TIMER 0: 1
porneşte numărarea iar 0 o opreşte;
q TCON.5: TF0: indicator de depăşire a numărătorului; este poziţionat la depăşirea
capacităţii numărătorului provocată de o incrementare din starea FFFFH în starea
0000 şi este o sursă pentru cererea de întrerupere de la TIMER 0; este anulat
automat atunci cînd întreruperea este deservită;
q TCON.6-7: idem cu TCON.4-5 dar pentru TIMER 1;

9
Sisteme Încorporate
n Controlul numărării este realizat de rangurile TMOD.3 şi TMOD.7,
GATE, pentru TIMER 0, respectiv TIMER 1;
n Dacă GATE = 0 atunci rangurile TCON.4, TRO, respectiv TCON.6,
TR1, vor controla numărarea; dacă TRi = 1, numărarea porneşte iar
dacă TRi = 0, numărarea se opreşte;
n Dacă GATE = 1 atunci numărarea porneşte dacă TRi & /INTi = 1 şi
se opreşte dacă TRi = 0 sau /INTi = 0; în acest caz controlul
numărării poate fi realizat extern, prin /INTi; aplicaţie: sinconizarea
cu evenimente externe;
n Selectarea tactului este realizată de TMOD.2, respectiv TMOD.6, C/
/T;
n Dacă C/ /T = 0 atunci sursa tactului este fOSC/ 12 iar dacă C/ /T = 1
atunci sursa tactului este un semnal extern aplicat la terminalele T0,
respectiv T1;

n Există 4 moduri de lucru pentru TIMER 0 şi 1, selectabile prin


rangurile corespunzătoare M1 şi M0;

10
Sisteme Încorporate
n Modul 0:
q TIMER 0 şi 1 sunt configurate ca numărătoare pe 13 biţi; TL0 şi TL1 sunt
numărătoare alcătuite din 5 ranguri, cele mai puţin semnificative iar TH0
şi TH1 sunt numărătoare pe 8 biţi; indicatorii de depăşire TF0 şi TF1
sunt poziţionaţi atunci cînd numărătorul corespunzător conţine valoarea
maximă şi este incrementat, anulându-se astfel conţinutul său;
q Semnalul care apare la ieşirea de depăşire a lui TIMER 1 este sursă
pentru tactul serial;

TL0 TH0 TF0


CLOCK 5 biţi 8 biţi

TL1 TH1 TF1


CLOCK 5 biţi 8 biţi

Tact serial

11
Sisteme Încorporate
n Modul 1:
q Este identic cu modul 0, cu excepţia faptului că numărătoarele sunt pe
16 biţi;

TL0 TH0 TF0


CLOCK
8 biţi 8 biţi

TL1 TH1 TF1


CLOCK 8 biţi 8 biţi

Tact serial

12
Sisteme Încorporate
n Modul 2:

q TIMER 0 şi 1 sunt configurate ca numărătoare pe 8 biţi cu auto-


încărcare;
q TL0 şi TL1 sunt folosite ca numărătoare iar TH0 şi TH1 sunt folosite ca
registre pentru păstrarea constantei care se va încărca;
q Semnalul de depăşire generat de TL0 sau TL1 va provoca preîncărcarea
acestora şi numărarea va continua de la această valoare;
q TH0 şi TH1 sunt încărcate prin program; indicatorii TF0 şi TF1 sunt
poziţionaţi de semnalele de depăşire de la numărătoarele TL0, respectiv
TL1;
q Semnalul de depăşire generat de numărătorul TL1 este sursă pentru
tactul serial;
q Figura următoare prezintă pe TIMER 0 şi 1 în modul 2:

13
Sisteme Încorporate

CLOCK TL0 TF0

TH0

CLOCK TL1 TF1

TH1 Tact serial

14
Sisteme Încorporate
n Modul 3:
q Modul poate fi cerut doar pentru TIMER 0; dacă i se cere lui TIMER 1,
acesta nu va număra (se obţine acelaşi efect ca şi cînd TR1 = 0);
q TIMER 0 în modul 3 lucrează ca două numărătoare independente pe 8
biţi; TL0 foloseşte rangurile de control ale lui TIMER 0, adică C/ /T,
GATE, TR0 şi /INT0 şi comandă pe TF0 iar TH0 foloseşte pe TR1 şi
comandă pe TF1;
q Modul este util în aplicaţii în care se cere un numărător suplimentar;
TIMER 0 furnizează 2 contoare pe 8 biţi iar TIMER 1 poate fi folosit în
modurile 0, 1 sau 2 fără a putea, însă, să poziţioneze pe TF1 deci nu va
putea să genereze cerere de întrerupere;

CLOCK TL0 TF0

fOSC / 12 TH0 TF1


TR1

15
Sisteme Încorporate
n Un exemplu de contor/ temporizator cu facilităţi de captare şi
comparare:
CT0I INT CT1I INT CT2I INT CT3I INT

CTI0 CTI1 CTI2 CTI3

CT0 CT1 CT2 CT3 CM0 CM1 CM2

= = =
INT INT INT
off
fOSC/12 Divizor de depăşire inferioară
T2 depăşire superioară
prescalare
T2

RT2

T2ER RST

16
Sisteme Încorporate

Interfaţa serială
n De tip UART; schema bloc este:

17
Sisteme Încorporate
n Cuprinde:
q logica de control pentru transmisie şi recepţie,
q registrul de control SCON ("Serial Control Register"),
q registrele tampon SBUF ("Serial Buffer Register") şi
q rangul SMOD;
n Registrul SCON conţine biţi de control pentru a specifica modurile
de operare, activarea/ dezactivarea recepţiei de date, memorarea
celui de-al 9-lea bit de date şi starea interfeţei seriale; fiecare rang
poate fi adresat individual;
n Registrul SBUF este tamponul pentru date; deşi îi corespunde o
singură adresă, este alcătuit din 2 registre: unul pentru transmisie şi
unul pentru recepţie; corespunzător, SBUF poate fi specificat în
instrucţiuni ca registru sursă sau ca registru destinaţie; transmisia
este anclanşată prin înscrierea datei în SBUF iar la recepţie, data
este citită din SBUF;
n Rangul SMOD este rangul 7 din registrul PCON ("Power Control
Register") şi are rolul să divizeze cu 2 ( SMOD = 1) sau nu (SMOD =
0), rata de transfer;
18
Sisteme Încorporate
n Structura registrului SCON
7 0
SM0 SM1 SM2 REN TB8 RB8 TI RI
q SCON.0: RI: este un indicator activat de interfaţa serială atunci când a terminat de
asamblat un caracter şi îl poate oferi unităţii centrale; împreuna cu rangul TI sunt
intrări pentru o poartă SAU, a cărei ieşire poate fi folosită ca cerere de întrerupere;
ştergerea se face doar prin program;
q SCON.1: TI: indicator activat de interfaţa serială atunci când a terminat de
transmis un caracter şi poate primi altul de la unitatea centrală; împreună cu
rangul RI constituie intrări pentru o poartă SAU a cărei ieşire poate fi folosită ca
cerere de întrerupere; ştergerea se face doar prin program;
q SCON.2: RB8: rang pentru memorarea celui de-al 9-lea bit recepţionat dintr-un
caracter pe 11 biţi, folosit în modurile 2 şi 3; în modul 1 va reţine bitul STOP dacă
rangul SM2 = 0 iar în modul 0 nu este folosit;
q SCON.3: TB8: rang pentru memorarea celui de-al 9-lea bit de date ce se va
transmite într-un caracter pe 11 biţi, folosit în modurile 2 şi 3; este poziţionat prin
program.
q SCON.4: REN: trebuie să fie setat pentru ca recepţia să fie activată;

19
Sisteme Încorporate

q SCON.5: SM2: validează facilitatea de comunicare în sistem multiprocesor, în


modurile 2 sau 3; dacă SM2 = 1, în modurile 2 sau 3 (cu 11 biţi/ caracter) şi al 9-
lea bit de date este 1 atunci data recepţionată este acceptată şi este încărcată în
SBUF şi RB8 şi indicatorul RI este activat; dacă al 9-lea bit de date este 0, data
este ignorată şi SBUF, RB8 şi RI rămîn nemodificate; dacă SM2 = 1 în modul 1
(cu 10 biţi/ caracter), se va încărca bitul de STOP în RB8, data este preluată şi
indicatorul RI este activat; dacă SM2 = 0, data este acceptată indiferent de
valoarea celui de-al 9-lea bit de date sau a bitului de STOP;
q SCON. 6-7: SM1, SM0: setează modul de lucru al interfeţei seriale, conform tab.:

SM0 SM1 Mod Descriere Rata de transfer


0 0 0 I/E extins fOSC/ 12
0 1 1 UART cu 10 biţi variabilă
1 0 2 UART cu 11 biţi fOSC/ 12 sau fOSC/
64
1 1 3 UART cu 11 biţi variabilă

20
Sisteme Încorporate
n Interfaţa serială poate lucra în modurile:
q I/ E (intrare/ ieşire) extins sau
q UART;
q În modul I/ E extins, transferul se face sincron cu tactul
microcontrolerului;
q În modul UART se pot transfera caractere pe 10 sau 11 biţi; caracterul
pe 11 biţi este alcătuit dintr-un bit de START, 8 biţi de date, un al 9-lea bit
programabil şi bitul de STOP;

n Modul 0:
q Este modul numit şi I/ E extins în care se transferă date pe 8 biţi,
sincronizate cu tactul microcontrolerului;
q Terminalul TxD este folosit doar pentru a genera tactul iar terminalul RxD
este folosit pentru a transfera date în ambele sensuri;
q Rata de transfer este: R = f OSC/ 12;

21
Sisteme Încorporate
n Modul 1:
q Este un mod UART în care se transferă caractere pe 10 biţi: 1 bit de
START, 8 biţi de date, primul fiind cel mai puţin semnificativ şi 1 bit de
STOP;
q La recepţie, bitul de STOP se încarcă în RB8;
q Rata de transfer este determinată de frecvenţa semnalului de la ieşirea
de depăşire a lui TIMER 1, fTIM;
q TIMER 1 poate lucra ca şi contor sau ca temporizator şi este necesară
dezactivarea întreruperii generată de TF1;
q Transmisia se realizează pe terminalul TxD şi este anclanşată de o
scriere în tamponul SBUF iar recepţia se realizează pe terminalul RxD şi
este anclanşată la apariţia bitului de START;
q Data se preia din tamponul SBUF;
q Încărcarea datei în SBUF, a bitului de STOP în RB8 şi activarea
indicatorului RI se realizează doar dacă în momentul respectiv sunt
îndeplinite anumite condiții;

22
Sisteme Încorporate
n Modul 2
q Mod UART cu 11 biţi/ caracter: 1 bit de START, 8 biţi de date, 1 bit
programabil şi 1 bit de STOP;
q La transmisie, bitul al 9-lea este TB8 şi poate fi programat iar la recepţie,
bitul al 9-lea este încărcat în RB8;
q Rata de transfer este:
R = 2SMOD x fOSC/ 64;

q Transmisia: bit de START, 8 biţi de date, bit 9 (TB8, care poate fi bitul de
paritate dacă în prealabil acesta a fost încărcat în TB8), bit de STOP şi
activare a indicatorului TI;
q La recepţie, după preluarea bitului de START şi a biţilor de date, este
preluat al 9-lea bit, care se încarcă în RB8, apoi este preluat bitul de
STOP şi se activează indicatorul RI; preluarea datei, încărcarea celui de-
al 9-lea bit în RB8 şi activarea indicatorului RI au loc dacă sunt
îndeplinite anumite condiții;

23
Sisteme Încorporate
n Modul 3
q Mod UART cu 11 biţi/ caracter care diferă de modul 2 doar prin rata de
transfer care aici depinde de fTIM; astfel:
n R = 2SMOD x fTIM/ 32 dacă TIMER 1 lucrează în modul 0 sau 1 şi
n R = 2SMOD x fosc/ 32 x 12 x (256 - (TH1)) dacă TIMER 1 lucrează în
modul 2.
q Ratele de transfer uzuale şi obţinerea lor din TIMER 1:

24
Sisteme Încorporate
n Aplicaţie:
q Facilitatea de comunicare în sistem multiprocesor: se bazează pe
existenţa celui de-al 9-lea bit de date în modurile 2 sau 3;
q Dacă rangul SM2 = 1 şi bitul al 9-lea este 1 atunci data este preluată iar
dacă bitul al 9-lea este 0 atunci data este neglijată;
q Fie un sistem multiprocesor, cu un microcontroler master şi mai multe
microcontrolere slave;
q Datele vor fi transmise doar de la master la slave;

...

TxD RxD RxD RxD


80C51 80C51 80C51 80C51
...
MASTER SLAVE SLAVE SLAVE

25
Sisteme Încorporate
q În faza iniţială, toate microcontrolerele slave au SM2 = 1 şi aşteaptă să
fie selectate;
q Microcontrolerul master emite adresa microcontrolerului slave selectat;
adresa diferă de date prin aceea că are rangul al 9-lea, TB8, egal cu 1;
q Toate microcontrolerele slave vor prelua adresa, îşi vor genera
întreruperi şi în rutinele de tratare vor verifica propria adresă cu cea
sosită de la microcontrolerul master;
q Microcontrolerul slave selectat va modifica SM2 deci doar la acesta va
exista SM2 = 0 iar la toate celelalte microcontrolere slave va exista SM2
= 1; în continuare, microcontrolerul master emite datele, cu TB8 = 0;
q Doar acel microcontroler slave care va avea SM2 = 0 va prelua datele
iar toate celelalte microcontrolere slave le vor ignora întrucît la acestea
SM2 = 1;
q După ce microcontrolerul master a emis toate datele, el va emite un cod
de final, predeterminat, care va avea ca efect setarea lui SM2 de
către microcontrolerul slave care a fost selectat; în acest fel s-a revenit
în starea iniţială în care toate microcontrolerele slave au SM2 = 1 şi
aşteaptă să fie selectate;

26
Sisteme Încorporate

Modul PWM (Pulse Width Modulator)


n Generează ieşiri modulate în durată;
n Facilitate utilă pentru comanda motoarelor de curent continuu;
n Implementat cu un contor/ temporizator pe 32 biţi cu un divizor
intern de 32 biţi;
n Facilitatea PWM poate fi dezactivată;
n Perioada şi durata pot fi programate;
n Se poate genera cerere de întrerupere la generarea duratei
prescrise;
n Facilitate de control individual al fronturilor ridicător şi coborîtor; utilă
pentru comanda motoarelor de curent continuu multi – fază care cer
3 impulsuri cu posibilitate de poziţionare distinctă a fronturilor
ridicător şi coborător ale fiecăruia;
n Posibilitate de a genera:
q Ieşire activă la 1 la fiecare început de ciclu;
q Ieşire activă la 1 sau la 0 în timpul ciclului;
n Registre care stabilesc durata semnalului activ şi poziţia sa;

27
Sisteme Încorporate

n Un exemplu de modul PWM:


Magistrală internă

Divizor de
fOSC / 2
prescalare

Numărător

Comparator Comparator

PWM0 PWM1
Separator Separator

PWM0 PWM1

28
Sisteme Încorporate

2.1.5. Sistemul de întreruperi


n 5 surse pentru întreruperi:
q 2 întreruperi externe generate la intrările /INT0 şi /INT1 şi
q 3 întreruperi interne: 2 de la circuitele contoare/ temporizatoare şi una de
la întreruperea serială.
n Cererile de întrerupere setează indicatori care sunt ranguri din
registrele TCON şi SCON şi care generează, de fapt, întreruperile;
n Astfel întreruperile externe setează indicatorii IE0 (TCON.1) şi IE1
(TCON.3), întreruperile de la contoare setează rangurile TF0
(TCON.5) şi TF1 (TCON.7) iar întreruperea serială setează fie
rangul RI (SCON.0) fie rangul TI (SCON.1);
n RI şi TI sunt intrări într-o poartă SAU a cărei ieşire este cererea de
întrerupere de la interfaţa serială; pot fi controlaţi şi prin program;
n Dacă se încarcă 1 în unul din aceşti indicatori, efectul va fi acelaşi
ca şi cel produs de cererea corespunzătoare hardware;

29
Sisteme Încorporate
n Dacă există o cerere hardware în aşteptare, care nu a fost încă
tratată, ea poate fi anulată prin ştergerea indicatorului
corespunzător;
n Întreruperile sunt controlate de 2 registre:
q IE ("Interrupt Register") şi
q IP ("Priority Register");
q Rolul registrului IE este acela de a valida/ invalida întreruperile; pentru a
valida o întrerupere, bitul corespunzător trebuie să fie 1 iar pentru a o
dezactiva, bitul corespunzător trebuie să fie 0; în plus, există un rang
pentru dezactivarea generală a întreruperilor;
q Rolul registrului IP este acela de a aloca priorităţi;
n Există 2 nivele de prioritate: scăzut şi ridicat; fiecărei surse i se poate aloca,
în mod independent, oricare nivel de prioritate;
n Fiecărei întreruperi îi corespunde un rang: 1 în rangul respectiv înseamnă
prioritate ridicată iar 0 în rangul respectiv înseamnă prioritate scăzută;
n Dacă apar simultan 2 cereri de întrerupere, de priorităţi diferite, va fi tratată
cererea de prioritate mare;
n Dacă apar simultan 2 sau mai multe cereri de aceeaşi prioritate,
microcontrolerul le va lua în considerare într-o ordine prestabilită care este:
IE0, TF0, IE1, TF1 şi, ultima, RI + TI;

30
Sisteme Încorporate

n Structura registrului IE:


7 0
EA - - ES ET1 EX1 ET0 EX0

n IE.0: EX0: bit de control pentru întreruperea externă 0;


n IE.1: ET0: bit de control pentru contorul/ temporizatorul 0;
n IE.2: EX1: bit de control pentru întreruperea externă 1;
n IE.3: ET1: bit de control pentru contorul/ temporizatorul 1;
n IE.4: ES: bit de control pentru întreruperea serială;
n IE.7: EA: bit de control general: dacă este 0 atunci o întrerupere nu
poate fi tratată; dacă este 1, o întrerupere poate fi tratată dacă bitul
de control corespunzător este 1;

31
Sisteme Încorporate

n Structura registrului IP:


7 0
- - - PS PT1 PX1 PT0 PX0

n IP.0: PX0: rang de prioritate pentru întreruperea externă 0;


n IP.1: PT0: rang de prioritate pentru întreruperea de la contorul/
temporizatorul 0;
n IP.2: PX1: rang de prioritate prntru întreruperea externă 1;
n IP.3: PT1: rang de prioritate pentru întreruperea de la contorul/
temporizatorul 1;
n IP.4: PS: rang de prioritate pentru întreruperea serială;

32
Sisteme Încorporate
n Întreruperile sunt citite în timpul ultimei stări din fiecare ciclu
maşină;
n Apoi are loc o testare a ceea ce s-a citit în timpul următorului ciclu
maşină;
n Dacă vreunul din indicatorii de întrerupere a fost găsit activ şi dacă
întreruperea respectivă este validată atunci sistemul de întreruperi
va genera o instrucţiune LCALL ("Long CALL") ADR, unde ADR
depinde de tipul întreruperii, conform tab.:
Tip de întrerupere Adresă
IE0 0003H

TF0 000BH

IE1 0013H

TF1 001BH

RI + TI 0023H

33
Sisteme Încorporate
n Instrucţiunea LCALL nu se va genera în una din următoarele situaţii:
q 1. o întrerupere de prioritate egală sau mai mare este deja în tratare;
q 2. ciclul curent de testare nu este ultimul ciclu al instrucţiunii curente sau
q 3. instrucţiunea curentă este RETI sau o instrucţiune ce scrie în registrele IE
sau IP;
n Condiţia 2. asigură luarea în considerare a unei cereri de întrerupere
doar la sfirşitul unei instrucţiuni iar condiţia 3. asigură luarea în
considerare a unei cereri de întrerupere doar după ce se execută
încă o instrucţiune după RETI sau după cea care scrie în registrele
IE sau IP;
n Dacă există o singură sursă de întrerupere atunci timpul de răspuns
este între 3 şi 8 cicluri maşină.
n Instrucţiunea LCALL va depune conţinutul lui PC în stivă şi va
încărca PC cu adresa de salt;
n În unele cazuri, are loc ştergerea, prin hardware, a indicatorului ce
corespunde întreruperii tratate: indicatorii TF0, TF1 şi IE0, IE1 dar
numai dacă întreruperea externă este activă pe front;
n Indicatorul ce corespunde întreruperii seriale poate fi şters doar prin
program;

34
Sisteme Încorporate
n Execuţia rutinei de tratare a cererii de întrerupere se încheie la
întâlnirea instrucţiunii RETI; încarcă în PC adresa de revenire şi
iniţializează sistemul de întreruperi; rutina se poate încheia şi cu
instrucţiunea RET dar nu se va iniţializa sistemul de întreruperi;
n Întreruperile externe pot fi programate, prin rangurile IT0, respectiv
IT1 din registrul TCON, să fie active pe nivel sau pe front;
n O tranziţie 1 → 0 pe una din intrările /INT0 sau /INT1 va poziţiona
indicatorul IE0 sau IE1, dacă întreruperea este validată și dacă
cererea are o durată minimă de 12 perioade de tact pe nivel 1 şi 12
perioade de tact pe nivel 0;
n Această condiţie rezultă din faptul că terminalele /INT0 şi /INT1 sunt
citite doar o singură dată în fiecare ciclu maşină;
n Dacă cererea externă este activă pe nivel, ea trebuie să rămînă
activă pînă la începerea execuţiei rutinei de tratare, după care
trebuie dezactivată înainte de încheierea rutinei pentru a evita o
tratare repetitivă a ei;

35
Sisteme Încorporate
n Aplicaţie: execuţia unui program în mod pas cu pas

q O cerere de întrerupere nu va fi luată în considerare dacă apare în


timpul tratării unei întreruperi de aceeaşi prioritate şi nici dacă apare în
timpul instrucţiunii RETI, caz în care este necesară execuţia a încă unei
instrucţiuni;
q Aceasta înseamnă că dacă s-a intrat în rutina de tratare a cererii de
întrerupere, o nouă intrare în această rutină este posibilă doar dacă se
execută o instrucţiune din programul principal;
q Pe această trăsătură se bazează tehnica de realizare a modului pas cu
pas;
q Pentru aceasta se programează activarea unei întreruperi externe, de
exemplu /INT0, pin P3.2, pe nivel iar rutina de tratare va trebui să se
încheie cu secvenţa:

36
Sisteme Încorporate

JNB P3.2,$ - se aşteaptă pînă cînd /INT0 devine 1;


JB P3.2,$ - se aşteaptă pînă cînd /INT0 devine 0;
RETI - întoarcere în programul principal pentru execuţia a încă unei
instrucţiuni;

q Dacă /INT0 este în starea 0, CPU va intra în rutina de tratare a


întreruperii externe 0 şi va rămîne acolo pînă ce apare un impuls pe linia
/INT0 (o trecere la 1, adică dezactivarea cererii curente, urmată de o
nouă trecere la 0, adică o nouă activare);
q Apoi va executa RETI, se va întoarce în programul principal unde va mai
executa o instrucţiune şi va reintra în rutina de tratare după care totul se
repetă;
q Deci un pas este realizat prin un impuls pe linia P3.2.

37
Sisteme Încorporate

2.1.6. Modurile de lucru cu consum redus


n 2 moduri: Idle şi Power – Down;
n Utile în aplicaţii în care consumul este un factor critic;
n Instalarea lor se face prin program, acţionînd asupra a cîte unui
rang din registrul PCON ("Power Control Register"):
7 0

SMOD - - - GF1 GF0 PD IDL

n PCON.0: IDL: 1 în acest rang instalează modul Idle;


n PCON.1: PD: 1 în acest rang instalează modul Power – Down;
n PCON.2, 3: GF0, GF1: ranguri pentru uz general;
n PCON.7: SMOD: utilizat la interfaţa serială;

38
Sisteme Încorporate
n Modul Idle:
q Microcontrolerul intră în acest mod după activarea, de către o
instrucţiune, a rangului IDL;
q Oscilatorul, interfaţa serială, contoarele/ temporizatoarele şi sistemul de
întreruperi continuă să funcţioneze dar tactul nu mai ajunge la CPU;
întregul CPU îşi păstrează starea;
q Ieşirea: prin întrerupere validată sau RST;
n Modul Power – Down:
q Este instalat de o instrucţiune ce activează rangul PD;
q Oscilatorul se opreşte, ca urmare starea întregului microcontroler
rămâne nemodificată;
q Singura ieşire din acest mod este prin activarea intrării RST;
q În acest mod Vcc poate fi redus la 2 V; trebuie însă avut grijă ca
reducerea să se facă după ce microcontrolerul a intrat în modul Power -
Down iar activarea lui RST care provoacă ieşirea din modul Power -
Down să se facă după ce Vcc a revenit la valoarea de lucru;

39
Sisteme Încorporate

2.1.7. Porturile
n Este resursa direct utilizată în aplicaţiile de timp real, de
monitorizare, comandă şi control;
n Microcontrolerul 8051 dispune de 4 porturi bidirectionale, pe 8 biţi,
notate cu P0, P1, P2 şi P3;
n Fiecare port are un circuit de intrare, un registru intern notat tot cu
P0, P1, P2 respectiv P3 şi un etaj de ieşire;
n Porturile sunt de uz general, fiecare rang poate fi programat
independent ca intrare sau ieşire şi, în plus, porturile P0, P2 şi P3
au şi funcţiuni alternative;
n Astfel în ciclurile în care se face acces la memoria externă, liniile
portului P0 constituie o magistrală multiplexată de adrese/ date,
AD0 - 7, între jumătatea mai puţin semnificativă din magistrala de
adrese şi cea de date iar liniile portului P2 vor transfera jumătatea
mai semnificativă a magistralei de adrese;

40
Sisteme Încorporate
n Atunci cînd se aduce un cod de instrucţiune din memoria de
program externă, liniile porturilor P0 şi P2 vor fi comandate de PC
iar atunci cînd se transferă o dată cu memoria de date externă
liniile porturilor P0 şi P2 vor fi comandate de registrul DPTR;
n Dacă adresa datei externe este pe 8 biţi, atunci adresa se obţine pe
liniile portului P0 care va fi comandat de registrul R0 sau R1;
n Rangurile portului P3 au funcţiuni specifice individuale conform tab.:
Rang Funcţia specifică
P3.0 RxD: intrare serială
P3.1 TxD: ieşire serială
P3.2 /INT0: întrerupere externă 0
P3.3 /INT1: întrerupere externă 1
P3.4 T0: intrare de numărare pentru contorul 0
P3.5 T1: intrare de numărare pentru contorul 1
P3.6 /WR: semnal de comandă pentru scrierea în memoria de date externă
P3.7 /RD: semnal de comandă pentru citirea din memoria de date externă

41
Sisteme Încorporate

Curs 3

1
Sisteme Încorporate
2.1.9. Limbajul de asamblare al microcontrolerului 8051

n Microcontrolerul 80C51 posedă un set de instrucţiuni orientat pe


aplicaţii de monitorizare şi control;

n Există instrucţiuni la nivel de bit care permit comanda individuală a


rangurilor din registre şi din porturi, fără afectarea restului de
ranguri;

n Pentru accesul rapid în cadrul unor structuri de date de dimensiuni


mici, există mai multe moduri de adresare şi mai multe tipuri de
instrucţiuni de transfer;

2
Sisteme Încorporate
n Moduri de adresare
q Adresarea directă: operandul este specificat printr-o adresă pe 8 biţi în
cadrul instrucţiunii; se foloseşte doar pentru adresarea memoriei RAM
interne şi a registrelor cu funcţiuni speciale; exemplu: MOV A,09H;
q Adresarea indirectă: în cadrul instrucţiunii se specifică un registru care
conţine adresa operandului; exemplu: ADD A,@Ri;
q Adresarea de registru: este folosită pentru adresarea unui operand
aflat în unul din registrele R0 - R7; cod eficient;
q Adresarea implicită: este folosită de instrucţiuni care au un operand
într-un registru predeterminat, de exemplu acumulatorul sau registrul
DPTR; în aceste cazuri nu mai este necesară specificarea operandului;
exemplu: ADD A,Rn;
q Adresarea imediată: în cadrul instrucţiunii, după cod urmează o
constantă; exemplu: ADD A,#64 sau ADD A,#64H;
q Adresarea indexată: poate fi folosită doar pentru citirea memoriei de
program; este foarte utilă la citirea tabelelor de căutare din memoria de
program; un registru de bază de 16 biţi, DPTR sau PC, indică baza
tabelei iar acumulatorul indică intrarea în tabelă; exemplu: MOVC A,@A
+ DPTR; adresarea indexată se foloseşte şi la instrucţiunile de salt cu
selecţie: adresa destinaţie a unei instrucţiuni de salt se obţine adunând
conţinutul registrului de bază cu cel al acumulatorului; exemplu: JMP @A
+ DPTR.

3
Sisteme Încorporate
n Setul de instrucţiuni
q Sintaxa:
etic: mnemonică destinaţie, sursă ; comentariu
q Etic este eticheta instrucţiunii, mnemonica denumeşte instrucţiunea,
destinaţia şi sursa se obţin prin moduri de adresare iar comentariul este
util programatorului pentru a urmări modul de realizare al programului;
eticheta şi comentariul sunt opţionale.
n Instrucţiuni aritmetice
q Instrucţiuni cu 2 operanzi: ADD, ADDC, SUBB, MUL şi DIV; utilizează
registrul A;
q Instrucţiuni cu 1 operand: INC, DEC;
q Instrucţiune cu operand implicit: DAA;
q Utilizează mai multe moduri de adresare:
n ADD A,10H - este adresare directă,
n ADD A,#80 - este adresare implicită (operandul este în zecimal),
n ADD A,R0 - este adresare de registru,
n ADD A,@R1 - este adresare indirectă.

4
Sisteme Încorporate
n Instrucţiuni logice:
q Instrucţiuni care implementează funcţiile logice de bază: CPL, ANL, ORL
şi XRL;
q Operanzii se găsesc în registrul A sau pot fi furnizaţi prin adresare
directă, ceea ce înseamnă că se referă la memoria RAM internă şi la
SFR, prin adresare imediată sau prin adresare indirectă;
q Instrucţiuni de rotire a acumulatorului: RR, RRC, RL şi RLC;
q Instrucţiune de interschimbare a celor 2 jumătăţi ale acumulatorului:
SWAP; o aplicaţie este conversia unui număr din binar în BCD; ex.:
MOV B,#10
DIV AB
SWAP A
ADD A,B.
n Instrucţiunea de divizare oferă câtul în A şi restul în B; câtul este cifra zecilor,
ca urmare trebuie să ajungă în jumătatea mai semnificativă a lui A; operaţia
este realizată de SWAP iar instrucţiunea de adunare duce în jumătatea mai
puţin semnificativă a lui A, cifra unităţilor; rezultatul, adică numărul convertit în
BCD, se va afla în registrul A;

5
Sisteme Încorporate
n Instrucţiuni de transfer:
q Transfer cu memoria RAM internă;
q Transfer cu memoria externă;
q Transfer cu memoria RAM internă:
n De transfer,
n De lucru cu stiva,
n De interschimbare;
q Instrucţiunea de transfer are mnemonica MOV iar operanzii pot fi
acumulatorul sau furnizaţi în mod direct, imediat, indirect sau prin
registru;
q Primii 128 octeţi din memoria RAM internă pot fi accesaţi prin adresare
directă şi indirectă iar următorii 128 octeţi din memoria RAM internă, la
microcontrolerele la care sunt implementaţi, pot fi accesaţi prin adresare
indirectă; adresarea directă în acest spaţiu va duce la SFR;
q Există şi o instrucţiune de transfer pe 16 biţi care încarcă o valoare
imediată în registrul DPTR;

6
Sisteme Încorporate
q Instrucţiunile de lucru cu stiva sunt:
n PUSH pentru depunere în stivă şi
n POP pentru extragere din stivă;
q PUSH incrementează indicatorul de stivă şi apoi depune un octet iar
POP extrage un octet şi apoi decrementează SP;
q La iniţializare microcontrolerul încarcă valoarea 07H în SP ca urmare
prima locaţie din stivă la care se va face depunerea este 08H;
q De remarcat că, dat fiind faptul că depunerile în stivă duc la creşterea
conţinutului SP, există riscul ca stiva să ocupe şi zona din RAM – ul
intern alocată utilizatorului, ca urmare se recomandă ca începutul stivei
să fie deplasat spre partea superioară a spaţiului ocupat de RAM – ul
intern;
q Instrucţiunile de interschimbare sunt XCH la care acumulatorul este
interschimbat cu un alt operand şi XCHD la care interschimbarea se va
realiza doar la nivelul jumătăţii inferioare;
q Un exemplu de utilizare a acestor instrucţiuni este următorul: o rutină
care să deplaseze un operand pe 8 digiţi, în BCD, cu 2 digiţi; se
presupune că operandul pe 8 digiţi se află în memoria RAM internă, la
adresele 2BH, 2CH, 2DH şi 2EH:

7
Sisteme Încorporate
CLR A
XCH A,2BH; trimite conţinutul lui 2BH în A
XCH A,2CH; trimite conţinutul lui 2BH la 2CH
XCH A,2DH; trimite conţinutul lui 2CH la 2DH
XCH A,2EH; trimite conţinutul lui 2DH la 2EH şi ceea ce a fost la 2EH
va fi în A;
q Rutina are 9 octeţi şi durează 5 μs considerând un tact cu frecvenţa de
12 MHz;

q Varianta cu instrucţiuni de transfer:


MOV A,2EH; conţinutul lui 2EH se transferă în A
MOV 2EH,2DH; trimite conţinutul lui 2DH la 2EH
MOV 2DH,2CH; trimite conţinutul lui 2CH la 2DH
MOV 2CH,2BH; trimite conţinutul lui 2BH la 2CH
MOV 2BH,#0
q Rutina are 13 octeţi şi durează 9 μs.

8
Sisteme Încorporate
q Transfer cu memoria externă:
n Instrucţiuni de transfer cu memoria externă de date şi
n Instrucţiuni de transfer cu memoria externă de program.
q În prima categorie intră instrucţiunea MOVX care are un operand în
acumulator iar celălalt se obţine prin adresare indirectă;
q Dacă memoria externă de date cere adrese pe 16 biţi, atunci registrul
folosit pentru adresarea indirectă va fi DPTR iar dacă memoria externă
de date cere doar adrese pe 8 biţi, atunci registrele implicate vor fi Ri;
q Avantajul celei de-a doua variante este cod mai compactat;
q Instrucţiunea MOVX este singura cale prin care programatorul poate
avea acces la memoria externă de date;
q A doua categorie este alcătuită din instrucţiunea MOVC;
q Spre deosebire de MOVX, MOVC nu permite decât citire din memoria
externă de cod;
q Foloseşte un operand în A iar celălalt este accesat prin adresare
indirectă, regiştrii implicaţi fiind A + DPTR sau A + PC;

9
Sisteme Încorporate
q Instrucţiunea este foarte utilă la implementarea tabelelor de căutare în
memoria externă de program prin adresare indexată;
q Adresa de început a tabelei se va afla în DPTR sau PC iar indexul, care
va indica intrarea în tabel dorită, se va afla în A;
q Exemplu: se consideră un şir de 10 octeţi ASCII aflaţi în memorie
începînd cu adresa ADR_BAZA şi se doreşte trimiterea lor la o interfaţă
serială; există subrutina EMISIE care preia conţinutul acumulatorului şi îl
trimite la interfaţa serială; rutina este:

MOV DPTR,#ADR_BAZA
MOV B,#10; se iniţializează contorul care indică numărul
;de octeţi de trimis
MOV R0,#0; se iniţializează indexul
ETIC: MOV A,R0; se transferă în A indexul
MOVC A,@A+DPTR; se transferă în A octetul ce trebuie
;trimis
CALL EMISIE; se transferă octetul la interfaţa serie
INC R0; se actualizează indexul
DJNZ B,ETIC; se repetă secvenţa până ce sunt trimişi toţi
;cei 10 octeţi

10
Sisteme Încorporate
n Instrucţiuni la nivel de bit
q Sunt instrucţiuni foarte utile în aplicaţii de control, în care se realizează
comenzi prin intermediul unor ranguri individuale ale porturilor;
q Operanzii sunt fie indicatorul de condiţii C fie biţi accesaţi prin adresare
directă;
q Adresele sub 80H se referă la biţi din memoria RAM internă iar adresele
peste 80H, inclusiv, se referă la biţi din SFR;

q Instrucţiuni:
n CLR anulează indicatorul C sau un bit accesat prin adresare indirectă,
n SETB pune la 1 aceiaşi operanzi,
n CPL complementează aceeaşi operanzi,
n ANL şi ORL realizează operaţia ŞI, respectiv SAU, între indicatorul C şi un bit
accesat prin adresare directă,
n MOV realizează transfer între aceeaşi operanzi;

11
Sisteme Încorporate
q Transferul unui bit din memorie sau dintr-un SFR la un port (de exemplu
la portul P1, rangul 7):
MOV C,BIT; se transferă bitul în indicatorul C
MOV P1.7,C; se transferă C la port;
q Se pot realiza toate operaţiile logice asupra unor biţi individuali cu
excepţia operaţiei SAU EXCLUSIV;
q Operaţia poate fi realizată prin următoarea rutină:
MOV C,BIT1; se transferă în C bitul 1
JNB BIT2,CONT; dacă al 2-lea bit este 0 atunci se face saltul la
; CONT
CPL C; bitul 2 a fost 1, ca urmare rezultatul trebuie să fie 0
CONT: ____
____
q Rezultatul operaţiei SAU EXCLUSIV între BIT1 şi BIT2 se va afla în C;

12
Sisteme Încorporate
n Instrucţiuni de salt
q Există un subset puternic de instrucţiuni de salt care confirmă orientarea
microcontrolerelor spre aplicaţii de monitorizare, comandă şi control;
q Există 4 variante de instrucţiuni de salt necondiţionat:
n LJMP (“Long JMP”): este o instrucţiune pe 3 octeţi din care ultimii 2 sunt
adresa destinaţie; cu această instrucţiune poate fi accesată orice locaţie din
spaţiul de memorie de 64 ko;
n SJMP (“Short JMP”): este o instrucţiune pe 2 octeţi din care al 2 – lea este
adresa destinaţie şi ea este relativă la conţinutul lui PC; spaţiul de memorie
care poate fi accesat este limitat la – 128 pînă la +127 faţă de adresa
instrucţiunii următoare;
n AJMP: este o instrucţiune pe 2 octeţi care conţin adresa destinaţie pe 11 biţi
(3 biţi în primul octet şi cei 8 mai puţin semnificativi în al 2 – lea octet); spaţiul
care poate fi adresat constă din pagina de 2 ko în care se află şi instrucţiunea
AJMP;
n JMP @A+DPTR este o instrucţiune complexă care funcţionează ca un
comutator, similar cu instrucţiunea CASE din limbajul C; adresa destinaţie va
fi conţinutul registrului A plus cel al registrului DPTR ca urmare poate fi
implementată uşor o tabelă de salturi;

13
Sisteme Încorporate
q De exemplu, se consideră că în memorie, la adresa TABELA_SALT se
află o tabelă cu mai multe adrese destinaţie, fiecare ocupînd 2 octeţi;
următoarea rutină realizează saltul la una din aceste adrese destinaţie în
funcţie de valoarea unui index care îi este furnizat rutinei:
MOV DPTR,TABELA_SALT; se încarcă în DPTR adresa de
; început a tabelei
MOV A,INDEX; se încarcă în A indexul
RL A; indexul este înmulţit cu 2 fiindcă o adresă ocupă 2 octeţi
JMP @A+DPTR; se realizează saltul;
q Grupa conţine şi instrucţiuni de salt condiţionat; adresele lor destinaţie
sunt relative la conţinutul lui PC:
n JZ şi JNZ realizează saltul dacă acumulatorul este 0, respectiv diferit de 0;
n JC şi JNC realizează saltul dacă indicatorul C este 1, respectiv 0;
n JB şi JNB realizează saltul dacă bitul indicat prin adresare directă este 1,
respectiv 0; cu aceste instrucţiuni se pot lua decizii în funcţie de starea unor
biţi individuali din memoria internă sau din registre, inclusiv porturi;
n JBC realizează saltul dacă bitul este 1 şi apoi anulează bitul, indicat prin
adresare directă;

14
Sisteme Încorporate
q Grupa mai conţine 2 instrucţiuni complexe;
q Prima este CJNE (“Compare and Jump if Not Equal”): instrucţiunea are
2 operanzi şi se realizează saltul doar dacă cei 2 operanzi nu sunt egali;
este utilă în controlul executării buclelor;
q Un alt efect al instrucţiunii este acela că poziţionează indicatorul C: dacă
primul operand este mai mic ca al 2 – lea atunci C va conţine pe 1 iar în
caz contrar îl va conţine pe 0; acest efect este folosit pentru a realiza
operaţiile “mai mare ca” sau “mai mic ca”;
q A doua este DJNZ (“Decrement and Jump if Not Zero”): este
decrementat un registru sau o locaţie de memorie din RAM – ul intern şi
dacă nu s-a ajuns la 0, se face saltul;
q Principala utilizare a instrucţiunii este pentru controlul executării buclelor;
în operandul instrucţiunii se încarcă contorul care va arăta de câte ori să
se execute o buclă iar aceasta va trebui să se încheie cu DJNZ;
q Adresa destinaţie pentru ambele instrucţiuni este relativă la PC;
q La toate instrucţiunile de salt, destinaţia este dată de programator sub
formă simbolică, de etichetă, programului asamblor revenindu-i sarcina
de a da o valoare concretă etichetei;
15
Sisteme Încorporate
n Instrucţiuni de lucru cu subrutinele
q Instrucţiuni de apel de subrutină:
n ACALL, la care destinaţia trebuie să se afle în aceeaşi pagină ca şi
instrucţiunea de apel (2 octeţi);
n LCALL la care destinaţia poate fi oriunde în spaţiul de memorie extern de
program (3 octeţi);
n Destinaţiile instrucţiunilor de apel de subrutină pot fi date de programator sub
formă simbolică, de etichetă
q Instrucţiunide revenire din subrutină: RET şi RETI;
q Instrucţiunea RETI este recomandată la încheierea subrutinelor de
tratare a cererilor de întrerupere întrucît, în plus faţă de instrucţiunea
RET, reface starea sistemului de întreruperi la ieşirea din rutina de
tratare;
n Instrucţiunea NOP
q Este o instrucţiune fără efect;
q În mod uzual este folosită pentru întârzieri sau pentru a înlocui
instrucţiuni care trebuiesc eliminate din program;

16
Sisteme Încorporate
n Aplicaţii:
n Transferul serial:
q Programarea interfeţei seriale:
n Date iniţiale: 9600 bps, mod UART cu 11 biţi, tact 11.059 MHz;
n Registrul SCON: SM0 = 1, SM1 = 0, REN = 1, RB8 = 0;
n Din tabel se obţine: SMOD = 0, C/ /T = 0, Mod 2, ct. = FDH;
n Numărarea va fi pornită doar prin program, adică TR1 = 1: GATE = 0;
ORG 8000H
MOV A,PCON
ANL A,#7FH
MOV PCON,A; 0 → SMOD
MOV SCON,#92H; programare SCON
MOV TMOD,#20H; programare TMOD
MOV TH1,#0FDH
MOV TL1,#0FDH; iniţializare contor T1
SET TR1
END

17
Sisteme Încorporate

18
Sisteme Încorporate

19
Sisteme Încorporate

20
Sisteme Încorporate
q Rutina de emisie:
ORG 0A000H
EM: JNB TI,EM; aşteaptă ca TI = 1 (tampon emisie gol)
MOV SBUF,A; trimite caracterul din A în SBUF şi de acolo pe linie
CLR TI; anulare indicator
RET
END

q Rutina de recepţie:
ORG 0B000H
REC: JNB RI,REC; aşteaptă ca REC = 1 (tampon recepţie plin)
MOV A,SBUF; trimite caracterul din SBUF în A
CLR RI; anulare indicator
RET
END

21
Sisteme Încorporate
n Verificarea primilor 32 octeţi din memoria RAM internă
q Pentru adresarea locaţiilor se folosesc registrele R0 – R7;
q Registrul B este folosit pentru a memora temporar valoarea de test şi
pentru comparaţii;
q Locaţia 30H este folosită pentru memorarea contorului;
ORG 4000H
MOV 30H,#04H; iniţializare contor
MOV A,PSW
ANL A,#0E7H
MOV PSW,A; RS1 = RS0 = 0
E1: MOV B,00; se transferă valoarea de test în registrul B
MOV R0,B
MOV B,R0
CJNE R0,B,EROARE
INC B
MOV R1,B
MOV B,R1

22
Sisteme Încorporate
CJNE R1,B,EROARE
.
.
.
MOV R7,B
MOV B,R7
CJNE R7,B,EROARE
DJNZ 30H,E2
JMP FINAL
E2: MOV A,30H
CJNE A,#03,E3
MOV A,PSW
ANL A,#0EFH
MOV PSW,A; RS1 = 0, RS0 = 1
JMP E1

23
Sisteme Încorporate
E3: CJNE A,#02,E4
MOV A,PSW
ANL A,#0F8H
MOV PSW,A; RS1 = 1, RS0 = 0
JMP E1
E4: MOV A,PSW
ANL A,#0FFH
MOV PSW,A; RS1 = RS0 = 1
JMP E1
FINAL: .....................; se poate emite un mesaj
EROARE: .....................; se poate emite un mesaj
END

24
Sisteme Încorporate
n Program de citire a 8 intrări digitale conectate la portul P1. Dacă se
citeşte valoarea 00 atunci P3.0 = 1, dacă se citeşte 55H atunci P3.1
= 1, dacă se citeşte AAH atunci P3.2 = 1, dacă cele mai puţin
semnificative 4 linii sunt 1 atunci P3.0 = P3.1 = P3.2 = 1, dacă cele
mai semnificative 4 linii sunt 1 atunci P3.0 = P3.1 = P3.2 = 0 iar
dacă se citeşte FFH atunci şi P3.3 = 1.
ORG ...
E1: MOV A,P0
CJNE A,#00,E2
SET P3.0
JMP FINAL
E2: CJNE A,#55H,E3
SET P3.1
JMP FINAL
E3: CJNE A,#0AAH,E4
SET P3.2

25
Sisteme Încorporate
JMP FINAL
E4: ANL A,#0FH
CJNE A,#0FH,E5
SET P3.0
SET P3.1
SET P3.2
MOV A,P0
CJNE A,#0FFH,FINAL
E6: SET P3.4
FINAL: ................
E5: ANL A,#0F0H
CJNE A,#0F0H,E1
CLR P3.0
CLR P3.1
CLR P3.2
MOV A,P0
CJNE A,#0FFH,FINAL
JMP E6
END

26
Sisteme Încorporate

n Conversie din BCD necompactat în BCD compactat

q Cei 2 octeţi BCD necompactaţi se află în memorie la adresele 20H


(o.c.m.p.s.) şi 21H (o.c.m.s.);

q Rezultatul, BCD compactat, se va depune în memorie la adresa 22H;


ORG ...
MOV A,21H
SWAP A
ADD A,20H
MOV 22H,A
RET
END

27
Sisteme Încorporate
n Conversie din BCD compactat în BCD necompactat
q Octetul BCD compactat se află în memorie la adresa 22H;
q Rezultatul, 2 octeţi BCD necompactaţi, se vor depune în memorie la
adresele 20H (o.c.m.p.s.) şi 21H (o.c.m.s.)
ORG ...
MOV A,22H
ANL A,#0FH
MOV 20H,A
MOV A,22H
SWAP A
ANL A,#0FH
MOV 21H,A
RET
END

28
Sisteme Încorporate
n Rutine de întîrziere

q Întârziere de 3 – 513 µs (∆ = n x 2 + 1); se adaugă 4 µs


MOV B,#n
ET: DJNZ B,ET
n Rezoluţie, eroare

q Întârziere de 9 – 131329 µs (∆ = m x (n x 2 + 1) + 1); se adaugă 4 µs


MOV R0, #m
ET1: MOV B, #n
ET: DJNZ B,ET
DJNZ R0, ET1
n Rezoluţie, eroare

29
Sisteme Încorporate
q Întârziere de 1 ms:
MOV B,#249
ET: NOP
NOP
DJNZ B,ET
NOP
NOP
NOP
q Întârziere de 1 ms ca subrutină:
LCALL D_1ms
....................................................................
D_1ms: MOV B,#248
ET: NOP
NOP
DJNZ B,ET
NOP
NOP
NOP
RET

30
Sisteme Încorporate
q Întârziere de 100 ms:
MOV R0,#98
ET1: LCALL D_1ms
DJNZ R0,ET1
MOV B,#19
ET2: DJNZ B,ET2

q Întârziere de 100 ms ca subrutină:


LCALL D_100ms
....................................................................
D_100ms: MOV R0,#98
ET1: LCALL D_1ms
DJNZ R0,ET1
MOV B,#18
ET2: DJNZ B,ET2
RET

31
Sisteme Încorporate
q Întârziere de 1s:
MOV R1,#10
ET3: LCALL D_100ms
DJNZ R1,ET3

n Eroare de 0.2 x 10-5 %

q Întârziere de 1s ca subrutină:
LCALL D_1s
....................................................................
D_1s: MOV R1,#10
ET3: LCALL D_100ms
DJNZ R0,ET3
RET

n Eroare de 0.4 x 10-5 %

32
Sisteme Încorporate

Curs 4

1
Sisteme Încorporate

2.2. Arhitectura cu nucleu HCS 12


n Este o arhitectură a microcontrolerelor Motorola pe 16 biţi;
n Exemplu: MC9S12DJ256;
n Include unitate centrală de tip HCS 12, compatibilă cu HC 12 şi 11;
n Include interfaţă pentru magistrală externă multiplexată, modul de
breackpoint, modul pentru depanare;
n Include modul de tact complex: oscilator cu consum mic, PLL,
monitor de tact, COP watchdog;
n Porturi pe 8 şi 4 biţi, cu facilităţi de întrerupere;
n Contor pe 16 biţi cu 8 canale de captare/ comparare; contor
acumulator (2 pe 8 biţi sau 1 pe 16 biţi);
n 8 canale PWM;
n 2 interfeţe seriale asincrone şi 3 interfeţe seriale sincrone;
n Interfaţă serială pentru aplicaţii automotive şi interfaţă Inter IC (IIC);

2
Sisteme Încorporate
n Operare la 50 MHz;
n Breackpoints hardware;
n CAN cu intrări la 5 V;
n Linii de I/E cu operare la 5V;
n Moduri de operare utilizator, speciale şi cu consum redus;
n Deşi magistralele sale sunt pe 16 biţi, poate lucra cu magistrală
externă de date de 8 biţi;
n Includerea unui PLL permite adaptarea consumului şi
performanţelor cu cerinţele aplicaţiei;
n Semnificaţia codului circuitului:

3
Sisteme Încorporate

2.2.1. Schema bloc și


configurația
terminalelor

4
Sisteme Încorporate
n PAD [15:0]: port de intrare şi intrare pentru canalele CAD + 2 intrări
pentru anclanşarea conversiei;
n PA [7:0]: port de I/E şi magistrală multiplexată de A/D, rangurile 7:0;
n PB [7:0]: port de I/E şi magistrală multiplexată de A/D, rangurile 15:8
n PE [7:0]: port de I/E şi cu funcţii alternative: selecţie tact, ieşire tact,
comandă R//W în modurile expanded, intrări pentru întrerupere
mascabilă şi nemascabilă;
n PH [7:0]: port de I/E şi cu funcţii alternative: cereri de întrerupere şi
linii ale interfeţelor SPI1 şi 2;
n PJ [7,6,1,0]: port de I/E şi cu funcţii alternative: cereri de întrerupere,
linii pentru CAN0 şi CAN4, linii pentru IIC;
n PM [7:0]: port de I/E şi cu funcţii alternative: linii pentru CAN 0 – 4,
linii pentru SPI0;
n PP [7:0]: port de I/E şi cu funcţii alternative: cereri de întrerupere,
canale PWM şi linii pentru SPI1 şi 2;

5
Sisteme Încorporate
n PS [7:0]: port de I/E şi cu funcţii alternative: linii pentru SPI0 şi SCI0
şi 1;
n PT [7:0]: port de I/E şi intrări pentru timer;

2.2.2. Nucleul HCS 12

6
Sisteme Încorporate
n Registrele CPU: compatibilitate cu registrele HC 12 şi HC 11

7
Sisteme Încorporate
n MMC (Module Mapping Control):

q Se ocupă de toate operaţiile de mapare şi selecţie pentru memoria


internă şi externă;
q Gestionează maparea şi selecţia pentru periferia internă;
q Gestionează sistemul de securitate al CPU;
q Poziţionează memoria internă RAM în harta memoriei;
q Poziţionează memoria internă EEPROM în harta memoriei;
q Protejează accesul la memoria internă Flash;
q Conţine registre de test;
q Spaţiul de memorie direct adresabil este de 64 Ko dar există
posibilitatea paginării prin intermediul unor ranguri din un SFR; memoria
paginată poate fi mapată doar intern sau intern şi extern:

8
Sisteme Încorporate
n MEBI (Multiplexed External Bus Interface):
q Gestionează transferurile pe magistralele externe;
q Gestionează registrele de date şi de direcţie ale porturilor A, B, E şi K;
q Gestionează funcţiile alternative ale porturilor E şi K;
q Controlează partea electrică a intrărilor şi ieşirilor porturilor A, B, E şi K;
q Configurează linia /IRQ şi celelalte linii pentru cereri de întrerupere;
q Dispune de SFR – uri, de ex.:

9
Sisteme Încorporate
q MEBI detectează tipurile de accese externe:

q MEBI detectează modurile de operare: sunt stabilite la frontul ridicător al


lui /RESET care va înscrie valorile de pe liniile BKGD, PE6 şi PE5 în
rangurile MODC, MODB şi MODA; porturile A şi B au ca funcţiuni
alternative magistralele de adrese/ date;
q Special Single Chip Mode: nu foloseşte magistrale externe;
q Emulation Extended Narrow Mode: foloseşte magistrală externă de date
pe 8 biţi; pentru sisteme mai ieftine;
q Emulation Expanded Wide Mode: magistrale externe de 16 biţi;

10
Sisteme Încorporate
q Normal Single Chip Mode: fără magistrale externe;
q Normal Expanded Narrow Mode: magistrală externă de date de 8 biţi
pentru sisteme mai puţin performante;
q Normal Expanded Wide Mode: magistrală externă de date de 16 biţi;
ranguri ale portului E sunt configurate ca semnale de comandă;
q Special Test Mode: mod de test care permite vizualizarea unor semnale
de comandă interne;
q Peripheral Mode: mod de testare, accesibil doar de producător; este un
mod special; ieşirea din el se face modificînd valorile pinilor BKGD, PE6
şi PE5 şi activînd semnalul /RESET; direcţia magistralelor de date şi
adrese este spre circuit iar sistemul extern, de testare, este cel ce
generează semnalele de comandă, plasează informaţia pe magistrale şi
iniţiază toate ciclurile;
q Vizibilitate internă este permisă şi în modurile Expanded Wide şi
Emulation Narrow; este asigurată prin setarea rangului IVID din registrul
MODE; nu este permisă în modurile Single Chip, Peripheral şi Normal
Expanded Narrow;

11
Sisteme Încorporate
n BKP (Breakpoint):
q Asigură, prin hardware, puncte de breakpoint, comparând valori curente
de adrese şi date cu conţinuturile unor registre interne;
q În caz de egalitate CPU este plasat în modul BDM (Background Debug
Mode) sau se generează o întrerupere software (SWI);
q 2 moduri de operare:
n Dual Address Mode: o potrivire cu una din 2 adrese va trece CPU în
modul BDM sau va genera SWI;
n Full Breakpoint Mode: o potrivire cu adresa şi data va trece CPU în
modul BDM sau va genera SWI;
q 2 tipuri de breakpoint: forced şi tagged; primul asigură reacţie după
execuţia instrucţiunii de la adresa specificată iar al doilea asigură reacţie
înainte de execuţia instrucţiunii de la adresa specificată;
q Oprirea se poate realiza pe o adresă, pe o adresă multiplu de 256 sau
pe o adresă multiplu de 16 K;
q Oprirea se poate realiza pe o dată de 8 sau 16 biţi, pe octet superior sau
inferior, la citire sau scriere;
q Blocul este controlat prin SFR, de ex. Breakpoint Control Register 0;

12
Sisteme Încorporate
n BDM (Background Debug Mode)
q Oferă suport pentru depanare;
q Poate fi dezactivat;
q Poate urmări execuţia instrucţiunilor;
q Modul de lucru securizat: asigură protecţia memoriei interne EEPROM şi
Flash;
q BDM primeşte şi execută comenzi de la un sistem de dezvoltare; 2 tipuri
de comenzi: hardware şi firmware;
q Comenzile hardware scriu şi citesc oricare locaţie de memorie accesibilă
de CPU şi asigură intrarea în BDM;
q Comenzile firmware scriu şi citesc registrele interne şi asigură ieşirea din
BDM;
q Exemple de comenzi firmware: READ_NEXT (acces indirect în
memorie), READ_PC, READ_D, READ_X, READ_Y, WRITE_PC,
WRITE_D, WRITE_NEXT etc.
n TRACE1: instalează modul de pas cu pas,
n TAGGO: instalează urmărirea instrucţiunilor;
n GO: salt la programul utilizator;

13
Sisteme Încorporate
2.2.4. Memoria internă
nMemoria Flash:
q Capacitate de 256 Ko, organizată ca 4 blocuri de câte 64 Ko;
q Fiecare bloc poate fi şters, programat sau citit;
q Tensiunea mare necesară ştergerii este generată intern;
q Facilitate de generare de întrerupere la încheierea comenzii sau la
golirea tamponului de date;
q Conţine o bandă de asamblare pe 2 nivele pentru a creşte viteza de
execuţie a comenzilor;
q Memoria este securizată;
q Structura:
n Împărţită în pagini de 16 Ko;
n Zonele 4000H – 7FFFH, 8000H – BFFFH şi C000H – FFFFH sunt ocupate de
pagini flash; zona 0000 – 3FFFH este ocupată de SFR – uri, EEPROM şi
SRAM;
n Paginile din zonele 4000H – 7FFFH şi C000H – FFFFH sunt fixe în timp ce
paginile din zona 8000H – BFFFH sunt suprapuse; pot fi accesate prin un
registru de pagină;
n Paginile fixe pot fi, de asemenea, accesate prin registrul de pagină.

14
Sisteme Încorporate

15
Sisteme Încorporate
n Memoria EEPROM:
q Capacitate de 4 Ko; alte circuite din familie pot avea memorii de 0.5, 1
sau 2 Ko;
q Poate fi plasată oriunde în memorie, începând cu adrese multiplu de 2
Ko; prin programarea adresei de început cu 5 biţi din un SFR;
q Poate fi activată sau inhibată;
q Poate fi ştearsă, programată şi citită;
q Facilitate de generare de întrerupere la încheierea comenzii sau la
golirea tamponului de date;
q Memoria poate fi protejată la nivelul întregii memorii sau al sectoarelor
(se poate stabili dimensiunea);
q Structura memoriei:
n Zona Bază + 00H, 03H – 06H este reţinută pentru SFR – uri;
n Zona Bază + FF0H – FFFH este rezervată;
n Locaţia Bază + FFDH conţine octetul de protecţie a memoriei EEPROM;
n Ultima jumătate de Ko poate fi protejată, la nivel de 64, 128, 192, 256, 320,
384 sau 512 octeţi;

16
Sisteme Încorporate

17
Sisteme Încorporate

2.2.5. Generarea tactului şi iniţializarea


q Baza de timp poate fi un quartz, un oscilator ceramic, semnal extern sau
intern;
q Monitor al tactului,
q Frecvenţa este multiplicată intern de un modul PLL;
q Iniţializarea: watchdog (COP), lipsa tactului, Reset extern;
q RTI;
q Moduri de lucru: Run, Wait, Stop, Self Clock;
q Modul Run: este modul de lucru normal; facilităţile COP şi RTI pot fi
instalate prin ranguri din SFR;
q Modul Wait: permite dezactivarea unor blocuri interne:

n Ieşirea se face prin Reset extern, Reset COP, Clock monitor, RTI sau
întrerupere mod Sef Clock;
18
Sisteme Încorporate
q Modul Stop:
n Intrarea se face cu instrucţiunea Stop;
n Full Stop: întregul circuit este oprit; ieşirea se face cu întrerupere sau reset
extern;
n Pseudo Stop: circuitul funcţionează parţial; ieşirea se face ca la modul Wait;
q Modul Self Clock: se folosește doar în cazuri extreme;
q Schema bloc:

19
Sisteme Încorporate
q Clock Monitor: se bazează pe un tact intern; dacă nu detectează impuls
într – un timp prestabilit va indica lipsa tactului;
n Se va activa modul Self Clock sau se va genera un reset intern;
n Poate fi activat sau inhibat;
q RTI: generează periodic întreruperi hardware cu o perioadă
programabilă;
n Poate fi activat sau inhibat;
q COP (Computer Operating Properly): watchdog cu rată programabilă,
214 – 224 impulsuri de tact;
n Generează reset intern;
n Cere scrierea octeţilor 55H şi AAH în registrul ARMCOP, în perioada
programată;
n Facilitate de “windowed COP”: scrierea în registru trebuie făcută în perioada
egală cu ultima 25% din perioada programată; o scriere prematură va duce la
reset intern;
n Poate fi activat sau inhibat;
q Moduri low – power: Wait şi Stop;

20
Sisteme Încorporate
q Conectare externă:

q Iniţializarea:
n 0 logic la intrarea /Reset;
n Detectarea activării alimentării;
n COP watchdog;
n Clock Monitor detectează o lipsă de tact şi nu este activat modulul Self Clock;
q Modul de operare:
n Dacă nu este o activare de Clock Monitor sau de COP, procesarea începe
prin aducerea vectorului de Reset;
n Clock Monitor şi COP trebuiesc validate prin ranguri din SFR – uri.

21
Sisteme Încorporate

2.2.6. Periferia internă


nConvertorul analog digital
q 8 canale de intrare,
q Rezoluţie de 8/ 10 biţi;
q Timp de eşantionare programabil;
q Anclanşare externă şi prin program; anclanşarea externă poate fi
activată de front (crescător sau descrescător sau de nivel, low sau high);
anclanşarea externă poate fi invalidată;
q Generare de întrerupere la încheierea conversiei;
q Conversie singulară sau multiplă, pe unul sau mai multe canale; numărul
de conversii poate fi programat între 1 şi 8;
q Moduri de operare:
n Stop: sistemul se opreşte, orice conversie este abandonată;
n Wait: conversia se opreşte sau este continuată în funcţie de starea unui rang
din un SFR;
n Freeze: convertorul va continua conversia, va termina conversia începută
după care se va opri sau se va opri imediat, în funcţie de starea a 2 ranguri
din un SFR;
22
Sisteme Încorporate
q Soluții clasice pentru conversie:

Avantaj: viteză mare;


Dezavantaj: complexitate
hardware mare: n-1 comp.
pentru a distinge între n
valori;

Avantaj: eficiență hardware:


pentru a distinge între n valori
sunt necesare log2n ranguri în
reg. de aproximare;
Dezavantaj: viteză mică, cere
f(log2n) pași;

23
Sisteme Încorporate
q Schema bloc:

24
Sisteme Încorporate
q Controlat de SFR – uri; ex.: ATDSTAT1 (ATD Status Register 1):

q PORTAD (Port Data Register):

25
Sisteme Încorporate
q Secvenţa pentru realizarea unei conversii:
n Conectarea terminalelor implicate:
q 5V la VDDA, 0V la VSSA, o valoare ε € [0, 5] V la VRH, o valoare ε € [0, VRH] V la VRL;
n Configurarea registrelor ATDCTL2 – 4 şi aşteptare 20 µs pentru stabilizare;
q ATDCTL2 controlează generarea întreruperilor și anclanşarea externă (cu sau
fără);
q ATDCTL3 stabileşte numărul de conversii/ secvenţă, validează/ invalidează
modul FIFO şi stabileşte modul de acţiune al convertorului la instalarea
modului Freeze:

q ATDCTL4 stabileşte rezoluţia conversiei, lungimea secvenţei de conversie în


impulsuri de tact precum şi a timpului de eşantionare;
n Configurarea registrului ATDCTL5: se va alege modul de lucru şi canalele;
n Aşteptare până la încheierea conversiei (rangul SCF din ATDSTAT0 setat),
citirea rezultatelor şi depunerea lor în memorie; registrul mai indică posibile
erori (FIFO overrun, external trigger overrun) şi registrul care va primi
rezultatul conversiei curente.

26
Sisteme Încorporate
n Modulul contor/ temporizator
q Aplicaţii tipice:
n Creare şi măsurare de întârzieri, măsurarea frecvenţei, perioadei şi duratei
impulsurilor, numărarea de evenimente, urmărirea în timp a derulării
activităţilor, generarea de impulsuri, generarea de întreruperi periodice;
q Circuitul de bază este un contor pe 16 biţi, programabil; tactul trece
printr–un divizor cu prescalare;
q 8 canale de captare/ comparare:
n Captarea: copiază conţinutul unui contor în un registru la apariţia unui
eveniment reprezentat prin un impuls sau doar un front al unui impuls;
q Aplicaţii: măsurarea perioadei, duratei şi factorului de umplere al unor impulsuri,
referinţă de timp, urmărirea şi memorarea momentelor de apariţie a unor evenimente;
n Compararea: compară conţinutul unui contor cu cel al unui registru şi execută
operaţia specificată: pune pe 1, 0 sau schimbă starea unui pin, setează un
indicator în un registru, generează o cerere de întrerupere;
q Aplicaţii: anclanşarea unei acţiuni la un moment determinat, generarea de întârzieri,
generarea unui tren de impulsuri;
q 4 Pulse Accumulators pe câte 8 biţi configurabili şi ca 2 Pulse
Accumulators pe câte 16 biţi;

27
Sisteme Încorporate
q Schema bloc:

28
Sisteme Încorporate
q Există 8 canale de captare/ comparare: 4 sunt clasice iar celelalte 4
conţin încă un registru pentru memorarea captării; aceasta va permite
memorarea a 2 valori la o captare; valoarea citită la momentul captării
poate fi suprascrisă la o nouă captare sau protejată, în funcţie de starea
unui rang din un SFR;
q Fiecăreia din cele 4 canale cu memorare îi este asociat un Pulse
Accumulator pe 8 biţi; acesta numără tranziţiile active de la intrarea sa;
conţinutul acestuia poate fi memorat într – un registru propriu sau poate
fi furnizat la citirea canalului de captare/ comparare corespunzător;
q Există un numărător suplimentar, pe 16 biţi, care numără în jos şi care
poate fi folosit pentru a comanda momentul când conţinutul unui registru
de captare este transferat în registrul asociat corespunzător; se poate
genera cerere de întrerupere la momentul transferului;
q Pulse Accumulators pot lucra în modul contor sau contor în o fereastră
de timp; în modul contor se poate lua în considerare frontul ridicător sau
coborâtor al semnalului de la terminalul de intrare iar în modul contor în
fereastră se fixează o fereastră dată de un număr de perioade de tact;
ieşirea unui PA poate sau nu să genereze cerere de întrerupere;

29
Sisteme Încorporate
q Funcţionarea este controlată de SFR – uri; ex.:
n TIOS (Timer Input Capture/ Output Compare Select Register):

n TSCR2 (Timer System Control Register 2):

q TOI: permite sau nu generarea de cerere de întrerupere la depăşire;


q TCRE: contorul numără fără a putea fi iniţializat sau iniţializarea are loc la o
comparaţie reuşită;
q PR2 – PR0: stabileşte factorul de prescalare, valori: 1 – 128;

30
Sisteme Încorporate
q TCTL3/TCTL4 (Timer Control Register 3/ Timer Control register 4):

31
Sisteme Încorporate
q Măsurarea unei perioade: rangul COF arată apariţia evenimentului

32
Sisteme Încorporate
q Pulse Accumulators:
n Configuraţii:
q 2 Pulse Accumulators (PA) de câte 16 biţi;
q 1 PA de 16 biţi şi 2 PA de câte 8 biţi;
q 1 PA de 16 biţi şi 2 PA de câte 8 biţi, altele decât cele de dinainte;
q 4 PA de cîte 8 biţi;
n Aplicaţii:
q Generarea de întreruperi după apariţia de N ori a unui eveniment;
q Măsurarea frecvenţei şi a duratei unui semnal; pentru măsurarea duratei se poate
folosi modul contor în fereastră de timp: fereastra va fi dată de însuşi impulsul a cărui
durată trebuie măsurată, se pune la 0 numărătorul la apariţia impulsului şi se citeşte
conţinutul numărătorului la sfîrşitul acestuia; durata va fi egală cu valoarea din
numărător x durata impulsului de numărare;
q Modulus Counter:
n Este un numărător cu autoîncărcare şi care numără în jos; poate fi iniţializat;
n Tactul de numărare se obţine din tactul intern divizat cu un factor de prescalare;
n La atingerea valorii 0, numărătorul generează o cerere de întrerupere (poate fi invalidată)
şi se reîncarcă; procesul se reia; perioada cererii de întrerupere = valoarea din numărător
x perioada impulsului de numărare;
n Aplicaţie: RTI.

33
Sisteme Încorporate

Curs 5

1
Sisteme Încorporate
n Modulul PWM
q 8 canale independente, cu posibilitatea de a programa perioada şi
durata; factorul de umplere poate fi programat în domeniul 0 – 100%;
q Numărător distinct, pe 8 biţi, pentru fiecare canal PWM;
q Fiecare canal poate fi activat sau dezactivat;
q Polaritatea ieşirii poate fi programată;
q 4 surse de tact, acoperind un domeniu larg de frecvenţe;
q Există 8 terminale dedicate, PWM0 – PWM7;
q Ieşirea unui canal poate fi aliniată sau centrată:

2
Sisteme Încorporate
q Schema bloc:

3
Sisteme Încorporate
q Cele 8 canale PWM, pot fi concatenate pentru a forma 4 canale pe
câte 16 biţi:

4
Sisteme Încorporate
n Interfaţa serială SCI
q Operare full duplex;
q Format pe 8 sau 9 biţi, plus biţii de cadrare şi bitul de paritate;
q Transmiţătorul şi receptorul pot fi validaţi separat;
q Generare de întrerupere la: transmitere încheiată, preluare caracter,
eroare de ritm, de cadrare, de paritate, zgomote;
q Formatul datelor:

5
Sisteme Încorporate
q Schema bloc:

q Terminale: RxD, TxD;


q Modul LOOP: în scop de test:

6
Sisteme Încorporate
q Citirea liniei:

n RT este tactul de recepţie cu frecvenţa Baud rate x 16; pentru a găsi bitul
START caută un 0 precedat de trei de 1; apoi numără până la 16;

n Verificarea bitului STOP:

7
Sisteme Încorporate
n Interfaţa IIC (I2C)
q Interfaţă serială sincronă, multimaster;
q Rate de transfer: 100, 400 kbps;
q 2 linii: SDA şi SCL; numărul de terminale care se leagă la linii este limitat
doar de valoarea maximă a capacităţii liniilor (400 pF);
q 256 valori pentru frecvenţa tactului;
q Posibilitate de a genera cerere de întrerupere la transferul fiecărui octet
de date;
q Schema bloc:

8
Sisteme Încorporate
q Protocolul IIC:

n START şi STOP:

9
Sisteme Încorporate
q Format pe 7 biţi: de la master transmiţător la slave receptor:

q Format pe 10 biţi: de la un slave receptor la un master transmiţător:

q Conectarea modulelor cu tensiuni diferite:

10
Sisteme Încorporate
n Interfaţa SPI:
q Interfaţă serială, sincronă, cu transfer duplex, unimaster;
q Datele sunt transferate între un registru de date de 8 biţi al master-ului şi
unul similar al slave-ului care se concatenează şi devin un registru de
deplasare pe 16 biţi;
q Generare de întreruperi la transfer sau la eroare;
q Semnalele:
n MOSI: ieşire de date la master sau intrare de date la slave; toate semnalele
MOSI sunt legate împreună (slave-uri independente) sau în buclă (slave-uri
cooperative);
n MISO: intrare de date la master sau ieşire de date la slave; toate semnalele
MISO sunt legate împreună (slave-uri independente) sau în buclă (slave-uri
cooperative);
n /SS: selectează slave – ul;
n SCK: tact;
q Aplicaţii: registre de deplasare, module LCD şi 7 segmente, circuite PLL,
memorii seriale, convertoare A/D şi D/A;

11
Sisteme Încorporate
q Controlată de SFR – uri; ex.:
n SPI Status Register:

q SPIF: arată dacă transferul s – a încheiat sau nu; poate cere întrerupere dacă un
rang din un registru de control este 1;
q SPTEF: arată dacă registrul de date este sau nu gol; poate cere întrerupere dacă un
rang din un registru de control este 1;
q MODF: arată o eroare: linia /SS a devenit 0 în timp ce modulul este master; este
validat de un rang din un registru de control;
n SPI Control Register 1:

12
Sisteme Încorporate
q SPI cu slave-uri independente:

q SPI cu slave-uri cooperative:

13
Sisteme Încorporate
q Modul bidirecţional:

n Se foloseşte doar 1 linie de date; rangul MTSR din SPICR1 decide linia;
n Pinul MOSI devine o linie de I/E pentru modul master (MOMI) iar pinul MISO
devine o linie de I/E pentru modul slave (SISO); pinii MISO (modul master) şi
MOSI (modul slave) nu sunt folosiţi;
n Direcţia pinului de I/E este stabilită de rangul BIDIROE;

14
Sisteme Încorporate
q Registrul de deplasare 74HC595:

n Registru de deplasare + registru paralel cu ieşiri cu 3 stări + ieşire serială;


n DS: intrare serială de date;
n SC: tact pentru intrarea serială; frontul activ: 0 → 1;
n /Reset: iniţializare a registrului de deplasare;
n LC: tact pentru transfer din registrul de deplasare în registrul paralel; 0 → 1;
n /OE: 0 validează ieşirile paralele, 1 trece ieşirile paralele în a 3 – a stare;
n QA – QH: ieşiri paralele; SQH: ieşire serială;

15
Sisteme Încorporate
q Comanda unui modul de afişare cu 7 segmente:

n Crează tabele cu valorile pentru afişarea caracterelor şi pentru comanda


tranzistoarelor;
n Configurează modulul SPI;
n Apelează funcţia pentru multiplexare la rata 1 digit/1 ms;
n Apelează funcţiile pentru trimiterea caracterelor de afişat şi a configuraţiilor de
comandă a tranzistoarelor;

16
Sisteme Încorporate
n Modulul MSCAN (Motorola Scalable Controller Area Network):

q Protocolul CAN a fost dezvoltat iniţial pentru industria automotive,


respectând cerinţe specifice: procesare în timp real, operare sigură în
mediu cu radiaţii electromagnetice, lăţime de bandă suficientă, cost
scăzut;
q Caracteristici:
n Protocol CSMA/CD;
n Comunicare bazată pe mesaje;
n Detecţie a erorii;
n Transfer cu date şi tact pe aceeaşi linie;
n Rată de transfer programabilă, până la 1 Mbps;
n 5 tampoane de recepţie şi 3 de transmisie;
n Mod loop back pentru autotestare;
n Moduri de lucru cu consum redus;
n Mod listen pentru monitorizarea liniei de date;

17
Sisteme Încorporate
q Schema bloc:

18
Sisteme Încorporate
q Fig. prezintă structura unui sistem tipic CAN, cu MSCAN; o staţie CAN
este conectată la magistrală prin intermediul unui transceiver; acesta
asigură curentul necesar pentru transferul pe CAN şi oferă protecţie
contra modulelor defecte;

19
Sisteme Încorporate
q Controlat de SFR – uri:

n MSCAN Control Register 1:

20
Sisteme Încorporate

21
Sisteme Încorporate
2.2.7. Porturile
q 10 porturi, având şi funcţiuni alternative;
q Caracteristici minime ale unei linii de port:
n Intrare sau ieşire;
n Ieşire la 5 V;
n Intrare la 5 V sau analogică;
n Intrare cu pull – up sau pull – down (selectabil prin un rang din un SFR);
q Caracteristici opţionale:
n Drenă deschisă pentru ȘI cablat;
n Intrări cu filtrare a impulsurilor scurte;
q Multiple SFR – uri:
n Pentru cele 10 porturi;
n Pentru direcţie;
n Pentru a selecta pull – up sau pull – down la intrări;
n Pentru a selecta una din două valori pentru puterea ieşirilor;
n Pentru validare întreruperi şi front activ;
n Pentru operaţia ȘI cablat;

22
Sisteme Încorporate
q Schema bloc:

23
Sisteme Încorporate
q PTP (Port P I/ O Register):

q RDRP (Port P Reduced Drive Register):

24
Sisteme Încorporate
q PPSS (Port S Polarity Select Register):

q WOMS ( Port S Wired – Or Mode Register):

25
Sisteme Încorporate
q Compatibilitatea electrică în cazul interfaţărilor:
n La nivelul tensiunilor;
n La nivelul curenţilor;
q Compatibilitatea la nivelul tensiunilor:
n Tehnologii diferite pentru circuitele integrate;
n Parametri: VIH (Input high voltage), VIL (Input low voltage), VOH (Output high
voltage), VOL (Output low voltage);
n Circuitul X comandă circuitul Y: VOHX ≥ VIHY şi VOLX ≤ VILY;
n Nivelele de tensiune tipice ale câtorva familii:

26
Sisteme Încorporate
q Compatibilitatea la nivelul curenţilor:
n Tehnologii diferite pentru circuitele integrate;
n Parametri: IIH (Input high current), IIL (Input low current), IOH (Output high
current), IOL (Output low current);
n Un terminal poate absorbi sau genera curent;
n Curentul total necesar comenzii diferitelor circuite nu trebuie să depăşească
valoarea totală a curentului suportat de circuitul care comandă;
n IOH – curent generat, IOL – curent absorbit, IIH – curent absorbit, IIL – curent
generat;
n Un terminal de ieşire este conectat la mai multe terminale de intrare:
IOH ≥ Σ IIH şi IOL ≥ Σ IIL
n Valorile tipice ale curenţilor pentru câteva familii de circuite:

27
Sisteme Încorporate
q Exemplul 1:

n HCS12: VOH = 4.2 V, VOL = 0.8 V; Vsegment = 1.8 V;


n Curentul prin fiecare segment: (4.2 – 1.8 – 0.8) / 560 = 2.86 mA – poate fi
generat de un pin al HCS12;
n Curentul total ce trebuie absorbit de pinii PP0 – 7 este: 2.86 x 7 = 20 mA;
poate fi absorbit;

28
Sisteme Încorporate
q Exemplul 2:

n HC: VOH = 4.9 V, VOL = 0.1 V; Vsegment = 1.8 V;


n Curentul prin fiecare segment: (4.9 – 1.8 – 0.1) / 560 = 5.36 mA – poate fi
generat de un pin al HC244;
n Curentul total ce trebuie absorbit de pinii PP0 – 7 este: 5.36 x 7 = 37.5 mA;
nu poate fi absorbit; soluţia: creşterea valorii rezistenţei, de ex. la 680 Ω;

29
Sisteme Încorporate
q Exemplul 3:

n HC: VOH = 4.9 V; ABT: VOL = 0.55 V; Vsegment = 1.8 V;


n Curentul prin fiecare segment: (4.9 – 1.8 – 0.55) / 560 = 4.55 mA – poate fi
generat de un pin al HC244;
n Curentul total ce trebuie absorbit de pinii PP0 – 7 este: 4. 55 x 7 = 31.85 mA;
poate fi absorbit de ABT;

30
Sisteme Încorporate
q Probleme de timp:
n Trebuiesc considerate la comanda bistabilelor;

n tsu – setup time; thd – hold time;


n Data trebuie să fie stabilă cu cel puţin setup time înaintea frontului activ al
impulsului de tact şi trebuie să rămînă stabilă încă cel puţin hold time;
n Analiza timpului cere considerarea tuturor întîrzierilor circuitelor aflate pe
traseul unui semnal;
n Dacă frontul activ al tactului este cel posterior, poate exista cerinţa ca data să
nu se modifice pe toată durata impulsului de tact; dacă bistabilul este master
– slave atunci data se încarcă în master la primul front al tactului şi apare la
ieşirea slave – ului la al doilea front al tactului.

31
Sisteme Încorporate

2.2.8. Excepţiile
q Fiecare excepţie are un vector pe 16 biţi care duce la adresa de început
a rutinei de tratare; tabela vectorilor se află în 128 octeţi din zona
superioară a spaţiului standard de 64 Ko; tabelul următor arată tabela
vectorilor precum şi prioritatea excepţiilor (de sus în jos):

q Există mai multe tipuri de întreruperi:


n Nemascabile: TRAP, SWI şi pinul /XIRQ; cererea /XIRQ este mascată, după
Reset, dar după ce software – ul anulează bitul X, cererea devine
nemascabilă până la un nou Reset;
n Mascabile: pinul /IRQ, cereri de la periferia internă;

32
Sisteme Încorporate
q TRAP: doar 54 combinaţii din 256 sunt folosite pentru coduri; utilizarea
oricăruia din celelalte 202 coduri va duce la o întrerupere cu vectorul la
$FFF8:$FFF9;
n În timpul tratării depune CCR în stivă şi setează I pentru a evita tratarea altei
cereri; încheierea rutinei cu RTI va reface starea iniţială a lui I;
n Adresa de revenire este cea a instrucţiunii de după codul ilegal;
q SWI: Software Interrupt Instruction;
n În timpul tratării depune CCR în stivă şi setează I pentru a evita tratarea altei
cereri; încheierea rutinei cu RTI va reface starea iniţială a lui I;
q /XIRQ: cerere nemascabilă, activă la 0;
n În timpul tratării depune CCR în stivă şi setează X şi I pentru a evita tratarea
altei cereri; încheierea rutinei cu RTI va reface starea iniţială a lui X şi I;
q /IRQ: cerere mascabilă, activă la 0;
n În timpul tratării depune CCR în stivă şi setează I pentru a evita tratarea altei
cereri; încheierea rutinei cu RTI va reface starea iniţială a lui I;
n Pinul /IRQ poate fi deconectat;
q Cereri din partea periferiei interne;
n În timpul tratării depune CCR în stivă şi setează I pentru a evita tratarea altei
cereri; încheierea rutinei cu RTI va reface starea iniţială a lui I;
n Cererile pot fi validate individual de ranguri din SFR – uri specifice periferiei
respective; la sfârşitul tratării rangurile se vor repoziţiona automat sau
trebuiesc repoziţionate prin program.

33
Sisteme Încorporate

Curs 6

1
Sisteme Încorporate

2.3. Arhitectura PIC 16F8X


n Preţ, consum şi dimensiuni mici, performanţe bune;
n Există 4 membri:

n Caracteristici importante:
q arhitectură de tip Harvard, caracterizată prin existenţa a 2 magistrale de
date interne, pentru cod şi pentru date;
q execuţia instrucţiunilor se face în o bandă de asamblare cu 2 nivele,
ceea ce permite execuţia tuturor instrucţiunilor în un singur ciclu maşină,
cu excepţia instrucţiunilor de salt şi ramificare care cer 2 cicluri maşină;

2
Sisteme Încorporate
q setul de instrucţiuni este redus la doar 35 instrucţiuni, rapide iar duratele
execuţiei diferitelor rutine este uşor de calculat întrucât instrucţiunile au
durate bine determinate;
q conţine memorie de program de tip Flash sau ROM, având capacitatea
de 512 sau 1024 octeţi;
q conţine memorie de date volatilă, de tip RAM (36 sau 68 octeţi) şi
nevolatilă, de tip EEPROM (64 octeţi);
q nu poate accesa memorie externă, ca urmare nu are cicluri de
magistrală externe şi nici terminale de comandă pentru scrieri/ citiri ceea
ce duce la dimensiuni mici ale circuitului;
q sistem de întreruperi cu 4 surse din care una poate fi folosită pentru a
scoate circuitul din modul de lucru cu consum redus;
q facilitate de protecţie a codului intern;
q facilitate de Watchdog;
q facilitate de lucru cu consum redus;
q facilitate de programare în sistem, ISP, pe cale serială;

3
Sisteme Încorporate
q 13 terminale de intrare/ ieşire care pot fi comandate individual;
q contor/ temporizator pe 8 biţi;
q curentul generat/ absorbit la ieşirile de port este mare, 20/ 25 mA,
permiţând conectarea directă a unor sarcini de consum mai mare, de
exemplu elemente de afişare cu segmente sau LED – uri;
q frecvenţa maximă de lucru este de 10 MHz;
q consumul este mic: tipic 2 mA la 4 MHz şi 5 V dar poate să scadă la 15
μA la 32 KHz şi 2 V;
q tensiunea de alimentare: 2 – 6 V;
2.3.1. Configuraţia terminalelor

4
Sisteme Încorporate
n Semnificaţiile terminalelor:

5
Sisteme Încorporate

2.3.2. Structura internă

6
Sisteme Încorporate
q Circuitul conţine 2 tipuri de memorii interne: de program şi de date;
q Corespunzător, există şi 2 magistrale interne de date: una pentru
program şi una pentru date;
q Arhitectura internă este de tip Harvard şi asigură câştig de timp faţă de
cea de tip Von Neumann, la care codul şi datele se află în aceeaşi
memorie şi se transferă pe aceeaşi magistrală de date, fiind o sursă de
gâtuire a fluxului;
q Existenţa a 2 magistrale interne de date permite şi eliminarea
constrângerii ca datele şi codul să aibă aceeaşi lungime; astfel într-un
ciclu maşină se transferă fie date pe 8 biţi, fie cod pe 14 biţi, rezultând
creşterea suplimentară a vitezei;
q Există 2 tipuri de memorie de date: volatilă, de tip RAM şi nevolatilă, de
tip EEPROM;
n Memoria de date EEPROM este utilă atunci când trebuie memorate date care
se schimbă cu o rată mică, de exemplu parole sau date pentru calibrări;
n Memoria RAM cuprinde şi setul de registre cu funcţiuni speciale;

7
Sisteme Încorporate
q Accesul la memoria de date şi la registrele cu funcţiuni speciale se poate
face direct sau/ şi indirect;
q Circuitul conţine şi o unitate aritmetică şi logică, UAL, capabilă să
execute operaţii de adunare, scădere, logice şi de deplasare; în funcţie
de rezultatul acestor operaţii se poziţionează indicatori de condiţii.

2.3.3. Execuţia instrucţiunilor

q Ciclul unei instrucţiuni este alcătuit din 2 cicluri maşină: un ciclu de


aducere şi un ciclu de execuţie, fiecare având 4 stări, o stare fiind egală
cu o perioadă a tactului;
q Datorită existenţei unei benzi de asamblare interne, pe 2 nivele, care
asigură suprapunerea ciclului de execuţie a unei instrucţiuni cu ciclul de
aducere a instrucţiunii următoare, ciclul unei instrucţiuni se reduce la un
ciclu maşină;
q Nu există câştig în cazul instrucţiunilor de salt şi ramificare, la care
durata va fi egală cu 2 cicluri maşină.

8
Sisteme Încorporate

2.3.4. Organizarea memoriei


q Memoria internă este de 2 tipuri: de cod, implementată cu circuite ROM
sau Flash şi de date, implementată cu circuite RAM şi EEPROM;
q Memoria RAM conţine şi registrele cu funcţiuni speciale;
nOrganizarea memoriei de program

9
Sisteme Încorporate
q Numărătorul de program al microcontrolerului are 13 ranguri ceea ce
înseamnă că poate adresa 8 K locaţii de memorie de program, o locaţie
având 14 biţi;
q Memoria implementată este mai puţină şi anume: 1 K locaţii la circuitele
16F84 şi 16CR84 şi 512 locaţii la circuitele 16F83 şi 16CR8;
q Zona ocupată din spaţiul de adrese este cea care începe cu adresa 0;
q Decodificarea memoriei implementate este incompletă ca urmare
adresarea unei locaţii din afara zonei implementate va duce la adresarea
unei locaţii fizic existente, relaţia fiind de translatare cu n x 400H la
circuitele care au implementat 1 K de locaţii şi n x 200H la circuitele care
au implementat 512 locaţii; de exemplu, la circuitele 16F84, adesele
0040H, 0440H, 0840H, 0C40H, 1040H, 1440H, 1840H şi 1C40H vor fi
acoperite de aceeaşi locaţie fizică;
q La adresele 0 şi 0004H, memoria de program conţine vectori pentru
iniţializare şi pentru întreruperea externă;
q La începutul memoriei se află şi stiva care este distinctă de celelalte
memorii şi are 8 nivele; ca urmare este posibil apelul de subrutine în
cadrul altor subrutine, de maxim 8 ori;

10
Sisteme Încorporate
n Organizarea memoriei de date:

11
Sisteme Încorporate
q Memoria de date este împărţită în 2 bancuri: banc 0 şi banc 1; un rang
din registrul de stare selectează unul din cele 2 bancuri;
q Fiecare banc corespunde la 128 locaţii dar numai o parte este acoperită
fizic;
q Fiecare banc este împărţit în 2 părţi: primele 12 locaţii corespund
registrelor cu funcţiuni speciale iar următoarele corespund registrelor cu
funcţiuni generale, implementate cu memorie RAM statică;
q Adresele registrelor cu funcţiuni generale din bancul 0 se suprapun cu
cele corespondente din bancul 1;
q Registrele cu funcţiuni speciale controlează funcţionarea CPU precum şi
lucrul cu periferia, porturile, contorul/ temporizatorul şi sistemul de
întreruperi;
q Registrul de control, OPTION, controlează registrul de prescalare al
contorului/ temporizatorului TMR0, selectează sursa şi frontul tactului
pentru TMR0, selectează frontul cererii de întrerupere externe INT;
q Registrul pentru întreruperi INTCON, conţine ranguri prin care se
validează diferitele tipuri de întreruperi precum şi indicatori pentru
întreruperi; există şi un rang de validare globală a sistemului de
întreruperi;

12
Sisteme Încorporate
q Registrul de stare, STATUS, conţine indicatorii de condiţii ai UAL şi
anume C, DC, şi Z care sunt poziţionaţi de diferite instrucţiuni:
n Mai există 2 indicatori care arată dacă a apărut sau nu semnal din partea
modulului de Watchdog şi dacă a fost sau nu executată instrucţiunea SLEEP
care instalează modul de lucru cu consum redus;
n Toţi aceşti indicatori nu pot fi poziţionaţi prin program ci doar ca efect al
execuţiei unor instrucţiuni sau al apariţiei unei anumite situaţii:
n Registrul de stare conţine şi 2 indicatori comandabili prin program prin care se
activează unul din 4 bancuri de memorie RAM; la familia PIC 16F8X, sunt
implementate doar 2 bancuri de memorie RAM (RP0 = STATUS.5);
q Numărătorul de program, PC, este un numărător pe 13 ranguri cu rolul
de a indica următoarea instrucţiune care se va executa;
n Octetul mai puţin semnificativ al său poate fi citit şi programat prin intermediul
registrului PCL iar partea sa mai semnificativă este modificabilă prin
intermediul registrului PCLATH;
q Registrele cu funcţiuni speciale INDF şi FSR implementează adresarea
indirectă a memoriei interne RAM; accesarea registrului INDF va duce la
accesarea unui pointer (registrul FSR) care conţine adresa registrului
care se doreşte a fi accesat;

13
Sisteme Încorporate
q SFR-uri care permit acesul la memoria EEPROM:

n Memoria EEPROM este suprapusă peste memoria RAM, capacitatea maximă


direct adresabilă este de 256 octeţi din care sunt implementaţi doar 64, în
zona 00 – 3FH;
n Memoria EEPROM este adresabilă doar indirect;
n Adresa locaţiei accesate se află în registrul EEADR, data transferată se află
în registrul EEDATA iar prin intermediul registrelor EECON1 şi EECON2 se
generează comenzile pentru citire şi scriere, se validează sau nu scrierea şi
se memorează indicatori de întrerupere care arată fie că scrierea s-a terminat
cu succes, fie că a apărut o eroare la scriere;
n Scrierea în această memorie este protejată la impulsuri de scriere
accidentale;
n Protecţia este implementată pe mai multe nivele: la iniţializare, scrierea este
blocată pe durata timpului necesar secvenţei de iniţializare a
microcontrolerului iar scrierea se realizează nu doar prin activarea unui
semnal de comandă ci prin o secvenţă de câteva instrucţiuni.

14
Sisteme Încorporate
2.3.5. Porturile
q Microcontrolerele PIC 16F8X au 2 porturi bidirecţionale: A şi B;
q Portul A are 5 ranguri, rangul cel mai semnificativ fiind o intrare de tip
trigger Schmitt sau o ieşire open – drain iar celelalte fiind intrări/ ieşiri de
tip TTL, compatibile şi CMOS;
n Portul A este implementat prin 2 registre: unul care memorează datele care se
scriu la pini şi în care se înscriu datele de la pini, PORTA şi unul care fixează
direcţia fiecărui pin: ieşire sau intrare, TRISA;
n Citirea lui PORTA va oferi starea terminalelor portului A.
q Portul B are 8 ranguri şi este, de asemenea, implementat cu 2 registre:
PORTB care memorează datele scrise la pini şi în care se încarcă datele
citite de la pini şi TRISB care stabileşte direcţia fiecărui pin;
n În plus, portul B are şi facilitatea ca, prin intermediul unui singur rang, din
registrul OPTION, să activeze o sarcină internă, pentru fiecare rang, la Vdd;
n Portul B mai are şi facilitatea de a provoca generarea unei cereri de
întrerupere la modificarea a cel puţin unul din patru ranguri ale sale, RB4 – 7,
dar numai pentru acele ranguri din cele menţionate care sunt declarate ca
intrări;

15
Sisteme Încorporate

16
Sisteme Încorporate

2.3.6. Periferia internă


nContorul/ temporizatorul TMR0

q TMR0 este pe 8 biţi;


q Funcţionarea contorului este comandată prin intermediul registrului cu
funcţiuni speciale OPTION;
q Un rang din acest registru selectează sursa tactului care poate fi tactul
intern divizat la 4 sau un tact extern în acest fel alegându-se şi modul de
lucru, contor sau temporizator;
q Tactului extern i se poate selecta frontul activ tot prin un rang din
registrul OPTION;

17
Sisteme Încorporate
q Tactul poate fi trecut prin un divizor cu prescalare;
q Acesta este un numărător pe 8 biţi, el nu poate fi programat dar, prin
interemediul a 3 ranguri din registrul OPTION, se poate alege una din
ieşirile sale obţinându – se astfel unul din 8 constante de prescalare;
q TMR0 poate sau nu genera cerere de întrerupere la trecerea din FFH în
00H;
q Divizorul cu prescalare este folosit de TMR0 şi de un alt contor al
circuitului şi anume WDT, contorul cu funcţie de watchdog;
q Contorul cu rol de watchdog:
n Este comandat de un oscilator intern, de tip RC, fără vreo legătură cu
oscilatorul extern;
n Durata nominală după care contorul generează o iniţializare este de 18 ms
dar aceasta poate varia în funcţie de temperatură şi valoarea lui Vdd datorită
faptului că oscilatorul intern se bazează pe RC;
n În plus, valoarea nominală poate fi multiplicată cu maxim 128, prin program;
n Dacă se doreşte ca watchdog-ul să nu iniţializeze circuitul, este necesară
anularea periodică a conţinutului său, prin program;

18
Sisteme Încorporate

2.3.7. Sistemul de întreruperi


nSistem de întreruperi cu 4 surse:
q externă,
q generată de contorul/ temporizator la depăşirea capacităţii sale,
q generată la modificarea unor terminale ale portului B şi
q generată atunci când s-a încheiat scrierea în memoria EEPROM;
nSistemul de întreruperi poate fi activat sau nu şi fiecare sursă poate fi
validată sau nu;
nFiecare cerere de întrerupere activează şi câte un indicator memorat
în un registru cu funcţiuni speciale;
nLa acceptarea unei cereri de întrerupere, unitatea centrală:

q salvează, în stivă, conţinutul lui PC;


q dezactivează sistemul de întreruperi;
q execută un acces în memoria de program la adresa 0004H;
q instrucţiunea de revenire din subrutina de tratare a cererii are şi rolul de
a reactiva sistemul de întreruperi;
19
Sisteme Încorporate

n Instrucţiunea de revenire din subrutina de tratare a cererii are şi rolul


de a reactiva sistemul de întreruperi;
n Salvarea doar a numărătorului de program este o facilitate care
oferă viteză la tratarea unui eveniment extern;
n Luarea în considerare a cererii este rapidă dar există dezavantajul
că în multe aplicaţii nu este suficientă memorarea doar a PC – ului
ci mai trebuie memorată şi starea microcontrolerului;
n De obicei, această stare înseamnă 2 registre şi anume: registrul de
stare, STATUS şi un registru de lucru folosit în majoritatea
transferurilor şi operaţiilor, W;
n Este sarcina programatorului să prevadă în rutina de tratare a cererii
de întrerupere, dacă este necesar, salvarea acestor registre în stivă
precum şi refacerea lor înainte de a părăsi rutina;

20
Sisteme Încorporate
2.3.8. Unitatea centrală
n Flexibilitatea este comandată prin intermediul unui cuvânt de
programare, aflat la adresa 2007H din memoria de program;
această adresă se află într-un spaţiu de memorie prevăzut doar
pentru test şi configurare; se validează sau nu următoarele facilităţi:
q Protecţia codului din memoria de program;
q Secvenţa de iniţializare;
q Contorul de tip watchdog;
q Tipul de schemă folosit pentru generarea semnalului de tact;
n În vederea identificării circuitului, fiecare microcontroler PIC 16F8X
are prevăzute 4 locaţii (2000H – 2003H ) pentru informaţii de
identificare, ID; accesibile doar în modul programare/ verificare;
n În scopul scăderii consumului, microcontrolerele PIC 16F8X au un
mod de lucru cu consum redus, numit SLEEP;
q Intrarea în acest mod se face cu instrucţiunea SLEEP iar ieşirea se face fie
prin RESET generat extern sau intern, de către Watchdog, fie prin o
întrerupere, cu excepţia celei generate de contorul/ temporizator TMR0;

21
Sisteme Încorporate
n Există 4 scheme pentru generarea semnalului de tact acceptate de
microcontrolerele din acest grup :
q cu cuarţ pentru frecvenţe mici, max. 200 KHz, cu cuarţ sau rezonator
ceramic pentru frecvenţe medii, 2 - 4 MHz, cu cuarţ pentru frecvenţe mari, 4
– 10 MHz şi fără cuarţ, doar cu RC;
q Alegerea uneia din cele 4 variante se face în funcţie de cerinţele aplicaţiei:
frecvenţă, precizie, stabilitate, cost;
q Dacă nu sunt cerinţe severe de precizie şi stabilitate dar costul este foarte
important, se va alege soluţia cu RC;
q În plus: comanda circuitului cu un semnal de tact extern;
n Schema UC:

22
Sisteme Încorporate
n ISP (In Serial Programming)
q Programarea în sistem se realizează pe 2 linii: una pentru date şi una
pentru tact; în plus, sunt necesare linii de alimentare;
q Programarea se poate face introducând circuitul în modul de
programare/ verificare şi apoi utilizând comenzi specifice;

23
Sisteme Încorporate

2.3.9. Limbajul de asamblare al microcontrolerelor PIC


16F8X
n Dispun de un set de 35 instrucţiuni fiecare instrucţiune având
dimensiunea de 1 cuvânt şi durata de 1 sau 2 cicluri;
n Moduri de adresare:
q Adresarea imediată: în cuvântul instrucţiune, după cod, există un
operand pe 8 biţi; exemplu: ADDLW 0x20;
q Adresarea directă: este folosită doar de 2 instrucţiuni: GOTO, salt
necondiţionat şi CALL, apel de subrutină; adresa destinaţie este
furnizată în instrucţiune, după cod, pe o lungime de 11 biţi;
q Adresarea de registru: instrucțiunea conţine o adresă de registru;
q Adresarea la nivel de bit: instrucțiunea conţine un câmp de 3 biţi,
rangul implicat în operaţie şi, un câmp, de 7 biţi, registrul implicat în
operaţie; exemplu: BCF FLAG,2;

24
Sisteme Încorporate
n Setul de instrucţiuni
q 3 grupe: orientate pe octet, orientate pe bit şi pe operaţii de control;
q La instrucţiunile orientate pe octet, f reprezintă un registru sursă iar d
este indicatorul pentru destinaţie; indicatorul pentru destinaţie arată unde
se va depune rezultatul: dacă este 0 atunci rezultatul se va depune în
registrul W iar dacă este 1 atunci destinaţia este registrul specificat în
instrucţiune;
q La instrucţiunile orientate pe bit, b indică bitul din registrul f care va fi
afectat de instrucţiune;
q La instrucţiunile orientate pe operaţii de control, k este o constantă sau o
variabilă pe 8 sau 11 biţi;
q Sintaxa instrucţiunilor cerută de asambloare este:

etic mnemonică operand sau operanzi ;comentariu

eticheta şi comentariul sunt opţionale;

25
Sisteme Încorporate

26
Sisteme Încorporate

27
Sisteme Încorporate

28
Sisteme Încorporate

29
Sisteme Încorporate
n Aplicaţii
q Comanda unui LED:

30
Sisteme Încorporate
q Citirea stării unui comutator conectat la portul A:

31
Sisteme Încorporate
q Citirea stării unui comutator conectat la portul B: soluţia diferă întrucât
liniile portului B au rezistenţe interne la Vdd care pot fi activate;

32
Sisteme Încorporate

33
Sisteme Încorporate

Curs 7

1
Sisteme Încorporate

3. Conectarea memoriei externe


n În general este suficientă memoria internă a microcontrolerului
întrucât aplicaţiile de timp real cer puţină memorie;
n Memoria externă poate fi:
q de program şi de date dacă microcontrolerul are magistrale externe de
adrese/ date;
q doar de date dacă microcontrolerul nu are magistrale externe de adrese/
date;
n Dacă nu există magistrale externe:
q memoria poate fi conectată doar la liniile de port;
q toate tranziţiile se vor face prin program;
q soluţie lentă;
n Trebuie cunoscută harta memoriei şi modelul de memorie specifice
microcontrolerului;
n La unele microcontrolere poate fi conectată memorie serială prin
magistrala I2C;

2
Sisteme Încorporate
3.1. Conectarea memoriei externe la microcontrolerele cu
magistrale externe
3.1.1. La microcontrolerul 8051
n Problemă tratată;

n Utilizând liniile de port pot fi conectate oricâte module de memorie;

3.1.2. La microcontrolerele HCS12


n Moduri de lucru:
q Emulation;
q Special;
q Normal;
n Modurile Normal:
q Normal single – chip: fără magistrale externe de adrese/ date;
recomandare: la init. modul Single – Chip şi apoi moduri expanded;
q Normal expanded wide: cu magistrale externe de adrese şi date de 16
biţi;
q Normal expanded narrow: magistrală de adrese de 16 biţi şi de date de
8 biţi;

3
Sisteme Încorporate
n UC în modul Narrow conectată la o memorie pe octet:
q A0 a UC se leagă la A0 a memoriei;
q A1 a UC se leagă la A1 a memoriei;
q A15 a UC se leagă la A15 a memoriei;

4
Sisteme Încorporate
n UC în modul Wide conectată la o memorie pe cuvânt:
q A1 a UC se leagă la A0 a memoriei;
q A2 a UC se leagă la A1 a memoriei;
q A15 a UC se leagă la A14 a memoriei;
q A0 a UC este High Byte Strobe;
q /LSTRB a UC este Low Byte Strobe;

5
Sisteme Încorporate
n Conectarea unei memorii RAM pe octet în modul Narrow:

6
Sisteme Încorporate

3.2. Conectarea memoriei externe la microcontrolerele fără


magistrale externe
n Doar prin intermediul liniilor de port;
n Doar pentru memorie de date;
n Transferul va fi lent, întrucât toate tranziţiile semnalelor se vor face
prin program; prin program se vor transfera datele şi se va stabili şi
direcţia porturilor;
n Numărul de circuite de memorie este limitat doar de numărul liniilor
de port ale microcontrolerului; sunt necesare linii de port pentru
adrese, date şi comenzi;
n Dacă numărul liniilor de port este mare, nu sunt necesare circuite
suplimentare;
n Dacă numărul liniilor de port este mic, sunt necesare registre (se
face demultiplexarea liniilor de port) şi, eventual, decodificatoare;
transferul va fi mai lent întrucât un ciclu se va desfăşura în 2 faze;

7
Sisteme Încorporate
n Exemplul 1:

8
Sisteme Încorporate
n Funcţia citire:
q Citeşte un octet de la adresa adr şi îl încarcă în registrul R1;
q Adresa (adr) trebuie să fie în domeniul 0x8000 000 – 0xDFFF FFFF şi
P0.16, P0.17 şi P0.18 trebuie să fie la 1 logic;
#include <>
unsigned long adr

void citeste(adr) {
IO1DIR = 0x0000 0000; /* P1 intrare*/
IO0DIR = 0xFFFF FFFF; /*P0 iesire*/
IO0SET = 0xFFFF FFFF; /*P0 la 1 logic*/
IO0PIN = adr; /*adresa apare pe liniile P0.0-15 si P0.16,17 si 18 la 1*/
IO0PIN = IO0PIN & 0xFFFE FFFF; /*activare /CE*/
IO0PIN = IO0PIN & 0xFFFC FFFF; /*activare si /OE*/
R1 = IO1PIN; /*citire date in R1*/
IO0PIN = IO0PIN | 0x0003 0000; /*dezactivare /OE si /CE*/
}

9
Sisteme Încorporate
n Funcţia scriere:
q Scrie octetul aflat în registrul R1 la adresa adr;
q Adresa (adr) trebuie să fie în domeniul 0x8000 000 – 0xDFFF FFFF şi
P0.16, P0.17 şi P0.18 trebuie să fie la 1 logic;
#include <>
unsigned long adr

void scrie(adr) {
IO1DIR = 0xFFFF FFFF; /* P1 iesire*/
IO0DIR = 0xFFFF FFFF; /*P0 iesire*/
IO0SET = 0xFFFF FFFF; /*P0 la 1 logic*/
IO0PIN = adr; /*adresa apare pe liniile P0.0-15 si P0.16,17 si 18 la 1*/
IO1PIN = R1; /*preia datele din R1*/
IO0PIN = IO0PIN & 0xFFFD FFFF; /*activare /WE*/
IO0PIN = IO0PIN & 0xFFFA FFFF; /*activare si /CE*/
IO0PIN = IO0PIN | 0x0005 0000; /*dezactivare /WE si /CE*/
}

10
Sisteme Încorporate
n Exemplul 2:

11
Sisteme Încorporate
n Exemplul 3:

12
Sisteme Încorporate
n Operaţiile la citire sunt:

q Porturile sunt configurate ca ieşiri;


q Se scrie 1 pe toate liniile de port cu excepţia liniilor care asigură
încărcarea în registre, pe care se scrie 0;
q Se scrie o.c.m.p.s. al adresei în registru;
q Se scrie o.c.m.s. al adresei în registru;
q Portul B este configurat ca intrare;
q Se activează linia de port corespunzătoare semnalului /OE;
q Se citeşte data de la memorie;
q Se dezactivează linia de port corespunzătoare semnalului /OE;
q Portul B este configurat ca ieşire;
q Se schimbă conţinutul unuia dintre registre astfel încît semnalul de
selecţie pentru memorie să nu mai fie activ;

13
Sisteme Încorporate
n Operaţiile la scriere sunt:

q Porturile sunt configurate ca ieşiri;


q Se scrie 1 pe toate liniile de port cu excepţia liniilor care asigură
încărcarea în registre, pe care se scrie 0;
q Se scrie o.c.m.p.s. al adresei în registru;
q Se scrie o.c.m.s. al adresei în registru;
q Se plasează data pe liniile portului B;
q Se activează linia de port corespunzătoare semnalului /WE;
q Se dezactivează linia de port corespunzătoare semnalului /WE;
q Se schimbă conţinutul unuia dintre registre astfel încît semnalul de
selecţie pentru memorie să nu mai fie activ;

14
Sisteme Încorporate
n Exemplul 4: conectarea unei memorii EEPROM seriale;
q Ex.: circuitul 24C16, EEPROM serial pe 2 Ko:

q Terminalele:
n A0-2 : liniile de adresă folosite de alte circuite din familie; la 24C16 trebuie
legate la GND sau la Vcc;
n SDA: linie bidirecţională pentru transferul datelor şi adreselor; respectă
cerinţele magistralei I2C, ca urmare este de tip open - drain şi poate fi legată
direct cu alte ieşiri similare sau de tip colector în gol; linia SDA cere o
rezistenţa la Vcc;
n SCL: intrare pentru tact; sincronizează transferurile în şi din circuit;
n WP: intrare de Write Protect; dacă este legată la Vcc, jumătatea superioară a
circuitului devine de tip "Read Only" iar dacă este legată la GND sau
neconectată, nu influenţează circuitul;
n Vcc: tensiunea de alimentare în domeniul 1,8 - 5 V; Icc este 1 mA la citire şi 3
mA la scriere;
15
Sisteme Încorporate
q Pentru a realiza o scriere sau citire este necesară adresarea prealabilă a
circuitului; operaţia este realizată de un MASTER;
q Secvenţa este următoarea:
n MASTER-ul începe cu o condiţie de START (tranziţie 1 - 0 pe SDA atunci
când SCL = 1 );
n MASTER-ul trimite adresa SLAVE-ului implicat; adresa circuitului 24C16 este
: 1010 B2 B1 B0 R/ /W; rangurile B2 - 0 indică pagina implicată în transfer
(circuitul 24C16 este organizat în 8 pagini de 256 octeţi) iar rangul R/ /W
indică operaţia : 1 înseamnă citire şi 0 înseamnă scriere;
n Circuitul 24C16 trimite un bit de ACKNOWLEDGE dacă adresa sa coincide cu
cea cerută de MASTER;
n Circuitul 24C16 este gata pentru scriere sau citire;

q Pentru scriere, secvenţa este continuată cu:


n MASTER-ul trimite adresa octetului;
n Circuitul 24C16 trimite un bit de ACK;
n MASTER-ul trimite data;
n Circuitul 24C16 trimite un bit de ACK;
n MASTER-ul generează condiţia de STOP ( tranziţie 0®1 pe SDA în timp ce
SCL=1);
n Circuitul începe programarea internă; in acest timp nu va răspunde la nici o
cerere externă;

16
Sisteme Încorporate

q Pentru citire, secvenţa de adresare a circuitului va fi continuată cu o


secvenţă care depinde de tipul de citire dorit;
q Citirea poate fi : al conținutului unei adresei cerute sau unei adrese
aleatoare sau secvenţială; citirea conținutului unei adrese:
n MASTER-ul trimite adresa octetului ;
n Circuitul 24C16 trimite un bit de ACK;
n MASTER-ul trimite conditia de START şi adresa dispozitivului dar de data
asta cu bitul R/ /W = 1;
n Circuitul 24C16 răspunde cu un bit de ACK şi trimite data de la locaţia cerută;
n MASTER-ul răspunde cu condiţia de STOP.

17
Sisteme Încorporate

4. Conectarea porturilor externe


4.1. Plasarea porturilor de intrare/ ieşire în spaţiul de
memorie
n Înseamnă conectarea porturilor în mod similar cu circuitele de
memorie;
n Comunicarea cu porturile se face cu aceleaşi instrucţiuni ca şi cu
memoriile;
n Comunicarea este rapidă fiind limitată doar de caracteristicile
microcontrolerului;
n Porturile de ieşire pot fi conectate doar în spaţiul de date;
n Porturile de intrare pot fi conectate şi în spaţiul de date şi în cel de
program;
n Dezavantaj: ocupă din spaţiul de memorie (puţin important întrucât
aplicaţiile de timp real cer, în general, puţină memorie);

18
Sisteme Încorporate
n Exemplul 1:

19
Sisteme Încorporate
n Program pentru aprinderea led-urilor:
MOV DPTR,#0C000H
MOV A,#00H
MOVX @DPTR,A
JMP $
n Program pentru stingerea led-urilor:
MOV DPTR,#0C000H
MOV A,#0FFH
MOVX @DPTR,A
JMP $

n Program pentru citirea liniilor externe:


MOV DPTR,#0E000H
MOVX A,@DPTR
JMP $

20
Sisteme Încorporate
n Exemplul 2:

21
Sisteme Încorporate

4.2. Plasarea porturilor de intrare/ ieşire în spaţiul de


intrare/ ieşire
n Porturile externe vor fi conectate la liniile de port ale
microcontrolerului;
n Semnificaţiile liniilor de port ale microcontrolerului sunt cele de
intrare/ ieşire şi nu cele alternative;
n Nu se recomandă utilizarea porturilor care au ca funcţiuni alternative
cele de magistrale de adrese şi date;
n Soluţia poate fi aplicată şi la microcontrolerele care nu au resurse
externe pentru conectarea memoriilor;
n Restricţiile sunt date doar de caracteristicile porturilor
microcontrolerului;
n Soluţia este lentă întrucât toate tranziţiile semnalelor se vor face prin
intermediul instrucţiunilor;

22
Sisteme Încorporate
n Exemplul 1:

23
Sisteme Încorporate
n Program pentru aprinderea led-urilor:
MOV P1,#00H
SET P3.0; se consideră că P3.0 era la 0 logic
CLR P3.0; P3.0 rămâne la 0 logic
JMP $
n Program pentru stingerea led-urilor:
MOV P1,#0FFH
SET P3.0
CLR P3.0
JMP $
n Program pentru citirea liniilor externe:
CLR P3.1; se consideră că P3.1 era la 1 logic
MOV A,P1
SET P3.1; P3.1 rămâne la 1 logic
JMP $

24
Sisteme Încorporate
n Exemplul 2:

25
Sisteme Încorporate
n Conectarea unui modul LCD
q Modulul DMC16207:
n Include controller-ul Hitachi HD44780;
n 2 linii a câte 16 caractere;
n Caracterul este pe o matrice de 5 x 7 pixeli;
n Include un generator pentru caractere ASCII;

26
Sisteme Încorporate
q Caracteristici de timp şi diagrame:

27
Sisteme Încorporate
q Comenzile modulului:

28
Sisteme Încorporate
q Clear Display: şterge ecranul, iniţializează modulul, cursorul apare în
stânga, prima linie; adresa 0 a DDRAM este încărcată în NA;
q Return Cursor Home: idem fără ştergerea ecranului;
q Entry Mode Set:
n I/D: incrementează (1) sau decrementează (0) adresa DDRAM atunci când un
caracter este scris/citit în/din DDRAM; cursorul este mutat la dreapta/stânga;
similar şi pentru CGRAM;
n S: deplasează conţinutul ecranului la dreapta (I/D = 0) sau la stînga (I/D = 1)
dacă este 1;
q Display On/Off Control:
n D: ecranul este aprins (1) sau stins (0);
n C: cursorul este afişat (1) sau nu (0); cursorul este afişat pe 5 puncte din
matricea de 5 x 8 puncte a unui caracter;
n B: caracterul indicat de cursor clipeşte (1) sau nu (0);
q Cursor or Display Shift:

29
Sisteme Încorporate
q Function Set:
n DL: stabileşte dimensiunea magistralei: 8 biţi (1) sau 4 biţi (0);
n N: stabileşte numărul liniilor de pe afişaj;
n F: stabileşte fontul caracterelor;
q Set CGRAM Address:
n Stabileşte valorile de pe liniile de adrese ale CGRAM;
n Datele sunt transferate cu CGRAM;
q Set DDRAM Address:
n Stabileşte valorile de pe liniile de adrese ale DDRAM;
n Datele sunt transferate cu DDRAM;
q Read Busy Flag and Address:
n Citeşte indicatorul BF: dacă este 1 înseamnă că modulul este ocupat cu o
comandă anterioară;
n O nouă comandă este acceptată doar dacă BF = 0;
q Write Data to CGRAM or DDRAM:
n Scrie data în CGRAM sau DDRAM, la adresa conţinută în NA;
n După o scriere, adresa este incrementată sau decrementată conform cu I/D;

30
Sisteme Încorporate
q Read Data from CGRAM or DDRAM:
n Citeşte data din CGRAM sau DDRAM;
n Înaintea acestei comenzi, trebuie executată o comandă de stabilire a adresei
CGRAM sau DDRAM;
n După o citire, adresa este incrementată sau decrementată conform cu I/D;

q Harta adreselor:

n Harta arată poziţia fiecărui caracter şi adresa la care se va afişa;


n Modulul 207 foloseşte doar primele 16 poziţii de pe fiecare linie;
n La deplasare, sunt implicate toate locaţiile; de exemplu la o deplasare la
dreapta, caracterul din poziţia $27 este mutat în poziţia $40;
n Adresele sunt pe 7 biţi;
n La scrierea în DDRAM, bitul c.m.s. este întotdeauna 1;

31
Sisteme Încorporate
q Legătura între DDRAM, adresele CGRAM şi datele CGRAM:

32
Sisteme Încorporate
q Schema:

33
Sisteme Încorporate
q Ordinograma principală:

34
Sisteme Încorporate
q Scriere dată:

q Scriere adresă:

35
Sisteme Încorporate
q Scriere mesaj:

36
Sisteme Încorporate

Curs 8

1
Sisteme Încorporate

4. Sistemele Arduino
n Arduino este un sistem cu microcontroler (ATmega), simplu,
extensibil și open-source;
n Arduino este o familie în care se găsesc:
q Plăci de bază și plăci pentru o gamă largă de aplicații;
q O bibliotecă bogată;
n Tipuri de aplicații:
q Preluarea de informații de la senzori: de temperatură, umiditate,
presiune, sunet, gaz GPL, monoxid de carbon, nivel de alcool în aerul
expirat, incendiu, măsurare distanțe, detectare prezență, nivel de
iluminare, accelerometru, măsurare a consumului energetic etc.
q Comanda motoarelor și actuatoarelor: motoare de curent continuu,
motoare pas cu pas;
q Conectarea la Internet și comunicări prin: conexiune radio, plăci WiFi,
module GSM (pentru SMS, apeluri de voce, transfer în rețelele 3G, 4G),
module Bluetooth (pentru conectarea la telefoane mobile și laptop-uri);
q Afișarea pe: led-uri, module cu 7 segmente, LCD-uri alfanumerice și
grafice;

2
Sisteme Încorporate
4.1. Plăci de bază Arduino

3
Sisteme Încorporate
n Diferă prin:
q Microcontroler: 8, 16 sau 32 biți;
q Frecvență a tactului: 8, 16, 48 sau 84 MHz;
q Tensiune de alimentare nominală: 3,3 sau 5 V;
q Număr de pini de intrare/ieșire digitali;
q Număr de pini de intrare/ieșire analogici (PWM);
q Memorie internă;
q Interfețe și comunicare;
q Dimensiuni;
n Recomandări:
q Pentru aplicații simple: UNO;
q Monitorizarea și comanda mediului: Mega;
q Miniaturizare: Mini;
q Monitorizarea și comanda mediului + putere de calcul: Due;
q Pentru aplicații complexe: Yun;

4
Sisteme Încorporate

4.1.1. Placa Arduino UNO

5
Sisteme Încorporate
n 1 – conector USB: pentru programare și alimentare;
n 2 – conector pentru alimentare AC;
n 3 – stabilizator de tensiune;
n 4 – oscilator;
n 5, 17 – inițializare: asigurată fie prin comutatorul RESET (17) fie prin
terminalul RESET (5);
n 6 – tensiune de ieșire, 3,3 V;
n 7 – tensiune de ieșire, 5 V;
n 8 – GND;
n 9 – Vin: intrare pentru alimentare AC;
n 10 – intrări analogice: 6 intrări, informația citită este convertită în
digital;
n 11 – microcontroler;
n 12 – ICSP: conector pentru interfață SPI + Vcc și GND;

6
Sisteme Încorporate
n 13 – LED pentru indicarea alimentării;
n 14 – LED-uri pentru interfața serială UART; indică transferul pe
terminalele Rx și Tx;
n 15 – 14 terminale pentru intrări/ieșiri: atunci când sunt configurate ca
intrări sunt digitale iar când sunt configurate ca ieșiri sunt digitale și
analogice (cele indicate cu ~); ieșirile analogice generează format
PWM;
n 16 – AREF (Analog Reference): fixează o tensiune de referință între
0 și 5 V ca tensiune limită pentru conversia analog digitală;

n Alte caracteristici:
q Curent continuu la terminalul de 3,3 V: 50 mA;
q Curent continuu la terminalele de intrare/ieșire: 40 mA;
q Conectare la PC prin cablu USB A – B;

7
Sisteme Încorporate

4.1.2. Placa Arduino Due

nTerminale:

q 0 – 53: intrări/ieșiri digitale; 12 ieșiri pot fi configurate ca ieșiri PWM;


q A0 – A11: intrări analogice;
q DAC1, DAC2: ieșiri din convertorul analog/digital;
q L: LED conectat la pinul 13 (1 – aprins, 0 – stins);

8
Sisteme Încorporate
q TWI1: SDA și SCL (cu rezistențe interne);
q TWI2: SDA1 și SCL1 (fără rezistențe interne);
q CAN: CANRX și CANTX;
q Serial 0 – 3: 4 x Rx și 4 x Tx;
q SPI: conector pentru SPI;
q RESET;
q AREF;
q Vin, 5V și 3V3;
n Alte caracteristici:
q Curent continuu la terminalul 3V3: 800 mA;
q Curent continuu la terminalul 5V: 800 mA;
q Curent însumat la terminalele de I/E: 130 mA;
q 2 porturi USB pentru programare;
q Port Native USB: poate fi port client USB și host USB;
q Conectare la PC prin cablu USB A – mini B.

9
Sisteme Încorporate
4.2. Software-ul plăcilor Arduino
4.2.1. Mediul de programare Arduino IDE
nInstalare a mediului de programare Arduino IDE
q Nu este necesară pentru Linux sau MAC;
q Pentru Windows:
n Driverele se descarcă de la adresa http://arduino.cc/en/Main/Software; se
obține o arhivă zip;
n Se dezarhivează, se conectează placa la portul USB și se furnizează PC-ului
driverele aferente;
n Device Manager va conține o intrare numită ”arduino”;
n Ghid: http://arduino.cc/en/Guide/Windows ;
nProgramarea plăcii Arduino
q Se lansează programul ”arduino” din mediul descărcat;
q Se conectează placa la PC prin USB la un port serial; se determină
portul;
q Se selectează tipul de placă;
q Se pot deschide programe existente sau se crează programe noi;

10
Sisteme Încorporate
n Structura unui program Arduino:
q 2 secțiuni:
n Setup: se execută o singură dată, la alimentarea plăcii sau după acționarea
RESET; inițializează variabilele, modul de lucru al terminalelor, pornește
utilizarea bibliotecilor;
n Void: se execută ciclic, cât timp placa este alimentată; este aplicația propriu
– zisă;

void setup() {
//instrucțiuni care se execută o singură dată
}
void loop () {
//instrucțiuni care se execută repetitiv
}

q După compilare, programul este încărcat pe placa Arduino, prin portul


USB;

11
Sisteme Încorporate

4.2.2. Funcții din biblioteca Arduino


4.2.2.1. Funcții de I/E
npinMode (pin, Mode)
q Setează pinul pin ca INPUT, INPUT_PULLUP sau OUTPUT;
q INPUT_PULLUP înseamnă conectarea rezistenței interne între pin și
alimentare;
ndigitalWrite (pin, value)
q Dacă pin a fost setat ca ieșire, value va fi HIGH (5V sau 3,3V, în funcție
de placă) sau LOW (0V);
q Dacă pin a fost setat ca intrare, HIGH va conecta rezistența internă de
pull-up iar LOW va deconecta această rezistență;
nanalogRead (pin)
q Se referă la pinii la care se pot conecta tensiuni analogice (0-11 la Due),
de ex. ieșiri ale senzorilor;
q Returnează o valoare între 0 și 1023 care reprezintă o tensiune între 0 și
5V (3,3V).
12
Sisteme Încorporate

4.2.2.2. Funcții pentru caractere

nint isdigit( int c )


q Returnează 1 dacă c este un digit și 0 în caz contrar;
nint isalpha( int c )
q Returnează 1 dacă c este o literă și 0 în caz contrar;
nint isupper( int c )
q Returnează 1 dacă c este o literă mare și 0 în caz contrar;
nint islower( int c )
q Returnează 1 dacă c este o literă mică și 0 în caz contrar;
nint iscntrl( int c )
q Returnează 1 dacă c este un caracter de control, ca newline ('\n'), form
feed ('\f'), carriage return ('\r'), horizontal tab ('\t'), vertical tab, ('\v'), alert
('\a'), backspace ('\b') și 0 în caz contrar.

13
Sisteme Încorporate

4.2.2.3. Funcții aritmetice


nM_E

q Constanta e; valoarea 2.7182818284590452354;


ndouble cbrt (double __x)
q Funcția cbrt() returnează rădăcina cubică a lui __x;
ndouble cos(double __x)
q Funcția cos() returnează cos __x;
ndouble exp (double __x)
q Funcția exp() returnează valoarea exponențială a lui __x;
ndouble log (double __x)
q Funcția log() returnează logaritmul natural al lui __x;
ndouble fma (double __x, double __y, double __z)
q Funcția fma() realizează operația multiply-add în virgulă flotantă; este
operația (__x *__y) + __z.

14
Sisteme Încorporate

4.2.3. Aplicații
n Comanda unui LED conectat la pinul 13:
q Programul aprinde LED-ul timp de 1 sec. și apoi îl stinge timp de 1 sec.

void setup () {
pinMode (13, OUTPUT);
}
void loop () {
digitalWrite (13, HIGH);
delay (1000);
digitalWrite (13, LOW);
delay (1000);
}

15
Sisteme Încorporate
n Comanda unui LED cu intensitate variabilă:
q Se consideră LED-ul conectat la pinul 9 care poate genera semnal PWM
void setup () {
pinMode (9, OUTPUT)
}
void loop () {
for (int i = 0, i < 255, i ++) {
analogWrite (9, i)
delay (200)
}
for (int i = 255, i < 0, i --) {
analogWrite (9, i)
delay (200)
}
}

16
Sisteme Încorporate
n Conectarea unui comutator
q Aprinderea unui LED la acționarea unui comutator pull-down

17
Sisteme Încorporate
int stareCom = 0; //variabilă pentru citirea stării
comutatorului
void setup () {
pinMode (2, OUTPUT);
pinMode (8, INPUT);
}
void loop () {
stareCom = digitalRead (8); //se citește
starea comutatorului
if (stareCom == HIGH); //dacă se apasă
comutatorul
digitalWrite (2, HIGH); //se aprinde LED-ul
} else {
digitalWrite (2, LOW); //se stinge LED-ul
}
}

18
Sisteme Încorporate
n Citirea temperaturii
q Se folosește senzorul de temperatură LM35:
n Oferă o tensiune analogică proporțională liniar cu temperatura în grade C;

19
Sisteme Încorporate
float temp;
int analogPin = 0;
void setup () {
Serial.begin (9600);
}
void loop () {
temp = analogRead (analogPin); //se citește tens.
analogică
temp = temp * 0,48828125; //conversie în grade C
}

Serial.print (”TEMPERATURA = ”);


Serial.print (temp); //afișare a valorii temperaturii
Serial.print (”*C”);
Serial.println(); //se va tipări la rând nou
delay (1000); //temperatura se citește și
afișează în fiecare sec.
}
20
Sisteme Încorporate
n Control al luminii ambientale
q Se citește nivelul luminii ambientale cu senzorul TEMT6000; dacă este
sub un anume nivel, se aprinde LED-ul conectat la pinul 13;
q Senzorul TEMT6000 funcționează conform schemei echivalente:

21
Sisteme Încorporate

int temt6000Pin = A0; // pinul folosit pentru citirea nivelului luminii


float light;
int light_value;
void setup() {
Serial.begin(112500);
pinMode(temt6000Pin, INPUT);
pinMode(13, OUTPUT);
}
void loop() {
int light_value = analogRead(temt6000Pin);
light = light_value * 0.0976;// corecție
Serial.println(light);
delay(100);
if (light_value < 1000) {
digitalWrite(13, HIGH);
}
else {
digitalWrite(13,LOW);}
}

22
Sisteme Încorporate
n Alcoolmetru
q Se folosește o placă Arduino Leonardo, un senzor MQ-3, un LCD
alfanumeric și 3 led-uri (verde, galben și roșu) care se vor aprinde în
funcție de nivelul alcoolemiei; senzorul necesită o tensiune continuă de
5V care se obține de la un stabilizator extern;
q Schema și conexiunile:

23
Sisteme Încorporate
#include <LiquidCrystal.h> //biblioteca LCD
#define nivel1 40 //se definesc 3 constante de nivel
#define nivel2 60
#define nivel3 80
int analog_in = A0; //pinul la care este legat senzorul
int led_verde = 13; //pinii la care sunt conectate cele 3 led-uri
int led_galben = 12;
int led_rosu = 11;
int analog_reading = 0; //variabila ce va memora valoarea concentrației
int percent_reading = 0; //variabila pentru procentul de concentrație
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //inițializare LCD
void setup() {
pinMode(led_verde, OUTPUT);
pinMode(led_galben, OUTPUT);
pinMode(led_rosu, OUTPUT);
lcd.begin(16, 2); //setare LCD
lcd.print("Alcoolmetru"); //afișare pe LCD
delay(1000);
lcd.clear(); //ștergere LCD
lcd.setCursor(0,0);
lcd.print("Indicatie senzor"); //afișare pe LCD
}
24
Sisteme Încorporate
void loop() {
lcd.setCursor(0,1); //poziționare cursor la linia 1, coloana 0
analog_reading = analogRead(analog_in); //citire de la senzor
lcd.print(analog_reading); //afișare valoare citită de lșa senzor
percent_reading=map(analog_reading, 0, 1023, 0, 100); //schimbare
domeniu la 0-100
//aprindere led-uri în funcție de nivelul concentrației
if (percent_reading < nivel1){
digitalWrite(led_verde,HIGH);
digitalWrite(led_galben,LOW);
digitalWrite(led_rosu,LOW);
} else if (percent_reading < nivel2){
digitalWrite(led_verde,HIGH);
digitalWrite(led_galben,HIGH);
digitalWrite(led_rosu,LOW);
} else if (percent_reading < nivel3){
digitalWrite(led_verde,HIGH);
digitalWrite(led_galben,HIGH);
digitalWrite(led_rosu,HIGH);
}
}

25
Sisteme Încorporate
n Comunicare serială de tip UART
q Se folosesc funcții predefinite:
n Serial.begin(value): deschide canalul serial UART, rata de transfer va fi
value bd;
n Serial.print(”msg”): afișează msg în continuarea a ceea ce era afișat;
n Serial.println(”msg”): afișează msg pe rând nou;
q Ex.:
void setup()
{
Serial.begin(9600);
Serial.println("hello world");
}
void loop()
{
}
q Pentru a afișa continuu, hello world, pe rând nou: ............

26
Sisteme Încorporate
n Comunicare serială de tip UART
q Se folosesc funcții predefinite:
n Serial.begin(value): deschide canalul serial UART, rata de transfer va fi
value bd;
n Serial.print(”msg”): afișează msg în continuarea a ceea ce era afișat;
n Serial.println(”msg”): afișează msg pe rând nou;
q Ex.:
void setup()
{
Serial.begin(9600);
Serial.println("hello world");
}
void loop()
{
}
q Pentru a afișa continuu, hello world, pe rând nou: ............

27
Sisteme Încorporate
n Comunicare I2C
q Structura

q Pini:
n UNO: A4 – SDA, A5 – SCL;
n Due: 20 – SDA, 21 – SCL;
q Moduri de conectare/comunicare
n Master transmitter – Slave receiver;
n Master receiver – Slave transmitter;

28
Sisteme Încorporate

q Master transmitter – Slave receiver


n Master transmitter: trebuie inclusă biblioteca Wire:
Wire.begin(address): master-ul stabilește adresa slave-ului care va fi
partener;
Wire.beginTransmission(address): începe transmisia la slave-ul cu
adresa fixată;
Wire.write(value): trimite octetul sau octeții la slave;
Wire.endTransmission(): încheie transmisia;
29
Sisteme Încorporate

#include <Wire.h> //include biblioteca Wire


int x = 0;
void setup() {
Wire.begin(); // conectare la I2C ca master
}
void loop() {
Wire.beginTransmission(2); // transmisie la slave-ul
cu adresa 2
Wire.write(x); // trimite x
Wire.endTransmission(); // oprește transmisia
x++; // incrementează x
if (x > 5) x = 0; // anulează x atunci când ajunge
la valoarea 6
delay(1000);
}

30
Sisteme Încorporate
n Slave receiver: funcțiile sunt:
Wire.begin(address): address este adresa slave-ului care va comunica;
Wire.onReceive(received data handler): funcția este apelată atunci
când slave-ul primește date de la master;
Wire.available(): returnează nr. de octeți care sunt disponibili ptr. a fi
preluați cu Wire.read; funcția trebuie apelată în cadrul lui
Wire.onReceive;
#include <Wire.h> //include biblioteca Wire
int LED = 13;
int x = 0;
void setup() {
pinMode (LED, OUTPUT); // setează pinul LED ca ieșire
Wire.begin(); // conectare la I2C ca slave, cu adresa 2
Wire.onReceive(receiveEvent); // se atașează funcția
apelată la recepție
}
void receiveEvent(int bytes) {
x = Wire.read(); // citește un caracter dela master
}
31
Sisteme Încorporate

void loop() {
//dacă valoarea citită este 0 aprinde LED timp de 500 ms
if (x == '0') {
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
// dacă valoarea citită este 3 aprinde LED timp de 1s
if (x == '3') {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
}

32
Sisteme Încorporate
q Master receiver – Slave transmitter
n Master receiver: master-ul cere și apoi citește datele trimise de slave;
Wire.request(address, number of bytes): address este adresa slave-
ului iar number of bytes este nr. de octeți trimiși de slave; octeții vor fi preluați
cu funcțiile wire.available() și wire.read();
#include <Wire.h>

void setup() {
Wire.begin(); // conectare la I2C ca master
Serial.begin(9600); // deschide canalul serial UART
}

void loop() {
Wire.requestFrom(2, 2); // cere 2 octeți de la
slave-ul cu adresa 2
while (Wire.available()) {
char c = Wire.read(); // citește un octet ca un
caracter
Serial.print(c); // afișează caracterul
}
delay(500);
}
33
Sisteme Încorporate
n Slave transmitter
Wire.onRequest(handler): se apelează o funcție atunci când
master-ul cere date de la slave;
#include <Wire.h>

void setup() {
Wire.begin(2); // conectare la I2C ca slave cu adresa 2
Wire.onRequest(requestEvent); // atunci când master-ul
cere date se va apela funcția requestEvent
}

void loop() {
delay(100);
}

// funcția care va fi apelată atunci când master-ul va


cere date
void requestEvent() {
Wire.write("20"); // se trimit cei 2 octeți ceruți de
master
}

34
Sisteme Încorporate

Curs 9

1
Sisteme Încorporate

5. Sistemele Raspberry Pi
5.1. Structură
n Microcalculator simplu, cu formă de placă, fără carcasă, ușor (aprox.
45-50 g), de dimensiuni mici (86 x 54-56 x 15-21 mm);
n Prima variantă: 2011 – ultima variantă: 2015;

2
Sisteme Încorporate
n Sistem de operare: Linux;
n Componente și conectori:
q SoC: Broadcom BCM2835:
n CPU ARM1176JZ-F Low Power 700 MHz; 32 biți;
n GPU: Dual Core VideoCore IV Multimedia Co-Processor;
n Memorie: 256/512 MO SDRAM;
q Conectori și interfețe video:
n Composite RCA: ptr. echipamente video mai vechi;
n HDMI: echipamente video mai noi;
n DSI (Display Serial Interface): ptr. ecrane LCD;
q Conector 3,5 mm ptr. sunet;
q 2/1 conectori USB; se poate conecta tastatură, mouse etc.; dacă există
1 USB este necesar un hub USB ptr. a conecta o tastatură + un mouse;
recomandare: hub cu alimentare;
q Conector RJ45 pentru Ethernet;
q Conexiune wireless: nu există pe placă, se poate crea prin un adaptor
wireless USB;
q Conector pentru alimentare: micro USB;

3
Sisteme Încorporate
q Slot pentru card SD: cardul va conține SO;
q GPIO: 26 linii de port; conferă caracteristici de SI: monitorizare și
comandă a mediului exterior:
n Linii de I/E;
n UART, I2C, SPI;

4
Sisteme Încorporate
n Raspberry Pi 3:

5
Sisteme Încorporate
n Îmbunătățiri:

q SoC: Broadcom BCM2837; procesor pe 64 biți;


q Frecvență mărită a procesorului, la 1,2 GHz; 2 nivele de memorie cache,
32 KO și 512 KO;
q Capacitate mărită a memoriei RAM, la 1 GO;
q Interfață wireless pe placă, inclusiv antenă: Bluetooth Low Energy,
Bluetooth clasic și WiFi;
q Port micro SD pentru SO și memorare de date;
q 4 porturi USB;
q 1 port pentru RCA + sunet;
q GPIO cu 40 pini: 2 pini 5V, 2 pini 3,3V, 8 pini GND, 1 pin PWM, 26 pini
I/E;
q Port pentru camera video Raspberry Pi;
q Conector micro USB îmbunătățit, suportă 2,5 A.

6
Sisteme Încorporate

5.2. Benchmarks
n Suport pentru multitask

7
Sisteme Încorporate
n Modificarea pinilor de I/E, utilizând Python

8
Sisteme Încorporate
n Whetstone: arată performanța în calculul în virgulă flotantă

9
Sisteme Încorporate
n Consumul de putere

10
Sisteme Încorporate

5.3. Procesorul ARM 1176


nStructură RISC, low power, folosit în dispozitive mobile;

11
Sisteme Încorporate
n Schemă bloc detaliată

12
Sisteme Încorporate
n 3 seturi de instrucțiuni:
q Setul ARM 32 biți: asigură performanță maximă;
q Setul Thumb 16 biți:
n Este un subset al setului anterior și folosește resursele procesorului la nivel
de 32 biți: spațiu de adrese, registre, ALU, transferul cu memoria;
n Are instrucțiuni corespondente pe 32 biți;
n Performanță mare, cod mai compactat ca cel corespondent pe 32 biți;
n Performanță mai mare și cod mai compactat decât în cazul utilizării unui set
clasic pe 16 biți care rulează pe o structură pe 32 biți;
q Setul Java 8 biți:
n Asigură suport pentru execuția codului Java;
n Blocuri:
q Instruction TCM, Data TCM (Tightly Coupled Memory): zone de memorie
rapide, de dimensiuni mici, situate aproape de CPU;
q ETM Interface (Embedded Trace Macrocell): asigură urmărire în timp
real a unor semnale din nucleu;

13
Sisteme Încorporate
q Integer Core:
n Conține 40 registre de câte 32 biți;
n Procesează valorile întregi;
n Include bandă de asamblare;
q Load/Store Unit:
n Tratează toate operațiile de încărcare și depunere;
q Prefetch Unit:
n Se ocupă de apeluri; folosește predicția ramurilor;
q Memory Management Unit:
n Se ocupă de accesele la memorie;
q Vector Floating Point Coprocessor:
n Procesează operațiile în virgulă flotantă, în simplă și dublă precizie;
q VIC Interface (Vector Interrupt Control):
n Procesează cererile de întrerupere;
n Tratează semnalele externe;
q JTAG Interface:
n Se folosește la depanare;

14
Sisteme Încorporate
n Banda de asamblare:
q 8 nivele;
q 3 căi:
n Pentru operații aritmetice (ALU) și deplasări;
n Pentru operațiile de multiplicare;
n Pentru operații de încărcare și depunere (load și store);
q Nivelele de Fetch pot conține simultan 4 instrucțiuni;
q Nivelele Issue și Decode pot conține orice instrucțiune în paralel cu o
ramură previzionată;

15
Sisteme Încorporate
q Banda de asamblare pentru o operație aritmetică:

16
Sisteme Încorporate
n Memoria cache:
q 4 way set associative cu dimensiune configurabilă 4 – 64 KO;
q Înlocuirea liniilor din memorie se face prin Round Robin sau Pseudo
Random (stabilit prin un rang din un registru);
q Scrierea se face prin write-back sau write-through, stabilit de Micro TLB;
q O linie de date conține atât date securizate cât și nesecurizate;

17
Sisteme Încorporate
n Predicția:
q Integer Core (IC) folosește predicția statică;
q Prefetch Unit (PU) folosește predicția dinamică;
q Când un salt condiționat este soluționat, PU primește informații de la IC
și alocă spațiu în memoria cache sau actualizează o intrare;
q Salturile condiționate sunt soluționate la sau până la nivelul 3 din banda
de asamblare;
q Predicția dinamică folosește istoria salturilor condiționate; prin
intermediul a 2 biți, se alege una din variantele:
n Strong predict branch taken;
n Weak predict branch taken;
n Strong predict branch not taken;
n Weak predict branch not taken;
q Predicția statică:
n Nu folosește istoria salturilor condiționate;
n Regula este neexecuția salturilor condiționate înainte și execuția salturilor
condiționate înapoi;

18
Sisteme Încorporate

5.4. Software
5.4.1. Instalare
n SO trebuie descărcat pe cardul SD; rulează mai multe implementări
Linux și non-Linux; varianta Linux cea mai răspândită: Raspbian;
variantă Windows: Windows 10 IoT Core;
n Descărcarea din Windows, OS X și Linux:

q Ptr. Linux și OS X: www.raspberrypi.org/downloads;


q Ptr. Windows: trebuie descărcat Image Writer for Windows:
https://sourceforge.net/projects/win32diskimager ;
n Gestiunea descărcărilor sistemelor de operare se poate face cu
NOOBS (New Out-Of-Box Software):
q Poate fi preâncărcat pe card sau se poate descărca de la
www.raspberrypi.org/downloads;
q La conectarea alimentării apare o listă de sisteme de operare;
q Dacă se încarcă mai multe SO, NOOBS va cere alegerea unuia sau va
lansa ultimul SO încărcat;
n Limbaje: Python, C, C++, Java, Ruby, Scratch, ...
19
Sisteme Încorporate
5.4.2. Configurarea Raspberry Pi
5.4.2.1. Raspberry Pi Configuration Tool
nraspi-config – lucrează doar cu Raspbian Linux;

nLansare: sudo raspi-config;

nMeniu text cu opțiunile:


q Expand Filesystem
q Change User Password
q Enable Boot to Desktop/Scratch
q Internationalisation Options
q Enable Camera
q Add to Rastrack
q Overclock
q Advanced Options
q About raspi-config.

20
Sisteme Încorporate
n Expand Filesystem:
q Extinde sistemul de fișiere Raspbian pe întregul card;
n Change User Password:
q Raspbian include, în mod implicit, un singur cont utilizator numit pi,
password raspberry; bun pentru utilizarea privată;
q În cazul unei utilizări cu acces public (de ex. WiFi, Internet) este
necesară modificarea datelor contului;
n Enable Boot to Desktop/Scratch:
q Raspbian începe prin afișarea unei interfețe bazată pe linii de comandă,
suficientă pentru multe aplicații;
q Dacă este necesară GUI, atunci trebuie instalat un mediu desktop;
opțiuni:
n Console: cere login cu username și passord, apoi comanda startx pentru a
încărca GUI;
n Desktop: login automat cu datele implicite ale contului și încarcă GUI;
n Scratch: încarcă mediul educațional Scratch;

21
Sisteme Încorporate
n Internationalisation Options:
q Change Locale: schimbă limba;
q Change Timezone: schimbă ora locală (raportat la Greenwich Mean
Time);
q Change Keyboard Layout: schimbă configurația QWERTY a tastaturii;
n Enable Camera:
q Permite folosirea Raspberry Pi Camera Module;
n Add to Rastrack:
q Este o hartă a modulelor Raspberry Pi; este necesară înregistrarea;
n Overclock:
q Permite funcționarea la o frecvență a procesorului și memoriei mai mari
ca cele nominale;
q Opțiuni: nominal: 700 MHz, 400 Mhz; modest: 800 MHz, 400 MHz;
medium: 900 MHz, 450 MHz; high: 950 MHz, 450 MHz; turbo: 1000
MHz, 600 MHz;
q Crește consumul, procesorul se încălzește, posibil ca unele module să
nu accepte toate opțiunile;
22
Sisteme Încorporate
n Advanced Options:
q Overscan: asigură concordanța între dimensiunile ecranului și ale
imaginii transmise;
q Hostname: identificarea unui modul în o rețea se face cu hostname;
dacă se dispune de mai multe module legate în sistem, numele trebuie
schimbat, respectând anumite reguli;
q Memory Split: asigură partiționarea memoriei (256 Mo sau 512 Mo) între
CPU și GPU; implicit, GPU are 64 Mo; pentru aplicații în care nu este
necesară grafică (de ex. web server), GPU nu are nevoie de memorie;
q SSH (Secure Shell): permite accesarea Raspberry Pi prin rețea, de
exemplu atunci când funcționează ca un server și nu este nevoie să aibă
o tastatură sau/și un monitor; crește vulnerabilitatea modulului;
q SPI: încarcă driverul pentru SPI;
q Audio: decide conectorul pentru ieșirea audio: HDMI sau conectorul
audio de 3,5 mm;
q Update: actualizează versiunea de raspi-config;
n About raspi-config: prezintă instrumentul.

23
Sisteme Încorporate
5.4.2.2. Configurarea avansată
nSoC BCM283x nu are posibilități de configurare similare PC-ului (nu
conține BIOS); configurarea avansată se face prin fișiere text
config.txt și cmdline.txt; există riscul de nefuncționare;
q Hardware Settings - config.txt:
n Modificarea display-ului;
n Opțiuni de boot;
n Overclocking;
n Overvoltage;
q Disabling L2 Cache - config.txt:
n SoC dispune de memorie cache L2, 128 Ko, prevăzută inițial doar pentru
GPU; poate fi partajată cu CPU;
q Memory Partitioning - config.txt:
n Memoria (256 Mo sau 512 Mo) poate fi partiționată între CPU și GPU; GPU
poate primi 16 Mo – 128 Mo;
q Enabling Test Mode - config.txt;
q Software Settings - cmdline.txt;

24
Sisteme Încorporate
q Modificarea display-ului:
n Overscan_left, right, top, bottom; disable_overscan;
n Framebuffer_width, height, depth: modifică dimensiunile caracterelor pe
lățime, înălțime, nr. de culori;
n Sdtv_mode, aspect: stabilește modurile NTSC sau PAL, 4:3, 14:9 sau 16:9;
n Hdmi_mode, drive;
q Opțiuni de boot:
n Stabilește modul de încărcare a nucleului Linux; stabilește rata de transfer
serial;
q Overclocking:
n Stabilește frecvența CPU, GPU (core – pentru procesor, h264 – pentru datele
video în format H.264, isp – pentru a îmbunătăți rata de captură video (de ex.
de la cameră), v3d – pentru jocuri), SDRAM, UART, SD controller;
q Overvoltage:
n Tensiunea de alimentare nominală a SoC și SDRAM este 1,2 V; poate fi
modificată în domeniul 0,8 – 1,4 V în pași de 0,025 V;
n Over_voltage pentru SoC, SDRAM, memoria pentru sistemul de I/E, logica de
comandă a memoriei.

25
Sisteme Încorporate
5.5. Aplicații
5.5.1. Comanda unui LED
nLED conectat prin rezistență la pinul 11 (3,3 V);

nPython: programul scris în un editor de text sau într-un IDE (IDLE


pentru Raspbian Linux);
q Se importă bibliotecile GPIO și time; se setează GPIO și pinul 11 ca
ieșire; se salvează programul ca gpiooutput.py și se execută;

import RPi.GPIO as GPIO


import time
GPIO.setmode (GPIO.BOARD)
GPIO.setup (11, GPIO.OUT)
while True:
GPIO.output (11, True)
time.sleep (2)
GPIO.output (11, False)
time.sleep (2)

26
Sisteme Încorporate
5.5.2. Citirea stării unui comutator
nSe conectează la pinul 12; alimentarea la 3,3 V;

nLa apăsarea pe comutator, pinul citește 0; se afișează un mesaj, se


așteaptă dezactivarea comutatorului; se salvează programul ca
gpioinput.py și se execută;

import RPi.GPIO as GPIO


GPIO.setmode (GPIO.BOARD)
GPIO.setup (12, GPIO.IN)
while True:
input_value = GPIO.input (12)
if input_value == False:
print (”The button has been pressed.”)
while input_value == False:
input_value = GPIO.input (12)

27
Sisteme Încorporate
5.5.3. Plăci de conversie/extensie
nGertboard: placă activă, conține: 12 linii de I/E cu tampon și LED-uri
de stare, 3 butoane, 2 DAC, 2 ADC, un controller pentru motor, 18 V, 2
A, 6 drivere open-colector, microcontroler ATmega 328;
nAdafruit Prototyping Pi Plate: placă de extensie și conversie a pinilor
GPIO; cu dimensiunea plăcii Pi;
nCiseco Slice of Pi

q Avantaje:
n Se conectează pe GPIO și acoperă parțial placa Pi lăsând acces liber la
conectori; arată numele pinilor;
n Face conversie pini tată – pini mamă ai GPIO, oferind protecție pinilor; se pot
face conexiuni cu fire tată – tată;
n Oferă o zonă liberă pentru conexiuni și o zonă pentru interfață Xbee care se
va conecta la interfața UART;
q Dezavantaje:
n Dimensiuni mici pentru zona liberă => doar pentru aplicații mici;
n Denumirile pinilor sunt diferite față de cele ale GPIO;

28
Sisteme Încorporate
Placa Ciseco:

29
Sisteme Încorporate
5.5.4. Alte sisteme similare
n BeagleBone Black

30
Sisteme Încorporate
n OrangePi Plus 2

qH3 Quad-core (Cortex


-A7) CPU; 1 – 1,2 GHz;
qMali 400 GPU;

qConector RJ45 ptr.

Ethernet;
qWireless LAN

qVideo 4K față de

Full HD la Pi3;
q4 USB 2.0 + 1 USB OTG;

q+ 1 Go RAM față de Pi3;

q16 Go memorie de masă pe placă față de 0 la Pi3;

qLipsă suport pentru Bluetooth;

qPreț 49 $.

31
Sisteme Încorporate

Curs 10

1
Sisteme Încorporate

6. Reducerea consumului sistemelor


încorporate
n Importantă în SI datorită dimensiunilor reduse şi, mai ales, datorită
mobilităţii lor care cere alimentare pe baterii/acumulatori;
n Dezvoltarea domeniilor: reţele fără fir, senzori inteligenţi şi
“ubiquitous and pervasive computing” accentuează necesitatea
reducerii consumului;
n Consum mare → baterii mari → greutate mare => necesitatea
reducerii consumului;
n Consum mare → încălzire, în special a procesorului → modul de
răcire → consum şi mai mare => necesitatea reducerii consumului;
n Reducerea consumului = reducere energiei ≠ reducerea puterii;
n Reducerea consumului se poate face la 2 nivele:
q În faza de proiectare a procesoarelor “low – power”;
q În faza de funcţionare.

2
Sisteme Încorporate
6.1. Soluţii în faza de proiectare
n Deconectarea internă dinamică;
n Moduri de lucru cu consum redus;
n Modificarea frecvenţei şi a nivelului tensiunii de alimentare;
n Codificarea pe magistrale de adrese;
n Codificarea instrucţiunilor;

n Deconectarea internă dinamică: deconectarea diferitelor blocuri din


procesor, în special nivele din banda de asamblare; reducerea
consumului se face fără afectarea întregului circuit şi sistem spre
deosebire de modificarea frecvenţei şi tensiunii de alimentare.
n Moduri de lucru cu consum redus: implementează conceptul de
“aşteptare inteligentă”; intrarea în aceste moduri se face prin
program (SO sau activarea unui rang dintr – un SFR) iar ieşirea, prin
întreruperi sau hardware; 2 nivele:

3
Sisteme Încorporate
q Modul Idle (Sleep):
n Partea de execuţie a instrucţiunii din cadrul procesorului este oprită iar restul
(sistemul de întreruperi şi memorii, periferice interne) rămâne activat;
consumul scade semnificativ: de ex. la 80C51 scade de la 16 mA în modul
normal la 3,7 mA în modul Idle;
n Cere puţine operaţii suplimentare ceea ce permite intrarea şi ieşirea de mai
multe ori/ ms; atunci cînd SO detectează că toate firele de execuţie ale unui
program sunt blocate aşteptând o întrerupere, un eveniment sau un timeout,
ar trebui să instaleze modul Idle; de reţinut că ieşirea din modul Idle costă
timp şi energie;
n Minimizarea consumului în modul Idle cere analizarea hardware-ului şi a
modului de setare a diferitelor linii; de ex. liniile de I/ E sunt alimentate în
timpul modului Idle:
q Dacă sunt intrări pot fi folosite ca intrări de întrerupere pentru a scoate procesorul din
modul Idle (de ex. microcontrolerul PIC 16F84, liniile RB4 – 7); dacă sunt în vânt
(neconectate la vreo ieşire) pot apare tranziţii accidentale care vor creşte consumul;
q Dacă sunt ieşiri contează setarea: dacă sunt legate intern la Vcc prin o rezistenţă
atunci setarea lor la 0 va crea căi suplimentare de curent adică creşterea
consumului;

4
Sisteme Încorporate
q Modul Stop:
n Se opreşte întregul circuit (de ex. prin oprirea oscilatorului intern);
n Intrarea se face prin program iar ieşirea prin Reset sau întrerupere;

n Modificarea frecvenţei şi a nivelului tensiunii de alimentare: soluţia


este determinată de caracteristicile tehnologiei procesorului; în
continuare referirea se va face la tehnologia CMOS;
q Consumul de putere într – un circuit CMOS este dat de formula:
Ptotal = Pstatic + Pshort + CSWfVdd2 + Pglitching,, unde
Pstatic este puterea consumată datorată curenţilor reziduali; are o valoare
chiar dacă circuitul nu lucrează; are o pondere neînsemnată pentru
circuitele CMOS; următoarele 3 componente alcătuiesc puterea
dinamică;
Pshort apare la tranziţii atunci cînd cele 2 tranzistoare din etajul final sunt
simultan deschise (ptr. o perioadă foarte scurtă); prin buna proiectare a
circuitelor poate fi păstrată la < 10% din puterea dinamică;

5
Sisteme Încorporate
CSWfVdd2 este puterea de comutare; este dată de frecvenţa tactului, de
nivelul alimentării şi de capacitatea de comutare care, la rândul ei,
depinde de datele care se procesează şi de capacitatea circuitului care
realizează comutarea;
Pglitching este dată de tranziţii nedorite din interiorul circuitului; 8 – 25% din
puterea de comutare;
q Puterea de comutare are ponderea cea mai mare; într – un sistem
multiprocesor şi multitasking are importanţă alocarea task – urilor la
procesoare şi procesorul ales pentru un anumit task; într – un sistem
uniprocesor contează caracteristica internă de modificare a frecvenţei
(de ex. există microcontrolere care pot multiplica sau divide frecvenţa
primită din exterior);
n Codificarea pe magistrala de adrese:
q Capacitatea intrinsecă a magistralelor externe procesorului este cu
cîteva ordine de mărime mai mare ca cea a magistralelor interne;
consumul poate fi redus minimizând tranziţiile liniilor de I/ E ale
procesorului;

6
Sisteme Încorporate
q Soluţia cea mai eficientă constă în codificarea informaţiei trimisă pe
magistralele externe; întrucât tranziţiile de pe liniile de date depind de
configuraţia care se transferă, nu se poate interveni asupra magistralei
de date (la transferul operanzilor); a fost vizată magistrala de adrese;
q Scheme de codare pentru transferuri low – power:
n Codul Bus invert,
n Codul Gray,
n Codul Beach şi
n Codul T0: se foloseşte o linie suplimentară, INC, pentru a evita transferul de
adrese consecutive; dacă 2 adrese sunt consecutive, linia INC = 1, liniile de adrese
rămân nemodificate (pentru a evita tranziţii inutile) iar noua adresă este calculată la
recepţie; dacă cele 2 adrese nu sunt consecutive, linia INC = 0 iar liniile de adrese
vor lucra normal.
n Codificarea instrucţiunilor:
q Scopul este minimizarea tranziţiilor în nivelele din banda de asamblare
implicate în aducerea şi decodificarea codului instrucţiunilor;
q Alocarea de coduri instrucţiunilor se face prin metode statistice asupra
adiacenţei configuraţiilor;

7
Sisteme Încorporate

6.2. Soluţii în faza de funcţionare


n La nivelul SO: instalarea modului “low power” şi modificarea
frecvenţei tactului şi nivelului tensiunii de alimentare;
n Instalarea modului “low power”:
q Este necesar un mecanism pentru a stabili momentul când se va instala
modul “low power”;
q O soluţie: a previziona momentul când urmează o perioadă inactivă,
bazat pe istoria funcţionării procesorului; valoarea previzionată devine o
metrică pentru a determina impactul acestei metode; soluţia este
potrivită în aplicaţii “event driven” ca de ex. interfeţe, la care întârzierea
datorată nepotrivirii între valoarea previzionată şi cea reală poate fi
tolerată;
n Modificarea frecvenţei tactului şi nivelului alimentării:
q Înseamnă adaptarea resurselor procesorului la cerinţele taskului curent;
q Frecvenţa tactului poate fi modificată intern (prin programare) sau extern
(prin terminale de I/ E);

8
Sisteme Încorporate
n La nivelul programului aplicativ: conceperea programelor ţinându –
se cont de un model instrucţiune – consum şi optimizarea codului
pentru a rula mai rapid şi a ocupa mai puţin spaţiu;
n Utilizarea unui model instrucţiune – cost:
q Permite obţinerea unui cost de putere pentru componenta software a
unui sistem;
q Poate fi folosit de compilatoare şi generatoare de cod pentru a genera
cod pentru “low power”;
q Influenţează decizii la nivele de proiectare de sistem ca de ex.
partiţionarea hardware – software;
q Permite compararea diferitelor procesoare d.p.d.v. al consumului;
q Asigură suportul pentru dezvoltarea software – ului “low power”;
q O tehnică pentru obţinerea modelului instrucţiune – consum se bazează
pe măsurarea consumului atunci cînd procesorul execută, în mod
repetat, aceeaşi instrucţiune; tehnica este parţial eficientă: la unele
procesoare nu s – au obţinut variaţii între diferitele instrucţiuni în timp ce
la alte procesoare aceste variaţii au fost importante;

9
Sisteme Încorporate
q O altă tehnică se bazează pe estimarea consumului unei instrucţiuni; ea
se aplică pentru acele instrucţiuni pentru care nu se poate măsura
consumul neluând în seamă şi alte instrucţiuni;
q Fie PX puterea medie pentru instrucţiunea X, PY puterea medie pentru
instrcuţiunea Y, tX timpul necesar pentru execuţia instrucţiunii X şi tX+Y
timpul necesar pentru execuţia instrucţiunii X urmată de Y; consumul
instrucţiunii Y va fi calculat cu relaţia:
EY = tX+YPX+Y - tXPX
unde PX s – a obţinut măsurând puterea executînd instrucţiunea X de
1000 ori iar PX+Y s – a obţinut executând secvenţa instrucţiunea X
urmată de instrucţiunea Y de 1000 ori;
n Optimizarea codului pentru a rula mai rapid şi a ocupa mai puţin
spaţiu:
q Depinde de: limbajul de nivel înalt folosit, compilator şi procesor;
q Se recomandă folosirea variabilelor de dimensiuni minime (în special la
microcontrolere pe 8 biţi); de ex. dacă o valoare se exprimă în domeniul
– 127 - + 128 sau 0 – 255 atunci trebuiesc folosite variabilele de tip char
sau unsigned char; variabile de dimensiuni mai mari vor cere mai multe
instrucţiuni pentru a fi transferate;

10
Sisteme Încorporate
q Operaţiile în virgulă flotantă trebuiesc folosite doar dacă este absolut
necesar;
q Pentru creşterea vitezei se recomandă studierea atentă a buclelor; un
câştig mic, de câteva cicluri maşină, se va multiplica devenind, astfel,
semnificativ;
q Toate microcontrolerele includ registre şi memorii interne; se recomandă
utilizarea lor pentru variabile, rezultate parţiale sau variabile de stare
care sunt testate des;
q Toate microcontrolerele oferă moduri de adresare scurte, de ex.
adresarea în pagina 0;
q Pagina 0 înseamnă primii 256 octeţi din spaţiul de adresare al memoriei
de date; adresarea se poate face cu 8 biţi, instrucţiunile devenind mai
scurte;
q Adresarea în pagina 0 poate fi directă sau indirectă; adresarea indirectă
va permite implementarea eficientă a indicatorilor: un indicator pe 16 biţi
va putea fi referit cu doar 8 biţi în cadrul instrucţiunii, salvând, astfel,
spaţiu şi timp;

11
Sisteme Încorporate

6.3. Soluţii pentru minimizarea consumului la


microcontrolerele cu nucleu 80C51 şi sistemele bazate
pe ele
n Reducerea frecvenţei tactului,
n Creşterea vitezei nucleului,
n Integrarea de periferice,
n Memoria internă,
n Tactul,
n Îmbunătăţirea modului Stop,
n Modul Idle,
n Modurile de management a puterii,
n Utilizarea întreruperilor cu MMP,
n Îmbunătăţirea transferurilor în rafală,
n Execuţie rapidă şi aşteptare.

12
Sisteme Încorporate
n Reducerea frecvenţei tactului:
q Consumul circuitelor CMOS depinde direct proporţional de frecvenţa
tactului; fig. arată dependenţa curent consumat – frecvenţă:

13
Sisteme Încorporate
q În general caracteristica curent – frecvenţă este liniară cu un
deplasament determinat de circuitele statice din interiorul
microcontrolerului (comparatoare, amplificatoare operaţionale etc.);
valoarea aceasta este mică, tipic < 1 mA;
q Pentru minimizarea consumului este necesară rularea la viteza minimă
permisă de aplicaţie; determinarea acesteia depinde de factori ca:
latenţa întreruperilor, performanţa dorită etc.
n Creşterea vitezei nucleului:
q Calea cea mai directă pentru scăderea consumului este creşterea
eficienţei microcontrolerului;
q Microcontrolerul 80C51 original lucrează cu un ciclu de 12 perioade de
tact; microcontrolerele 80C51 moderne lucrează cu cicluri cu 4 sau 1
perioade de tact;
q Prima consecinţă este că este nevoie de mai puţin timp pentru a executa
aceeaşi operaţie; multe SI portabile lucrează în rafală, pentru perioade
scurte de timp urmate de lungi perioade de aşteptare (de ex. citirea unor
informaţii din mediu, scanarea unui cod de bare etc.); reducerea timpului
de execuţie va duce la reducerea consumului;
14
Sisteme Încorporate
q Altă consecinţă: se pot obţine performanţe comparabile reducînd
frecvenţa tactului; dacă ciclul are doar 4 perioade, în loc de 12, aceeaşi
operaţie se poate realiza cu reducerea frecvenţei tactului; fig. arată
raportul consum - performanţă a 3 microcontrolere rulînd acelaşi task; 2
microcontrolere sunt standard, cu ciclu de 12 stări, iar al 3 – lea este
performant, avînd doar 4 stări/ ciclu; măsurătorile indică o creştere a
performanţei la microcontrolerul cu 4 stări/ ciclu cu aprox. 100%;

15
Sisteme Încorporate
n Integrarea de periferice:
q Permite minimizarea tranziţiilor semnalelor externe;
q Puterea de comutare a unei linii externe este:
PSW = CV2/ T
unde C este capacitatea intrării porţii receptoare şi a traseului între emităţor
şi receptor iar T este perioada semnalului; o valoare tipică a capacităţii
intrării unei porţi CMOS este de 10 pF; este dificil de calculat puterea de
comutare dar este evident că orice tranziţie pe o linie externă consumă
putere;
q Integrarea de periferice reduce consumul; nucleul perifericului va
consuma la fel indiferent dacă este intern sau extern microcontrolerului
dar va fi economisită puterea necesară comutărilor pe liniile externe.
n Memoria internă:
q Reducerea consumului este dată de eliminarea tranziţiilor externe şi
eliminarea circuitelor necesare memoriei externe (registru pentru
demultiplexare);

16
Sisteme Încorporate
q Fig. arată raportul consum – frecvenţă cu memorie externă respectiv
internă, de program; se foloseşte microcontrolerul DS87C520; memoria
externă este un circuit 27C256 iar registrul este 74AC573; se observă o
economisire de aprox. 30 mA la frecvenţa clasică de 11.059 MHz;

17
Sisteme Încorporate
q Fig. arată raportul consum – frecvenţă cu memorie externă respectiv
internă, de date; se foloseşte microcontrolerul DS87C520; memoria
externă este un circuit DS2064 iar registrul este 74AC573; ambele
microcontrolere execută acelaşi program constând în scrieri şi citiri în/
din memoria de date; se observă o economisire de aprox. 12 mA la
frecvenţa clasică de 11.059 MHz;

18
Sisteme Încorporate
n Tactul:
q Poate fi generat de un cuarţ exterior conectat la un oscilator –
amplificator intern sau de un oscilator extern;
q Dacă se foloseşte oscilator extern, forma semnalului va afecta
consumul;
q Intrarea de tact a microcontrolerului foloseşte 2 amplificatoare interne
complementare; în timpul tranziţiei cele 2 amplificatoare vor fi deschise
simultan creind o cale de curent de rezistenţă mică; durata acestui
moment va depinde de forma semnalului: dacă semnalul are o pantă
mică, de ex. un semnal dreptunghiular, durata va fi mică şi consumul
suplimentar va fi redus dar dacă semnalul are o pantă mare, de ex.
semnal sinusoidal sau triunghiular, durata va fi mare iar consumul
suplimentar creşte;
q Există microcontrolere care nu necesită cuarţ sau oscilator extern;
generează tactul intern cu valori uzuale de 2 – 4 MHz; nu oferă
stabilitatea tactului comandat de un cuarţ dar au consum foarte redus
atât în funcţionare cât şi în momentul iniţial, al alimentării.

19
Sisteme Încorporate
q Fig. arată raportul consum – frecvenţă pentru 3 tipuri de semnale:
triunghiular, sinusoidal şi dreptunghiular; au fost utilizate 4
microcontrolere cu nucleu standard şi de mare viteză; semnalul de tact
dreptunghiular va duce la un cîştig de aprox. 1 mA faţă de semnalul de
tact triunghiular;

20
Sisteme Încorporate

n Îmbunătăţirea modului Stop:


q Este modul cu consum minim: tactul se opreşte; ieşirea din acest mod
se face cu Reset sau întreruperi;
q Un dezavantaj este dat de timpul de intrare în regim normal a cuarţului;
timpul este de aprox. 3 – 12 ms depinzând de cristal şi de
amplificatoarele la care este conectat; în acest timp există consum dar
microcontrolerul nu poate executa nici o operaţie;
q Dezavantajul nu apare la generatorul de tact intern;
q Consumul inutil devine important dacă intrarea/ ieşirea în/ din modul
Stop se face frecvent; dacă taskul este scurt (< 5 ms) atunci consumul
inutil devine mai mare decît consumul determinat de execuţia însăşi a
taskului;
q Fig. arată diferenţele de consum în 2 cazuri: cu generator extern şi cu
generator intern; în al 2 – lea caz microcontrolerul va începe execuţia
imediat după semnalul care provoacă ieşirea din modul Stop; în primul
caz este necesar un timp pentru intrarea în regim normal a cuarţului; în
ambele cazuri a fost rulată o rutină de aprox. 4 ms cu un tact de 2 MHz;

21
Sisteme Încorporate

22
Sisteme Încorporate
q În unele aplicaţii este necesară cunoaşterea momentului cînd cuarţul
este stabilizat; există microcontrolere care au un indicator, în un SFR,
care arată stabilizarea tactului; acesta poate fi citit prin program;
q O altă metodă pentru a îmbunătăţi eficienţa modului Stop este utilizarea
întreruperii în locul Reset – ului; microcontrolerul va putea continua
execuţia cu instrucţiunea următoare celeia care a instalat modul Stop
eliminând pornirea prin intermediul unui vector de reset; aceasta va
elimina şi necesitatea de a determina cauza reset – ului;
n Modul Idle:
q Unitatea centrală se opreşte dar periferia internă funcţionează în
continuare;
q Contoarele pot fi folosite pentru a scoate microcontrolerul din modul Idle;
întrucât au 16 biţi durata maximă va fi de 31 ms; dacă este necesară o
perioadă mai mare vor trebui contorizate durate de câte 31 ms;
q O altă soluţie o constituie un RTC;
q Se poate folosi şi contorul de watchdog (acolo unde există); acesta
acoperă o durată mai mare (de ex. 4,2 s la 16 MHz);

23
Sisteme Încorporate

q Dacă, de ex., este necesară scoaterea microcontrolerului din modul Idle


la fiecare 3 s atunci operaţia va fi realizată o singură dată utilizînd
contorul de watchdog dar de 96 ori utilizînd contoarele interne;
n Modurile de management a puterii:
q Înseamnă reducerea frecvenţei interne a microcontrolerului cu constanta
64 (MMP1) sau 1024 (MMP2); astfel frecvenţa circuitului (performanţa)
poate fi adaptată la cerinţele aplicaţiei;
q La 80C51 clasic operarea era de tipul “totul sau nimic”, astfel toată
performanţa circuitului era activată chiar dacă aplicaţia nu o necesita;
q Fig. arată raportul curent – frecvenţă pentru modurile normal, Idle,
MMP1 şi MMP2:

24
Sisteme Încorporate
n Utilizarea întreruperilor cu MMP:
q Consecinţe ale divizării tactului intern:
n Creşterea latenţei întreruperilor,
n Riscul ca interfaţa serială să nu mai poată respecta valorile standard de
viteză;
q Soluţia: o trăsătură prin care microcontrolerul să reintre automat în
modul normal la apariţia unei cereri de întrerupere sau a unei activităţi la
portul serial;
q La 80C51 clasic singura posibilitate de transfer serial “low power” era
modul Idle; modurile MMP1 şi 2, cu facilitatea de reintrare automată în
modul normal de operare la apariţia unei activităţi pe portul serial, oferă
o variantă având consum şi mai redus.
n Îmbunătăţirea transferurilor în rafală:
q Există multe aplicaţii de tipul: microcontrolerul stă mult timp în modul
Stop, este scos, execută o operaţie, după care revine în modul Stop;
q Creşterea frecvenţei de lucru în modul activ poate duce la scăderea
consumului întrucît acesta este determinat de produsul I x t;

25
Sisteme Încorporate
q Revenind la ultima figură, se consideră că microcontrolerul DS87C520
este scos din Stop, execută operaţii durînd 500 cicluri maşină şi reintră
în modul Stop; tabelul următor analizează funcţionarea în 2 cazuri, la 10
MHz şi 30 MHz:

Frecvenţa Perioada Numărul Timpul ICC Produsul


tactului ciclului cerut de total (din curent x
maşină cicluri ultima timp
maşină figură)
10 MHz 400 ns 500 200 s 12.41 mA 2.48 As

30 MHz 133 ns 500 66.5 s 34.66 mA 2.30 As

26
Sisteme Încorporate
n Execuţie rapidă şi aşteptare:
q Există aplicaţii la care minimizarea consumului se obţine combinând mai
multe soluţii;
q De ex. citirea unui senzor de temperatură DS1620; acesta trebuie
programat, apoi i se trimite o comandă de start conversie după care
microcontrolerul trebuie să aştepte aprox. 1 s pentru încheierea
conversiei şi apoi va citi informaţia, în mod serial;
q Un microcontroler 80C51 standard execută programarea şi start
conversie şi intră în modul Idle; pentru a asigura trecerea a 1 s, utilizînd
contoarele interne, pe 16 biţi, va trebui scos din Idle de aprox. 32 ori,
rezultând consum inutil;
q Un microcontroler DS87C520, cu acelaşi nucleu dar de mare viteză, va
intra în un MMP şi va fi scos de acolo cu o întrerupere care va reinstala,
automat, modul normal de lucru;
q Consumul poate fi minimizat în continuare observând că nu sunt
necesare operaţii foarte precise pentru că transferul cu DS1620 se face
sincron; ca urmare se poate folosi un generator de tact intern;

27
Sisteme Încorporate
q Fig. compară consumul în cazul unui 80C51 clasic care intră în modul
Idle după lansarea comenzii de start conversie şi în cazul unui 80C51
performant, cu MMP şi generator de tact intern; eliminarea timpului
necesar pentru stabilizarea cuarţului, în al 2 – lea caz, permite intrarea
mai rapidă în modul Stop, minimizînd şi mai mult consumul.

28
Sisteme Încorporate
n Concluzii referitoare la reducerea consumului:
q Un procesor performant permite:
n Obţinerea aceleiaşi performanţe cu o frecvenţă mai mică a tactului sau
n Obţinerea de performanţă superioară cu aceeaşi frecventă a tactului;
q Un procesor performant include cât mai multe module pentru a evita
tranziţiile pe liniile externe;
q Un procesor performant include cât mai multă memorie pentru a evita
tranziţiile pe liniile externe; accentul trebuie pus pe includerea a cât mai
multă memorie de program;
q Introducerea MMP permite reducerea consumului chiar şi faţă de modul
Idle; procesorul performant, cu aceste moduri, poate opera la frecvenţa
cerută de aplicaţie, spre deosebire de procesorul standard la care orice
operare se face cu aceeaşi frecvenţă a tactului indiferent dacă este
potrivită sau prea mare pentru cerinţele aplicaţiei; astfel se evită risipa
de consum;
q Pot fi combinate diverse soluţii, de ex. modurile MMP cu modul Stop,
asigurînd o minimizare şi mai accentuată a consumului.

29
Sisteme Încorporate

Curs 11

1
Sisteme Încorporate

7. Aplicaţii
7.1. Comanda unor elemente de vizualizare și execuție
n Comanda unui modul de afişare cu segmente, cu 4 ranguri
q Soluţia nemultiplexată:

2
Sisteme Încorporate
q Programe:
;initializare
MOV P1,#00
MOV P3,#00
;stingerea tuturor afisajelor
MOV P1,#0FFH
SET P3.0
CLR P3.0
SET P3.1
CLR P3.1
SET P3.2
CLR P3.2
SET P3.3
CLR P3.3
;aprinderea cifrei 1 pe toate rangurile
MOV P1,#0F9H

3
Sisteme Încorporate
q Soluţia multiplexată:

4
Sisteme Încorporate
q Programe:
;initializare
MOV P1,#00
MOV P3,#0FFH
;aprinderea cifrei 8 pe primul rang
MOV P1,#80H
CLR P3.0
;aprinderea cifrei 8 pe al 2 - lea rang
MOV P1,#80H
CLR P3.1
;aprinderea cifrei 8 pe al 3 - lea rang
MOV P1,#80H
CLR P3.2
;aprinderea cifrei 8 pe al 4 - lea rang
MOV P1,#80H
CLR P3.3

5
Sisteme Încorporate
n Citirea unui comutator
q Schema:

q Cod:
n Varianta a:
JNB P1.0,APASAT; salt daca este apasat
n Varianta b:
JNB P1.0,APASAT; salt daca este apasat
.............................
JNB P1.1,NEAPASAT; salt daca nu este apasat

6
Sisteme Încorporate
n Comanda motoarelor pas cu pas
q Motorul pas cu pas
n Sunt motoare digitale;
n Aplicaţii: acolo unde este necesară poziţionare precisă: imprimante, interfeţe
de bandă, disc, roboţi etc.
n Rotirea motorului pas cu pas:
q În forma sa simplă, este alcătuit din un rotor, magnet permanent, şi un stator, 2
perechi de bobine; rotorul se aliniază în dreptul perechii de bobine prin care trece
curent; schimbând perechea de bobine energizată, rotorul se roteşte;
q Rotirea rotorului este determinată de interacţiunea dintre câmpul magnetic al rotorului
şi cel al perechii de bobine energizate; direcţia curentului determină polaritatea
câmpului magnetic al statorului;
q Fig. arată mişcarea rotorului prin energizarea perechilor de bobine: C1 – C2, C3 –
C4, C3 – C4 în sens invers şi C1 – C2 în sens invers;
q Motorul se poate mişca şi cu jumătăţi de pas; la un stator cu 4 bobine o jumătate de
pas înseamnă 450;
q Jumătăţile de pas se realizează prin energizarea perechilor de bobine ca şi la paşii
întregi + energizarea simultană a 2 perechi de bobine alăturate; câmpul magnetic
rezultant va stabili poziţia rotorului;
q Paşii: 0.720 – 900; valorile uzuale: 1.80, 7.50, 900.

7
Sisteme Încorporate
n Funcţionarea cu paşi întregi:

8
Sisteme Încorporate

9
Sisteme Încorporate
n Funcţionarea cu jumătăţi de paşi:

10
Sisteme Încorporate
n Motorul real:
q Mai multe perechi atât pe stator cât şi pe rotor;
q Exemplu:

§ Pasul stabilit de stator este de 450; pasul stabilit de rotor este de 600; pasul final va fi: 600 –
450 = 150.

11
Sisteme Încorporate
q Comanda motorului pas cu pas
n Presupune aplicarea de tensiuni la perechi de bobine după o anumită
secvenţă; secvenţa stabileşte sensul de rotaţie;
n Schema: tensiunea, curentul, secvenţa şi o întîrziere între paşi;

12
Sisteme Încorporate
q Comanda a 2 motoare pas cu pas, cu 200 paşi/ rotaţie;
n Schema:

13
Sisteme Încorporate
n Porturile au fost plasate în spaţiul de memorie; se consideră că registrul
primului motor are adresa E000H iar registrului celui de – al 2 – lea motor are
adresa E200H;
n Motoarele se alimentează la +12 V iar impulsurile de comandă trebuie să aibă
aceeaşi amplitudine; au fost utilizate circuite amplificatoare de putere L293D;
n Configuraţiile care alcătuiesc secvenţa de rotire a unui motor sunt înscrise în
câte un registru 74LS373; acestea se obţin din documentaţia tehnică a
motorului pas cu pas; de exemplu, pentru o rotire cu 4 paşi, este necesar ca
la intrările circuitului L293D să existe secvenţa:

n Programul 1 comandă rotirea motoarelor în acelaşi sens;


n Programul 2 comandă rotirea motoarelor în sens contrar;
n Numărul de paşi este programabil ca parametru al unei instrucţiuni;

14
Sisteme Încorporate
n Programul 1:
org 0h
jmp start
secventa1: db 17,18,36,40 ;secventa pentru rotatia inainte
secventa2: db 40,36,18,17 ;secventa pentru rotatia inapoi
; D5 D4 D3 D2 D1 D0 - la port
;secventa1: Inh2 Inh1 D3 D2 D1 D0 in zecimal
; 0 1 0 0 0 1 17
; 0 1 0 0 1 0 18
; 1 0 0 1 0 0 36
; 1 0 1 0 0 0 40
;întîrzierea între paşi – trebuie sa fie mai mare ca o valoare minima
;dependenta de motor
delay: mov r2,#08h
doi: mov r1,#00h
unu: djnz r1,unu
djnz r2,doi
ret

15
Sisteme Încorporate
start: mov sp,#60h
mov r3,#00h
reia: mov r0,#00h
cont: mov dptr,#secventa1 ;arata secventa ce se va executa
mov a,dpl ;se alege pasul din secventa
add a,r0
mov dpl,a
mov a,#0
movc a,@a+dptr ;valoarea ce corespunde pasului va fi in registrul a
mov dptr,#0e000h ;valoarea din a este trimisa la registrul primului motor
movx @dptr,a
mov dptr,#0e200h ;valoarea din a este trimisa la registrul motorului 2
movx @dptr,a
call delay ;intirzierea intre pasi
mov a,r0 ;se pregateste urmatorul pas din secventa
inc a
mov r0,a

16
Sisteme Încorporate
;se verifica daca s – a executat un grup de 4 pasi
subb a,#4
jnz cont
;se numara grupele de 4 pasi
mov a,r3
inc a
mov r3,a
subb a,#50; numarul de pasi este 4 x valoarea de aici, motor cu 200 pasi/ rot.
jnz reia
jmp $

end

17
Sisteme Încorporate
n Programul 2:
org 0h
jmp start
secventa1: db 17,18,36,40 ;secventa pentru rotatia inainte
secventa2: db 40,36,18,17 ;secventa pentru rotatia inapoi
;intirzierea între pasi
delay: mov r2,#40h
doi: mov r1,#0h
unu: djnz r1,unu
djnz r2,doi
ret

pas: mov a,dpl ; se selecteaza pasul din secventa


add a,r0
mov dpl,a
mov a,#0
movc a,@a+dptr ;registrul a memoreaza valoarea pasului
ret

18
Sisteme Încorporate
start: mov sp,#60h
mov r3,#00h
reia: mov r0,#00h
cont: mov dptr,#secventa1 ;rotatia inainte
call pas
mov dptr,#0e000h ;valoarea din a este trimisa la registrul primului motor
movx @dptr,a
mov dptr,#secventa2 ;rotatia inapoi
call pas
mov dptr,#0e200h ;valoarea din a este trimisa la registrul motorului 2
movx @dptr,a

call delay ;intirzierea intre pasi

mov a,r0 ;se pregateste urmatorul pas din secventa


inc a
mov r0,a

19
Sisteme Încorporate
;se verifica daca s – a executat un grup de 4 pasi
subb a,#4
jnz cont
;se numara grupele de 4 pasi
mov a,r3
inc a
mov r3,a
subb a,#50d;numarul de pasi este 4 x valoarea de aici, motor cu 200 pasi/ rot.
jnz reia
jmp $
end

20
Sisteme Încorporate
n Generare de PWM (“Pulse Width Modulated”)
q Se foloseşte la comanda motoarelor de curent continuu;
q Se poate genera PWM prin program sau cu resurse specializate;
q Programul 1: generare de PWM prin program, cu rezoluţia de 8 biţi; primeşte ca
parametri durata, dur şi perioada, per, a semnalului care trebuie generat;
dur equ 40h
per equ 80h
org 0a000h
mov r0,#0
clr c
mov a,#per
mov r1,#dur
subb a,r1
mov r2,a
reia: set p1.1
etic1: djnz r1,etic1
jmp cont ;asigura durata egala pe cele 2 ramuri

21
Sisteme Încorporate
cont: clr p1.1
etic0: djnz r2,etic0
jmp reia

end
q Programul 2: generare de PWM prin program, cu rezoluţia de 16 biţi;
parametrii sunt pe 16 biţi;
durl equ 00h
durh equ 40h
perl equ 00h
perh equ 80h
org 0a000h
mov r0,#0
clr c
mov r0,#durl
mov r1,#durh
;rutina de scadere pe 16 biti
mov a,#perl
mov b,#durl

22
Sisteme Încorporate
subb a,b
mov r2,a
mov a,#perh
mov b,#durh
subb a,b
mov r3,a
reia: set p1.1
etic1: djnz r0,etic1
djnz r1,etic1
jmp cont ;asigura durata egala pe cele 2 ramuri
cont: clr p1.1
etic0: djnz r2,etic0
djnz r3,etic0
jmp reia
end
q P1.1 este ieşirea prin care se generează semnalul cu durată modulată;

23
Sisteme Încorporate
q Programul 3: generare de PWM fără resurse specializate (prin program),
cu timpul măsurat prin întreruperi;
;programul genereaza pwm prin intreruperi de la timer0, cu rezolutia de 16 biti
durl equ 0h
durh equ 40h
ien0 equ 0a8h
ip0 equ 0b8h

org 0a000h
mov r0,#0
clr c
;activare sistem de intreruperi
mov ien0,#82h
mov ip0,#02h
;programare tmod fara a afecta timer1
mov a,tmod
setb acc.0
clr acc.1
clr acc.2
clr acc.3
mov tmod,a

24
Sisteme Încorporate

;se calculeaza diferenta 0ffffh - durata


mov a,#0ffh
subb a,#durl
mov r0,a
mov a,#0ffh
subb a,#durh
mov r1,a
;se incarca timer0 si se porneste numararea
mov tl0,#durl
mov th0,#durh
setb tr0
jmp $

org 000bh
clr tf0 ; anulare indicator
clr tr0 ; oprire numarare
mov c,p1.1
jc ramura0 ;ramificare

25
Sisteme Încorporate
mov tl0,#durl ;ramura1
mov th0,#durh
setb p1.1
setb tr0
reti
ramura0: mov tl0,r0
mov th0,r1
clr p1.1
setb tr0
reti

end

26
Sisteme Încorporate
q Programul 4: generare de PWM cu resurse specializate; sunt
implementate la unele microcontrolere din familie, de ex. 8xC552:
;programul comanda direct iesirile pwm
pwmp equ 0feh
pwm0 equ 0fch
pwm1 equ 0fdh

org 0a000h

mov pwmp,#0bfh
mov pwm0,#0f0h
mov pwm1,#0f0h
jmp $

end

27
Sisteme Încorporate
n Comanda matricilor de LED – uri
q Matricea de LED – uri
n Structură matriceală: 5 x 7,
5 x 8, 8 x 8 etc.; rezoluţia...
n Culori: roşu, verde, galben,
bicolor;
n Catozii (CL) pe linii:

28
Sisteme Încorporate

n Anozii pe linii (AL):

29
Sisteme Încorporate
q Comanda matricilor de LED – uri:
n Sunt necesare 2 porturi paralele/ matrice;
n Se scanează câte o linie sau câte o coloană;
n Mai multe matrici: mai multe perechi de porturi sau multiplexare;
q Driver – ul MAX6952:
n Poate comanda 4 module CL 5 x 7 monocolor sau 2 module similare bicolor;
n Mod normal, shutdown, low – power, test şi facilitate de blinking;
n Generator ROM de 104 caractere în format Arial şi RAM de 24 caractere
utilizator care pot fi programate; se pierd la căderea tensiunii de alimentare;
n Schema internă:

30
Sisteme Încorporate
n Terminalele:

31
Sisteme Încorporate
n Conectarea a 4 module monocolor:

32
Sisteme Încorporate
n Conectarea a 2 module bicolor:

n Registrele interne:
q Digit Registers: 2 registre (octeţi) pentru fiecare digit: unul în planul P0, unul în planul
P1; nu controlează direct led – urile ci adresează generatorul de caractere; rangurile
D0 – D6 selectează caracterul iar rangul D7 permite afişarea directă sau inversată;
dacă este activată opţiunea blinking atunci se folosesc ambii octeţi iar în caz contrar
doar octetul din P0;
q Configuration Register: validează blinking, stabileşte rata, iniţializează numărătorul
pentru blinking, instalează modul shutdown sau normal;
q Intensity Registers: 4 PWM – uri pentru comanda individuală a intensităţii iluminării;
q Scan – Limit Register: stabileşte cîte module monocolor sunt comandate: 2 sau 4; 1
modul bicolor = 2 module monocolor;
q Display Test Register: instalează modul test, toate led – urile sunt aprinse;
q User – Defined Font Register: registru pentru scrierea şi citirea memoriei RAM pentru
caracterele utilizator; pentru cele 24 caractere trebuiesc 120 configuraţii pe cîte 7 biţi;
pot fi depuse în memorie secvenţial sau prin font address pointer aflate la adrese
stabilite;

33
Sisteme Încorporate
n Blinking:
q Prin alternarea celor 2 octeţi/ matrice aflaţi în planurile P0 şi P1; se pot alterna 2
caractere sau 1 caracter şi caracterul blank;
q Poate fi activat sau dezactivat, rata poate fi programată;
q Dacă sunt comandate mai multe module simultan atunci este necsară sincronizarea
operaţiei;
q Ieşirea Blink este 1 în perioada P0 şi 0 în perioada P1; poate fi folosită ca cerere de
întrerupere pentru a schimba datele sau dacă frecvenţa semnalului la intrarea oSC
este stabişită corespunzător, poate număra secunde;
n Comanda a 2 module cu un procesor HCS12:
q Prin interfaţa SPI, conectare daisy – chain, sincronizarea blinking prin comanda
simultană a intrărilor /CS:

34
Sisteme încorporate

Curs 12

1
Sisteme încorporate

7.2. Aplicaţii în industria automobilelor


n Ponderea semiconductoarelor din automotive în piața
semiconductoarelor:

n Ponderea pieței semiconductoarelor în piața automotive:


q Semiconductoare: 25,39 miliarde $ în 2012 → 34,4 miliarde $ în 2017;
q Automobile: 84,24 milioane unități în 2012 → 97,31 mil. unit. în 2017;
q Tendințe: semiconductoare: 34,63 miliarde $ în 2017 → 92,96 miliarde $
în 2023;

2
Sisteme încorporate
n Piaţa pentru software – ul din automobile:

q www.statista.com

3
Sisteme încorporate
n Ponderea microcontrolerelor:
q 5.83 miliarde $ în 2006,
q 9,8 miliarde $ în 2016 din care 3,68 miliarde $ ptr. microcontrolere pe 32
biți;
q 18,8 miliarde $ în 2024 din care 7,86 miliarde $ ptr. microcontrolere pe
32 biți;

n Electronica din automobile se poate împărţi în 4 segmente:


q Putere şi siguranţă:
n Managementul motorului;
n Suspensia electronică;
n Sistemul de frânare;
n Direcţia;
n Airbags – urile;
n Cutia de viteze;
n Drive by Wire;

4
Sisteme încorporate
q Comfort şi control:
n Instrumentaţia de bord;
n Luminile;
n Scaunele;
n Clima;
n Deschiderea/ închiderea maşinii;
n Sistemul de alarmă;
n Controlul geamurilor;
n Recunoaşterea vocii;
q Asistarea şoferului:
n Vizibilitatea nocturnă;
n Pilotul automat;
n Asistarea parcării şi mersului înapoi;
n Evitarea coliziunilor;
n Monitorizarea presiunii pneurilor;
n Lane Departure Warning;
n Heads Up Display;

5
Sisteme încorporate
q Ambient (“infotainment”) şi comunicaţii:
n Navigare/ GPS;
n Sisteme multimedia;
n Sistemul audio;
n Internet;
n Ambientul pasagerilor din spate;
n Senzori:
q Cantitatea de combustibil;
q Viteza de curgere a combustibilului;
q Presiunea uleiului;
q Temperatura lichidului de răcire;
q Temperatura de afară şi din habitaclu;
q De distanţă;
q Greutatea pasagerilor;
q Presiunea pneurilor;
q Umiditatea şi lumina externe;

6
Sisteme încorporate
n Exemple de senzori:
q Pentru cantitatea de combustibil:

q Pentru măsurarea presiunii uleiului:

7
Sisteme încorporate
n Comunicarea în automobile între noduri (ECU)
q Până la nivelul anilor 1990 era de tip punct la punct; efecte:
n Număr mare de fire (lungimea de ordinul km);
n Greutate mare a firelor (de ex. 100 kg);
n Numărul de canale de comunicare este de n2 unde n este nr. de noduri;
n Număr mare de conectori;
n întârzieri mari în transmiterea informaţiilor; întârzierile au fost din ce în ce mai
mari o dată cu creşterea nr. de noduri şi a nr. de semnale (de ex. o maşină de
categoria lux din anii 2004 conţinea minim 70 noduri şi se transferau 2500
semnale);
n Depanare dificilă;
n Cost mare;
q Alternativa: introducerea de reţele seriale; avantaje:
n Eliminarea dezavantajelor de mai sus;
n Informaţiile sunt comune şi pot fi accesate de mai multe noduri;
n Flexibilitate: noi module pot fi ataşate la reţea doar cu modificarea şi
completarea software – ului;

8
Sisteme încorporate
q Soluţia centralizată:

9
Sisteme încorporate
q Soluţia descentralizată:

10
Sisteme încorporate
n Magistrala CAN: caracteristici generale:
q A fost proiectată de Robert BOSCH, în 1980, pentru implementarea de
reţele în automobile; în 1991 a apărut CAN2.0;
q Este folosită pentru electronica din corpul automobilului şi pentru
controlul în timp real al motorului, sistemului de direcţie, rulare, frânare
etc.
q Caracteristici:
n Prioritizare a mesajelor;
n Garantare a timpilor de latenţă;
n Flexibilitate în configurare;
n Recepţie multiplă cu sincronizare de timp;
n Multimaster;
n Detectare de erori şi semnalizare a acestora;
n Retransmisie automată a mesajelor corupte atunci când magistrala devine
liberă;
n Distincţie între erori temporare şi defecţiuni permanente ale nodurilor şi oprire
autonomă a nodurilor defecte;

11
Sisteme încorporate
q Rata de transfer maximă: 1 Mbit/sec la o distanţă max. de 40 m;
q Datele sunt transmise în cadre; un cadru include şi un identificator a
cărui valoare numerică determină prioritatea cadrului; lungimea
identificatorului stabileşte versiunea:
n CAN 2.0A (CAN standard) cu identificator de 11 biţi;
n CAN 2.0B (CAN extins) cu identificator de 29 biţi.
n Structura pe nivele a unui nod CAN:

12
Sisteme încorporate
n Magistrala CAN este diferenţială:

13
Sisteme încorporate
n Reprezentarea biţilor pe linie: prin metoda NRZ (Non Return to
Zero):
q 1 logic înseamnă o tranziţie a liniei;
q 0 logic înseamnă lipsa tranziţiei;
q După 5 biţi de valoare 0 este inserat un bit complementar, pentru
resincronizare;
n CAN este o magistrală de tip broadcast;
n Oricare nod CAN poate începe transmisia dacă magistrala este
liberă;
n Dacă încep 2 noduri simultan, are loc arbitrarea, la nivelul Header –
ului cadrelor:
q Nodul care câştigă arbitrarea continuă transmisia;
q Nodul care pierde arbitrarea aşteaptă pînă la eliberarea magistralei;
q Arbitrarea are loc la nivel de bit prin operaţia AND realizată de mediul
fizic; există biţi dominanţi şi biţi recesivi; atunci când un nod care
transmite un bit recesiv observă un bit dominant, va opri transmisia;

14
Sisteme încorporate
q Fig. următoare arată arbitrarea:

q Nodul transmităţor monitorizează linia;


q Semnalul trebuie să se propage până la cel mai depărtat nod şi să
revină la nodul transmiţător înaintea deciziei, ca urmare durata unui bit
trebuie să fie cel puţin dublă faţă de întârziere; rezultă limitări: 1
Mbit/sec. la max. 40 m, 250 Kbit/sec. la max. 250 m etc.

15
Sisteme încorporate
n Există 4 tipuri de cadre CAN 2.0A: Data, Remote, Error şi Overload;
q Structura unui cadru de date:

16
Sisteme încorporate
q Câmpul Identifier este alcătuit din:
n Identificatorul cadrului:
q 11 biţi pentru versiunea Standard;
q 29 biţi pentru versiunea Extinsă;
n Bitul RTR (Remote Transmission Request): 0 înseamnă cadru de date iar 1
înseamnă cerere pentru cadru date;
n DLC (Data Length Code): indică numărul de octeţi ai câmpului de date;
q Câmpul Data Field este câmpul de date şi are lungimea maximă de 8
octeţi:
q Câmpul CRC (Cyclic Redundancy Check): asigură integritatea
transferului;
q Câmpul Ack: este singurul mecanism prin care transmiţătorul află dacă
data a fost recepţionată (nu neapărat de destinatar);
q Câmpul EOF încheie cadrul;
q Câmpul de date are maxim 8 octeţi de date iar cadrul poate avea maxim
135 biţi, cuprinzînd toţi biţii suplimentari inclusiv biţii inseraţi datorită
metodei de reprezentare NRZ;

17
Sisteme încorporate
q Cadrul Remote: este transmis de un nod CAN receptor pentru a cere
date de la nodul cu identificatorul din cadru;

q Cadrul Error: anunţă toate nodurile despre apariţia unei erori pe


magistrală; un nod transmiţător va retransmite cadrul de date la
sesizarea cadrului de eroare;

q Cadrul Overload: este transmis de un nod CAN ocupat pentru a cere


timp între un cadru şi următorul:

18
Sisteme încorporate
n Tipuri de controlere CAN:
q Basic CAN: ieftin, cu tampoane limitate şi mecanism de filtrare a
mesajelor primite limitat;
q Full CAN: controler scump, performant cu minim 8 tampoane de
recepţie/ transmisie;
q Standard CAN: transferă doar mesaje cu id pe 11 biţi; există 2 tipuri:
n Care activează indicator de eroare la recepţia unui mesaj cu id pe 29 biţi;
n Care doar ignoră un mesaj cu id pe 29 biţi, fără a indica eroare;
q Extended CAN: transferă atât mesaje cu id pe 11 biţi cât şi mesaje cu id
pe 29 biţi;
q Time triggered CAN (TTCAN): ordonează mesajele CAN pe baza
sincronizării în timp sau cu evenimente;
n Întrucât specificaţiile CAN nu se referă la nivelul aplicaţie, nu au fost
abordate probleme ca: transferul de blocuri de date, controlul
fluxului, adresarea nodurilor etc.; la acest nivel există mai multe
realizări: CANopen, MilCAN, FlexCAN etc.

19
Sisteme încorporate

n Tratarea erorilor: există 5 tipuri de erori:


q Bit error: orice transmiţător CAN asigură şi monitorizarea liniei; eroarea
este detectată dacă bitul primit diferă de cel emis; excepţii sunt în timpul
arbitrării şi al acceptării;
q Stuff error: atunci când sunt detectaţi 6 biţi cu acelaşi nivel;
q CRC error: atunci când câmpul CRC transmis diferă de cel calculat de
receptor;
q Form error: atunci când un câmp cu structură fixă conţine biţi ilegali;
q Acknowledgment error: atunci când câmpul de acceptare nu are forma
cerută;

n Un nod CAN care a detectat o eroare va activa un indicator de


eroare;

20
Sisteme încorporate
n Un nod CAN include 2 numărătoare pentru erori:
q Transmit error count (TEC) şi
q Receive error count (REC);
q Numărătoarele sunt incrementate la detecţia erorilor, în conformitate cu
anumite reguli; de exemplu:
n Un nod receptor va incrementa REC dacă detectează o eroare, sau
n Un nod transmiţător va incrementa TEC dacă activează un indicator de
eroare;
q Numărătoarele sunt decrementate în conformitate cu anumite reguli; de
exemplu la recepţia reuşită a unui mesaj;
q Dacă valoarea din numărător este mare (de ex. 96) atunci se consideră
existenţa unei defecţiuni permanente, de ex, la nivelul nodului sau la
nivelul mediului fizic de comunicare; un ex. de defecţiune permanentă
este defectarea oscilatorului unui nod transmiţător ceea ce va duce la
transmiterea continuă pe linie a unui bit dominant;
q CAN necesită mecanisme suplimentare de toleranţă la erori pentru a
putea fi utilizat la aplicaţii critice, de tipul drive by wire;

21
Sisteme încorporate
n Controlerul CAN Intel 82527
q Controler CAN pentru versiunea 2.0B şi, datorită compatibilităţii versiunii
B cu A, poate transfera şi mesaje conforme cu versiunea 2.0A;
q Poate transmite, recepţiona şi filtra mesaje;
q Poate fi configurat pentru conexiunea la procesoare cu diverse
magistrale de adrese/ date: 8 biţi şi multiplexate, 8 biţi şi nemultiplexate
şi 16 biţi şi multiplexate;
q Structura internă:

22
Sisteme încorporate

n Interfaţă cu un microcontroler cu nucleu 51, folosind magistrale


multiplexate de adrese/ date, pe 8 biţi:

23
Sisteme încorporate
n SJA1000: alt controler CAN;
n Microcontrolere cu interfaţă CAN: Atmel, Fujitsu, Philips etc.
q P8xC591: microcontroler pe 8 biţi, cu nucleu 51, cu interfaţă CAN 2.0B;

n Interfeţe CAN pentru PC:


q Port serial – CAN;
q Port USB – CAN;
q Interfaţă ISA – CAN.

24
Sisteme încorporate
7.3. Internet of Things (IoT)
n “A dynamic global network infrastructure with self-configuring
capabilities based on standard and interoperable communication
protocols where physical and virtual “things” have identities, physical
attributes, use intelligent interfaces and are seamlessly integrated
into the information network”, [O. Vermeșan, P. Freiss: Internet of
Things – From Research and Innovation to Market Deployment,
River Publishing House, 2014];
n “Internet of Things (IoT) is a concept and a paradigm that considers
pervasive presence in the environment of a variety of things/objects
that through wireless and wired connections and unique addressing
schemes are able to interact with each other and cooperate with
other things/objects to create new applications/services and reach
common goals”, [idem];
n “From anytime, anyplace connectivity for anyone, we will now have
connectivity for anything” (ITU Report, 2005);

25
Sisteme încorporate
n Conceptul 6A:

n IoT înseamnă conectarea de obiecte, produse şi suport pentru


conectare de servicii la Internet prin intermediul sistemelor
încorporate, senzorilor și actuatorilor;
n Completează suportul pentru “ubiquitous, pervasive and wearable
computing”;

26
Sisteme încorporate
n IoT interacționează cu IoS, IoP, IoE, IoM;
q IoT: Internet of Things; conectarea obiectelor şi produselor la Internet;
q IoS: Internet of Services; conectarea serviciilor la Internet;
q IoP: Internet of People; conectarea utilizatorilor prin diverse echipamente
q IoE: Internet of Energy: va asigura transferul unităţilor de energie;
q IoM: Internet of Media; procesare video adaptabilă la condiţiile de trafic
ale reţelei;
n Nr. echipamentelor legate la Internet:

27
Sisteme încorporate
n Domenii de aplicare:
q Smart cities:
n 2007: anul în care nr. oamenilor din mediul urban = rural;
n 2030: 60% din populația globului va locui în orașe;

n Interconectarea tuturor sistemelor + suport pentru populație pentru a accesa


informații;
n Aspecte de guvernanță și sociale;

28
Sisteme încorporate
q Smart homes and buildings:
n Pot exista diferențe între smart homes și smart buildings

29
Sisteme încorporate
q Smart energy and Smart grid:
n Integrează diferite surse de energie;
n Crează o infrastructură bidirecțională pentru transportul energiei;
n Minimizează consumul de energie;

30
Sisteme încorporate
q Smart transportation and mobility:
n Monitorizarea traseelor și transmiterea de alerte;
n Managementul traficului;
n V2X;

31
Sisteme încorporate
q Smart environment:
n Monitorizarea poluării aerului și a apei;
n Monitorizarea temperaturii și a umidității;
n Gestionarea deșeurilor;
n Detectarea incendiilor în păduri;
n Prevenirea avalanșelor;
n Detectarea radiațiilor;
n Detectarea gazelor;
n Detectarea iminenței alunecărilor de teren și a revărsărilor de ape;
n Monitorizarea ecosistemelor;
q Smart retail:
n Monitorizarea traseelor produselor;
n Aplicații pentru “intelligent shopping”;
n Gestionarea stocurilor;
q Smart health:
n Monitorizare a parametrilor fiziologici în scop medical sau sportiv; creare de
baze de date personale;
n Acces rapid la suport medical;
q Smart agriculture;

32
Sisteme încorporate
n Probleme:
q Scalabilitate
n Funcționalitățile de bază trebuie asigurate indiferent de numărul
echipamentelor care se conectează;
q Auto-organizare
n Echipamentele mobile se conectează temporar la rețea și trebuie să fie
gestionate la fel ca echipamentele permanente din sistem;
q Big data
n Numărul mare de senzori generează volume mari de date; acestea se vor
concentra la servere sau noduri centrale;
q Interpretarea datelor
n Datele transmise de senzori trebuie interpretate în contextul lor local;
q Interoperabilitatea
n Diversitatea mare de echipamente aduce și diferențe între posibilitățile de
achiziție date, procesare și comunicare; este necesară, însă, cooperarea și
comunicarea între ele;
q Detectarea automată de servicii
n Echipamentele nou conectate trebuie să poată detecta servicii utile; sunt
necesare soluții semantice pentru descrierea funcționalității lor;

33
Sisteme încorporate
q Software complex
n Crește complexitatea software-ului la nivelul rețelei și al serverelor întrucât
software-ul la nivelul obiectelor va dispune de resurse limitate (ex. senzori și
sisteme încorporate);
q Securitate și confidențialitate
n Pe lângă aspectele clasice de protecție din Internet, sunt necesare soluții și
pentru prevenirea comunicării cu alte obiecte, prevenirea interceptării sau
ascultării tranzacțiilor etc.
q Surse de energie
n Conectarea pe scară largă a senzorilor și echipamentelor mobile impune
gestionarea eficientă a resurselor de energie; există unii senzori (RFID pasivi)
care nu au nevoie de energie dar au o arie de acoperire mică și, în plus,
folosesc energia altor echipamente; economia de energie este f. importantă:
soluții la nivel de arhitectură, hardware (procesoare și transcievers low power)
și software (algoritmi energy aware pentru rutare, implementări eficiente ale
stivei TCP/IP);
q Comunicarea fără fir
n Tehnologiile GSM, Wi-Fi, Bluetooth au lățime de bandă suficientă dar și
consum mare;
n Tehnologiile ZigBee, 6LoWPAN, LoRaWAN au lățimi de bandă mai înguste
dar și consum mai mic;

34
Sisteme încorporate
n Tehnologii pentru IoT:
q Embedded systems;
q Smart sensors;
q Sensor networks;
q Communications;
q Nanoelectronics;
q Hardware;
q Software and algorithms;
q Discovery services;
q Knowledge aggregation;
q System integration;
q Security and privacy;
q Network management;
q Identification;
q Interoperability;
q Virtualization;
q Standardization;

35
Sisteme încorporate
n Tehnologii noi și IoT:
q Cloud computing
n Domenii complementare:
q IoT poate dispune de resurse nelimitate de procesare, memorare și comunicare
compensând resursele limitate ale obiectelor;
q Cloud se poate extinde în zona aplicațiilor de timp real;
n Cloud poate fi nivelul intermediar între obiecte și aplicații;
q Fog computing
n Se referă la platforme computaționale dense aflate la marginile cloud; se mai
numesc mini-cloud; se caracterizează prin: latență scăzută, localizare și
utilizarea rețelelor fără fir;
n IoT poate beneficia de resursele platformelor fog la viteze mai mari ca în
cloud;
q Big data
n Zilnic sunt generați 2,5 quintilion octeți pe Internet;
n Este necesară crearea de cadre pentru reprezentarea, descrierea,
interpretarea datelor venite de la resurse diferite, heterogene (fizice, sociale);
q Semantic technologies
n Suport pentru interoperabilitate, descoperirea serviciilor, virtualizare;

36
Sisteme încorporate
n Direcții de cercetare în IoT:

37
Sisteme încorporate
n Arhitectura IoT

38
Sisteme încorporate
q Alte reprezentări arhitecturale:

39
Sisteme încorporate
q Arhitectură de referință:

40
Sisteme încorporate
n Conectarea sistemelor încorporate la Internet:
q Prin conectare directă la Internet;
q Prin conectarea echipamente cu rol de poartă la Internet.
n În primul caz:
q Au aceleaşi poziţii şi ponderi ca sistemele mai mari (PC – urile);
q Soluţia cere scrierea unei stive TCP/ IP propri sau a unui subset al
acesteia precum şi rezolvarea conectării fizice la Internet;
q Soluţia este relativ ieftină, permite conectarea unor sisteme de
dimensiuni mici la Internet cu resurse limitate;
n În al 2 – lea caz:
q Sistemele cu microcontrolere sunt grupate, sub controlul unui calculator
cu rol de poartă la Internet;
q Acesta gestionează toate sistemele, răspunde la cererile lor, poate
asigura securitatea sistemelor, monitorizare şi evaluare automate pentru
sisteme şi chiar conexiuni multiple, la un moment dat;
q Sistemele cu microcontrolere pot comunica cu poarta utilizând diferite
standarde: RS 232, RS 485, I2C, wireless etc.

41
Sisteme încorporate
n Prima modalitate este cea mai răspândită;
n Cere implementarea protocolului Internet la nivelul sistemelor cu
microcontrolere;
n Protocolul Internet comparat cu modelul OSI:

n Nivelul Network access:


q Se ocupă de conectarea şi comunicarea nodului cu mediul;
q Soluţii răspândite: Ethernet, fără fir;
q Standardele IEEE 802.X controlează acest nivel, de ex. 802.3 pentru
Ethernet şi 802.11 pentru comunicarea fără fir;

42
Sisteme încorporate
n Nivelul Network/ routing:
q Se ocupă de rutarea mesajelor între diferite noduri;
q Principalul protocol la acest nivel este IP (“Internet Protocol”): asigură:
n Adresarea în reţea, prin adresele IP;
n Controale în vederea detectării de erori;
n Fragmentarea şi reordonarea pachetelor;
n Nivelul Transport/ service:
q Se ocupă de transferul de informaţii între 2 noduri;
q Protocolul TCP asigură transferul cu răspuns; stabileşte o conexiune virtuală
între cele 2 noduri, pe toată durata sesiunii de transfer;
q Protocolul UDP transferă doar pachete, ca blocuri individuale de informaţie şi
nu asigură răspuns;
n Nivelul Application:
q Oferă suportul pentru diferite operaţii: transfer de fişiere, e-mail-uri, emulare
de terminale etc.

43
Sisteme încorporate
n Implementarea Network access:
q Prin controlere;
q Prin microcontrolere;
n Controlere Internet: RTL8019S, CS8900, LAN91C96, LAN91C9111,
DP83840A, DP8390, Am79C874 etc.
q Alt exemplu: S-7600A:

44
Sisteme încorporate
q Conectarea la linie:

q Din punctul de vedere al programatorului transferul de date prin un


controler Internet este similar celui prin un controler UART:
n Este necesară programarea circuitului;
n La scriere, este încărcat tamponul circuitului, după care serializarea şi
transferul informaţiei au loc fără intervenţia procesorului;
n La citire, procesorul este anunţat, fie prin un semnal fie prin un rang în octetul
de stare, că tamponul de recepţie este plin;

45
Sisteme încorporate
q Conectarea unui controler Ethernet în spaţiul de memorie:

46
Sisteme încorporate
q Conectarea unui controler Ethernet în spaţiul de I/ E:

47
Sisteme încorporate
q Conectarea unui microcontroler la Internet, prin S-7600A:

48
Sisteme încorporate
n Microcontrolerul DS80C400:
q Microcontroler de reţea:
n Oferă suport hardware pentru conectare directă la mediul Ethernet;
n Include stivă TCP/ IP şi suportă adresare de tip IPv4 sau IPv6;
n Asigură maxim 32 conexiuni TCP simultane;
q Nucleu 8051, frecvenţă de 75 MHz şi spaţiu de memorie de 16 Mo;
q Suport pentru In – system programming;
q Include controler Ethernet 10/ 100 şi stivă TCP/ IP;
q Include interfaţă CAN 2.0B, 1 – Wire şi 3 interfeţe seriale;
q Include sistem de întreruperi cu 16 surse din care 6 sunt externe;
q Alte module periferice interne: Watchdog Timer, 4 contoare/ numărătoare
pe 16 biţi, tact intern programabil pentru comandă de modul IrDA,
detector pentru defectarea modulului de tact, 64 pini de I/E;
q Gestionare avansată a consumului:
n Alimentare la 3.3 V, nucleul la 1.8 V; poate lucra şi la 5 V;
n Moduri de lucru cu consum redus selectabile prin program;
n Anunţ a unei iminente căderi a tensiunii de alimentare;

49
Sisteme încorporate
n Nivelele Physical + Data Link (OSI) = Network access (Internet):

n Sarcinile nivelului Data Link:


q Gestionarea erorilor;
q Accesul la mediul de transfer;
q Adresarea: fiecare nod conectat la reţea are propria adresă fizică; nivelul
asigură ca o staţie să sesizeze existenţa altor staţii în reţea şi facilităţi
prin care o staţie să acceseze adresele altor staţii conectate la reţea;
q Transferul datelor: asigură ca datele transferate de la nivelele superioare
să ajungă la mediu iar datele sosite de la nivelul fizic să fie transferate
spre nivelele superioare după eliminarea header – ului, a tactului şi după
efectuarea primei verificări de erori;

50
Sisteme încorporate
q Dimensionarea datelor: asigură partiţionarea datelor în formate; dacă
datele de transmis sunt sub forma unui bloc de dimensiune mare, acest
nivel îl va partiţiona în blocuri de dimensiunea unui format, le va trimite la
nivelul fizic şi va fi răspunzător de reasamblarea formatelor în blocul
original, la recepţie;
n Subnivelul MAC din cadrul nivelului Data Link are sarcinile:
q Gestionează suprapunerile mai multor reţele care utilizează acelaşi
mediu: operaţia poate fi necesară în cazul transferurilor fără fir;
q Sprijină gestionarea locală a erorilor:
n Prin retransmisia formatelor;
n Prin transmiterea răspunsurilor de tip ACK;
q Controlează accesul la reţea: prin criptare şi parole;
q Adresare dinamică: în cazul suprapunerilor de reţele;
n Subnivelul LLC din cadrul nivelului Data Link se ocupă de transferul
datelor între nivele, gestionând transferul cu sau fără răspuns;
n Subnivelul PHY este răspunzător de conectarea fizică la mediu;

51
Sisteme încorporate

n Nivelul Network/ routing:


q Se ocupă cu rutarea mesajelor între diferite reţele locale;
q Se bazează pe conceptul de adresă de reţea unică pentru fiecare staţie
legată la mediu; adresa este alocată permanent sau la nivel de sesiune
de lucru;
q Protocol utilizat: IP;

n Nivelul Application:
q Telnet:
n stabileşte o cale între 2 staţii pentru comunicare directă (similară unei căi de
tip RS232);
n poate fi o soluţie pentru comunicarea PC – SI legat la Internet;
n caracterele acţionate la tastatura unei staţii pot ajunge direct la cealaltă staţie;
caracterele se transferă sub forma codului lor ASCII;

52
Sisteme încorporate
q E – mail:
n Asigură transferul unui mesaj între o sursă şi un destinatar;
n Calea este: staţia sursă – server – ul local al staţiei sursă – server – ul local al
staţiei destinaţie – staţia destinaţie; server – ele memorează temporar
mesajele;
n Pentru transmisia unui mesaj se foloseşte protocolul SMTP (“Simple Mail
Transfer Protocol”) sau protocolul POP3 (“Post Office Protocol 3”) iar pentru
recepţie, ştergere, enumerare, ordonare se foloseşte protocolul POP3; SMTP
este mai simplu, se recomandă în cazul SI;
q HTTP (“HyperText Transfer Protocol”):
n Este metoda de bază pentru transferarea de către un server web a paginilor,
imaginilor, sunetelor şi altor tipuri de fişiere;
n Comunicarea se face conform modelului client – server;
n Protocolul HTTP este folosit de browser – e pentru a accesa pagini memorate
în servere;
q FTP (“File Transfer Protocol”):
n Protocol pentru a transfera fişere între o sursă şi un destinatar;
n Cere deschiderea a 2 conexiuni TCP; nu se recomandă pentru SI din cauza
resurselor limitate.

53

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