Sunteți pe pagina 1din 8

1.

MICROCONTROLLER
Un microcontroler este un sistem cu microprocesor, care conţine memorie de date şi de program,
interfete seriale şi paralele, timere, sistem de intreruperi externe şi interne - toate integrate într-un singur
chip.
2. MEMORIA
Este compusa din doua blocuri
- Memoria de program
- Memoria de date
Memoria RAM de uz general

3. Memoria Program la Microcontrollere:


MCU din familia Microchip mid-range au un contor de program de:

13 biți => 213 = 8k spațiu de adresare 

16 biți => 216 = 64k spațiu de adresare (56k enhanced)


Instrucțiunile sunt organizate pe 14 biti si sunt ‘single word’
Rezulta un spațiu de adresare de:

 8k * 14 biți
 56k * 14 biți

Spațiul de memorie de program este divizata in pagini de cate 2k fiecare

 Memorie ROM
 Memorie FLASH
 Memorie EPROM
 Memorie EEPROM
Aceasta are organizarea de tip Stivuire.
4. Organizarea memoriei:
 Contorul de Program (PC) specifica adresa instrucțiunii care trebuie adusa pentru execuție.
 Are dimensiunea de 13 biți sau 16 biți pentru modelele enhanced .
 Este compus din doi byte, unul mai semnificativ (PCH), altul mai puțin semnificativ (PCL) PCL
 Este un registru care poate fi atât citit cat si scris PCH conține biții sau din PC si nu poate fi
direct citit si scris, ci numai prin intermediul registrului PCLATCH
 În general MCU preia informaţia de la interfeţele de intrare, o prelucrează  şi aplică rezultatul
către interfaţa de ieşire.
5. Contorul de program
 Pentru a comuta intre paginile de memorie de program, trebuie modificați cei mai
semnificativi biti din contorul de program.
 Daca se executa instrucțiuni consecutive, contorul de program va trece de granițele paginii
fără intervenția utilizatorului.
 Pentru dispozitive care au implementat mai puțin de 8k de memorie de program, accesarea
unei locatii peste cea fizica va cauza accesarea adresei din pagina fizica, ignorând biții din
PCLATCH.
Exista si un vector de reset, acesta va forta contorul de program sa fie setat la valoarea 00h.
Când o întrerupere este recunoscuta, pc este forțat la adresa 04h.
In momentul in care se face reset, se sterge continutul registrului PCLATCH.
6. Vectorul de reset
 Un reset va forta contorul de program la valoarea 00h
 Vom numi aceasta adresa adresa vectorului de reset”
 Orice reset va sterge continutul registrului PCLATCH
7. Vectorul de intrerupere
 Cand o intrerupere este recunoscuta , pc este fortat la adresa 04h.
 Vom denumi aceasta adresa : adresa vectorului de intrerupere
 Nu se modifica registrul PCLATCH
Trebuie avut grija daca adresa de salt din intrerupere este in alt bank de memorie Inainte de a
fi modificat de ISR, continutul PCLATCH trebuie salvat ,astfel incat dupa revenirea din rutina de
intrerupere ,continutul sau sa poata fi restaurat.
8. Stiva

 Memorie de tip LIFO


 Permite apariția unor combinații de pana la 8 sau 16 apeluri de subrutine sau întreruperi
 Conține adresa de reîntoarcere din ramura de program active , in execuția programului
 Uc din gama mid-range au o stiva cu 8 niv x 13 biti
 Spațiul stivei NU se poate citii sau scrie (?)
 Conținutul contorului de program este împins in stiva la execuția unei instrucțiuni sau când o
întrerupere provoacă o ramificare a programului
 PCLATCH nu este modificat atunci când se executa operații cu stiva
 Rolul său de bază este de a păstra valoarea contorului de program după un salt din programul
principal la o adresă a unui subprogram. Pentru ca un program sa stie cum sa se intoarca
inapoi de unde a pornit acesta trebuie sa mearga de la ultima valoarea pusa in stiva invers.

9. Prezentati un caz de setare a unei limite a memoriei de program


