Sunteți pe pagina 1din 25

Curs 8

Microcontrolere PIC de 8 bii - structur intern i funcionare Microcontroler sistem cu microprocesor: microprocesor + memorie + dispozitive de I/E Familii de microcontrolere de 8 bii: MCS 51 i compatibile (8 bii) 20 productori: o Intel o Atmel o Infineon Technologies (Siemens) o Maxim (Dallas Semiconductor) o NXP (Philips Semiconductor) o ST Microelectronics o Silicon Laboratories (Cygnal) o Texas Instruments o Cypress Semiconductor PIC Microchip AVR Atmel Z8 Zilog HC08, HC11, Freescale Semiconductor (Motorola Semiconductor) H8 Renesas Technology (Hitachi) PsoC Cypress Semiconductor

8.1. Caracteristicile generale ale microcontrolerelor PIC PICmicro Peripheral Interface Controller (Programmable Interface Controller Programmable Intelligent Computer) base-line PIC 10F (i o parte din PIC 12 i PIC 16) mid-range o parte din PIC 12, PIC 14 i PIC 16 high-end PIC 17 i PIC 18

PIC base-line cele mai simple microcontrolere PIC folosesc instruciuni codificate pe 12 bii mpachetate n capsule cu 6-28 de pini alimentate la tensiuni reduse ideale pentru sisteme alimentate pe baterii.

PIC 10F cele mai noi 6 pini PIC 12 8 pini (capsule DIP i SOIC), conin memorie Flash i OTP PIC 16C5X, PIC16F5X 14, 18, 20 i 28 pini (capsule SOIC i SSOP)

PIC mid-range folosesc instruciuni codificate pe 14 bii mpachetate n capsule cu 8-64 de pini conin memorie Flash, OTP, EEPROM 5 MIPS 35 de instruciuni (RISC) gestioneaz ntreruperi (stiv niveluri) hardware cu mai multe

PIC 16 integreaz diverse periferice: USB SPI I2C USART LCD


convertoare A/D

PIC high-end folosesc instruciuni codificate pe 16 bii mpachetate n capsule cu 18-80 de pini conin memorie Flash, OTP, EEPROM gestioneaz mai multe ntreruperi (stiv hardware cu 32 de niveluri) spaiu liniar de memorie de pn la 2 MB 10 MIPS 79 de instruciuni (RISC)

PIC 18 integreaz periferice complexe: CAN USB TCP/IP ZigBee

Caracteristici comune PICmicro: - ci separate pentru date i cod (arhitectur Harvard) - numr mic de instruciuni de lungime fix (arhitectur RISC) - cele mai multe instruciuni se execut ntr-un singur ciclu main (4 perioade de tact) - un singur acumulator (W workspace register), cu adresare implicit - un spaiu de date de 256 de octei (tipic), care poate fi extins pe bancuri de memorie - registrele CPU, ale porturilor i ale perifericelor - mapate n spaiul memoriei de date - numrtorul de program (Program Counter) este mapat n memoria de date (i poate fi nscris pentru a realiza salturi indirecte) - toate locaiile de memorie RAM intern pot fi surs sau destinaie pentru diferite operaii - nu exist o distincie ntre registre i memorie de date (RAM), memoria mai este numit i spaiul de registre (register file). - stiv hardware pentru stocarea adreselor de revenire din subrutine

Arhitectura intern a microcontrolerelor mid-range Program Counter de 13 bii Siv HW de 13 bii cu 8 niveluri Memorie program Flash - max. 8192 instruciuni de 14 bii Instruction register de 14 bii Opcode Decodificator de instruciuni i generare semnale de control

ALU de 8 bii Working register (8 bii) Status register (8 bii) Memorie de date (max. 512 cuvinte de 8 bii) File select register (8 bii) Memorie EEPROM Porturi de I/E Periferice integrate

Unitatea aritmetic i logic (ALU) - operanzi pe 8 bii adunare scdere i sau deplasare - 2 operanzi: - unul este n registrul W (working register) - cellalt este un registru (SFR sau GPR) sau o constant W nu este adresabil (nu este o locaie din spaiul de memorie de date Register file)

- 1 operand aflat n W sau ntr-un alt registru (adresabil n zona de memorie de date Register file)

Oscilatorul intern Selecia modului de lucru al oscilatorului pentru dispozitive care folosesc 2 bii de configurare (FOSC1FOSC0)
FOSC1 FOSC0 1 1 1 1 1 1 1 1 Mod Descriere RC Modul implicit - soluia cea mai ieftin, lucreaz la 0 4MHz, necesit doar un rezistor i un condensator montate n exterior. Dezavantaj: variaii mari ale frecvenei. Identic cu EXTRC cu CLKOUT. HS Rezonator ceramic / cristal de cuar cu frecven ridicat (420 MHz), consum mare Cristal de cuartz cu frecven (14 MHz) i consum mediu XT Cristal de cuartz cu frecven redus (32200 kHz), consum mic LP

