Sunteți pe pagina 1din 46

PRINCIPALELE

CARACTERISTICI ALE
MICROCONTROLLERELOR

MICROCONTROLLER

Embedded Systems aplicaii cu microcontrolere:


aplicaii casnice de larg consum (de ex. cuptor cu microunde, main
de splat, automat de cafea, sisteme pentru cldiri inteligente, sisteme
de supraveghere i siguran)
instrumentaie medical (de ex. monitoare, electrocardiografe)
telecomunicaii (de ex. telefoane mobile, routere)
industria auto (de ex. sistem de ingecie, ABS)
industria aerospaial
automatizri industriale

Familii de microcontrolere definesc arhitectura microcontrolerelor


Controlerele dintr-o familie:
conin acelai nucleu procesor i de aceea manifest compatibilitate la
nivel de cod
manifest deosebiri din punctul de vedere al unitilor funcionale
implementate, al numrului de circuite timer / contor, al dimensiunii
memoriei interne
2

Termeni utilizai
Embedded System (sistem cu calculator nglobat): calculatorul
este nglobat ntr-un sistem i nu are interfaa de programare
accesibil utilizatorului final
Real-Time System (sisteme de timp real): reacia la un
eveniment trebuie s se produc n cadrul unui interval de timp
prestabilit.
Digital Signal Processor (DSP): Procesoare proiectate special
pentru prelucrarea de semnale. Au arhitectur special ce
permite executarea cu vitez mare a operaiilor de adunare
(acumulare) i nmulire.

Termeni utilizai
Mixed-Signal Controller (MSC): Microcontrolere ce pot
prelucra att semnale digitale ct i analogice
Microcontroler (MC) un microcalculator pe un chip care are
ca UCP un microprocesor
Digital Signal Controller (DSC) un microcalculator pe un
chip care are ca UCP un DSP (Digital Signal Processor)

CARACTERISTICI PRINCIPALE ALE


MICROCONTROLLERELOR
1. Grad mare de integrare
2. Organizarea memoriei i accesul la
memorie
3. Organizarea sistemului de I/O
4. Utilizarea circuitelor Counter - Timer
5. Sistemul de ntreruperi
6. Sistemul de management al puterii
5

1. GRAD MARE DE INTEGRARE


Microcontroller
Nucleu
procesor

Flash
EEPROM

SRAM

Modul
Counter/
Timer

Magistral intern

Modul
I/O digitale

Modul
I/O
analogice

Modul
Interfa
serial

Controller
ntreruperi

UN MICROCONTROLER CONINE

Nucleu microprocesor: UCP ce include ALU, unitate de control,


registre de uz general i adresare,
Memorie on-chip (de date i program): RAM, ROM (EPROM, flash)
Intrri / Ieiri digitale: Mai multe porturi de I/O digitale. Funcionarea
lor este dictat prin programarea unor registre de configurare
Circuite timer-counter: numrare evenimente, msurare intervale de
timp, determinarea momentului de timp a unui eveniment, generarea
de semnale dreptunghiulare cu o anumit frecven, controlul
acionrilor electrice etc.
Intrri / Ieiri analogice: Integreaz circuite ADC sau DAC cu mai
multe canale, comparatoare analogice, filtre antialiere

UN MICROCONTROLER CONINE

Controller de ntreruperi interne i externe


Interfee de comunicaie serial: controllere SPI, SCI (UART,
USART), I2C
Circuite de control a puterii consumate
Watchdog Timer: utilizat pentru ieirea din situaii critice. Timer-ul
activeaz intrarea de Reset dac se produc erori n programele
rulate
Interfee pentru depanare i testare standardizate (de ex. BoundaryScan), cu ajutorul unui PC extern
Controlere diverse: LCD, DMA, Co-procesoare comunicaie reea,
acceleratoare media

Elementul cheie n includerea diverselor uniti


funcionale este COSTUL
8

2. ORGANIZARE SPECIFIC A
MEMORIEI
Bloc (fiier) de registre: Registre interne UCP ce pot fi
utilizate pentru memorare temporar, sau pentru funcii
de configurare a unitilor funcionale
Memorie de date: memorie volatil intern sau extern.
Memoria intern are o capacitate redus de stocare.
Memoria extern cere hardware suplimentar pentru
acces i transfer date.
Memorie de program: Memorie ne-volatil intern sau
extern pentru stocarea codului (ROM, PROM, EPROM,
EEPROM, FLASH, NV-RAM)

