Ovde će biti reči o MICROCHIP-ovom mikrokontroleru PIC16F84. Zašto bas PIC16F84? Odgovor je jednostavan; u vreme kada sam rešio da počnem sa proučavanjem mikrokontrolera, u domaćem časopisu "PC" krenuo je serijal tekstova Voje Antonića o PIC16C84 (16F84 se malo razlikuje od svog prethodnika), a pored drugih koji su u to vreme bili aktuelni, učinilo mi se da on ima odlične performanse za jednog početnika. No, krenimo redom.

OSNOVNO O PIC16F84

PIC16F84 ima 18 pinova od kojih čak 13 mogu da se koriste kao I/O linije (I=input - ulaz, O=output - izlaz), ima FLASH programsku memoriju od 1024 reči (svaka je dužine 14 bitova), RAM memoriju od 68 bajtova i 64 bajta internog EEPROM-a. Programska FLASH memorija može da se reprogramira oko 1000 puta i garantovano "čuva" program bar 40 godina. EEPROM može da se reprogramira cak 1 000 000 puta i takodje čuva podatke bar 40 godina. RAM memorije ima više od 68 bajtova, ali je jedan deo rezervisan za registre sa specijalnim funkcijama. Takodje postoji i STACK od 8 nivoa; STACK je, ukratko, neka vrsta skladišta za memorijsku adresu na koju program treba da se vrati nakon poziva potprograma, a takvih ugnježdenih poziva može da bude maksimalno 8, što je i više nego dovoljno za mikrokontroler sa ovakvim performansama. Napon napajanja se kreće od 2 do 6 V, a potrošnja je manja od 2 mA pri napajanju od 5V i taktu od 4MHz. Potrošnja pri 2 V i taktu od 32kHz je oko 15 uA (mikroampera), a kada je u SLEEP modu pri 2V pada ispod 1uA. Što se tiče takta, on može da ide od 0 do 20 MHz; prvo su postojale dve verzije IC-a, do 4 i do 10MHz, ali se nedavno pojavila i verzija do 20 MHz. Arhitektura je RISC tipa (reduced instruction set) što znači da ima malo instrukcija (svega 35), ali se izvršavaju maksimalno brzo.

POSEBNE FUNKCIJE

Posebne funkcije ugradjene u ovaj MCU su: power-on reset (POR), obezbedjuje interni reset mikrokontrolera pri uključenju napajanja; power-up timer (PWRT), obezbedjuje fiksno kasnjenje od 72 ms pri uključenju napajanja dok se napon ne stabilizuje; oscilator start-up timer (OST), drži IC u reset stanju dok se ne stabilizuje oscilator; watchdog timer (WDT), omogućava reset IC-a nakon odredjenog vremena ako je zapao u mrtvu petlju (dead lock) i sl; zaštita od čitanja sadržaja memorije; SLEEP funkcija za minimalnu potrošnju; odabir nekoliko vrsta oscilatora; serijsko programiranje čak i kada je IC montiran na PCB; 4 izvora interapta - prekida; interapt, je u stvari, prekid redovnog izvršavanja programa iz nekog razloga, odlazak na deo programa koji se izvršava u tom slučaju. Nakon što se završi interapt rutina, MCU se vraća tamo gde je stao u izvršavanju redovnog programa (adresu povratka čuva na STACK-u).

RASPORED I FUNKCIJA PINOVA

pin 1 = RA2, I/O linija porta A, TTL tipa.

pin 2 = RA3, I/O linija porta A, TTL tipa

pin 3 = RA4/TOCKI, I/O linija porta A, takodje služi kao ulaz do TMR0 brojača. Kada je I, onda je ST tipa (schmitt trigger), a kada je O, onda je open- drain.

pin 4 = inv. MCLR (invertovan MCLR, obeležava se i sa -MCLR), reset pin (reset kada je na niskom nivou) ili se dovodi napon programiranja.

pin 5 = masa napajanja.

pin 6 = RB0/INT, I/O linija porta B, ili izvor spoljnog interapta, TTL/ST (ST kada je ulaz za interapt).

pin 7 = RB1, I/O linija porta B, TTL tipa.

pin 8 = RB2, I/O linija porta B, TTL tipa.

pin 9 = RB3, I/O linija porta B, TTL tipa.

pin 10 = RB4, I/O linija porta B, takodje izvor interapta pri promeni nivoa, TTL tipa.

pin 11 = RB5, I/O linija porta B, izvor interapta pri promeni nivoa, TTL tipa.

pin 12 = RB6, I/O linija porta B, izvor interapta pri promeni nivoa, takt pri programiranju, TTL/ST (ST pri programiranju).

pin 13 = RB7, I/O linija porta B, izvor interapta pri promeni nivoa, podaci pri programiranju, TTL/ST (ST pri programiranju).

pin 14 = pozitivan pol napajanja.

pin 15 = OSC2/CLKOUT, spaja se na jedan kraj kristala, a ako se koristi RC ocilator, na ovom pinu se pojavljuje 1/4 frekvence oscilatora.

pin 16 = OSC1/CLKIN, spaja se jedan kraj kristala, ili RC, ili se dovodi spoljni takt, ST/CMOS tipa (ST kod RC oscilatora).

pin 17 = RA0, I/O linija porta A, TTL tipa.

pin 18 = RA1, I/O linija porta A, TTL tipa.

ORGANIZACIJA MEMORIJE

Kao što je već napomenuto, PIC16F84 ima tri odvojene memorije: - programska FLASH memorija se prostire od adrese 00h do 3FFh; s obzirom da je PC (program counter) registar širine 13 bitova, moguće je adresirati 8K programske memorije, tako da će adresiranje iznad adrese 3FFh u stvari adresirati neku lokaciju iz opsega 00h - 3FFh; npr. adrese 01h i 401h adresiraju istu lokaciju. - EEPROM memorija od 64 bajta nalazi se na adresama od 00h do 3Fh i postoje ugradjeni mehanizmi za čitanje, pisanje, brisanje i zaštitu od slučajnog brisanja. - RAM memorija se sastoji iz dva dela; za opštu namenu odvojeno je 68 bajtova od adrese 0Ch do 4F, dok je jedan deo namenjen za registre sa specijalnim funkcijama i to od 00h do 0Bh i od 80h do 8Bh. Programska i RAM memorija imaju odvojene adresne magistrale tako da nema preklapanja, a EEPROM memoriji se pristupa preko posebnih registara.

[prethodni]
[prethodni]