10. Periferice
Sunt dispozitive adaugate pe chip, care fac diferenta fata de un microprocesor
a. - Porturi I/O de uz general
b. - Timere
c. - Captura, comparare si modulatia impulsurilor in durata (CCPWM)
d. - Interfete seriale standard
e. - Interfete paralele standard
f. - Referinte de tensiune
g. - Comparatoare
h. - Convertoare analog digitale
i. - Afisaj lcd

11. Porturi I/O


 Sunt consideratecele mai simple periferice
 Acestea sunt interfete de intrare/iesire si sunt considerate ca cele mai simple periferice
 Pini I/O permit microcontrollerului sa monitorizeze si sa controleze alte dispozitive.
 Directia IN sau OUT a unui pin este controlata de registrul de directie a datelor notat TRIS.

12. Descrieti functionarea citirii de la un pin de I/O


 ....?????????

13. Timerul:
Circuite de temporizare si/sau numarare independente de functionarea CPU valoarea registrilor poate
fi citita si scrisa. La depasirea valorii maxime seteaza un bit de depasire si pot genera intreruperi.

Caracteristici:
 Poate fi scris is citit
 Prescaler de diferite dimensiunj (biti)
 Sursa pentru semnalul de clock poate fi externa sau interna
 Poate opera in diferite moduri(sincron, asincron)
 PWM

Descrierea functionarii unui timer de 8 biti (de cele mai multe ori timer0 si timer2)

 Poate fi citit si scris


 Prescaler si postscaler programabile software
 Registru de perioada  pentru generarea pwm
 Utilizat de modulul UART pentru generarea baud rate
 Interrupt on overflow (255→0)

Registrii TIMER0/TIMER2 si perioada


 TCCR0 folosit pentru a configura timerul (CS02, CS01, CS00)
 TCNT0 acesta este timerul care numara
 TIMSK0 este folosit pentru a activa sau dezactiva intreruperile

Sursa semnalului de clock:

 O singura sursa fosc/4


 Prescaler 1:1, 1:4 sau 1:16

Descrierea functionarii unui timer de 16 biti

 Poate fi citit si scris


 Prescaler si postscaler programabile software
 Registru de perioada  pentru generarea pwm
 Utilizat de modulul UART pentru generarea baud rate
 Acestea pot numara pana la 26, 536

Registrii TIMER1

 OCR1A – Output Compare Register A


 OCR1B – Output Compare Register B
 TIMSK – este folosit pentru a activa sau dezactiva intreruperile
 TIFR – Timer/Counter Interrupt Flag Register
 TCCR1A – Timer/Counter1 control Register A
 TCCR1B – Timer/Counter1 control Register B
1) Memoria de date a mictrocontrollerelor
a. Memoria RAM de uz general 
b. Registrii cu functiuni speciale (SFRs) 
2) Organizarea memoriei
a. Memoria de date este impartita in bancuri de memorie atat pentru zona GPR cat si pentru
zona SFR.
b. Pentru a comuta intre paginile de memorie de program, trebuie modificati cei mai
semnificativi biti din contorul de program.
c. Aceasta se face prin modificarea valorii unui registru special SFR numit program counter
latch high.
d. Mictrocontrollerele din familia Microchip au un contor de 13 biti (8k spatiu de adresare)
si 16 biti (64k spatiu de adresare) sau 56k enhanced – la intensitate mare
e. Instructiunile sunt organizate pe 14 biti si sunt de tip ‚single word’ , rezulta un spatiude
adresare de 8k*14 biti si 56k * 14 biti
3) Registrii cu functii speciale
Ajuta la realizarea unui sistem de incredere cu un cost mult redus.
Contine: 
 Configurare 
 POR (Power on RESET) 
 BOR (Brown out RESET) 
 Watchdog timer 
 Sleep 
 ICSP (Programarea in circuit) 

4) Tipuri de adresari
a. Adresarea directa
b. Adresarea indirecta
 Adresarea indirecta este un mod de adresare a memoriei de date, in care adresa memoriei de date
din instructiune nu este fixata.
 Este utilizat un registru SFR ca pointer la locatia din memoria de date care trebuie citita sau scrisa.
 Deoarece acest pionter este in RAM, continutul sau poate fi modificat de catre program.
