microcontrolere
DESCRIPTION
arhitectura microprocesoarelorTRANSCRIPT
1. Memoria virtuala (concept,
facilitate hardware si software pentru
implementarea conceptului de memorie virtuala)
Exista doua idei fundamentale privind
functionarea sistemelor cu microprocesoare si
anume:
a. Pentru executia unui program codul
trebuie sa se afle in memoria principala (MP) a
sistemului. Daca acesta se afla in alte resurse de
memorie programul trebuie transferat intai in MP si
apoi poate fi executat de catre microprocesor.
b. Operanzii (datele) inainte de a fi
prelucrati de instructiuni trebuie sa fie stocati fie in
MP fie intr-un registru intern (RI) al
microprocesorului.
Microprocesoarele evoluate utilizeaza
principiul organizarii modulare a memoriei
sistemului. Modulele pot fi segmente sau/si pagini.
Segmentele sunt module de memorie de
lungime variabila, iar paginile sunt module de
memorie care au toate aceeasi lungime. Dimensiunea
modulelor de memorie este limitata de dimensiunea
MP, deci de resursele HW ale sistemului.
Pentru programator este mai usor sa
realizeze programarea fizica fara sa tina seama de
dimensiunea limitata a MP, astfel in sistemele de
calcul in afara de MP exista si memoria auxiliara
(MA) de capacitate mult mai mare decat cea a MP.
Desi functional cele 2 tipuri de memorie au acelasi
rol: suport al informatiei exista insa diferente in
privinta modului de utilizare de catre UCP. Pentru a
fi accesat de catre aceasta continutul MA trebuie intai
transfera in MP ori de cate ori este utilizat de catre
microprocesor.
Principiul memoriei virtuale (MV)
consta in a considera toate resursele de memorie (atat
MP cat si MA) ca pe o memorie unica de capacitate
foarte mare ce ofera programatorului un spatiu virtual
de adrese (spatiu logic) pentru realizarea programelor
sau pentru stocarea datelor. Acest spatiu este mult
mai mare decat spatiul adreselor fizice oferit de MP.
In particular accesul UCP la MV este
transparent pentru utilizator care va fi astfel degrevat
de sarcina gestionarii resurselor de memorie in cadrul
programului.
Intr-un sistem cu MV toate cererile de
acces la memorie din cadrul programelor se
adreseaza MV.
Din punct de vedere HW numai o parte
din informatiile din spatiul MV se afla in MP, iar
restul se afla in MA. Realizarea conceptului de MV
implica existenta unui mecanism pentru transferul de
blocuri intregi de date intre MA si MP. Este eclusa
posibilitatea realizarii MV prin transferul de date
individuale, solutie inacceptabila din punct de vedere
al timpului consumat pentru transfer.
Transferul de blocuri intre MA si MP
trebuie sa fie transparent pentru utilizator astfel incat
acesta sa nu fie preocupat de amplasamentul efectiv
al informatiilor pe care le manipuleaza. Singurul
dezavantaj pentru utilizator este intarzierea care
poate sa apara atunci cand cererile sale necesita
transfer suplimentar intre MA si MP.
Implementarea conceptului de MV prin
procedee SW este o sarcina dificila si practic nu este
folosita. MV permite utilizatorului sa alcatuiasca
programe in limita spatiului adresabil folosind adrese
logice in locul adreselor fizice.
Pentru accesarea MP este necesara
translatarea adrseselor logice oferite de program in
adrese fizice care sunt generate de microprocesor in
exterior in cadrul ciclilor de acces. Sarcina
translatarii adreselor logice in adrese fizice este a
circuitului de gestionare a memoriei (MMU).
Daca in cadrul unor prelucrari apar
adrese logice care nu corespund unor locatii din MP,
MMU comanda executarea transferului intre MP si
MA pentru actualizarea continutului MP cu adresa
ceruta. Transferul se poate executa in ambele sensuri
deoarece blocuri de date din MP care nu sunt folosite
curent sunt transferate inapoi in MA.
Realizarea transferului de date in MA si
MP implica organizarea modulara a informatiei. Cum
blocurile pot fi segmente si pagini rezulta ca avem
doua tipuri de organizare: organizare segmentata si
organizare pe pagini. Acestea sunt create in spatiul
MV. Sunt utilizate ambele variante de organizare,
segmentarea avand unele dezavantaje in raport cu
paginarea.
2. Caracteristici generale ale
microcontrolerelor (definiție microcontroler,
componente minime conținute de
microcontroler), caracteristici arhitecturale ale
unității centrale, sistemul de I/O în cazul
microcontrolerelor.
La modul general, un controler este o
structura electronica destinata controlului unui
proces sau unei interactiuni caracteristice cu
mediul extern, fara sa fie necesara interventia
operatorului uman.
Un microcontroler este un microcircuit care incorporeaza o unitate
centrala(UC) si o memorie impreuna cu resurse
care ii permit interactiunea cu mediul exterior.
Resursele integrate la nivelul microcircuitului ar
trebui sa includa cel putin urmatoarele
componente: o UC cu un oscilator intern, o
memorie focala de tip
ROM/PROM/EPROM/FLASH sau/si RAM, un sistem de intreruperi, intrari si iesiri numerice de
tip port paralel, un port serial de tip asincron
si/sau sincron programabil, un sitem de timere sau
numaratoare programabile. Este posibil ca la
acestea sa fie adaugate, la un pret de cost
avantajos, caracteristici specifice sarcinii de
control care trebuie indeplinite: - un sistem de conversie analog-
numeric cu una sau mai multe intrari analogice;
- un sistem de conversie numeric-
analogic si iesire PWM;
- un comparator analogic;
- o memorie de date nevolatila de tip
EEPROM;
- un timer WATCHDOG; - facilitati suplimentare pentru
sistemele de temporizare-numarare;
- facilitati pentru optimizarea
consumului de putere.
Un microcontroler tipic mai are la
nivelul UC facilitati de prelucrare a informatiei la
nivel de bit, de acces direct si usor la intrari/iesiri si un mecanism de prelucrare a intreruperilor
rapid si eficient.
Caracteristici
arhitecturale ale UC
Arhitectura UC de calcul este una
dintre elementele cele mai importante de care
trebuie avut in vedere in analiza oricarui sistem
de calcul. Principalele concepte luate in considerare si intalnite la microcontrolere sunt:
a. Arhitecturi de tip „Von
Neumann”
Pe baza acestei arhitecturi de sistem
sunt realizate cele mai multe microcontrolere;
microcontrolerele bazate pe aceasta arhitectura au
o UC caracterizata de existenta unui singur spatiu
de memorie utilizat pentru memorarea codului instructiunii cat si a datelorce fac obiectul
prelucrarii, deci exista o singura magistrala
interna care este folosita pentru prelucrarea
instructiunilor si a datelor.
b. Arhitecturi de tip „Harvard”
la aceasta arhitectura exista spatii de
memorie separate pentru program si date. In consecinta, ar trebui sa existe si magistrale
separatre de adrese si de date pentru codul
instructiunilor si respectiv pentru date.Aceasta
este arhitectura standard pentru procesoarele
numerice de semnal (DSP).
c. CISC
Conceptul CISC: aproape toate
microcontrolerele al la baza realizarii UCP acest concept. Aceasta insemna ca au un set uzual de
peste 80 de instructiuni, multe dintre ele foarte
puternice si specializate. De obicei, multe dintre
instructiuni sunt foarte diferite intre ele (unele
opereaza numai cu anumite spatii de
adrese/registre, in timp ce altele permit numai
anumite moduri de realizare.
d. RISC
Este un concept de realizare a UCP
care a inceput sa fie utilizat cu succes si la
realizarea microcontrolerelor. Prin implementarea
unui set redus de instructiuni care se pot executa
foarte rapid si eficient, se obtine o reducere a
complexitatii microcircuitului, suprafata disponibilizata putand fi utilizata in alte scopuri.
Printre caracteristicile asociate de obicei unei
UCP de tip RISC se pot mentiona:
- arhitectura Harvard modificata/ Von
Neumann; - viteza sporita de executie prin
implementarea unui pipeline pentru instructiuni;
- set de instructiuni ortogonal
(simetric).
Sistemul de I/O
Toate microcontrolerele au un nr
diferit de I/O numerice organizate sub forma unor
porturi de I/O. Conexiunile externe pot fi unidirectionale, bidirectionale sau
multifunctionale (functii alternative pe acelasi
pin). In afara de acest set de intari si iesiri de uz
general pentru interfata cu mediul extern se ofera
o serie de alte facilitati importanta de I/O cum ar
fi:
A.
a)UART (Universal Asynchronous Receiver Transmitter)
- port serial bidirectional destinat
implementarii unui protocol clasi de comunicatie
asincron.
b)USART (Universal Synchronous
and Asynchronous Receiver Transmitter)
- port similat cu UART, dar care permite implementarea si a unui protocol sincron
cu obtinerea unor viteze mai mari de comunicatie
c)SCI (Serial Communicatins
Interface)
- circuit de tip UART imbunatatit care
se foloseste frecvent la microcontrolere
(Motorola)
d) LIN (Local Internet network) - reprezinta o implementare
particulara a unui protocol de comunicatie
asincron utilizata in industria de automobile
B. Porturi seriale sincrone dedicate
Sunt destinate transferului de date cu
mare viteza cu unele periferice specializate sau
care permit conectarea intr-o retea de comunicatie. Acestea implica si implementarea
unor protocoale mai mult sau mai putin complexe
de transfer a datelor fiind de fapt vorba de o
magistrala seriala. Exista cateva implementari
raspandite prezentate in ordinea crescatoare a
complexitatii:
- SPI – port serial sincron
- MICROWIRE – interfata seriala bidirectionala sincrona
- I2C(Inter Integrated Circuits) –
interfata serial bidirectionala destinata aplicatiilor
pe 8 biti
C. Conectivitate USB
Magistrala seriala USB a fost creata
pentru conectarea cu usurinta a diverselor
periferice a un calculator
D.Conectivitate Wireless
Se refera la existenta unor resurse
HW si SW care sa permita integrarea cu usurinta
si la un pret avantajos intr-o retea de tip wireless
pentru a face posibila in final implementarea unui
protocol si a stivei aferente protocolului
E. CAN Convertoarele utilizate fac parte de
regula dintr-un sistem de achizitie de date in care
exista si un MUX analogic cu mai multe canale
de intrare. Rezolutia disponibila este de regula de
8, 10 sau 12 biti uneori cu precizia
corespunzatoare unui numar mai mic de biti
F.CNA
Cea mai raspandita tehnica de conversie numeric analogica folosita este bazata
pe modulatia in factor de umplere, controlat cu a
rezolutie de 8/16biti
Obs: CNA-uri propriu-zise sunt mai
rar intalnite.
G. Interfata pentru sisteme de
afisare de tip LCD (panou LCD)
Interfata respectiva genereaza toate semnalele necesare pentru comanda panoului
LCD
3. Controlul puterii consumate și
alimentarea la tensiuni reduse în cazul
microcontrolerelor, limbaje de programare
folosite de microcontrolere, criterii de
alegere a unui microcontroler.
Controlul puterii consumate și alimentarea la
tensiuni reduse în cazul uC Majoritatea microcontrolerelor pot fi trecute
cub control soft in stari speciale cum ar fi:
starea „stand-by”, „idle”, „halt”, „power-down”.
In aceste moduri, starea UCP, continutul
memoriei RAM interne, starea intrarilor si iesirilor, poate fi observata in conditiile unei
tensiuni de alimentare reduse fata de cea
nominala si deci a unui consum mult redus. De ex: in modul „idle” toate activitatile sunt
oprite cu exceptia circuitului oscilant local de
ceas si daca acestea exista: circuitul WATCHDOG, circuitul de monitorizare a
oscilatorului de ceas si eventual un
temporizator dedicat, puterea consumata este redusa la aprox 30%, iar iesirea din acest mod
se face prin RESET sau printr-un stimul extern
(o intrerupere). In modul „halt” toate activitatile sunt oprite iar
tensiunea de alimentare poate fi coborata sub valoarea nominala fara alterarea starii, iar
puterea consumata este minima. Iesirea din
aceasta stare se face prin RESET sau ca urmare a unei cereri de intrerupere.
Aceste moduri de lucru sunt valorificate in
aplicatii in care alimentarea sistemului se face de la o sursa de tip baterie.
La inceput microcontrolerele foloseau o
tensiune de alimentare standard de 5V cu o toleranta foarte mica. La ora actuala se ofera si
variante cu tensiune de alimentare redusa: 1,8
– 3,3V destinate unor aplicatii unde consumul este un parametru critic. Exista variante de
microcontrolere cu o plaja mare de tensiuni de
alimentare: 2-6V, functionarea la limita inferioara implicand doar o miscare a
frecventei maxime de ceas.
Criterii de alegere a unui microcontroler
In momentul in care se doreste alegerea unui microcontroler sau a unei familii de
microcontrolere pentru dezvoltarea unei
aplicatii exista mai multe criterii care trebuie
luate in considerare tinand cont de impicatiile
multiple ale acestei alegeri. Vom grupa aceste
criterii dupa cerintele impuse aplicatiei si vom prezenta cateva din intrebarile rezultate la care
trebuie dat un raspuns:
a. Costurile aplicatiei - care va fi scara de productie: prototip,
productie mica/medie sau productie de masa
- care sunt costurile permise pentru microcontroler
- care sunt costurile permise pentru mediul de
programare si dezvoltare b. Timpul de dezvoltare al aplicatiei
- ce limbaj de programare sa aleg
- ce limbaj de programare cunosc bine si ce medii de dezvoltare am utilizat
- ce modalitate de testate si depanare folosesc:
simulator, emulator/sistem de dezvolatare c. Caracteristici fizice
- care este viteza de prelucrare necesare
- de cata memomeri am nevoie pentru programe si pentru date
- va fi necesara si o memorie exterioara - ce fel de alimentare este disponibila si care
sunt limitarile acesteia
- de cate intrari si iesiri am nevoie - ce fel de intrari si iesiri sunt necesare
- care sunt resursele necasare in materie de
temporizare sau numarare si care ar fi caracteristicile cele mai importante: rezolutie,
frecventa maxima de numarare
- ce tip de capsula, ce dimensiuni fizice si ce numar de pini ar trebui sa aiba
- care este gama temperaturilor de lucru
necesare - aplicatia va functiona intr-un mediu cu
caracteristici speciale
d. Conectivitatea - care sunt resursele de comunicatie necesare;
cate porturi seriale asincrone si cu ce
caracteristici, ce tipuri de magistrale seriale sincrone sunt disponibile
- este necesara o conectivitate USB sau
wireless e. Compatibilitatea, scalabilitatea si
dezvoltarea ulterioara
- cu ce tipuri de circuite se poate interfata cat mai simplu
- cum se poate realiza extinderea ulterioara
atunci cand este necesar - exista mai multe variante in familia
respectiva de microcontrolere care sa acopere
eventualele cerinte suplimentare in materie de viteza de lucru, resurse periferice sau resurse
de memorie
f. Alte aspecte - ce distribuitori exista si cat sunt de accesibili
pentru mine
- care este suportul oferit de fabricant sau distribuitor si care este baza de cunostinte
existenta
In practica de cele mai multe ori alegerea unui microcontroler pentru o anumita aplicatie este
si trebuie sa fie rezultatul unui compromis.
4. Familia de microcontrolere MCS-51. Exemplu: microcontrolerul Intel 8051: caracteristici generale, arhitectura internă,
organizarea memoriei, registrele cu funcții
speciale.
Caracteristici generale
Familia MCS-51 apartine familiei Intel si
cuprinde microcontrolere pe 8 biti ex: I8051, 8031, 8751 realizate pe o capsula cu 40 de pini
avand urmatoarele caracterisitici tehnice:
- arhitectura orientata pe acumulatori; - 4Kocteti memorie de program interna (on
chip) – ROM
- 128KB memorie de date interna – RAM - memoria ROM si RAM au mecansime de
adresare diferite
- adresabilitate de pana la 64KB atat pentru RAM cat si pentru ROM prin extensii de
memorie in afara chip-ului
- 4 bancuri de registrii in memoria RAM -exista fanioane definite prin SW de catre
utilizator
- 32 linii de I/O organizate ca 4 porturi de 8 biti
- un port serial multimod de mare viteza
- timer si numarator de 16 biti cu 2 moduri de functionare
- logica de tratare a intreruperilor - stiva interna pentru stocarea datelor si pentru
apelurile de subrutina
- multiplicator si divizor HW ce executa operatiile in 4 µs
- detectie a depasirilor la bitul de semn si la cel
de calcul al paritatii - set extins de instructiuni comparativ cu
familiile anterioare
- adresabilitate directa pe octet si pe bit - foloseste aritmetica zecimala si binara
- poate executa operatii logice la nivel de bit
- are un ciclu instructiune de 1 µs la o frecventa a ceasului de 12 MHz
- alimentarea se face la curent continuu de -5V
Diferentele in reprezentantii familiei MCS51 constau in tipurile de memorii de program
(ROM/EPROM) cu care sunt prevazute
Arhitectura microcontrolerului Intel 8051 Elementele constitutive ale microcontrolerului
sunt urmatoarele:
- UCP - memoria interna ROM si
RAM - porturile I/O
- registrele de configurare (cele cu sufixul CON)
- registrele de stare
- registrele de mod (cele cu sufixul MOD)
- logica de comanda si control Toate unitatile functionale sunt conectate la o
magistrala interna pe 8 biti, care este conectata cu
exteriorul prin porturi I/O atunci cand se doreste
extinderea capacitatii de memorie sau intrari si
iesiri in exterior. Conectarea memoriei ROM la
magistrala interna se face cu amplificatoare cu
sens unic.
IR – registrul de instructiuni, reprezinta registrul in care sa incarca intructiunile din memoria de
program
PLA – aria logica programabila este decodorul
pentru instructiuni
Registrele cu functiuni speciale sunt adresabile
in mod direct, iar adresele lor se afla in zona 80H
pana la FFH, iar registrele ale caror adrese se termina in 0 sau 8 pot fi adresate si la nivel de bit.
Organizarea memoriei
Arhitectura este de tip Harvard, adica spatiul
memoriei de program este separat de spatiul
memoriei de date.
Microcontrolerul 8051 dispune de doar 16 linii de
adrese si totusi are un spatiu de memorie de
128KB. Explicatia consta in faptul ca el face diferenta intre spatiul de memorie de program si
spatiul de memorie de date (arhitectura de tip
Harvard). Ambele spatii de memorie au cate
64KB, deci utilizeaza toate liniile de adrese dar
sunt validate de semnale de comanda diferite
/PSEN este semnalul de comanda pentru citire din
memoria externa de program. In ciclurile de citire din memoria externa se activeaza de 2 ori pe
ciclu, el nu se activeaza atunci cand se executa
programul din memoria interna de program si nici
in ciclurile in care se transfera date din memoria
externa de date
/RD este semnalul de citire din memoria externa
de date
/WR este semnalul de scriere in memoria externa de date
Primii 4KB din spatiul de memorie de program
sunt interni, iar accesul la ei este realizat doar
daca /EA=1(external address) si in aceste cicluri
semnalul /PSEN nu este activat. Daca /EA=0 sau
daca accesul se face la o locatie cu adresa peste
0FFFH va fi adresata memoria externa de
program si semnalul /PSEN se va activa de doua ori pe ciclu.
/EA este o intrare care selecteaza memoria de
program, daca este zero atunzi se va executa din
memoria externa de program, iar daca este 1 se va
executa din memoria interna de program, dar
pana la valoarea 0FFFH din PC.
Memoria de program mai contine cateva locatii cu functii predeterminate, astfel, dupa
dezactivarea semnalului de initializare RST
(reset), microcontrolerul va incepe cu aducerea de
cod de la locatia 000H. Tot aici se afla si locatiile
la care este realizat accesul in urma acceptarii
unei intreruperi si anume:
- 0003H pentru intreruperea externa 0
- 000BH pentru intreruperea provocata de intrarea externa pentru timerul 0
- 0013H pentru intreruperea externa 1
- 001BH pentru intreruperea provocata de intrarea
externa pentru timerul 1
- 0023H pentru intreruperea provocata de
interfata seriala
Memoria de program poate fi de tip ROM sau
EPROM.
5. Familia de microcontrolere MCS-51.
Exemplu:microcontrolerul Intel 8051: modurile de adresare, sistemul de interfeţe I/O,
sistemul de întreruperi, modurile de
funcţionare cu consumredus de energie.
Modurile de adresare
La programareamC 8051 se pot
utiliza mai multe moduri de adresare a datelor in cadrul instructiunilor.Acestea sunt:
Adresarea directa: instr contine direct adresa
din memorie la care se gaseste val. Acest mod de adresare permite accesarea memoriei RAM
de date interna si a registrilor SFR
Adresarea indirecta : in instr este specificat un registru care contine adresa de memorie la
care se gaseste val cautata. Prin acest mod de
adresare se poate accesa memoria RAM de date interna si externa
Adresarea imediata: se poate folosi o val. nr.
fara ca aceasta sa fie scrisa in prealabil in memoria de date
Adresarea de registru: se poate folosi, in
cadrul unei instr, o val numerica ce se afla stocata intr-un registru
Adresarea indexata: se foloseste doar pentru
memoria de program care poate fi doar citita. Acest mod se foloseste pentru a citi tabele de
translatare din memoria de program. Registrul de baza poate fi un reg DPTR sau reg PC care
indica baza tabelului de translatare, iar A este
incarcat cu pozitia din tabela dorita. Adresa de citire din tabela rezulta ca suma dinte
continutul acumulatorului si registrul de
baza(DPTR/PC)
Sistemul de interfeţe I/O
Structura sistemului de interfete de
I/O si de dispozitive periferice deosebeste mC de mP de uz general. Ea este specifica
aplicatiilor de tip industrial
Structura porturilor este foarte versatila,deci in cadrul aceleiasi familii de mC
exista versiuni cu structuri diferite ale
sistemului de I/O mC 8051 are 4 porturi de I/O
bidirectionale, de 8b fiecare, care pot fi
configurate prin program. Ele sunt folosite pt generarea si respectiv receptarea semnalelor
digitale,adica pentru extensia memoriei si pt
conectarea dispozitivelor periferice. Transferul datelor prin porturi se face sub controlul
programului. In functie de modul de lucru,
aceste porturi se pot configura si pot avea mai multe situatii de lucru. Astfel, daca se lucreaza
cu memorie ROM externa, 2 dintre aceste
porturi se constituie in linii ce formeaza magistralele de adrese si de date.
Sistemul de întreruperi
mC 8051 are 5 surse pt intreruperi si anume: 2 intreruperi externe generate la
intrarile INT0, INT1 si 3 intreruperi interne: 2
de la circuitele timer/counter si una de la intreruperea seriala
Intreruperile sunt controlate de 2
reg:IE(interrupt enable) si IP(interrupt priority). Rolulreg IE este acela de a valida sau
invalida atat global cat si local sursele de
intrerupere. Pentru a valida o intrerupere, bitul corespunzator trebuie sa fie 1, iar pt a o
dezactiva trebuie sa fie 0. In mod individual,
fiecare sursa de intreruperi este activata printr-un bit. Daca bitul respectiv este in starea 0,
intreruperea corespunzatoare este dezactivata
mC 8051 ierarhizeaza cele 5 surse de intreruperepe 2 nivele globale de
intrerupere,pe fiecare nivel existand un al
doilea sistem de ierarhizare. Pe un astfel de nivel global, intreruperea externa 0 are gradul
cel mai inalt de prioritate, fiind urmata de intreruperea de la timer 0, externa1, timer1 si
de la calea serial. Stabilirea unei intreruperi pe
cele doua nivele generale de prioritate se face prin bitii corespunzatori din reg IP, rolul
acestuia fiind de a aloca prioritati.
Exista 2 nivele de prioritati la
tratarea intreruperilor: scazut si ridicat. Fiecarei surse de intreruperei se poate aloca in
mod independent orice nivel de prioritate.
Pentru fiecare cerere de intrerupere pt care
logica de intreruperi este activata in vederea
tratarii, procesul este directionat catre o adresa
fixa rezervata in cadrul memoriei de program. De la aceasta adresa se scrie subrutina de
tratare. Modurile de funcţionare cu consum
redus de energie. Pentru aplicatiile in care consumul de energie de la sursa de alimentare
este critic, sunt implementate sisteme prin care
pot fi dezactivate temporar o parte din modulele componente ale mC. Economia de
energie este esentiala in cazul alimentarii de la
baterie. Prin intrarea in starea de economie de energie, memoria RAM nu-si schimba
continutul si iesirile nu-si schimba valorile
logice. Sistemul de economie de energie ofera doua moduri de operare care difera prin nr
componentelor dezactivate. La mC Intel,
aceste moduri sunt numite :IDLE( inactiv) si POWER DOWN( cu tensiunescazuta).
Intrarea in unul din modurile de operare se
face prin comenzi software. mC Intel intra intr-unul din cele 2 moduri prin controlul unor
biti din registrul PCON. In ambele moduri de operare este inghetata functionarea CPU. In
modulIDLE, celelalte functii folosite raman
active.Starea CPU si a tuturor registrelor este pastrata cat timp mC se mentine IDLE.Pinii de
port pastreaza starea pe care au avut-o la
intrarea in acest mod. Din modul IDLE se poate iesi prin reset sau la sesizarea unei
intreruperi interne sau externe.
In modul POWER DOWN este blocat oscilatorul intern, ceea ce atrage dupa sine
blocarea tuturor functiilor interne. Continutul
memoriei si al registrelor interne nu este alterat iar liniile de I/O raman neschimbate.
Din aceasta stare se poate iesi doar cu reset. In
cazul in care revenirea se face la sesizarea unei intreruperi externe, activitatea interna este
reluata in aceleasi conditii in care a fost
abandonata.Ina cest mod, tensiunea de alimentare de +5V poate fi redusa.
Consumul de energie este minim atunci cand
sunt activate cele mai putine functii. Consumul minim de energie se obtine in
modul POWER DOWN. In modul IDLE
consumul este redus fata de regimul de operare normal dar este mai mare decat in
modul POWER DOWN, la fel cum in modul
IDLE consumul este cu atat mai redus cu cat sunt mai putine functii active la intrarea in
mod.
6. Familia de microcontrolere
MCS-51: memoria externă de date (inclusiv
comanda memoriei externe), setul de
instrucţiuni, programarea sistemelor cu
microcontrolerul I – 8051
Memoria de date externa are 64 bytes si poate
fi accesata doar prin intermediul instructiunii
MOV X care folosesteadresarea indirecta
Se pot folosi adrese de 16 biti si atunci va fi
folosit registrul DATA POINTER pentru a
genera adrese dar pot fi folosite si adrese pe 8
biti si atunci va fi folosit registrul R0 si R1
pentru a genera adresa.
Cel de-al doilea caz este util atunci cand
memorarea externa de date este putina si poate
fi gestionata ca pagini de 256 octeti.
In ciclul extern, pe liniile portului 0, va aparea
adresa in cadrul paginii de 256 octeti si o parte
din liniile portului 2 vor fi folosite pentru a
selecta pagina din memoria externa de date.
Beneficiul este dublu si anume accesul extern
este mai rapid si poate fi realizat mai rapid de
instructiuni pe 8 biti si raman libere linii ale
portului 2 care pot fi folosite in alte scopuri.
Memoria externa de date este accesata cu
magistrala de date si adrese prin intermediul
portului 0 si eventual portului 2 si validarea se
face cu semnalele /RD, /WR.
Comanda memoriei externe
Microcontrolerul activeaza semnale diferite in
functie de tipul memoriei externe implicate in
transfer, astfel daca se citeste din memoria
externa de program se activeaza PSEN, iar
daca este implicata memoria externa de date se
activeaza semnalul RD sau WR. Pe aceasta se
bazeaza caracterul microcontrolerului de a
putea comanda 64KB memorie de program si
64KB memorie de date, desi dispune de 16
linii de adrese.
In timpul transferurilor cu memoria externa,
liniile portului 2 vor constitui jumatatea
superioara a magistralei de adrese si date.
Pentru demultiplexarea ei este necesara
memorarea informatiei de adresa intr-un
registru extern la comanda semnalului ALE.
Setul de instrucţiuni
Setul de instrucţiuni al microcontrolerului
8051 este destul de regulat, în sensul că
majoritatea instrucţiunilor pot opera cu variabile din spaţii de adrese fizice sau logice
diferite. El a fost proiectat astfel încât să fie
eficient ca dimensiune a codului şi ca viteză de execuţie. Instrucţiunile sunt codate cu 1÷3
octeţi. Practic toate instrucţiunile se execută în
unul sau doi cicli maşină (1 sau 2 μsec la un tact de 12MHz); doar două instrucţiuni (MUL,
DIV) sunt executate în patru cicli.
Setul de instrucţiuni cuprinde 111 instrucţiuni: 49 de un octet, 45 de doi octeţi şi
17 de trei octeţi. Instrucţiunile pot fi grupate în
4 categorii:
Instrucţiuni pentru transferul
datelor MOV - transferă bit sau octet de la o locaţie sursă la o locaţie destinaţie
PUSH - incrementează SP şi transferă octet de
la sursă în stivă la adresa dată de SP POP - transferă un octet de la adresa dată de
SP la o destinaţie şi decrementează SP
XCH - schimbă conţinutul acumulatorului cu conţinutul variabilei indicate care poate fi
adresată direct sau indirect cu registru XCHD - schimbă semicuvântul inferior din
acumulator (biţii 3÷0) cu cel al unei locaţii de
memorie RAM internă adresată indirect cu un
registru specificat
MOVC- încarcă acumulatorul cu un octet de
cod sau cu o constantă din memoria de program
MOVX- transferă un octet între acumulator şi
memoria externă de date
MOV DPTR, #data - încarcă data imediată de
16 biţi în registrul dublu DPTR.
Instrucţiuni pentru operaţii
aritmetice INC - incrementează operandul cu 1
DEC - decrementează un operand cu 1 ADD - adună la acumulator operandul sursă
ADDC - adună la acumulator opeandul sursă
împreună cu transportul din CY DAA - corecţia zecimală a rezultatului
adunării operanzilor zecimali reprezentaţi în
cod BCD SUBB - scădere a unui operand din
acumulator împreună cu împrumutul
MUL - execută înmulţirea fără semn a operandului din acumulator cu operandul din
registrul B. Rezultatul pe 16 biţi este în B
(high byte) şi A (low byte) DIV - execută împărţirea fără semn a
conţinutului acumulatorului la conţinutul
registrului B. Rezultatul este în regiştrii A (câtul) şi B (restul).
Instrucţiuni pentru operaţii
logice CLR - resetează toţi biţii din A sau orice bit
adresabil direct SETB - setează orice bit adresabil direct
CPL - complementează conţinutul lui A, fără a
modifica PSW RL - rotaţie stânga a acumulatorului cu un
rang
RLC - rotaţie stânga a acumulatorului prin CY RR - rotaţie dreapta a acumulatorului
RRC - rotaţie dreapta a acumulatorului prin
CY SWAP - inversează semiocteţii în A
ANL - SI-logic pe octet
ORL - SAU-logic pe octet XRL - SAU EXCLUSIV-logic pe octet
Instrucţiuni de control - Apeluri şi salturi necondiţionate: ACALL - instrucţiune de apel a unei subrutine
atunci când adresa de salt este cuprinsă în 2K
ai paginii curente. Câmpul de adresă de 11 biţi ai instrucţiunii este concatenat cu cei mai
semnificativi 5 biţi din PC
LCALL - instrucţiune de apelare care poate specifica oricare adresă din spaţiul memoriei
de 64K
RET - transferă controlul la adres de revenire salvată în prealabil în stivă şi decrementează
apoi SP cu 2
AJMP - salt necondiţionat la o adresă din spaţiul 2K, analog cu ACALL
LJMP - salt necondiţionat la o adresă din
spatiul 64K, analog cu LCAL SJMP - salt necondiţionat scurt în cadrul a 256
octeţi
- Salturi condiţionate: JZ - salt dacă toţi biţii din A sunt 0
JNZ - salt dacă A cel puţin un bit din A este 1
JC - salt dacă CY este 1 JNC - salt dacă CY este 0
JB - salt dacă bitul specificat este 1
JNB - salt dacă bitul specificat este 0 JBC - salt dacă bitul adresat este 1 şi apoi
şterge acest bit
CJNE - decrementează operandul sursă şi pune rezultatul la operandul destinaţie; salt dacă
rezultatul nu este zero
RETI - la fel ca RET, dar activează şi întreruperile
7. Familia de microcontrolere de 8 biţi, PIC
(Microchip): caracteristici generale
(comune și suplimentare), arhitectura
internă, registrele (speciale), stiva,
inițializarea procesorului (RESET-ul).
Caracteristici generale (comune și
suplimentare) :
Mc pe 8 biti din familia PIC produsa de catre Microchip au o arhitectura Harvard
modificata, ci magistrala memoriei de date
separate de magistrala memoriei pentru program, avand largimea magistralei.
memoriei de program de 12, 14 sau 16 biti
In aceasta familie exista Mc cu un numar variat de pini si cu o memorie pt program intre
384B si 128Kb.Cele mai simple Mc din
familia PIC de 8 biti au un set de intructiuni restrans cu numai 33 de instructiuni.Permite ca
programele scrise pentru un anumit Mc sa
poata fi rulate pe modele cu o arhitectura similara, fara a fi necesare modificari ale
codului.
Toate Mc PIC pe 8 biti ofera caracteristici comune si anume:
Arhitectura RISC cu set redus de instructiuni
Moduri de adresare directa, indirecta si relativa.
Memorie RAM interna. Memorie EPROM sau flash.
Porturi de I/O digitale care suporta curenti
mari de I/O de max. 25mA. Circuite de reset.
Au timer watchdog, mod de economisire a
energiei si o interfata pt semnal de tact extern. Unele modele de Mc pe 8 biti ofera facilitate
suplimentare cum ar fi:
Canale de integrare analogice. Comparatoare analogice.
Circuite timer suplimentare.
Memorie EEPROM pt stocarea datelor. Intreruperi interne si externe.
Circuit intern de generare a semnalului de tact.
Iesiri PWM. Interfata serial USART.
Arhitectura internă
Ele folosesc o arhitectura Harvard cu spatii de memorie separate pentru coduri si pt date.
Setul de instructiuni este tipic RISC si contine
cca 35 instructiuni la versiunile simple si pana la cca 80 la versiunile performante.
Aceasta familie este destinata dezvoltarii unor
aplicatii ieftine. Desi familia de mC PIC pe 8 biti cuprinde o gama larga de modele, acestea
au caracteristici comune.
Registrele (speciale)
Reg mC pe 8 biti pot fi grupati in 2 categorii:
reg speciali SFR si reg de uz general GPR.
Reg speciali(SFR) reprezinta o colectie de reg utilizati de catre mC pt a controla pperifericele
si functiile interne ale acestuia.Nr de reg
speciali poate fi difeit de complexitatea mC.Reg speciali sunt:
Reg de optiuni-controleaza diferite functii
interne ale mC; este disponibil atat pt citire cat si pt scriere.
Reg asociati porturilor I/O-fiecare port are
asociat reg de date si reg de directive Reg timer-elor-in functie de model, un mC
PIC poate avea intre 1 si 3 timere
Reg de control al intreruperilor-pentru gestionarea surselor de intrerupere sunt fol 4
reg speciali cu rol in getsionarea intreruperilor
dispozitivelor periferice
Stiva
PIC 16F84 are o stiva de 13 biti cu 8nivele, adica un grup de 8 locatii de mem cu 13 biti
latime. Rolul sau de baza este de a pastra val
PC dupa un salt din programul principal la o
adresa a unui subprogram. Pt ca un program sa
stie cum sa se intoarca la punctul de unde a
pornit, trebuie sa inapoieze val PC din stva. Cand se muta dintr-un program intr-un
subprogram, PC e impins in stiva .Cand se
executa instructiuni ca RETURN, RETLW sau RET FIE ce au fost executate la sfarsitul unui
subprogram , PC a fost luat dintr-o stiva a.i.
programul sa poata continua de unde a fost oprit inainte de a fi interupt.Aceste operatii de
plasare intr-o stiva si de luare dintr-o stiva de
PC sunt numite PUSH si POP, conform cu instr. similare ale mC.
Inițializarea procesorului (RESET-ul)
RESET-ul este folosit pt a pune mC intr-o stare initiala. Pt a functiona correct, mC
trebuie resetat, adica toate registrele vor fi
puse intr-o stare de start.El nu este folosit numai cand pe mC nu se comporta cum vrem
noi, ci poate fi folosit si cand apare o
intrerupere in programul de executie. Pt a preveni ajungerea unui 0 logic la pinul 4
accidental , acesta trebuie sa fie conectat printr-un rezistor(5k-10ko) cu rolul pozitiv al
sursei de alimentare. Functia acestui rezistor
este de a mentine o anumita linie la starea 1 preventiv. Mc PIC16F84 poate fi initializat in
urmatoarele moduri:
Reset la alimentare Reset in timpul lucrului obisnuit prin aducerea
unui 0 logic la pinul 4 al mC
Reset in timpul regimului sleep Reset la depasirea timerului watchdog
Reset in timpul depasirii timerului watchdog
din timpul regimului sleep
8. Microcontrolere de 8 biţi, PIC
(Microchip): clasificarea după dimensiunea
magistralei de program, organizarea
memoriei, moduri de adresare a datelor,
setul de instrucţiuni. Clasificarea după
dimensiunea magistralei de program Dupa dimensiunea magistralei de program
putem diviza fam PIC pe 8 biti, in 3 categorii: a)mC cu lungimea cuvantului instr de 12 biti
(fam PIC 12) –au o arhitectura foarte simpla,
fiind preferate in aplicatii unde sunt necesare dimensiuni reduse si in aplicatii cu alimentare
de la baterie
b)mC cu lungimea cuvantului instr de 14 biti(fam PIC 14) –reprezinta majoritatea mC
PIC Microchip pe 8 biti. Cele mai multe mC
din aceasta categorie pot functiona la frecventa de tact de 20MHz, Setul d e instructiuni
contine 35 de instructiuni.
c)mC cu lungimea cuvantului instr de 16 biti(fam PIC 16) –reprezinta gama de varf a
mC PIC pe 8 biti.Cele mai multe mC din
aceasta gama au 33 de pini de I/O, 3 timere si pot opera la frecvente de tact de maxim
40MHz. Setul de instructiuni include cele 35
de instr intalnite la mC cu lungimea cuv instr de 14 biti, la care se adauga inca 23 de instr
specific. Toate aceste categorii de mC au un set comun de instr, cu cateva aditionale
disponibile pt mC cu lungimea cuv instr de 14
biti si cu un nr mult mai mare de instr aditionale la mC cu lungimea cuv instr de 16
biti. In toate aceste cazuri, instr ocupa un
singur cuvant in memoria unui program. Instr si datele sunt transferate pe magistrale
separate, fapt ce duce la o performanta sporita
a mC.
Organizarea memoriei
mCPIC 16F84 are 2 blocuri separate de
memorie, unul pt date si celalalt pt programe.Memoria EEPROM si reg de uz
general din memoria RAM constituie blocul
de date iar memoria flash constituie blocul de programe.
Memoria pt programe este de tip flash ceea ce
face posibil a programa un mC de mai multe ori inainte de a fi instalat intr-un montaj si
chiar dpa instalarea sa daca se intampla unele
schimbari in program sau in parametrii de process.Memoria este de 1024 locatii cu
latime de 14 biti, unde locatiile 0 si 4 sunt
rezervate pt RESET, respectiv pt vectorul de intrerupere.
Memoria de date este realizata din memoriile
EEPROM si RAM.Mem EEPROM consta in 4 locatii de 8 biti al caror continut nu este
pierdut in timpul opririi sursei de alimentare.
Ea este plasata intr-un loc special al mem de date si poate fi accesata prin registrii speciali:
-EEDATA->adr08H: reg care retine datele de
citi sau cele de scris -EEADR->adr 09H: contine o adresa a locatiei
mem EEPRO ce este accesata
-EECON1->adr88H: contine bitii de control -EECON2->adr89H: acest reg nu exista fizic,
el serveste la protejarea memoriei EEPROM
de scrieri accidentale Memoria EEPROM nu este direct adresabila
dar este accesata indirect prin reg. speciali
EEADR EEDATA. Pt ca memoria EEPROM este folosita current la memorarea unor
parametrii important, exista o procedura stricta
de scriere in mem. EEPROM cetrebue urmata pt a preveni scrierea accidental:un octet scris
sterge in mod automat locatia inainte de a scrie
data. Memoria RAM pt date ocupa un spatiu in harta memoriei de 68 de locatii. Locatiile
mem RAM sunt denumite register de uz general, deci putem spune ca registrele GPR
sunt folosite ca mem RAM. Ele pot fi accesate
indifferent de ce banc al memoriei este selectat la un moment dat.
Moduri de adresare a datelor Adresarea directa :se face cu o adresa de 9 biti.Aceasta adresa este obtinuta
prin corectarea celui de-al 7-lea bit al adresei
directe a unei instr cu 2 biti(RP1, RP0) din
registrul STATUS, reg care contine starea
aritmetica a unitatii aritmetice si logice, stare
reset si bitii pt selectarea bancului de memorie Adresarea indirecta: spre deosebire
de cea directa, adresarea indirecta nu ia o
adresa dintr-o instr , ci o creeaza cu ajutorul bitului 7 al reg STATUS si reg FSR.Locatia
adresata este accesata prin reg INDF care, de
fapt, tine o adresa indicata de un reg FSR. Acest tip de adresare nu are niciun avantaj fata
de adresarea directa , dar exista unele nevoi in
timpul programarii ce se pot rezolva mai simplu doar prin adresarea indirecta
Adresarea relativa: adresele, sau o
parte dintre acestea nu sunt folosite la selectia memoriei . In acest fel, o celula de memorie se
poate gasi la mai multe adrese diferite.La
adresarea relativa, reg referit in mod implicit este PC, deci o adr.instr curente e adunata la
continutul campului de adr., care este tratat ca
un nr in complement fata de 2 pt aceasta operatie, deci campul de adr este un
deplasament relativ la adr instr. Utilizarea adresarii relative reduce nr de biti de adresa
din instr deoarece majoritatea referintelor la
memorie sunt relative apropiate de instr. curenta.
Setul de instrucţiuni
mC PIC pe 8 biti au un set redus de instr, acesta fiind de numai 33 de instr la mC
cu lungimea cuvantului instr de 12 biti si de
35 de instr la cele cu lungimea cuv instr de 14 biti. La mC PIC cu lungimea cuv instr de 16
biti, la acest set de instr de baza se adauga inca
23 de instr specific, rezultand un set de 58 de instr. La mC PIC cu lungimea cuv instr de 12
si 14 biti vom gasi urmatoarele tipuri de instr:
Instr de transfer al datelor: aceste instr realizeaza transferul datelor intre acumulatorul
W si un registru f; acest reg poate fi orice
locatie de memorie, indiferent daca este un reg special sau un reg de uz general. Instr
aritmetice si logice: permit doar op aritmetice
de adunare si scadere. Fanioanele folosite sunt influentate de rezultatul acestor operatii. In
cazul operatiei de scadere, fanionul C este
inversat in cadrul operatiei, astfel C=1 daca este posibila operatia si este resetat daca
scadem un nr mai mare dintr-unul mai mic.
Aceste mC pot efectua urmatoarele operatii logice: AND, OR, XOR, CONF, RRF si RLF(
rotiri la dreapta si la stanga) . Operatia de
rotire utilizeaza fanionul C=> bitul care intra in reg este luat din C.
Operatii la nivel de bit
Instr de control al programului: din aceasta categorie fac parte operatiile de testare la nivel
de bit, instr de incrementare si decrementare
cu testarea valorii de 0 utilizate la incrementarea buclelor, instr de salt, instr de
lucru cu subrutinele, instr de revenire din
rutine, de tratare a intreruperii si instr speciala RETLW folosita pentru a extrage o const pe 8
biti aflata in memoria de program. Aceasta
instr realizeaza iesirea din subrutina cu punerea in acumulator a celor mai putin
semnificativi 8b ai cuv de memorie din
program
BTFSC f,b; BTFSS f,b; DECFSZ f,d; INCFSZ
f,d NOP // no operation
CLR WDT // sterge contorul pt timerul watchdog
SLEEP // pune mC in modul de economisire
a energiei
9.Caracteristicilegenerale
Aceste uC au la bazaunnucleu RISC cu o arhitectura Harvard.
Caracteristici:
Arhitectura RISC
32 de reg de lucru de 8 biti
Multiplicator hardware
Arhitectura Harvard a spatiului de mem Frecv de lucrupoate fi controlataprin soft de la
0 la 16 MHz
Au o gama de disp de I/O si de periferice incorporate
Au un timer programabil
Au surse de intreruperi INT si EXT Au 6 moduri de lucru pt economisirea energiei
Au timer watch-dog cu oscilator independent
Au un set unitar de instrumente soft ptdezvaplicatiilor
Arhitecturainternă (inclusiv UCP, UAL)
AVR folosesc o arhitectura RISC – permite executia celor mai multe instructiuni intr-un
singur ciclu de tact inbunatatirea
performantei(de 10 ori mai bun decat I8051)
UCP(unit centrala de prelucrare):
Functia principala a UCP e aceea de a asigura
executia corecta a progr. Pt aceasta nucleul e capabil sa acceseze memoriile, sa execute
calcule, sa controleze perifericele si sa prelucreze IN.
UAL(unit arithmetica logica)
Executa operatiile de prelucrare a datelor si lucreaza direct cu cele 32 de registre.
Operatiile pe care le executa UAL sunt
impartite in 3 categ: Aritmetice
Logice
Operatii pe bit
Registrele de uz general
AVR au un set de 32 de registre de uz general
de 8 biti notate R0÷R31 ce pot fi accesate intr-un singur ciclu de tact.
Fiecare registru are si o adresa in spatial mem
de date permitand o adresare uniforma. Majoritatea instr care fol fisierul de reg au
acces direct la toate registrele si marea lor
majoritate sunt instructiuni executabile intr-un singur ciclu de tact.
6 din cele 32(R26÷R31) pot fi folositi ca 3 ref
de 16 biti pt stocarea unor pointeri folositi la adr indirect a datelor.
Cele 3 reg folosite pt adresare indirecta sunt
notate cu X, Y, Z si structura lor este urmatoarea:
De la 0÷7 biti avem XL iar de la 8÷15 biti
avem XH. Idem YL, YH, ZL, ZH.
Stiva
AVR folosesc o stiva software organizata in
mem RAM de date. Ea e folosita in principal pt stocarea temporara
a datelor, variabilele, adreselor de revenire din
intreruperi sau la apelul subrutinelor. Accesarea stivei se efectueaza cu ajutorulreg
SP care e actualizat de procesor la fiecare
accesare a stivei. Dimensiunea stivei e limitata de dim mem
RAM instalata.
Deoarece procesorul nu seteaza automat la pornire adresa de inceput a stivei, acest lucru
trebuie efectuat de utilizator prin programare.
10. Microcontrolere de 8 biti AVR (ATMEL): organizarea memoriei, sistemul de întreruperi,
sistemul de I/O, modurile de lucru cu consum
redus de energie
ORGANIZAREA MEMORIEI
Specific arhitecturii Harvard, procesoarele
folosesc spatii de memorie si magistrale de acces
separate pentru coduri si pentru date.Ele au
memorie de program de tip flash
integrata.Memoria de program poate fi
programata in 2 moduri:serial si paralel
Memoria de date integrata este RAM pt stocarea variabilelor si EEPROM pt stocarea
constantelor.
ATMEGA 16 are 2 spatii de memorie
principala,pt date si pt programe, plus o memorie
volatila de tip EEPROM pt stocarea
datelor.Memoria pt programe este de tip flash
avand 16KB si este organizata pe 16 biti.Memoria
pt date de tip RAM si este organizata pe octeti avand capacitate intre 128 bytes si 4 kb.Memoria
de date de tip EEPROM are cap de 512B.Timpul
de acces pt o operatie de scriere pt mem de date
de tip EEPROM este de 2,5-4 ms.Cand se citeste
o data din aceasta memorie UCP este oprita timp
de 2 perioade de ceas inainte ca urmatoare
comanda sa fie executata.
SISTEMUL DE INTRERUPERI
Nucleul AUR foloseste mai multe tipuri de
intreruperi.Intreruperile sunt vectoriale,iar
vectorii de intrerupere si cel corespunzator
initializarii procesorului reprezinta adrese ale
unor locatii din memoria de program.
Intreruperile pot fi activate sau dezactivate
individual sau global Aproape toate dispozitivele periferice au fost
dotate cu capacitati de intrerupere
programul principal nu este nevoit sa verifice
starea lor
Secventa de actiuni la aparitia unei intreruperi
este:
Dispozitivul periferic emite o cerere care intrerupe procesorul, Executia instructiunii
curente e finalizata, Adresa urmatoarei
instructiuni din programul curent e memorat in
stiva, Este incarcata in PC adresa subrutinei de
tratare asociata, Procesorul executa subrutina de
tratare,Subrutina se incheie cu instructiunea
RETI(RETURN FROM INTRERUPT),
Procesorul reia executia programului intrerupt de la adresa memoriei in stiva.
SPATIU DE ADRESE DE INTRARE/IESIRE
PT ATMEGA 16
Toate dispozitivele de intrare si periferice de la
ATMEGA 16 au adrese plasate in spatele
registrilor de int/out.Cei 32 de registrii de lucru
sunt strict adresabili,iar valorile bitilor pot fi
verificate individual.
Porturile de INT/IES
ATMEGA 16 dispune de 32 linii de in/out
grupate in 4 porturi pe 8 biti:ABCD ele putand fi
setate individual ca intrare sau iesire.Operatiile se
fac prin intermediul registrilor alocati fiecarui
port:DDRx,PINx,PORTx unde x este unul din
porturile ABCD. Reg DDRx stabileste daca un pin este in sau
out
Reg PORTx se scrie pt a scrie o val in portul
coresp
Reg PINx se fol pt a citi val de pe liniile
portului
MODURILE DE LUCRU CU CONSUM
REDUS DE ENERGIE
uC are 6 moduri de functionare cu consum
redus de energie: IDLE MODE UCP este oprita dar interfetele
USART,TWI,ESPI,CAD,comparatorul
analogic,timerele si sistemul de inreruperi
continua sa functioneze.Cererea de intrerupere
readuce procesorul in stare de functionare.
ADC NOISE REDUCTION MODEUCP este
oprita insa continua sa functioneze
CAD,intreruperile externe,TWI,timerul2 si timerul watch-done
POWER-DOWN MODEoscilatorul extern e
blocat insa raman active intreruperile
externe,TWI si timerul watch done
POWER-SAVE MODEsimilar cu POWER-
DOWN cu diferenta ca timerul 2 continua sa
functioneze
STAND BY MODEeste identic cu POWER-DOWN cu deosebirea ca oscilatorul continua sa
functioneze
EXTENDED STAND BY MODEeste
disponibil cand se foloseste un oscilator cu clock
in rest fiind identic cu modul POWER-DOWN