Sunteți pe pagina 1din 34

CURS 2:

STRUCTURA UNUI uC
 CPU = Unitatea centrala

Contine:

- ALU (unitatea logica aritmetica)


- Memoria
- Oscilatorul
- Sistemul de reset
- Sistemul de intreruperi
- Set de instructiuni

 Periferice = dispositive adaugate pe chip, care fac diferenta fata de un microcontroller


Contine:
- Porturi I/O
- Timere
- CCPWM = captura, comparate si modulatia impulsurilor in durata
- Interfete seriare standard
- Interfete paralele standard
- Referinte de tensiune
- Comparatoare
- ADC = Convertoare analog digitale
- Afisaj LCD

 Functii speciale – ajuta la cresterea flexibilitatii in proiectare, a realizarii unui sistem de


incredere cu un cost mult redus
Contine:
- Configurare
- POR (Power on RESET)
- BOR (Brown out RESET)
- Watchdog timer
- Sleep
- Oscilatorul intern
- ICSP (Programarea in circuit)
ARHITECTURA UNUI uC
Influenteaza:

- Performantele globale
- Viteza operationala
- Structura memoriei disponibile

Se utilizeaza 2 concepte:

1. VON NEUMANN
- Instructiunile si datele sunt aduse pe acelasi bus = system de comunicare intre
diferite componente (autostrada de date)
- Banda limitata
- Numar mare de cicli processor/ ciclu fetch = operatia de baza a unui processor
(citire, decodificare, executie)
- Versatilitate
2. HARVARD
- Spatiu de memorie separate pentru instructiuni si date
- Sunt posibile largimi diferite pentru busurile de date si instructiuni
- Numar minim de cicli processor/ ciclu fetch
- Cresterea reala a Throughput-ului
Curs 3:
UNITATEA CENTRALA DE BAZA (CPU)
Responsabila cu:

- Aducerea instructiunii corecte pentru executie


- Decodarea acestei instructiuni
- Executia acestei instructiuni

CPU lucreaza in conjunctie cu ALU pentru a complete executia instructiunii (in operatii aritmetice si
logice)

Controleaza:

- Busul adreselor de memorie program


- Busul adreselor se memorie de date
- Accesul la stiva

ALU – Unitatea aritmetica si logica


- Afecteaza functii aritmetice si logice intre date din registrul de lucru si oricare alt registru
- Mărimea ALU este in strânsă legătura cu mărimea registrului de lucru si cu tipul uC
- Poate efectua urmatoarele operatii:
o Adunare
o Scadere
o Shiftare (deplasare)
o Operatii logice
- Operatiile se fac in complement fata de 2 (adica 2 N) daca nu se precizeaza
Legat de schema:

- In instructiuni cu 2 operanzi, de obicei unul este registrul de lucru (in cazul asta W
register), celalalt este un registru de uz general sau o constanta
- In instructiuni cu 1 operand, acesta poate fi ori registrul de lucru ori cel de uz general
- Registrul W este un registru pe 8 biti, neaccesabil
- In functie de instructiunile executate, ALU poate afecta valorile bitilor carry (C),
digit carry (DC) si zero (z) din registrul STATUS (adica ALU poate modifica valoriile)

FORMATUL INSTRUCTIUNILOR
Instructiunile uC din gama mid-range pot fi impartite in 4 forme:

- Operatii cu registrii orientate pe byte


- Operatii cu registrii orientate pe bit
- Operatii literale si de control
- Instructiuni de salt (CALL, GOTO)

Codul de operand al instructiunilor= opcode; poate varia de la 3 la 6 biti

EXECUTIA INSTRUCTIUNILOR

Fiecare ciclu de instructiune (TCY) este alcatuit din 4 cicli Q1…Q4. Durata unui ciclu Q este aceeasi ca
perioada oscilatorului (TOSC). Cicli Q corespund proceselor de decodare, citire, procesare, scriere,
etc.

Cei 4 ciclii pot fi generalizati ca:

- Q1: Ciclul de decodare a instructiunii sau NOP fortat


- Q2: Ciclul de citire datelor sau NOP
- Q3: Procesarea datelor
- Q4: Ciclul de scriere a datelor sau NOP

NOP = No Operation
SETUL DE INSTRUCTIUNI
Operatii cu registii orientate pe byte