ACCES LA MEMORIE
A. Fiecare tip de memorie adresat separat
Domeniul adreselor pentru diferitele tipuri de memorie pot fi suprapuse
Programatorul specific tipul memoriei la care se face acces prin utilizarea
de moduri de adresare diferite (de ex. pentru accesul la EEPROM se
utilizeaz adresarea indexat printr-un registru index special)
Exemplu:
Flash 32 k, 215
Binary:0000 0000 0000 0000
Hex: $0000
0111 1111 1111 1111
$7FFF
EEPROM 16k, 214 0000 0000 0000 0000
$0000
0011 1111 1111 1111
$3FFF
SRAM 16k, 214
0000 0000 0000 0000
$0000
0011 1111 1111 1111
$3FFF

10

Fiecare memorie adresat independent


SRAM

EEPROM

Flash

$0000

$0000

$0000

16K

16K
32K

$3FFF

$3FFF

$7FFF

11

B. Memoriile partajeaz un spaiu


de adresare unic
Accesul la diferitele memorii se poate face prin aceleai
moduri de adresare
Metoda este uor de folosit, dar periculoas:
O adres greit poate conduce la un acces greit (de exemplu
scriere n memoria de cod)

Exemplu
Flash 32 k, 215 Binary: 0000 0000 0000 0000
0111 1111 1111 1111
1000 0000 0000 0000
EEPROM 16k, 214
1011 1111 1111 1111
1100 0000 0000 0000
SRAM 16k, 214
1111 1111 1111 1111

Hex: $0000
$7FFF
$8000
$BFFF
$C000
$FFFF

12

B. Toate memoriile utilizeaz un


spaiu comun de adresare
$0000

Flash
32K

$7FFF
$8000
EEPROM
16K
$BFFF
$C000
SRAM
16K
$FFFF

13

I/O digitale

Existena acestor intrri / ieiri pentru monitorizarea i controlul


direct al dispozitivelor este o facilitate important, specific
microcontrolerelor.
Microcontrolerele au cel puin 1-2 porturi I/O digitale
Un port are tipic 8 intrri / ieiri
Porturile I/O pot fi accesate direct pentru transferul unui octet, sau
pot fi accesate separat pe fiecare bit
Pinii pot fi setai pentru funcionare ca: intrare, ieire, bidirecional
n plus fa de capacitatea de transfer date I/O digitale, pinii de
intrare ieire pot avea i funcii suplimentare, programabile
(multiplexare n timp a funciilor adrese, semnale de control, I/O
analogice).

14

Tipuri de registre de control


pentru porturi de I/O
1.

Registru direcie date (DDR - Data Direction Register)

2.

Registru port de ieire (PORT - Port Register)

3.

Registru port de intrare (PIN - Port Input Register)

15

Tipuri de registre de control


pentru porturi de I/O
Data Direction Register (DDR):
Pentru fiecare port bidirecional se asociaz un
registru de control DDR, care conine un bit de
configurare pentru fiecare pin al portului
Tipic bitul de configurare este setat pentru funcia de:
1nput sau
0utput

Dup un reset, n general toi biii DDR sunt iniializai


ca intrri
Citirea registrului DDR returneaz valorile nscrise

16

Tipuri de registre de control


pentru porturi de I/O
Port Register (PORT):
Este utilizat pentru a controla nivelul de tensiune la pinii de ieire
Pentru un pin configurat ca ieire, set (1) va produce nivel High,
iar reset (0) va produce nivel Jos
Scrierea la un pin de ieire se face fie prin instruciuni speciale
de set clear bit, fie prin operaii de tip citete-modific-scrie
La citirea registrului PORT, pinii configurai ca ieiri returneaz
ultima valoare scris
Pentru pinii configurai ca intrri funcionalitatea depinde de tipul
microcontrolerului
Unele MC permit citirea strii pinului de intrare
Alte MC, ca de ex. Atmega 16, utilizeaz biii setai ca intrri
ai portului pentru alte scopuri, astfel c dac se face citire se
va returna valoarea pe care ai scris-o n registru
17

Tipuri de registre de control


