You are on page 1of 14

Tema 1.

S se caracterizeze familia de microcontrolere i dsp-uri de la fabricantul

Microchip din punct de vedere hardware, software (mediu de programare i aplicaii) i domeniu de aplicabilitate. Microchip Technology este unul dintre primii productori de microcontrolere i dsp-uri din America i din lume. Printre produsele fabricate i comercializate de ei se afl microcontrolere ca PICmicro, dsPIC / PIC24, PIC32. n 2009 Microchip Technology a lansat cea mai performant famile de microcontrolere nanoWatt XLP din punct de vedere energetic, avnd cel mai mic consum n starea de sleep, din lume. Microchip vine cu soluii pentru orice aplicaie avnd microcontrolere cu performane de 8 bii, 16 bii si 32 de bii n funcie de cerinele aplicaiei. Microcontroloerele de la Microchip Technology au ca avantaj o arhitectur bine pus la punct, cu tehnologii de memorie flexibile, cu programe de dezvoltare complete i uor de folosit si cu documentatii tehnice complete pentru toate produsele. Alte avantaje n folosirea microcontrolerelor de la Microchip sunt:

Migrare usoar ntre produsele din aceeai familie Produse uor de dezvoltat cu riscuri i timp sczut de producie Cost total de producie sczut

Migrarea uoar ntre produsele din aceeai familie. Toate microcontrolerele PIC i DSC-urile dsPIC suport migrare care ajut la dimensionarea proiectului. n alegerea platformei de lucru trebuie avut n vedere: Portofoliu complet: - numr de pini intre 6 100 - memorie program de la 284B pana la 512KB - frecventa de lucru pana la 80Hz

Arhitecturi compatibile pentru a pstra investiia n codul de dezvoltare Compatibilitatea pinilor n mai multe pachete faciliteaz schimbarea

microcontrolerelor Gama de tehnologii de memorii: - Self Programming Flash - OTP - ROM

Migrare uoar ntre familiile de microcontrolere 8, 16, 32-bii

Produse uor de dezvoltat cu riscuri i timp sczut de producie

Uneltele de dezvoltare de prima clas de la Microchip furnizeaz soluii performante i convenabile ca pre pentru dezvoltarea aplicaiilor. Mediu de programare a soluiilor de la Microchip este MPLAB IDE care nglobeaz n el componente cum ar fi compilatori, asamblori, programatori, simulatori i emulatori in-circuit. Cteva avantaje ale acestui mediu de programare sunt:

MPLAB IDE este un mediu de programare gratis, simplu i performant i suport Compilatoare C gratis pentru studeni Librrii software pentru aplicaii specifice i designuri de referin Pachete software pentru Interfee Grafice Utilizator (GUI) Instrumente hardware i software pentru partea ter

toate produsele MCU si DSC.

MPLAB X IDE este noua interfa grafic a debugerului folosit pentru toate produsele Microchip, include un editor text, editarea sursei pe nivele, administrarea de proiecte, simulare software, i suport utilitare de la Microchip ca MPLAB ICD3 i programatoarele PICkit 3, MPLAB PM3. Bazat pe platforma de lucru open-source de la NetBeans MPLAB ruleaz sub Windows, MAC i Linux i suport utilitare pentru teri i este compatibil cu multe pluginuri de la NetBeans.

Cost total de producie sczut Integrarea adecvat de periferice analog i digitale de la simplu la complex duce la minimizarea numrului de componente i scznd costul total de producie i crescnd rezistena. Cateva funcionaliti integrate n MCU i n DSC-uri sunt:

Comunicaii periferice: SPI, I2C, UART, CAN, USB, Ethernet, IrDA, LIN Controlul perifericelor: capturare/comparare, numrtoare, ceas i calendar n timp Drivere integrate de display: LED, LCD Oscilator intern integrat i PLL Periferice Analogice: - convertoare A/D, - comparatori, - amplificatoare operaionale, - detecie i reset brown-out, - detecie voltaj sczut, - senzori de temperatur, - convertoare D/A, - regulatoare de voltaj.