5) Prezentati un caz de adresare indirecta a memoriei de date
Utilizarea adresarii indirecte simple pentru a sterge RAM intr-un numar minim de
instructiuni 
6) ADC
ADC-ul sau convertorul analog-digital este un periferic din cadrul microcontrollerului.
a. Caracteristici
i. Rezolutia
ii. Acuratetea
iii. Rata de esantionare
iv. Viteza
b. Descrieti functionarea unui modul ADC cu circuit de esantionare/memorare si convertor
cu aproximatii succesive de 10 bit
Convertorul mai precis conversia se face prin esantionare. Conversia se face comparand valoarea
esantionului cu o valoare numerica a unui esantion, cand valoarea esantionului de comparat scade sub
valoarea esantionului comparat. Fiecare numar apare la frecventa de esantionare, iar lungimea fiecarui
numar este de lungimea data in acel convertor de 10 biti. Astfel se obtine un sir de numere, repetabil,
valoarea in fiecare moment fiind reprezentata pe 10 biti.
Conversia succesiva, cu o rapiditate crescuta => convertorul cu aproximații succesive. Acesta funcționează
pe principiul evaluarii a unui esantion, care compara valoarea analogic cu jumatatea din valoarea maxima in
prima faza, dupa comparatie se compara cu jumatatea din valoarea ramasa, iar urmatorul pas cu jumatete din
valoarea care a ramas de comparat. Acest algoritm duce la ajungerea la o valoare mica, mai mica dacat acea
cuanta foarte rapid. Daca convetrorul este pe 10 biti sunt necesari 10 pasi de conversie + unul din motive
tehnice. uC necesita un pin de intrere analogica care este asignat unui circuit de esantionare- memorare,
pentru a memora es in intervalul a 2 esantionari. Dupa esantionare fiecare esantion necesita conversia,
aceasta facandu-se in 10+1 pasi. Esantionarea trebuie facuta astfrl incat frecventa sa fie x2 fata de cea a f din
spectrul semanaului es.
Modul de conversie: ADC = (VIN*1024) / VREF

i. Se definesc pinii de intrare si cei de iesire cu registrul DDR


ii. La pinul de intrarare se leaga ‚senzorul’ analog pentru ADC
iii. Se initializeaza timer-ul (definind anumiti registrii)
iv. La sfarsitul esantionarii se poate sa inceapa conversia sampling.
v. Timpul de conversie este timpul de conversies al ADC + timpul de esantionare
7) Sa se proiecteze schema de principiu a unui modul, schema logica a programului si programul
care realizeaza aprinderea intermitenta, cu frecventa de 1Hz, a doua LED-uri, unul rosu si celalalt
verde, utilizand microcontrolerul PIC12F675. Tema se va rezolva utilizand timere.

Fara timer:
DDRB = 0b00000000; //0 – output si 1 - input
while(1)
{
PORTB = 0b00000001;
_delay_ms(1000);
PORTB = 0b00000010;
}

Cu timer:
Configurarea registrilor:

#pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on
GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR
internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)

void interrupt ()
{
 //set timer value IE max is 255 for Timer0
 //reset interrupt flag to 0
 //increment a variable by 1
}

void main (void)