pentru dispozitive care folosesc 3 bii de configurare (FOSC2FOSC0)


FOSC2 FOSC1 FOSC0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 0 Descriere Modul implicit soluie ieftin, lucreaz la 0 4MHz, necesit doar un rezistor i un condensator montate n exterior. Dezavantaj: variaii mari ale frecvenei. Pinul CLKOUT este validat. Soluie ieftin, lucreaz la 0 4MHz, necesit doar un rezistor i un condensator montate n exterior. Dezavantaj: variaii mari ale frecvenei. Funcia CLKOUT este dezactivat (pin de I/E). INTRC cu Cea mai ieftin soluie, lucreaz la 4MHz. Funcia CLKOUT este CLKOUT activat. INTRC Cea mai ieftin soluie, lucreaz la 4MHz. Funcia CLKOUT este dezactivat (pin de I/E). Rezervat Rezonator ceramic / cristal de cuar cu frecven ridicat (420 MHz), HS consum mare (High Speed) Cuartz cu frecven (14 MHz) i consum mediu (XTal) XT Cuartz cu frecven redus (32200 kHz), consum mic (Low Power) LP Mod EXTRC cu CLKOUT EXTRC

Utilizarea unui cristal de cuartz sau rezonator ceramic

Utilizarea unui generator de tact extern

Utilizarea unui oscilator extern (paralel sau serie)

Utilizarea oscilatorului cu un grup RC montat n exterior

REXT = 3K 100 K, CEXT > 20pF. Utilizarea oscilatorului cu grup RC intern 4 Mhz

Registrul intern OSCCAL permite calibrarea oscilatorului intern pentru ajustarea frecvenei.

CAL3CAL0 ajustare fin, n interiorul unei ferestre de frecven (0000=min, 1111=max) CALFST deplasarea ferestrei cu un offset spre valori mai mari ale frecvenei (fast) CALSLW deplasarea ferestrei cu un offset spre valori mai mici ale frecvenei (slow) Ultima locaie de memorie program conine o instruciune RETLW xx, unde xx=valoarea de calibrare stabilit de fabric.

Execuia instruciunilor tehnica pipeline pe 2 niveluri - extragerea unei instruciuni din memoria program se suprapune peste execuia celei anterioare

Logica de resetare a microcontrolerelor PIC Exist 6 tipuri de resetare: - Resetare la conectarea alimentrii (POR Power On Reset) - Resetare n timpul funcionrii normale ( MCLR Reset) - Resetare n regimul de consum redus ( MCLR SLEEP) - Resetare cauzat de ceasul de gard n timpul funcionrii normale (WDT Reset) - Resetare la coborrea temporar a tensiunii de alimentare sub un anumit prag (BOR Brown-out Reset) - Resetare cauzat de o eroare de paritate (PER Parity Error Reset)

Cele mai multe registre nu sunt afectate reset, cu excepia POR, cnd sunt poziionate aleator.

de

Altele, sunt forate ntr-o stare iniial, cunoscut.

VDD creste rapid

VDD crete ncet

Registrul PCON

MPEEN starea bitului de configurare Memory Parity Error Enable Biii 2, 1 i 0 indic apariia unui reset cauzat de o eroare de paritate, de o pornire la conectarea alimentrii, respectiv dup o coborre temporar a tensiunii de alimentare sub o valoare de prag. Registrul STATUS

/TO Time Out = a expirat timpul pentru ceasul de gard (resetare cauzat de WDT) /PD Power Down intrare n modul de consum redus (instruciunea SLEEP)

Organizarea memoriei la microcontrolerele PIC16 (mid-range) Tipuri de memorie Memorie program instruciuni Memorie de date variabile o Registre de uz general (GPR = General Purpose Registers) coninutul se pierde la deconectarea alimentrii o Registre cu funcii speciale (SFR - Special Function Registers) controleaz activitatea perifericelor interne Memorie EEPROM date nevolatile - coninutul se pstreaz la deconectarea alimentrii Memoria program Mid-range PICmicro - 2K, 4K, 8K instruciuni de 14 bii fiecare PC Program Counter numrtor de program, de maximum 13 bii (pentru dispozitive cu 8K instruciuni) Dup reset PC=0000h vectorul de reset Se incrementeaz automat dup fiecare extragere de instruciune din memoria program. Instruciunile care l pot modifica: Implicit - instruciuni de salt sau apel: GOTO adresa, CALL adresa; adresa este constant, cunoscut Explicit - instruciuni care pot scrie n PC determin un salt calculat la o anumit instruciune.