real, controler de motor i de susre de curent PWM

Microchip ofer de asemenea o varietate de memorii, module analog i interfee de

sine stttoare Microchip ofer soluii de aplicabilitate n aproape toate domenii. Cteva exemple de domenii sunt:

Automobile Bluetooth Electrocasnice Energetic Interfee Iluminat Mecatronic Soluii medicale Controlul motoarelor Msurtori Conectivitate cu i fr fir, i multe altele

Tema 2.

S se aleag un microcontroller pe 8 bii i pe baza datelor de catalog s se

caracterizeze din punct de vedere hardware. Microcontrollerele din aceast familie PIC18F1220/1320 sunt disponibile n variante de 18 pini, 20 pini i 28 pini. Schema bloc a acestor circuite integrate se regsete n figura de mai jos.

Aceste dispozitive se difereniaz ntre ele doar prin capacitatea de memorie Flash integrat n chip (4KO pentru PIC18F1220, 8KO pentru PIC18F1320). Caracteristici ale PIC18F1220 Acest microcontroller deine o memorie Flash de 4K, o memorie SRAM de 256 bii, i un modul EEPROM tot de 256 bii. Pe partea de interfee I/O dispune de 16 pini programabili grupai n 2 porturi de 8 bii, dintre care 7 canale au rol de convertor analogic-digital, unul e capabil de MIA(modulaie n amplitudine), modul de comunicaie EUSART i 4 timere. Este o caracteristic special capabilitatea de autoprogramare prin intermediul softwareului, dei se poate programa i prin intermediul a doi pini i a unui programator in-circuit asigurndu-se o alimentare stabil de 5 V. Totodat se poate depana in-circuit prin intermediul a doi pini. Microcontrollerul dispune de un set de 75 de instruciuni.

Memoria program Flash poate rezista la 100000 de cicluri de scriere/tergere, memoria data EEPROM la 1000000 de cicluri de scriere/tergere, iar datele stocate n ambele memorii pot fi reinute pe o perioad de 40 de ani dac nu se intervine din exterior. La varianta cu 18 pini putem defini pentru fiecare pin aciunea specific: RA1/AN1/LVDIN - pin de intrare/ieire digital; intrare analog 1; intrare cu detecie voltaj mic. RA2/AN2/VREF- - pin de intrare/ieire digital; intrare analog 2; voltaj referina 0 logic la CAN. RA3/AN3/VREF+ - pin de intrare/ieire digital; intrare analog 3; voltaj referina 1 logic la CAN. RA4/T0CKI - pin de intrare/ieire digital; semnal de ceas extern pentru timer 0. MCLR/VPP/RA5 - tensiunea de programare sau Master Clear activ pe 0 logic / intrare digital. OSC1/CLKI/RA7 - intrarea de oscilaie al cristalului de cuar exterior sau al semnalului de ceas intern / pin de intrare/ieire general. OSC2/CLKO/RA6 - semnal de ieire al oscilatorului extern sau al semnalului de ceas extern / pin de intrare/ieire general. RA0/AN0 - pin de intrare/ieire digital; intrare analog 0. RB0/AN4/INT0 - pin de intrare/ieire digital; intrare analog 4; ntrerupere extern 0. RB1/AN5/TX/CK/INT1 - pin de intrare/ieire digital; intrare analog 5; transmisie asincron pe EUSART; semnal de ceas sincron pe EUSART; ntrerupere extern 1; RB2/P1B/INT2 - pin de intrare/ieire digital; ieire pentru MIA; ntrerupere extern 2. RB3/CCP1/P1A - pin de intrare/ieire digital; intrare/comparare/MIA; ieire pentru MIA. RB4/AN6/RX/DT/KBI0 - pin de intrare/ieire digital; intrare analog 6; intrare asincron pe EUSART; date sincrone pe EUSART; ntrerupere la schimbare pin. RB5/PGM/KBI1 - pin de intrare/ieire digital; pin activare programare la voltaj sczut ICSP; ntrerupere la schimbare pin. RB6/PGC/T1OSO/T13CKI/P1C/KBI2 - de intrare/ieire digital; pin semnal de ceas programare ICSP; ieire oscilator timer 1; ieire semnal ceas extern timer 1/ timer 3; ieire pentru MIA; ntrerupere la schimbare pin. RB7/PGD/T1OSI/P1D/KBI3 - de intrare/ieire digital; pin de date pentru programare ICSP; intrare oscilator timer1; ieire pentru MIA; ntrerupere la schimbare pin. VSS referin la mas pentru pini I/O. VDD referin la tensiune de alimentare pentru pini I/O. NC neconectat.