{
    while(1)
    {
    //reset Timer0
         if (/*timervariable is <1second*/)
        {
//aprinde led1
}
else
{
   //aprinde led2
        }
}
De la EMY

 Ce este ALU
o ALU este unitatea aritmetica s ilogica
o Aceasta este in strânsă legătura cu mărimea registrului de lucru si cu tipul mictrocontroller
 Ce face ALU
o Afecteaza functii aritmetice si logice intre date din registrul de lucru si oricare alt registru
o Poate efectua urmatoarele operatii:
 Adunare
 Scadere
 Shiftare
 Operatii logice
 Ce ste un mictrocontroller si ce face el
o uC este un sistem cu microprocessor (acesta are CPU, diferite memorii de date si programe si
porturi I/O, Timere...)
o +???
 Harvard
o Spatiu de memorie separate pentru instructiuni si date 
o Sunt posibile largimi diferite pentru busurile de date si instructiuni 
o Numar minim de cicli processor/ ciclu fetch 
o Cresterea reala a Throughput-ului 
 Von Neumann
o Instructiunile si datele sunt aduse pe acelasi bus = system de comunicare intre diferite
componente (autostrada de date) 
o Banda limitata 
o Numar mare de cicli processor/ ciclu fetch = operatia de baza a unui processor (citire,
decodificare, executie) 
o Versatilitate 
 Memoria program
o MAI SUS
 CPU
Responsabila cu: 
o Aducerea instructiunii corecte pentru executie 
o Decodarea acestei instructiuni 
o Executia acestei instructiuni 
CPU lucreaza in conjunctie cu ALU pentru a complete executia instructiunii (in operatii aritmetice  si logice) 
Controleaza: 
o Busul adreselor de memorie program 
o Busul adreselor se memorie de date 
o Accesul la stiva 
 Stiva (generatlitati)
o Este o memorie de tip LIFO (Last In First Out). 
o Permite aparitia unor combinatii de pana la 8 sau 16 (enhanced) apeluri de subrutine sau interuperi. 
o Spatiul stivei nu se poate citi sau scrie
o Spatiul stivei nu face parte din spatial de memorie program sau memorie de date
o Stiva este golita in cazul aparitiei uneia din instructiunile return, retlw sau retfie
 TRIS
o Bitii din registrul TRIS sunt suprascrisi  in cazul anumitor periferice, cand acestea sunt validate. 
o Trebuie evitate instructiuni de tip citeste-modifica-scrie (BSF, BCF, XORWF) care au ca destinatie
registrul TRIS. 
o Registrul TRIS controleaza directia pinilor portului, chiar cand acestia sunt utilizati ca intrari
analogice 
o Utilizatorul terbuie sa se asigure ca bitii TRIS se mentin setati tot timpul cand se utilizeaza acesti pini
ca intrari analogice. 
 PWM
o Fiecare modul CCP (comparare/captura/ PWM) contine un registru de 16 biti, care poate opera ca: 
 Registru de 16 biti de comparare 
 Registru de 16 biti de captura 
 Registru de 10 biti master/slave de factor de umplere pentru generare PWM 
o Fiecare modul CCP are 3 registrii. 
o Pot fi mai multe module CCP intr-un μC. 
o Mai cauta

FORMATUL GENERAL Al INSTRUCTIUNILOR


Instructiunile microcontrollerelor din gama mid-range pot fi impartite in patru formate
generale:
- Operatii cu registrii orientate pe byte
- Operatii cu registrii orientate pe bit
- Operatii literale si de control
- Instructiuni de salt (CALL si GOTO)
Codul de operand (opcode) al instructiunilor poate varia de la 3 la 6 biti
Sunt implementate 35 instructiuni

EXECUTIA INSTRUCTIUNILOR
Clock (ceas) de instructiune
Fiecare ciclu de instructiune (TCY) este alcatuit din 4 cicli Q (Q1-Q4)
Durata unui ciclu Q este aceiasi ca perioada oscilatorului (TOSC)
Cicli Q corespund proceselor de decodare, citire, procesare, scriere, etc.
Cei 4 cicli care formeaza un ciclu instructiune (TCY) pot fi generalizati ca:
- Q1: Ciclul de decodare a instructiunii sau NOP fortat
- Q2: Ciclu de citire a datelor sau NOP
- Q3: Procesarea datelor
- Q4: Ciclu de scriere a datelor sau NOP

REGISTRUL STATUS
Registrul STATUS contine:
- starea aritmetica a ALU,
- starea bitului RESET
- biti de selectie a bancului de memorie de date
Registrul STATUS poate fi destinatia oricarei instructiuni
Daca registrul STATUS este destinatia unei instructiuni care afecteaza biti Z, DC sau C,
scrierea acestor biti va fi blocata.
Acesti biti sunt setati sau stersi in concordanta cu logica microcontrollerului.
Biti C si DC opereaza ca bit de borrow (imprumut) si digit borrow in Scaderi.

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