Sa spunem cite un Pic si pentru novici...


Microcontrolerele PIC au fost dezvoltate de firma americana Microchip, la inceputul anilor `90. Faptul remarcabil pentru care a putut cuceri un important segment din piata de microcontrollere a fost modalitatea simpla de inscriere a programului (seriala, necesita doar trei fire), memoria program continuta in aceeasi capsula, noua tehnologie CMOS de realizare (deci consum redus) si pretul relativ scazut.

Aproape toate microcontrollerele PIC exista in doua versiuni, si anume:

- "Windowed", marcate cu sufixul "JW" pe capsula (Ex. 12C509-04/JW). Aceste chip-uri se folosesc la dezvoltarea de aplicatii deoarece permit stergerea programului si reinscrierea lui, de mai multe ori. Stergerea programului se face prin expunerea chip-ului la raze ultraviolete. Capsula are prevazuta pe partea de sus o fereastra din sticla de cuart prin care pot patrunde razele ultraviolete.

- "OTP" (One Time Programable), cele programabile o singura data. Functional si tehnologic sint identice cu cele "windowed", doar ca nu au prevazuta fereastra de cuart, deci programul odata inscris nu mai poate fi sters. Deci o aplicatie gata dezvoltata si incercata cu o versiune "windowed" poate fi multiplicata pentru productie de serie in capsule "OTP" care sint de citeva ori mai ieftine.

Aceste doua versiuni, Windowed si OTP sint realizate in tehnologie CMOS EPROM.

Mai nou, ca o mediere intre versiunile "windowed" si "OTP" a aparut o noua versiune numita:

- "Flash", bazata pe tehnologie CMOS EEPROM. Aceste chip-uri nu au fereastra dar pot fi totusi sterse si reprogramate de mai multe ori. Sint folosite atit la dezvoltare de aplicatii cit si la produse de serie. Ele sint marcate cu un "F" pe capsula (ex. 16F84-10/P).

Sint foarte raspindite in cercul hobby-stilor si a amatorilor de electronica, deoarece inscriptoarele necesare pentru tipurile Flash pot fi construite si acasa, fiind foarte simple.

 

 

Primii pasi inspre PIC !!!

CONSULTAREA DOCUMENTATIEI publice a microcontrollerului care ne intereseaza (recomandabil, pentru inceput, este cel mai popular model - PIC16F84). Documentatia in limba engleza poate fi gasita si descarcata de pe pagina de Internet a producatorului, de la adresa www.microchip.com/10/Lit/PICmicro/index.htm . Sau se gaseste aici in limba romama, sub forma unei brosuri. Acolo se pot vedea toate caracteristicile, semnificatiile pinilor, dispunerea registrilor, setul de instructiuni (mnemonicele) de asamblare. Aceste controllere sint de constructie RISC, adica au un set redus de instructiuni (cca 35), care difera foarte putin de la tip la tip, in functie de specificitatile hardware (daca contin convertor analog-digital, EEPROM de date, magistrale SPI sau I2C, etc.) ale fiecarui tip in parte.

Pentru ca un PIC sa execute oarece operatii este o conditie necesara, dar nu si suficienta, de a scrie un program.

SCRIEREA UNUI PROGRAM poate fi facuta intr-un limbaj de nivel inalt (cu ajutorul compilatoarelor C, sau Basic, sau Pascal, etc.) sau in limbajul de asamblare specific PIC-ului. In ambele cazuri este necesar un calculator, daca se poate compatibil IBM-PC. Scrierea unui program este mai usoara intr-un limbaj de nivel inalt, singurul dezavantaj fiind ca aceste compilatoare sint foarte scumpe. Ele "traduc" de fapt limbajul de nivel inalt in limbajul de asmblare. Deci, pentru amatori ramine varianta scrierii programelor in limbajul de asamblare. Programul microcontroller-ului este de fapt un fisier cu extensia "asm" realizat cu orice editor de text, in modul text ASCII neformatat. Cu ajutorul unui asamblor (program gratuit, numit mpasm.exe) acest fisier "asm" este asamblat si astfel se genereaza codul masina ce este stocat intr-un fisier cu extensia "hex". Acest fisier contine instructiunile si datele ce trebuie trimise catre memoria PIC-ului, cu ajutorul unui inscriptor.

VERIFICAREA SI SIMULAREA FUNCTIONARII PROGRAMULUI (e recomanbil)

Un program scris in limbajul de asamblare nu este destul de lizibil si de aceea pot exista greseli de conceptie a programului, sau erori de programare, desi instructiunile sint corecte. De exemplu vrem ca sa se aprinda un led conectat la un anumit pin, dar acel pin nu l-am reglat sa fie pin de iesire ! Deci led-ul nu are cum sa lumineze, iar asamblorul nu poate ghici ca noi vrem ca led-ul sa si lumineze. Aceste greseli n-au cum sa fie detectate de asamblor. Intr-un cuvint, dezvoltarea de aplicatii in limbajul de asmblare este anevoioasa.

Pentru rezolvarea usoara a acestor probleme s-au inventat simulatoarele si emulatoarele.

Acestea sint niste periferice destul de scumpe, care conectate la un calculator pot imita perfect, (chiar si in timp real) atit din punct de vedere al soft-ului, cit si a hard-ului, un anume microcontroler.

Nu va speriati ! Exista si solutii gratuite !

Producatorul pune la dispozitie, gratuit, un mediu de dezvoltare (programul mplab 8MB) care este in acelasi timp si un simulator. Deci buna functionare a unui program de asamblare destinat unui PIC poate fi testata fara a dispune fizic de acel PIC. In acest mediu de dezvoltare poate fi vazuta in mod interactiv memoria program, registrii, bitii de stare, pot fi introdusi stimuli externi, pinii pot fi pusi la nivelul logic dorit, etc. Programul din acest PIC virtual poate fi rulat pas cu pas sau rapid, pot fi masurati cicli de executie, etc.

Scopul acestor asambloare si medii de dezvoltare este de a realiza un program functional pentru PIC.

INSCRIEREA PROGRAMULUI VERIFICAT IN PIC

In fine, scriind intr-un mod anume un program functional pentru PIC, asamblindu-l si obtinind codul masina (fisierul .hex) acesta trebuie introdus in PIC. Aceasta operatie se numeste inscriere si se executa cu ajutorul unui inscriptor (sau programator). Inscriptoarele industriale sint destul de scumpe, deci un amator va alege o alta cale si anume, va construi unul. Pentru seria de PIC-uri Flash inscriptoarele construite acasa sint simple. Iata o schema . Acest inscriptor se branseaza cu ajutorul unei mufe la un port serial al calculatorului (locul unde intra in general un mouse). Avantajul aici este ca acest inscriptor nu necesita sursa de alimentare separata. El consuma foarte putin, iar atit isi ia chiar din portul serial. Fiecare inscriptor are si un mic program specific, care interpreteaza acel fisier hex si il trimite in memoria unui PIC. Acest program este PIP02, iar aceasta versiune beta este gratuita.

 

 

 

 

 

Fisierul clipici.hex poate fi descarcat de aici

oscilator

 

 

 

 

PROGRAMUL DE TEST pentru PIC16F84 este un clipici cu un led, program care poate fi extins ulterior si va da nastere unei lumini dinamice cu patru canale.

Conexiunea pinilor.

PIC16F84 exista (si) in capsula PDIP de circuit integrat care are 18 pini.

pin 1 -> PORTA2

pin 2 -> PORTA3

pin 3 -> PORTA4

pin 4 -> -MCLR (de fapt este un reset, negat)

pin 5 -> GND

pin 6 -> PORTB0

pin 7 -> PORTB1

pin 8 -> PORTB2

pin 9 -> PORTB3

pin 10 -> PORTB4

pin 11 -> PORTB5

pin 12 -> PORTB6

pin 13 -> PORTB7

pin 14 -> V+

pin 15 -> OSC2

pin 16 -> OSC1

pin 17 -> PORTA0

pin 18 -> PORTA1

;decupeaza de aici in jos --------------------------------------------------

;PROGRAM DE TEST - "CLIPICI.ASM"

;programul de fata face sa se aprinda si sa se stinga un led conectat la

; pinul RB4

;legaturi la capsula:

;pin4 (-MCLR) la +4...6V

;pin5 (GND) la masa

;pin14 (V+) la +4...6V

;pin 10 la plusul ledului, iar minusul ledului la masa printr-o rezistenta de 1K

;pin16 (OSC1) ->cu o rezistenta de 32K la +4...6V

; ->cu un condensator de 1nF la masa

;Restul pinilor ramin in aer.

 

;programul de fata face sa se aprinda si sa se stinga un led conectat la

;pinul RB4 cu o frecventa de cca 1Hz.

LIST P=PIC16F84 ;aici declaram cu ce procesor lucram

__CONFIG B'11111111111011' ;reglam cuvintul de configurare, care ; contine si tipul de oscilator

; In aceasta aplicatie folosim oscilator RC

W EQU H'0000' ;declaram destinatiile operatiilor

F EQU H'0001' ;declaram destinatiile operatiilor

PORTB EQU H'0006' ;declaram pozitia portului B (e stabilita ;din fabricatie, dar depinde de la ;tip la tip

TRISB EQU H'0086' ;declaram pozitia registrului de tri-state a ; portului B (idem)

CONTOR EQU H'000C' ;declaram pozitia contorului (poate fi liber ; aleasa in zona RAM)

 

MOVLW B'11101111' ;incarcam W cu aceasta vaoare binara care va ; fi "umbra" registrului TRISB

TRIS PORTB ;pinul RB4 se regleaza ca fiind de iesire

 

START BSF PORTB,4 ;aprinde ledul

CALL ASTEPT ;intra in subrutina de asteptare si asteapta 1 sec

BCF PORTB,4 ;stinge ledul

CALL ASTEPT ;asteapta o secunda

GOTO START ;reia totul de la inceput

 

ASTEPT MOVLW D'241' ;incarca acumulatorul (W) cu valoarea 255 ; (zecimal)

MOVWF CONTOR ;transfera valoarea acumulatorului in ; CONTOR, deci incarca CONTOR-ul

 

LOOP1 NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

DECFSZ CONTOR,F ;decrementeaza contorul de asteptare

GOTO LOOP1 ; daca a ajuns aici contorul este nenul, ; deci il trimite spre o noua ; decrementare

RETURN ; daca a ajuns aici contorul e nul, a trecut ; secunda si reda controlul

; programului principal

END

;decupeaza pina aici--------------------------------------------------------

Viteza de clipire a ledului depinde de valoarea elementelor RC folosite.

Daca in loc de elemente RC folosim un cristal de quartz miniatura, din ceasurile de mina (32768Hz) atunci frecventa de clipire va fi 1Hz, cu o precizie de 1 la mie. Dar atunci trebuie modificat cuvintul de configurare, pentru utilizarea cristalelor de mica putere (LP). Vezi modul de conectare al cristalului in documentatie

 

 

Daca secventa START.. . ASTEAPTA din programul clipici.asm este inlocuita cu secventa de mai jos, restul programului raminind neschimbat obtinem o lumina dinamica cu 4 canale

START BSF PORTB,4 ;aprinde ledul 4

CALL ASTEPT ;intra in subrutina de asteptare si asteapta 1 sec

BCF PORTB,4 ;stinge ledul 4

BSF PORTB,5 ;aprinde ledul 5

CALL ASTEPT ;asteapta o secunda

BCF PORTB,5 ;stinge ledul 5

BSF PORTB,6 ;aprinde ledul 6

CALL ASTEPT ;asteapta o secunda

BCF PORTB,6 ;stinge ledul 6

BSF PORTB,7 ;aprinde ledul 7

CALL ASTEPT ;asteapta o secunda

BCF PORTB,7 ;stinge ledul 7

GOTO START ;reia totul de la START

ASTEPT ..........

 

Fisierele clipici.hex si lumdin.hex (lumina dinamica) le puteti descarca de acum de aici, impreuna cu toata povestea de mai sus.

 


		Vom mai continua !
		Mai vizitati aceasta pagina WEB !
		Va multumim pentru atentia acordata !
		Speram ca v-am fost de folos !

Inapoi la pagina principala