Tema 3.

S se caracterizeze din punct de vedere software microcontrollerul ales

analizndu-se setul de instruciuni. Microcontrollerul PIC18F1220 deine un set de 75 de instruciuni. Acestea se mpart n 4 mari categorii:

Operaii cu regitri pe octet Operaii cu regitri pe bit Operaii de control Operaii cu literali

Majoritatea instruciunilor orientate pe octet au 3 operanzi:


1. 2. 3.

Registru de fiier (notat cu f) Destinaia rezultatului (notat cu d) Memoria accesat (notat cu a)

Identificatorul de registru notat cu f specific care registru va fi utilizat de ctre instruciune. Identificatorul de destinaie notat cu d specific unde va fi plasat rezultatul operaiei, dac d = 0 rezultatul va fi plasat n registrul WREG. Dac d = 1, rezultatul va fi plasat n registrul de fiier specificat n instruciune. Instruciunile orientate pe bit au 3 operanzi:
1. 2. 3.

Registru de fiier (notat cu f) Bitul din cadrul registrului fiier (notat cu b) Memoria accesat (notat cu a)

Identificatorul campului de bit selecteaza numarul bitului afectat de catre operatie, in timp ce identificatorul de registru reprezinta numarul fiierului in care se gaseste bitul. Instruciunile cu literali pot folosi urmatorii operanzi:
1.

O valoare litarala ce urmeaza a fi incarcata intr-un registru fiier (notat cu k) Registrul FSR in care se doreste sa se efectueze incarcarea (notat cu f) Fara operanzi (notat cu -)

2.
3.

Instruciunile de control pot folosi urmatorii operanzi:


1. 2. 3. 4.

O adres de memorie program (notat cu n) Modurile instruciunilor CALL i RETURN (notat cu s) Modul de citire din tabela de instruciuni (notat cu m) Fr operanzi (notat cu -)

Toate instruciunile sunt formate dintr-un singur cuvnt, excepie fcnd 3 instruciuni formate din 2 cuvinte. Aceste 3 instruciuni au luat aceast form pentru ca toat informaia necesar s se regseasc n cei 32 de bii. n al doilea cuvnt cei 4 bii semnificativi sunt 1. Dac acest al doilea cuvnt este executat de sine stttor ca instruciune, va fi executat ca NOP. Toate instruciunile formate dintr-un cuvnt sunt executate pe un singur ciclu instruciune, mai puin n cazul unui test condiional ce este adevrat, sau cnd contorul de program este schimbat ca rezultat al instruciunii. n aceste cazuri, execuia dureaz dou cicluri instruciune, cu ciclurile instruciune aferente executate ca NOP. Exemple: 1. ADDWF ADD W to f Syntax: [ label ] ADDWF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (W) + (f) dest 2. ADDWFC ADD W and Carry bit to f Syntax: [ label ] ADDWFC f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (W) + (f) + (C) dest 3. ANDWF AND W with f Syntax: [ label ] ANDWF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (W) .AND. (f) dest 4. DECF Decrement f Syntax: [ label ] DECF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (f) 1 dest 5. XORWF Exclusive OR W with f Syntax: [ label ] XORWF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (W) .XOR. (f) dest 6. BC Branch if Carry Syntax: [ label ] BC n Operands: -128 n 127 Operation: if Carry bit is 1 (PC) + 2 + 2n PC 7. RETURN Return from Subroutine Syntax: [ label ] RETURN [s] Operands: s [0,1] Operation: (TOS) PC, if s = 1 (WS) W, (STATUSS) Status, (BSRS) BSR, PCLATU, PCLATH are unchanged 8. POP Pop Top of Return Stack Syntax: [ label ] POP Operands: None Operation: (TOS) bit bucket