pentru porturi de I/O
Port Input Register (PIN)
Registrul PIN este n general un registru doar cu citire
PIN conine starea curent (sus sau jos) a tuturor pinilor
indiferent dac sunt configurai ca intrri sau ca ieiri
Este utilizat pentru a citi starea pinilor de intrare
O scriere la acest registru, n general, nu are efect

18

Acces Read-Modify-Write
MC conin instruciuni speciale pentru scriere pe bit la
porturi (fr modificarea celorlali bii ai portului)
Alt variant este s se utilizeze accesul de tip readmodify-write, care permite modificarea doar pentru
anumii bii ai portului
Secven de operaii (cel puin 3 instruciuni n program):
citete un octet de la port
schimb doar biii ce se doresc a fi modificai
scrie rezultatul la port

Acest mod de acces la scrierea unor bii nu se


recomand la MC care utilizeaz registre cu funcie
dubl, cum ar fi un registru I/O ce funcioneaz la citire
ca registru de stare, iar la scriere ca registru de control.
n acest caz scrierea poate avea efecte nedorite.
19

INTRRI DIGITALE
Semnalul de intrare se poate schimba doar ntre dou
stri: SUS (corespunztor lui logic 1) i JOS.
Interpretarea nivelelor ca SUS sau JOS depinde de
nivelul tensiunilor conform specificaiilor
microcontrollerului, care la rndul lor depind de
tensiunea de alimentare la care funcioneaz
controllerul.
De exemplu la Atmega16 tensiunea de alimentare (Vcc)
trebuie s fie n intervalul [4.5 5.5] V, iar:
nivelul JOS la intrare e recunoscut ntre [-0.5 0.2 VCC] voli
nivelul SUS al tensiunilor de intrare trebuie s fie n intervalul
[0.6 VCC VCC +0.5] voli

Intervalul ce cuprinde valorile [0,2Vcc 0,6Vcc] voli


corespunde unui semnal de intrare nedefinit.
20

Eantionare digital

O soluie simpl pentru citirea valorilor la intrarea registrului PIN


este memorarea local a strii intrrilor la nceputul fiecrui ciclu de
ceas
Dac latch-ul este triggerat cu clock-ul sistem el va stoca starea
doar la nceputul fiecrui ciclu de ceas.
Pentru c eantionm doar cu granularitatea ceasului, nseamn c
recunoatem schimbarea strii doar cu ntrzierea unui impuls de
ceas
Putem chiar s pierdem schimbri mai rapide dect impulsul de ceas.

Chiar dac aceast metod simpl este util pentru multe dintre
intrrile digitale, adesea n sistemele ce lucreaz n timp real se
ntlnesc i situaii diferite. De exemplu ce se ntmpl dac
schimbarea semnalului de intrare se face foarte lent? E posibil s
citim o stare ne-definit la intrare.
21

GRANULARITEA CLOCK-ULUI SISTEM


Clock

Signal

PIN latch

22

Intrare digital

Ce se ntmpl dac schimbarea


semnalului de intrare se face foarte
lent?
E posibil s citim o stare ne-definit la
intrare (SUS sau JOS)
Pentru a scdea probabilitatea de
stare nedefinit sau de oscilaie
circuitul folosit ca intrare include un
trigger Schmitt pentru a rezulta
fronturi bine definite ale semnalului de
intrare.
Intrri i Ieiri pentru un trigger
Schmitt:

Input Voltage
Vhi
Vlo
t
Output Voltage

23

Rezistene de forare a nivelului


logic (trage-sus sau trage-jos)

Cele mai multe dintre MC au doar rezistene interne trage-sus


ce pot fi controlate prin programarea registrelor de control, dar
exist i MC ce au rezistene interne trage jos (de ex. HCS12).
Rolul rezistorului de forare a nivelului: conectarea pinului de
intrare la o tensiune definit ca valoare, dac pinul nu este
controlat de hardware extern ctre un anumit nivel de tensiune
Rezistoarele respective sunt controlate printr-un registru ce
poate controla fiecare pin
De exemplu ATmega16 folosete biii pinilor de intrare din registrul
PORT pentru controlul rezistenelor de trage sus. Alte
microcontrollere folosesc registre dedicate.

Cel mai dezavantajos este s se lase o intrare flotant disponibilitatea mare la zgomot (vezi exemplu cu comutator
mecanic conectat la o intrare)