Operatii cu registrii orientate pe bit

Operatii literale si de calcul


REGISTRUL STATUS
Poate fi destinatia oricarei instructiuni. Daca instructiunea trimisa in registru, afecteaza biti Z, DC sau
C, scrierea acestor biti va fi blocata. Acesti biti sunt setati sau stersi, depinde de logica uC.

Biti C si DC opereaza ca bit de borrow si digit borrow in scaderi.

carry (C),

digit carry (DC)

zero (Z)

Contine:

- Starea aritmetica a ALU


- Starea bitului RESET
- Biti de selectie a bancului de memorie de date
CURS 4:

MEMORIA:
Este compusa din 2 blocuri:

- Memoria de program
- Memoria de date
o Memoria RAM de uz general
o Registrii cu functiuni speciale (SFRs)

Fiecare bloc are propriul bus

Accesul la blocurile de memorie poate sa apara in acelasi ciclu system.

ORGANIZAREA MEMORIEI DE PROGRAM


MCU (microcontroller) din familia Microchip au un contor de program de:

- 13 biti – 213=8k spatiu de adresare (stocare)


- 16 biti– 216=64k spatiu de adresare (56k enhanced)-la intensitate mare

Instructiunile sunt organizate pe 14 biti si sunt de tip ‘single word’, rezulta un spatiu de adresare de:
- 8k * 14 biti
- 56k * 14 biti

Spatiul de memorie de program este divizata in pagini de cate 2k fiecare.

Pentru a comuta inte paginile de memorie de program, tebuie modificati cei mai semnificativi biti din
contorul de program (PC). Acesta se face prin modificarea valorii unui registru special SFR numit
program counter latch high (PCLATCH).

Daca se executa instructiuni consecutive, cotorul de program va trece de granitele paginii fara
interventia utilizatorului.

Pentru dispositive care au implementat mai putin de 8k de memorie de program, accesarea unei
locatii pestea cea fizica va cauza accesarea adresei din pagina fizica, ignorand bitii din PCLATCH.

 Vectorul de reset
- Un reset va fort contorul de program la valoarea 00h
- Vom numi aceasta adresa “adreas vectorului reset”
- Orice reser va sterge continutul registrului PCLATCH
 Vectorul de intrerupere
- Cand o intrerupere este recunoscuta, PC este fortat la adresa 04h – “adresa
vectorului de intrerupere”
- Nu se modifica registrul PCLATCH
o Adresa de salt din intrerupere este in alt bank de memorie
o 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

CONTORUL DE PROGRAM (PC)


- Specifica adresa instructiunii care trebuie adusa pentru executie
- Are dimensiunea de 13 biti sau 16 biti pentru modelele enhanced
- Este compus din 2 byte, unul mai semnificativ (PCH), altul mai putin semnificativ
(PCL)
- PCL este un registru care poate fi atat citi cat si scris
- PCH contine bitii <12:8> sau <15:8> din PC si nu poate fi direct citit si scris, ci numai
prin intermediul registrului PCLATCH

Situatia 1: - instructiune cu PCL ca destinatie. PC este incarcat prin scrierea PCL cu rezultatul ALU si
PCH din PCLATCH <4:0>

Situatia 2: - Instructiunea GOTO

Se arata cum PC este incarcat in timpul unei instructiuni GOTO 11 biti din adresa de salt si 2 biti din
PCLATCH <4:3>
Situatie 3: Instructiunea CALL

PC este incarcat in timpul unei instructiuni CALL: PC incarcat (PUSHed) in varful stivei, apoi incarcat
cu 11 biti din adresa de salt si 2 biti din PCLATH<4:3>

Situatie 4: Instructiuni tip Return

Se arata cum este incarcat PC in timpul unei instructiuni tip return, in care PC este incarcat (POPed)
din varful stivei

Curs 5:
STIVA
 Este o memorie de tip LIFO (Last In First Out).
 Permite aparitia unor combinatii de pana la 8 sau 16 (enhanced) apeluri de subrutine sau
interuperi.
 Contine adresa de reintoarcere din ramura de program active, in executia programului
 uC din gama mid-range au o stiva cu 8 nivele x 13 biti, iar cele din gama enhanced o stiva de