Tema 4. Pentru grupa de instruciuni de prelucrare aritmetic s se explice pe diagrama


bloc transferurile care au loc ntre unitile componente n timpul execuiei acestor instruciuni. ADDLW ADD literal to W Syntax: [ label ] ADDLW k Operands: 0 k 255 Operation: (W) + k W Descriere: Coninutul din registrul W este adunat la literalul k iar rezultatul este plasat n registrul W. Pai: se decodeaz instruciunea, se preia literalul k i este dus pe magistrala de date pn n UAL unde este adus i registrul W , se execut instruciunea de adunare dup care rezultatul este stocat napoi n registrul W. Exemplu: ADDLW 0x15 nainte de instruciune: W = 0x10 Dup instruciune: W = 0x25 ADDWF ADD W to f Syntax: [ label ] ADDWF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (W) + (f) dest Descriere: Adun coninutul registrului W la registrul f. Dac d este 0, rezultatul este stocat n registrul W. Dac d este 1, registrul este stocat napoi n registrul f (implicit). Dac a este 0, banca de acces este selectat. Dac a este 1, se foloseste BSR. Exemplu: ADDWF REG, W nainte de instruciune: W = 0x17 si REG = 0xC2 Dup instruciune: W = 0xD9 si REG = 0xC2 ADDWFC ADD W and Carry bit to f Syntax: [ label ] ADDWFC f [,d [,a]] Operands: 0 f 255 d [0,1] ; a [0,1] Operation: (W) + (f) + (C) dest

Descriere: Adun coninutul registrului W, bitul de transport i valoarea din registrul f. Dac d este 0, rezultatul este stocat n registrul W. Dac d este 1, registrul este stocat napoi n registrul f (implicit). Dac a este 0, banca de acces este selectat. Dac a este 1, se folosete BSR. Exemplu: ADDWFC REG, W nainte de instruciune : Carry bit = 1 ; REG = 0x02 ; W = 0x4D Dup instruciune : Carry bit = 0 ; REG = 0x02 ; W = 0x50 DECF Decrement f Syntax: [ label ] DECF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (f) 1 dest Descriere: Se decrementeaz registrul f. Dac d este 0, rezultatul este stocat n registrul W. Dac d este 1, registrul este stocat napoi n registrul f (implicit). Dac a este 0, banca de acces este selectat, ignornd valoarea din BSR. Dac a este 1, se folosete banca de acces n funcie de BSR. Exemplu: DECF CNT nainte de instruciune : CNT = 0x01 ; Z = 0 Dup instruciune : CNT = 0x00 ; Z = 1 DECFSZ Decrement f, skip if 0 Syntax: [ label ] DECFSZ f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (f) 1 dest, skip if result = 0 Descriere: Se decrementeaz registrul f. Dac d este 0, rezultatul este stocat n registrul W. Dac d este 1, registrul este stocat napoi n registrul f (implicit). Dac rezultatul este 0, urmtoarea instruciune, deja preluat, nu se mai execut, i o NOP este executat n locul acesteia, astfel rezultnd o instruciune pe dou cicluri. Dac a este 0, banca de acces este selectat, ignornd valoarea din BSR. Dac a este 1, se folosete banca de acces n funcie de BSR.

Exemplu:

HERE DECFSZ CNT GOTO LOOP CONTINUE