Modificarea PC-ului de ctre instruciuni de salt sau apel GOTO adresa, CALL adresa adresa adresa efectiv, pe 13 bii, la care se dorete a se efectua saltul sau apelul aceasta nu este complet ncorporat n instruciunea de 14 bii numai ultimii 11 bii mai puin semnificativi ai adresei efective sunt specificai de instruciune restul, adic cei mai semnificativi 2 bii ai adresei efective sunt ncrcai la execuie din registrul PCLATH

Rezultatul: o adresare paginat, cu maximum 4 pagini de 2K: adresa este un deplasament (sau offset) fa de nceputul paginii cei 2 bii din PCLATH furnizeaz codul paginii n care se afl locaia adresat

Observaii: Orice salt sau apel trebuie precedat de o analiz a situaiei: - n ce pagin se afl adresa efectiv, la care se face saltul/apelul - care este pagina selectat prin biii 4 i 3 din PCLATH Dac se constat c pagina n care se face saltul difer de cea curent selectat, instruciunea de salt/apel trebuie precedat de ncrcarea n PCLATH a codului paginii n care urmeaz s se fac saltul. Dac programul ncape ntr-o singur pagin, atunci nu este necesar modificarea registrului PCLATH. La resetare, PCLATH=0.

Modificarea PC-ului de ctre instruciuni de scriere n PCL

PC format din PCH i PCL (8 bii). Numai PCL poate fi nscris direct prin program. Atunci cnd se scrie n PCL, coninutul PCLATH se nscrie automat n PCH. PCLATH nu poate fi citit.

Stiva are 8 niveluri (locaii) pentru adrese de 13 bii nu este adresabil nici n spaiul memoriei program, nici n cel al memoriei de date stack pointerul nu este accesibil prin program nu exist instruciuni PUSH sau POP pe stiv se salveaz adresa de revenire la execuia instruciunii CALL sau la ntrerupere de pe stiv se reface PC la execuia unei instruciuni de revenire

Citirea/scrierea n spaiul de memorie program Unele dispozitive pot citi date de 14 bii amplasate n spaiul memoriei program: - sume de control, date de calibrare, iruri ASCII sau tabele de constante (look up tables) In acest scop se utilizeaz 5 registre SFR: - 2 registre selecteaz adresa: PMADRH - PMADR - 2 registre primesc data: PMDATH - PMDATA - 1 sau 2 registre controleaz accesul la memorie PMCON1 Alta variant, mai simpl, de citire date (numai 8 bii) din memoria program: RETLW xxh Dispozitivele cu memorie program de tip Flash pot s citeasc i s scrie n acest spaiu. In acest scop se utilizeaz 6 registre SFR: - 2 registre selecteaz adresa: EEADRH EEADR - 2 registre conin data: EEDATH - EEDATA - 2 registre controleaz accesul la memorie EECON1 i EECON2

Memoria de date pn la 512 locaii GPR i SFR 4 bancuri a cte 128 de locaii primele 32 locaii din fiecare banc rezervate pentru SFR unele locaii SFR sunt vizibile n toate bancurile unele locaii SFR nu sunt utilizate unele dispozitive au o zon de memorie partajat, comun pentru toate bancurile (ultimii 16 locaii din fiecare banc) Locaiile de memorie de date pot fi accesate n dou moduri: o adresare direct o adresare indirect

Adresarea direct a memoriei de date Adresa complet a unei locaii de memorie de date RAM este de 9 bii (maximum 512 locaii) O instruciune cu adresare direct nu furnizeaz dect 7 bii (cei mai puin semnificativi). Restul de 2 bii (cei mai semnificativi) provin din STATUS. Ei selecteaz unul din cele 4 bancuri de 128 de octei (RP1 i RP0).

Adresarea indirect a memoriei de date Adresa complet a unei locaii de memorie de date RAM este de 9 bii (maximum 512 locaii). Adresarea indirect se face cu registrul FSR, care furnizeaz doar 8 bii (cei mai puin semnificativi). Cel de-al 9-lea bit (cel mai semnificativ) provine din registrul STATUS (IRP). El selecteaz cte o pereche de bancuri de 128 de octei (perechea de bancuri 0 i 1, respectiv 2 i 3).

Memoria de date EEPROM Memorie de date nevolatil Permite stocarea a pn la 256 de octei de date Accesul se bazeaz pe aceiai regitri ca i la scrierea n memoria program de tip Flash o EEADR - selecteaz adresa o EEDATA conine data o EECON1 i EECON2 controleaz accesul la memorie Este disponibil la dispozitivele care permit scrierea n memoria Flash Poate fi nscris de un mare numr de ori (100000) Memoria program Flash poate fi nscris de pn la 1000 de ori.