16 nivele de 15 sau 16 biti
 Spatiul stivei nu se poate citi sau scrie
 Spatiul stivei nu face parte din spatial de memorie program sau memorie de date
 Continutul contorului de program este “impins” (pushed) in stiva la executia unei instructuri
call sau cand o intrerupere provoaca o ramificare a programului
 Stiva este golita (poped) in cazul aparitiei uneia din instructiunile return, retlw sau retfie
 PCLATCH nu este modificat cand se executa operatii cu stiva
 Pentru gama mid-range nu exista indicatoare de depasire a numarului maxim de push-uri in
stiva
 Pentru gama enhanced exista doua indicatoare, unul de depasire a valorii maxime (overflow)
si unul de depasire a valorii minime (underflow)

STIVA PT uC ENHANCED
 Stiva poate opera ca un buffet circular, daca bitul STVREN este 0.
- Daca in stiva au fost PUSH 16 valori, cea de-a 17 va fi memorata in locul primei
introdusa
 NU sunt instructiuni de tip POP sau PUSH, dar sunt generate de instructiunile return,
retlw sau retfie
 PCLATCH nu este modificat cand se executa operatii cu stiva
 Pentru gama mid-range nu exista indicatoare de depasire a numarului maxim de push-
uri in stiva
 Pentru gama enhanced exista doua indicatoare, unul de depasire a valorii maxime
(overflow) si unul de depasire a valorii minime (underflow)

 Configuratia initiala a stivei:

Dupa reset stiva este goala. Pointerul de stiva este la 0x1F.

- Daca STVREN=1 atunci TOS=0x0.


- Daca STVREN=0 atunci TOS= continutul de la adresa 0x0F

-
 Configuratia stivei dupa primul CALL sau o singura intrerupere:

Daca este executata o instructiune RETURN

- adresa de return va fi pusa in PC


- pionterul de stiva va fi decrementat la starea goala

 Configuratia stivei dupa 7 instructiuni CALL sau intreruperi:

 Configuratia stivei dupa 16 instructiuni CALL sau intreruperi:


- Urmatoarea instructiune CALL sau intrerupere va seta Stack Pointerul la valoarea
0x10, identica cu 0x00 si va determina suprascrierea locatiei
- Daca bitul de Stack Overflow/Underflow Reset este validat, apare un reset si
- locatia nu va fi suprascrisa

ORGANIZAREA MEMORIEI DE DATE


 Memoria de date este formata din zona registrilor cu functii speciale (SFR) si din zona
registrilor pentru operatii generale (GPR)
- SFR controleaza operarea dispozitivului
- GPR – zona pentru memorare date generale

 Memoria de date este impartita in bancuri de memorie atat pentru zona GPR cat si pentru
zona SFR
- Zona GPR este impartita in bancuri pentru a putea permite adresarea a mai mult de
96 biti de memorie RAM
- registrii pentru functii speciale (SFRS) utilizati pentru controlul modulelor periferice
si a functiunilor centrale.

 Pentru a putea face selectia bancurilor de memorie avem nevoie de biti de control
 Acestia sunt localizati in registrul STATUS (STATUS<7:5>)
 Organizarea bancurilor difera de la dispozitiv la dispozitiv
 Pentru a muta continutul unui registru in altul, valoarea trebuie sa treaca prin registrul W
- Rezulta doua cicluri masina pentru mutari registru-registru
 Intreaga memorie poate fi accesata direct sau indirect
 Adresarea directa poate necesita utilizarea bitilor RP1:RP0
 Adresarea indirecta necesita utilizarea registrului de selectare a bancurilor (FSR) si a bitului
registrului pointer indirect (IRP) din registrul STATUS pentru accesarea zonelor bank0/1 sau
bank2/3 ale memoriei de date
ACCESAREA DIRECTA
EXEMPLU DE INSTRUCTIUNE

ADRESAREA INDIRECTA
 Adresarea indirecta este un mod de adresare a memoriei de date, in care adresa memoriei
de date din instructiune nu este fixate
 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
EXEMPLU DE ACCESARE INDIRECTA:

- UTILIZAREA ADRESARII INDIRECTE SIMPLE PENTRU A STERGE RAM (LOCATIILE 20h – 2Fh) INTR-
UN NUMAR MINIM DE INSTRUCTIUNI
Curs 6
RESET
 Logicade reset este utilizata pentru a aduce microcontrollerul intr-o stare stabila, cunoscuta.
 Sursa care a determinat aparitia semnalului de reset poate fi determinata verificand bitii de