nainte de instruciune: PC = Address (HERE) ; Dup instruciune: CNT = CNT 1 If CNT = 0; PC = Address (CONTINUE) If CNT 0; PC = Address (HERE + 2) INCF Increment f Syntax: [ label ] INCF f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (f) + 1 dest Descriere: Se incrementeaz registrul f. Dac d este 0, rezultatul este stocat n registrul W. Dac d este 1, registrul este stocat napoi n registrul f (implicit). Dac a este 0, banca de acces este selectat, ignornd valoarea din BSR. Dac a este 1, se folosete banca de acces n funcie de BSR. Exemplu: INCF CNT nainte de instruciune: CNT = 0xFF ; Z = 0 Dup instruciune: CNT = 0x00 ; Z = 1 MULLW Multiply Literal with W Syntax: [ label ] MULLW k Operands: 0 k 255 Operation: (W) x k PRODH:PRODL Descriere: O nmulire fr semn se efectueaz ntre coninutul registrului W i literalul pe 8 bii k. Rezultatul pe 16 bii este plasat n perechea de regitri PRODH:PRODL. PRODH conine bitul cel mai semnificativ. W este neschimbat. Niciunul dintre biii de stare nu este afectat. A se nota c nici depirea si nici transportul nu sunt posibile n cadrul acestei operaii. Exemplu: MULLW 0xC4 nainte de instruciune: W = 0xE2 ; PRODH = ? ; PRODL = ? Dup instruciune: W = 0xE2 ; PRODH = 0xAD ; PRODL = 0x08

MULWF Multiply W with f Syntax: [ label ] MULWF f [,a] Operands: 0 f 255 a [0,1] Operation: (W) x (f) PRODH:PRODL Descriere: O nmulire fara semn se efectueaz ntre coninutul registrului W i literalul pe 8 bii k. Rezultatul pe 16 bii este plasat n perechea de regitri PRODH:PRODL. PRODH conine bitul cel mai semnificativ. W este neschimbat. Nici unul dintre biii de stare nu este afectat. A se nota c nici depirea i nici transportul nu sunt posibile n cadrul acestei operaii. Un rezultat de zero este posibil dar neobservabil. Dac a este 0 va fi selectat banca de acces, ignornd valoarea BSR. Dac a este 1 , atunci se selecteaz banca de acces depinznd de valoarea BSR. Exemplu: MULWF REG nainte de instruciune: W = 0xC4 ; REG = 0xB5 ; PRODH = ? ; PRODL = ? Dup instruciune: W = 0xC4 ; REG = 0xB5 ; PRODH = 0x8A ; PRODL = 0x94 SUBFWB Subtract f from W with borrow Syntax: [ label ] SUBFWB f [,d [,a]] Operands: 0 f 255 d [0,1] a [0,1] Operation: (W) (f) (C) dest Descriere: Se scade registrul f i bitul de transport(mprumutul) din registrul W(metoda complementului fa de 2). Dac d este 0 rezultatul este stocat n W. Dac d este 1rezultatul este stocat n f(implicit). Dac a este 0 va fi selectat banca de acces, ignornd valoarea BSR. Dac a este 1 , atunci se selecteaz banca de acces depinznd de valoarea BSR. Exemplu 1: SUBFWB REG nainte de instruciune: REG = 0x03 ; W = 0x02 ; C = 0x01 ; Dup instruciune: REG = 0xFF ; W = 0x02 ; C = 0x00 ; Z = 0x00 ; N = 0x01 ; rezultatul este negativ Exemplu 2: SUBFWB REG, 0, 0 nainte de instruciune: REG = 2 ; W = 5 ; C = 1 Dup instruciune: REG = 2; W = 3 ; C = 1 ; Z=0; N=0; rezultatul este pozitiv Exemplu 3: SUBFWB REG, 1, 0 nainte de instruciune: REG = 1 ; W = 2 ; C = 0 Dup instruciune: REG = 0 ; W = 2 ; C = 1 Z=1; rezultatul este zero

Universitatea Dunrea de Jos Galai Facultatea de Automatic, Calculatoare, Inginerie Electric i Electronic

Dosar teme Procesoare Numerice de Semnal

Echipa nr. 2: Sandu Alin Teac Madalina Roxana Veliche George Grupa: 2232B

2011-2012