24

REZISTEN PULL-UP

Dac curentul curge dinspre MC ctre circuitul extern intrarea


este numit source input
Dac curentul curge dinspre circuitul extern ctre MC intrarea
este numit sink input
MC pot genera cureni de aproximativ 4-20 mA.
La majoritatea MC curentul absorbit (sink) este mai mare dect
cel ce poate fi generat (source)
+V

Intrare
microcontroller
Source Input
Pin controlat de circuite
externe
Sink Input

25

Ieiri digitale

Similar cu intrrile inclusiv rezistene trage sus.


Niveluri de tensiune uor diferite
De exemplu pentru ATmega16 la VCC= 5V, tensiunea maxim
pentru 0 la ieire este 0.7 V, iar tensiunea minim pentru 1 la ieire
este 4.2 V.

Ieirile sunt mai critice dect intrrile


dac un pin care genereaz nivel SUS este legat la mas scurtcircuitul poate distruge circuitul.

Atunci cnd bitul corespunztor din DDR este setat ca ieire,


valoarea pe pin va fi cea stabilit de ctre coninutul registrului
PORT
Dac microprocesorul nu utilizeaz biii de intrare din registrul
PORT (registru folosit pentru generarea strilor pe pinii de
ieire) pentru alte scopuri i dac controllerul permite scrieri la
biii de intrare din registrul PORT, atunci se seteaz mai nti
registrul PORT i apoi DDR, asta asigurnd c valorile corecte
sunt puse pe linii nc de la nceput.
Excepie: ATmega16, utilizeaz biii de intrare din PORT pentru
controlul rezistoarelor de pull-up

26

Comparator analogic

Dac exist, constituie o cale uoar de comparare a unei tensiuni


de intrare cu o alta de referin
Nivelul de tensiune de referin este n general programabil
Se pot compara de asemenea dou tensiuni externe
Ieirea comparatorului este n format binar i poate fi citit din
registrul de stare al modului analogic
Ieirea comparatorului poate fi configurat s genereze un semnal
de ntrerupere. Programare recunoatere ntrerupere:
front cresctor / descresctor
oricare front

27

CIRCUITE TIMER/COUNTER

Oricare MC conine unul sau mai multe circuite timer/counter cu


rezoluia de 8 / 16 bii
Funcia de temporizator (timer) e folosit pentru multe aplicaii de
tip: generare semnale temporizare, msurri de perioade, generare
forme de und, generare semnale de trigger
Temporizatorul i contorul sunt construite pe baz de contor digital
Toate semnalele msurate / generate n timp conin un numr ntreg
de impulsuri de ceas
Un contor poate fi incrementat / decrementat la fiecare impuls de
ceas de intrare i este utilizat pentru a numra impulsuri de intrare
(interne sau externe).
Direcia de numrare este configurabil

28

CIRCUITE TIMER/COUNTER
Valoarea curent contorizat poate fi citit din
registrul asociat contorului i poate fi setat la o
anumit valoare
Cnd valoarea din counter / timer depete
lungimea cuvntului UCP (de exemplu utilizare
de contor pe 16 biii pe un MC de 8 bii) accesul
la valoarea contorizat se face n 2 pai
succesivi
Citirea ncepe obligatoriu cu valoarea (octet) cea
mai puin semnificativ (LSByte)
La scriere se va nscrie mai nti MSB i apoi
LSB
29

CIRCUITE TIMER/COUNTER
Circuitele contor / temporizator sunt elemente extrem de
flexibile n cadrul unui MC
Se pot genera forme de und
Semnalul dreptunghiular de ieire poate fi utilizat pentru
generare de forme de und sinusoidale, sau alte forme de und
periodice
Formele de und periodice pot fi utilizate de exemplu n aplicaii
de telefonie (ton taste, avertizri sonore)

Circuitul contor / temporizator poate fi utilizat pentru a


genera impulsuri singulare. Acestea pot comanda:

nfurri de motor
nfurri de relee de control
elemente de afiare
impulsuri de declanare evenimente (ceas de timp real, control
cicluri DMA, ntreruperi diverse)
30