stare a dispozitivului.
 Logica de reset este proiectata astfel incat sa creasca performanta si sa scada costul
sistemului.

Microntrollerul poate fi resetat prin:

- Power On Reset (POR):


o Circuitulde POR mentine dispozitivul in starea de reset, pana cand Vdd atinge un
nivel acceptabil pentru operare.
o Nivelul acceptabil poate sa difere in functie de preformantele cerute uC(viteze
mari de operare, modurile de lucru analogice)
o Acesta este generat intern cand este detectata o cresterea tensiunii Vdd.
 Tipuri practice de PORȘ
 Conectare directa a pinului MCLR la VDD
 Conectarea printr-un rezistor a pinului MCLR la VDD
 Conectarea printr-un rezistror paralel cu o dioda a pinului MCLR
de la VDD, condensator la masa.
- Brown Out Reset (BOR)
- MCLR Reset –Master clear reset
o In timpul functionari inormale
o In timpul modului SLEEP
- Watch Dog Timer Reset
- Instructiunede RESET
- Depsirea stivei
Power-up Timer (PWRT)

- Genereaza o intarzierede 72ms la aparitia POR si/sau BOR.


- PWRT trebuie activat intotdeauna cand este validat BOR
Oscillator Start-up Timer (OST)

- Genereaza o intarzierede 1024 perioadede oscilator dupa cea data de PWRT


- Este necesara pentru ca frecventa oscilatorului sa se stabilizeze de la aplicarea tensiunii
de alimentare

Secventa de power on:

 Se detecteaza POR intern


 Daca este validat, se executa un time-out dat de PWRT
 Dupa acest timp OST este activat.

Timpul total variaza cu configuratia oscilatorului, frecventei acestuia si starea bitului PWRTE.

Exemplu:

 In modul RC cu PWTRE = 1, t=0

Brown-out Reset (BOR)


 Circuitul pentru BOR va pune dispozitivul in reset cand tensiunea de alimentare a circuitului
cade sub o anumita tensiune
 Acest lucru ne asigura ca uC nu va continua executia programului in afara domeniului sigur
de functionare.
 Circuitul de BOR este controlat de bitul BODEN (0 – dezactivat, 1 – activat)

Conditii initiale pentru SFT


CURS 7
PORTURI I/O
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.

- TRIS<X> controleaza directia portului X.


- 1 – intrare
- 0 – iesire

Registrul PORT este un LATCH pentru datele de iesire, iar cand registrul PORT este citit se citeste
doar starea pinilor I/O nu si LATCH.

Cand registrul PORT este citit, se citeste starea prezenta a pinilor I/O si nu latch-ul!

Cand mai multe functiuni periferice sunt multiplexate in acelasi port, functionalitatea pinului
I/O respectiv trebuie schimbata astfel incat sa fie in concordanta cu cerintele functiunii respective.

Ex: ADC sau LCD module, la reset acesti pini sunt fortati ca pini I/O si trebuie programati ca pini de
intrare analogica, controlati de registrul ADCON1.

Citirea pinilor configurati ca intrari analogice va duce la rezultatul ‘0’.

REGISTRUL TRIS
Bitii din registrul TRIS sunt suprascrisi in cazul anumitor periferice, cand acestea sunt validate.

Trebuie evitate instructiuni de tip citeste-modifica-scrie (BSF, BCF, XORWF) care au ca destinatie
registrul TRIS.

Registrul TRIS controleaza directia pinilor portului, chiar cand acestia sunt utilizati ca intrari analogice

Utilizatorul terbuie sa se asigure ca bitii TRIS se mentin setati tot timpul cand se utilizeaza acesti pini
ca intrari analogice.

PORTURI I/O. NOTE


