PIC 16C84 spolja |
Voja Antonić |
Posle pojave nove generacije mikrokontrolera, utisak je da su proizvođači želeli da definitivno razmaze konstruktore. Ako ste dosad oklevali da se priključite ovoj povlašćenoj klasi, ovo je pravi trenutak. |
Namera nam je da vas još jednom ohrabrimo da se upustite u razvoj mikroprocesorskih sklopova, pošto su prilike za to postale povoljnije nego ikada. Standardi koje moderni mikrokontroleri zadovoljavaju su tako visoki, da je konstruktorima sve manje potrebno poznavanje elektonike; dovoljno je da imaju nemiran duh, ideju i volju, a minimalno potrebno znanje iz praktične elektronike se lako stiče kroz praktičan rad.
I ovoga puta ćemo se baviti Microchip-ovim mikrokontrolerom PIC16C84 (slika 1) - sećate se da smo u "PC #26" objavili projekat programatora za njega i obećali da ćemo se ubuduće više baviti njegovom arhitekturom, načinom programiranja i projektima koji se na njemu baziraju. Počećemo možda pomalo neuobičajeno za ovu rubriku - od osnovnih pitanja koje konstruktor mora da reši na samom početku posla, kad ima pred sobom samo projektni zadatak i čist beli papir (ili ekran monitora) na kome bi trebalo da se nađe šema, a potom i crtež štampane pločice uređaja. Pročitajte savete čak i ako već imate iskustva na ovom polju, ako ni zbog čega drugog, onda bar zato da biste se uverili u to koliko se u poslednje vreme promenio pristup projektovanju, zahvaljujući brojnim ugrađenim periferijskim jedinicama i tehnološkim unapređenjima ugrađenim u nove tipove mikrokontrolera.
Odakle početi
Pre skiciranja osnove konstrukcije, najvažnije je da imamo dobro i precizno formulisan projektni zadatak. Nije neophodno da on bude lepo i uredno nacrtan i ispisan krasnopisom, ali je važno da nam već u samom početku bude jasno šta se traži. Pre svega, treba videti koliko ulaza i izlaza će biti potrebno. PIC16C84 nam, u osnovnoj varijanti, nudi trinaest univerzalnih priključaka (takozvanih portova) od kojih svaki ponaosob može da se konfiguriše kao ulazni ili izlazni, prema potrebi.
To znači da na raspolaganju imamo 13-bitni paralelni interfejs koji je ugrađen u sam 18-pinski čip mikrokontrolera. Ako se to ne zadovoljava zahteve projektnog zadatka, treba razmišljati o najzgodnijem načinu povećanja broja portova. Za ovo imamo na raspolaganju veliki broj specijalnih periferijskih kola ili univerzalnih čipova serije 74HC00 ili CD4000.
Šema uređaja (kliknite na sliku za veću sliku) |
U kolonu po jedan
Još jednostavniji i ekonomičniji način proširivanja broja ulaznih i izlaznih portova je pomoću pomeračkih (shift) registara, koji omogućavaju sinhronu serijsku komunikaciju mikroprocesora sa spoljnim registrima, jer se tako zauzima minimalan broj portova mikrokontrolera. U 74HC00 seriji, tipični primerci pomeračkih registara su 74HC595 i 74HC597. Prvi ima serijski ulaz i osam paralelnih izlaza, tako da je pogodan za dogradnju paralelnih izlaznih portova, a drugi ima osam paralelnih ulaza i jedan serijski izlaz, pa je dobar za ulazne portove. Oba čipa imaju još po jedan osmobitni paralelni registar, prvi između pomeračkog registra i izlaza, a drugi između ulaza i pomeračkog registra, tako da se kod 74HC595 može promeniti stanje na izlazima istovremeno, a kod 74HC597 najpre učitati stanja svih ulaza istovremeno, a onda ih polako, bit po bit, upisivati u mikrokontroler.
Ovi registri imaju i po jedan serijski izlaz (74HC595) i ulaz (74HC597), tako da ih je moguće i kaskadno vezivati u praktično beskrajan niz, pa se sa samo tri porta na mikrokontroleru (serijski izlaz/ulaz, serijski takt i takt za paralelni registar) može realizovati proizvoljno veliki broj ulaza ili izlaza. Ovo ćemo platiti jedino nešto dužim vremenom pristupa ulazima i izlazima, jer se komunikacija obavlja bit po bit, pri čemu mikrokontroler softverski generiše DATA signal (i pri tome rotira neki od internih registara) i signal za serijski takt. Šeme koje objašnjavaju rad ovih pomeračkih registara su objavljene na 16. strani specijalnog dodatka "PC #6" (oktobar 1995), pod naslovom Mikrokontroler 8031.
Ipak, u velikom broju slučajeva biće nam dovoljno i 13 raspoloživih portova na mikrokontroleru, pa nam nikakve spoljne periferije neće biti potrebne. Ako se portovi mikrokontrolera PIC16C84 konfigurišu kao ulazi, to će onda biti visokoimpedansni ulazi, bez pull-up otpornika, za razliku od ulaza kakvi inače postoje na Intel-ovim mikrokontrolerima familije 8051. Sa izlaznim portovima ne bi trebalo da bude problema, jer su oni raskošno opremljeni drajverima koji obezbeđuju izlaznu struju od 20 mA, što je prava retkost kod mikrokontrolera. To je, inače, sasvim dovoljno da se direktno pobudi svetleća dioda ili čak i reed-rele, čiji pobudni napon ne prelazi 5 V. Kod direktnog pobuđivanja induktivnih potrošača (kakav je i reed-rele) treba obratiti pažnju na zaštitu izlaznih drajvera mikrokontrolera od napona samoindukcije relea, koji se pojavljuje prilikom ukidanja pobudnog napona. Najbolji način da se ova zaštita izvede je da se paralelno sa namotajima postavi jedna inverzno polarisana brza silicijumska dioda.
Napajanje, reset i oscilator
Što se napajanja mikrokontrolera PIC 16C84 tiče, obezbeđen je solidan komfor: za tip 16C84 naponski opseg je od 4 do 6 V (potrošnja oko 4.5 mA), za 16C84-10 od 4.5 do 5.5 V (potrošnja 1.8 mA, pri taktu oscilatora od 4 MHz ili 10 mA, pri 10 MHz), a za 16LC84 čak od 2 do 6 V (potrošnja 1.8 mA). Niža potrošnja se postiže uz žrtvovanje brzine rada: pri taktu od 200 KHz struja potrošnje (u toku rada) je svega 0.06 mA.
Ove karakteristike čine PIC 16C84 (a posebno 16LC84) pogodnim za uređaje sa baterijskim napajanjem. Power down mod (kada izvrši instrukcija SLEEP) smanjuje potrošnju na svega 0.1 mA (u nekim slučajevima čak do ispod jednog mikroampera), što omogućava da se izbegne ugradnja on-off prekidača.
Mada 16C84 ima reset pin (koji se ovde zove MCLR, od Master Clear), njega nije neophodno koristiti, jer već postoji interno reset kolo koje se automatski aktivira pri uspostavljanju napona napajanja, tačnije kad ovaj napon pri porastu prelazi granicu od 1.6 do 1.8 V. Da bi ovo kolo radilo normalno, potrebno je da porast napona ne bude sporiji od 0.05 V/ms, jer će u protivnom interni tajmer, koji generiše interni reset signal, završiti svoj ciklus (koji iznosi 72 ms) pre nego što se uspostavi normalan rad oscilatora. Dakle, ako niste sigurni da je brzina porasta napona veća od 0.05 V/ms, bolje je ugraditi spoljno reset kolo, prema šemi na slici 3a. Ako se ovo kolo ne koristi, MCLR pin treba spojiti sa pozitivnim polom napajanja.
Interno reset kolo štiti mikrokontroler od incidentnog prekida napajanja (black out) tokom rada, jer će prilikom ponovnog uspostavljanja napajanja biti ponovo generisan interni reset signal, ali ga ne štiti od delimičnog pada napona (brown out), kada napon ne padne na nulu, nego se samo smanji ispod nivoa koji garantuje normalan rad mikrokontrolera. Ako projektujemo uređaj čija pouzdanost u radu mora da bude visoka, dobro je da dogradimo spoljno kolo koje će generisati reset signal kada napon napajanja padne ispod najnižeg dozvoljenog nivoa (4 V za 16C84 ili 2 V za 16LC84). Za ovo mogu da posluže specijalizovani naponski monitori (kakav je, recimo, 770X, pri čemu je "X" napon pri kome će se zaštitno kolo aktivirati), ali će istu funkciju odraditi i jednostavno kolo sa slike 3b. Zener dioda ZD treba da ima Zenerov napon za 0.6 V niži od kritičnog napona, pri kome želimo da mikrokontroler dovedemo u reset stanje.
Maksimalni takt oscilatora iznosi 4 MHz, a za 16C84-10 do 10 MHz. Oscilator čine spoljni RC komponente (otpornik i kondenzator, slika 3c) ili, ako je stabilnost učestanosti oscilatora značajna, kvarc kristal ili keramički rezonator (slika 3d). Moguće je dovesti i takt iz spoljnog oscilatora na pin 16 (osc 1), pri čemu treba pin 15 (osc 2) ostaviti otvorenim.
Priča će još potrajati
U minimalnoj varijanti, dovoljno je da uz mikrokontroler i programator iz "PC #26" imate bateriju (recimo, od 4.5 V), jedan kvarc-kristal učestanosti 4 MHz ili niže, dva kondenzatora od po 30 pF (pogledajte sliku 3c) i jedan od 100 nF (za naponsku dekuplažu) - i možete da počnete sa praktičnim radom.
U sledećem broju ćemo se baviti arhitekturom i internom organizacijom mikrokontrolera 16C84, a zatim ćemo opisati set instrukcija (kojih ima svega 35) i način programiranja. Posle toga će slediti nekoliko projekata baziranih na ovom zanimljivom mikrokontroleru. Obzirom da 16C84 upisuje program u internu EEPROM memoriju i da je programator za upis programa izuzetno jednostavan za samogradnju, dovoljno je da nabavite bar jedan primerak mikrokontrolera i bićete zadugo obezbeđeni što se tiće hardvera za eksperimentisanje.
|