CIRCUITE TIMER/COUNTER
Circuitele timer pot genera un semnal de ntrerupere ori
de cte ori se produce o depire a capacitii de
numrare
Acest semnal poate fi folosit la generarea unui semnal periodic,
prin setarea valorii de start a numrrii i apoi ateptarea
semnalului de overflow
Exist probleme de precizie, pentru c dup overflow se mai
pierde timp pentru setarea prin program a valorii de start a
numrrii. La fixarea valorii de start trebuie inut cont i de acest
timp suplimentar

Pentru a prentmpina aceste probleme unele timere pot


fi configurate ntr-un mod de funcionare tip modulo la
care valoarea de start este ncrcat automat (autoreload) dup apariia overflows
31

TIMER CU AUTO RELOAD

Spre deosebire de circuitele timer standard acestea ncarc automat


valoarea de start a numrrii
Standard Timer

Clock

Timer

Auto-reload Timer

End
counting

Clock

Timer

End
counting

CPU
Loading register

Loading register
Reload

Reload

32

CIRCUITE TIMER/COUNTER

MC pot fi configurate pentru ca semnalul de


ceas de intrare pentru timer / counter s provin
din surse diverse:

Ceas sistem (intern)


Prescalare
Impulsuri externe (Pulse Accumulator)
Semnal de la cuar extern (Mod asincron)

33

Ceas sistem (clock intern)

Sursa de impuls de ceas este identic cu cea a


MC
Circuitul timer este incrementat la fiecare impuls
al ceasului sistem
n general acesta este modul implicit (default
mode)

34

PRESCALARE

Se utilizeaz de asemenea ceasul sistem, divizat printr-un circuit de


prescalare
Circuitul de prescalare este un contor de o anumit lungime (tipic 8
sau 10 bii) care este incrementat de ctre ceasul sistem
Dac de exemplu numrtorul de prescalare este incrementat la
fiecare front cresctor al ceasului sistem, atunci bitul LSb va comuta
cu frecve egal cu jumtate din cea a ceasului (prescalare cu 2).
Prin programare se pot configura frecvene de prescalare cu valori
egale cu puteri ale lui 2
Circuitul timer cu prescalare permite msurarea unor perioade mai
mari dect cel ce funcioneaz cu ceasul sistem, dar precizia scade.

35

Impuls extern & Cristal extern


Impuls extern (Pulse Accumulator)
Circuitul timer primete ceas de declanare (icrementare) de la
un semnal extern conectat la un pin de intrare al MC
Pentru c semnalul extern este eantionat ca orice alt semnal
extern, timpul dintre fronturile active trebuie s fie mai mare
dect perioada ceasului sistem

Cristal extern (Mod asincron)


Circuitul timer este activat cu ceas de la un cuar extern conectat
la doi pini de intrare ai MC
Acest mod este de obicei inclus pentru frecvena de ceas de
32.768 kHz care poate fi utilizat pentru implementarea ceasului
de timp real (RTC - real-time clock)
Contorul intern este incrementat conform semnalului extern i
lucreaz asincron fa de restul circuitelor MC)

36

WATCHDOG TIMER
Este un timer special folosit pentru revenirea din situaii
dificile:
probleme de software, ca de exemplu bucle infinite
probleme de hardware care blocheaz funcionarea corect a
programului

Acest timer verific c anumite poriuni din program sunt


atinse ntr-un timp pre-determinat
Acest timer are propriul oscilator intern cu ceas i de
aceea nu este afectat n funcionare de modurile tip
sleep n care ceasul sistem este oprit
37

WATCHDOG TIMER
Acest timer verific c anumite poriuni din
program sunt atinse ntr-un timp pre-determinat
Acest timer are propriul oscilator intern cu ceas
i de aceea nu este afectat n funcionare de
modurile tip sleep n care ceasul sistem este
oprit

Watchdog timer este utilizat pentru monitorizarea funcionrii


corecte a sistemului
O dat ce este activat el ncepe decrementarea coninutului su,
ncepnd cu o valoare programat (timp programat n registrul su de
control)
Dac ajunge la zero va activa intrarea de RESET a MC pentru
iniializare i repornire program
Pentru a bloca aciunea de reset, programul rulat trebuie s restarteze
circuitul watchdog timer nainte ca acesta s ajung la zero
Este util n cazul erorilor ne-permanente ale sistemului
38