1. Daca pini sunt multiplexati cu intrari analogice, la un POR, acesti pini sunt configurati ca
intrari analogice, ca si cum ar fi controlati de registrul ADCON1. Citirea pinilor configurati ca
intrari analogice da ca rezultat ‘0’
2. Daca pini sunt multiplexati cu intrari de comparator, la un POR, acesti pini sunt
configurati ca intrari analogice, ca si cum ar fi controlati de registrul CMCON. Citirea
pinilor configurati ca intrari analogice da ca rezultat ‘0’
3. Daca pini sunt multiplexati cu drivere LCD, la un POR, acesti pini sunt configurati ca
drivere LCD, ca si cum ar fi controlati de registrul LCDSE. Pentru a configura acesti
pini ca port digital, biti corespondenti din registrul LCDSE trebuie stersi. Orice bit
setat in registrul LCDSE suprascrie orice bit corespondent setat in registrul TRIS.
4. Pini pot fi multiplexati cu portul paralel (PSP). Pentru functionarea portului PSP, pini
I/O trebuie configurati ca intrari digitale si trebuie setat bitul PSPMODE.
5. Portul paralel PSP este multiplexat numai la porturila PORTD si PORTE. Portul este
VALIDFAT numai la setarea bitului PSPMODE. In acest mod, userul trebiue sa se
asigure ca biti TRISE sunt setati (pini configurati ca intrari digitale) si ca porte este
configurat ca i/o digital. Portd va suprascrie valorile in registrul TRISD. In acest mod
bufferele intrarilor corespunzatoare PORTD si PORTE sunt TTL. Biti de control pentru
operatii PSP sunt situati in registrul TRISE.

Consideratii de programare pentru porturi I/O bidirectionale


Orice instructiune care efectueaza o operatie de scriere, efectueaza de fapt o operatie de citire
urmata de o operatie de scriere.

! Trebuie avut grija cand apar instructiuni de scriere urmate de operatiuni de citire, pe
acelasi port.

! Secventa de program trebuie sa permita stabilizarea valorii tensiunii la pin, inainte ca


urmatoarea instructiune care cauzeaza citirea de la port sa fie executata, altfel s-ar putea citi vechea
stare a portului in loc de cea curenta

Este recomandat ca la initializarea unui port i/o sa se respecte urmatoarea succesiune:

1. Initializarea registrului PORTx


2. Initializarea registrului TRISx

Consideratii de programareoperatii succesive la un port I/O


 Scrierea actuala la un port I/O la sfarsitul ciclului de instructiune, la fel ca in cazul citirii,
datele trebuie sa fie valide la inceputul ciclului de instructiune
 Trebuie avut grija cand apar instructiuni de scriere urmate de operatiuni de citire, pe acelasi
port
 Secventa de program trebuie sa permita stabilizarea valorii tensiunii la pin, inainte ca
urmatoarea instructiune care cauzeaza citirea de la port sa fie executata, altfel s-ar putea citi
vechea stare a portului in loc de cea curenta

CONSIDERATII DE PROGRAMAREOPERATII SUCCESIVE LA UN PORT I/O


Exemplu de model I/O care poate cauza o astfel de situatie:

 Daca frecventa I/O creste, creste pericolul descris anterior


 Cea mai buna solutie este inserierea cu pinul respectiv a unui rezistor
 O solutie mult mai ieftina este inserarea in program aunui ciclu nop
CURS 8
TIMERE
 Circuite de temporizare si/sau numarare independente de functionarea CPU.
 Valoarea registrilor poate fi citita si scrisa
 Sursa semnalului de clock poate fi interna sau externa microcontrollerului
 La depasirea valorii maxime seteaza un bit de depasire si pot genera intreruperi
 Marimea registrului timer este in functie de tipul μc si de tipul timerului ales

TIMER0
Proprietati:

- Timer / counter de 8 biti


- Poate fi citit si scris
- Prescaler pe 8 biti
- Sursa pentru semnalul clock poate fi externa sau interna

TIMER1
Proprietati:

- Timer / counter de 16 biti


- Poate fi citit si scris
- Prescaler pe 4 biti
- Sursa pentru semnalul clock poate fi externa sau interna
- TIMER1 poate opera in trei moduri:
o Timer sincron
o Numarator sincron
o Numarator asincron

Daca bitul T1SYNC este sters, semnalul clock extern este sincronizat cu semnalul de clock intern.
Sincronizarea este realizata dupa prescaler.

In aceasta configuratie, in modul sleep, TIMER1 nu va fi incrementat


TIMER1 nu poate fi utilizat pentru operatii de captura sau comparare.

TIMER1 operare in mod timer


 Modul timer este selectat prin stergerea TMR1CS (T1CON<1>)
 Intrarea de clock a TIMER1 este FOSC/4
 Bitul de control al sincronizarii T1SYNC (T1CON<2>) nu are efect deoarece semnalul
de clock intern este intotdeauna sincronizat

TIMER1 operare in mod numarator

 Modul numarator este selectat prin setarea TMR1CS (T1CON<1>)


o In acest mod timerul este incrementat la fiecare front crescator
 Daca bitul T1SYNC este sters, semnalul clock extern este sincronizat cu semnalul de clock
intern. Sincronizarea este realizata dupa prescaler
 In aceasta configuratie, in modul sleep, TIMER1 nu va fi incrementat

TIMER1 operare in mod numarator asincron

 Modul numarator este selectat prin setarea TMR1CS (T1CON<1>)


o In acest mod timerul este incrementat la fiecare front crescator
 Daca bitul T1SYNC este setat, semnalul clock extern nu este sincronizat cu semnalul de clock
intern.
 In aceasta configuratie, in modul sleep, TIMER1 va fi incrementat
 TIMER1 poate fi implementat ca un ceas de timp real
TIMER1 Registrii

TIMER2
Proprietati:

- Timer / counter de 8 biti


- Poate fi citit si scris
- Prescaler si postscaler programabile software
- Registru de perioada
- CCP pentru generare PWM
- UART pentru generare BaudRate
CURS 9
COMPARARE/CAPTURA
 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
 Modulele CCP sunt identice ca operare, cu exceptia operarii trigerului de evenimente
speciale.
 Fiecare modul ccp are 3 registrii
 Pot fi mai multe module CCP intr-un μC

Comparere/Captura/PWM
MODUL CAPTURA
 In mod captura, la un eveniment, se captureaza valoarea TMR1.
 Cand se realizeaza o captura, se seteaza bitul de cerere de intrerupere CCPxIF.
 Bitul CCPxIF trebuie sters prin software.
 Daca apare o noua captura inainte ca sa se citeasca registrii CCPRx, valoarea anterioara este
pierduta.
 captura nu reseteaza TIMER1.

Modul Comparare
 In mod comparare, valoarea din CCPRxH:CCPRxL este comparata constant cu valoarea din
TMR1.
 La aparitia unei egalitati, pinul CCPx este: 1 sau 0 sau neschimbat.
 Captura nu reseteaza TIMER1.
 TIMER1 va genera intreruperi la depasirea valorii maxime (FFFF)

CURS 10
PWM
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

Fiecare modul CCP are 3 registrii.

Pot fi mai multe module CCP intr-un μC.

REGISTRUL DE CONTROL CCPxCON


MODUL PWM

 In mod PWM, la pinul de iesire CCPx, se va genera un semnal PWM cu rezolutia de 10 bit.
 Pentru a fi disponibil ca pin de iesire, acesta trebuie sa aiba bitul corespondent din registrul
TRIS setat pe ‘0’.
 Stergerea registrului CCPxCon va forta LATCH-ul PWM de iesire la starea initiala: ‘0’
 Timer-ul de 8 biti este concatenat cu 2 biti ai clock intern sau cu 2 biti ai prescalerului pentru
a crea o baza de timp de 10 biti.

MODUL PWM - PERIOADA

 Perioada PWM este specificata prin scrierea registrului PR2


 Perioada PWM = [(PR2)+1]*4*TOSC*(valoarea prescaler TMR2) [TIMP]
 Frecventa PWM (FPWM) = 1/[perioada PWM]
 Cand TMR2 = PR2, vor aparea trei evenimente la urmatorul ciclu de incrementare:
- TMR2 este sters
- Pinul CCPx este pus pe ‘1’
- Factorul de umplere PWM este transferat din CCPRxL in CCPRxH
 Postscaler-ul TMR2 nu este utilizat in determinarea frecventei PWM.

MODUL PWM - FACTOR DE UMPLERE


- Factorul de umplere al PWM este specificat prin scrierea in registrul CCPRxLSI in bitii
DCxB1:DCxB0
- Rezolutia maxima este de 10 BITI
- Ccprxlcontine 8 BITI MSB
- Pentru calculul factorului de umplere PWM:
- PWM dc = (DCxB9:DCxB0)*TOSC*valoarea prescaler TMR2 [s]
- In mod PWM registrul CCPRxH este unul de tip READ-ONLY.
- Acesta este sfarsitul ciclului
- Valoarea maxima a rezolutiei pwm pentru o frecventa data este:
REZ = log2(FOSC/ FPWM) [BITI]
- Daca valoarea factorului de umplere PWM este mai mare decat perioada PWM, pinul
CCPxNU ajunge la ‘0’.
- Acest lucru permite un factor de umplere de 100%