Sistemul de ntreruperi
Exist doi bii principali pentru logica de
ntreruperi a MC:
Bitul de interrupt enable (IE), setabil de aplicaia
utilizator pentru a indica c la apariia cererii de
ntrerupere controllerul va apela o RTI.
Bitul de interrupt flag (IF), setat automat de
microcontroller atunci cnd s-a produs evenimentul
de ntrerupere. Poate fi resetat automat la saltul ctre
RTI, sau prin program
Practic IF indic faptul c s-a produs evenimentul de
ntrerupere, n timp ce IE poate permite servirea
respectivului eveniment.

39

Controlul ntreruperilor

Fiecare surs, sau tip de surs de ntreruperi are bii IE i IF alocai.


Dac mai multe surse similare de ntreruperi sunt mapate ctre un
singur bit IE, se aloc cte un bit IF fiecrei surse de ntreruperi, pentru
a se putea determina sursa.

Controllerul mai conine bii de control, n registre speciale, pentru


setarea modului de ntreruperi (interrupt mode) al unora din surse
Modul de ntreruperi fixeaz i schimbarea specific a semnalului de
la intrarea de cerere de ntrerupere; de exemplu: frontul cresctor,
palier etc.
Bit IE pentru invalidare global a ntreruperilor.
IF se seteaz cnd apare evenimentul chiar dac o ntrerupere este
invalidat prin fanionul su de IE

40

TABELA VECTORILOR DE
NTRERUPERE

Funcionare similar cu nteruperile vectorizate de la


microprocesoare de uz general, pentru a calcula adresa rutinei de
tratare a ntreruperii (RTI)
Tabela vectorilor de ntrerupere (TVI) conine cte o intrare pentru
fiecare vector de ntrerupere
Fiecare vector are o adres pre-fixat n TVI , care este referit fa
de o adres de baz fix n memoria de program
La adresa vectorului, aplicaia nscrie fie adresa de nceput a RTI,
fie o instruciune de salt ctre RTI (de ex. ATmega16)

41

6. Putere consumat i
managementul puterii
Puterea de comutaie: Pswitching = C Vdd2 f
(contribuie 70-90% din puterea total).
Puterea intern de scurt-circuit, Pint , (contribuie
10 - 30% din puterea total).
Puterea prin cureni de scurgere n regim static,
Pstatic, (contribuie <1% din puterea total).

42

PUTERE DE COMUTAIE
Pswitching = CV2f

C = Capacitate parazit
Inerent datorit interconexiunilor i porilor interne
Minimizat prin metodologia VLSI de proiectare
Se utilizeaz conexiuni scurte, materiale mai bune

V = Tensiune de alimentare

Reducere tensiune (scdere general) 3.3V, 1.8V, 1.2V


(52/3.32 = 2.29)
Modificare dinamic a tensiunii (scdere selectiv)

f = Frecvena de comutare
MC sunt proiectate n tehnologie static (Static HCMOS),
care permite reducerea frecvenei pn la valori foarte mici
Scalarea ceasului se face de obicei prin circuite interne de
scalare / multiplicare
Moduri de economisire a energiei (Sleep/Standby)
43

MODURI SLEEP/STANDBY
Capacitatea de a scoate din funcionare ntregul circuit,
sau pri ale circuitului pemntru anumite perioade
Se realizeaz prin blocarea temporar a ceasului (pori
de blocare) i circuite de izolare
Se reduce astfel consumul de putere de comutare pentru
anumite uniti funcionale, sau pentru ntregul circuit

44

STRI TIPICE PRIN VARIAIA


FRECVENEI DE CEAS
mod complet operaional (fully operational
mode)
frecven nominal de ceas pentru tot circuitul
procesor

mod ateptare (standby mode)


procesorul nu execut instruciuni
informaia stocat intern se pstreaz
se poate trece rapid n mod complet operaional

semnal de ceas oprit (clock-off mode)


semnal de ceas oprit complet
pentru ieire din aceast stare procesorul trebuie
resetat
45

Exemplu
StrongARM SA-1100; 3.3V, 1.5V; Run (400 mW), Idle
(50 mW, 10 s), Sleep (0.16 mW, 90s, 16 ms)
Prun = 400 mW

run
10 s
160 ms
90 s
10 s
90 s
idle

Pidle = 50 mW

sleep

Psleep = 0.16 mW

46

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