MODUL PWM. REZOLUTIA MINIMA


Calculul perioadei PWM:

Rezolutia minima in timp a fiecarui Bit dintr-un ciclu PWM. depinde de prescaler-ul lui Timer2.

Gasirea rezolutiei maxime a factorului de umplere care poate fi utilizat cu o frecventa PWM de
78.125khz si frecventa oscilator 20MHz

- 1/78.125 kHz= 2PWM RESOLUTION • 1/20 MHz • 1


- 12.8 ms = 2PWM RESOLUTION • 50 ns • 1
- 256 = 2PWM RESOLUTION
- log(256) = (PWM Resolution) • log(2)
- 8.0 = PWM Resolution

Rezulta ca putem obtine cel mult o rezolutie de 8 biti in conditiile date.

Pentru a obtine o rezolutie mai mare a PWM se poate scadea valoarea frecventei PWM sau daca
este posibil, cresterea frecventei oscilatorului.
CURS 11
Comparatoare
 Modulul comparator contine unul sau mao multe comparatoare analogice.
 Intrarea si iesirea comparatoarelor sunt multiplexate cu pini de I/O.
 Ca intrare a comparatoarelor, pe langa pini de I/O, poate fi si iesirea sursei de referinta
interne.
 Controlul functionarii comparatorului se face cu registrul CMCON.

REGISTRUL CMCON

FUNCTIONAREA COMPARATORULUI
Intreruperile generate de comparator trebuie dezactivate in timpul configurarii dinamice a
modulului comparator. In caz contrar poate aparea o intrerupere falsa.

Timpul de raspuns al unui comparator este timpul minim trecut de la momentul selectarii unei noi
tensiuni de referinta sau sursa de intrare pana la momentul la care iesirea comparatorului are o
stare stabila.

Iesirea comparatorului se citeste prin intermediul registrului CMCON.

In funtie de configuratie, iesirea comparatorului poate fi conectata direct la pin.

In acest mod, iesirea la pin este asincrona cu CLOCK-UL sistem

 La citirea registrului PORTx toti pini configurati ca intrare analogica vor fi cititi cu valoarea ‘0’.
 Daca acesti pini sunt configurati ca intrare digitala si se aplica o tensiune analogica, valoarea
citita este in concordanta cu specificatiile trigerului SCHMITT.
 Nivele analogice aplicate oricarui pin definit ca intrare digitala poate cauza ca bufferul de
intrare sa consume mai mult curent decat este in specificatii.

COMPARATOARE. INTRERUPERI.
 Flag-ul de intrerupere al comparatorului este setat oricand valoarea de iesire a acestuia se
schimba.
 Pentru a a determina daca s-a schimbat starea actuala a comparatorului trebuie ca sa se
memoreze starea bitilor de iesire.
 Flag-ul de intrerupere a comparatorului este bitul CMIF
 Acest flag este setat la aparitia unei intreruperi si trebuie resetat software.
 Pentru validarea intreruperii trebuie setati atat bitii CMIE cat si PEIE.

INTRERUPERI
Utilizatorul, in rutina de tratare a intreruperii, poate sterge bitul de intrerupere in urmatoarele
moduri:

 Orice citire sau scriere in registrul CMxCON


 Stergerea bitului CMIF

Daca apare o schimbare a registrului CMCON (COUT) cand se incepe o operatie de citire, atunci flag-
ul de intrerupere poate sa nu fie setat.

REFERINTA DE TENSIUNE
 In functie de configuratia setata, la intrarea comparatorului se poate aplica o tensiune de
referinta interna.
 Valoarea tensiunii de referinta poate fi setata prin scrierea in registrul tensiunii de referinta
VRCON.
 Ecuatiile care determina valoarea tensiunii de iesire sunt:
De la cursuri:
- Latența: absorbed, by a body or a thermodynamic system, during a constant-temperature
process — usually a first-order phase transition + verifica curs: 10.06.20

De la Emy:

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