|
|||||||||||||
|
|
||||||||
Voja Antonić | |||
PIC 16C84 spolja |
|||
Novom generacijom mikrokontrolera proizvođači su "razmazili" konstruktore - nikada nije bilo lakše projektovati uređaj. Sve u svemu, pravi je trenutak da pokušata! |
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 sada ć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četiPre 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 po potrebi svaki može da se konfiguriše kao ulazni ili izlazni. 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. Ako je neophodno proširenje broja ulazno-izlaznih portova, veliki broj konstruktora će odmah posegnuti za specijalnim periferijskim kolima kao što je Intel 8255, ali to nije najbolje rešenje, pošto se samo za komunikaciju sa ovom periferijom troši 11 portova na mikrokontroleru. Istina, zauzvrat ćemo dobiti nova 24 porta, ali ako imamo u vidu da se radi o 40-pinskom čipu, za koji nam treba nekoliko puta više prostora na štampanoj pločici nego za sam mikrokontroler, postaće jasno da treba potražiti drugo rešenje. Za tu svrhu su zgodniji univerzalni čipovi HC/HCT (7400) ili CMOS (CD4000) serije, jer su malih dimenzija (uglavnom 16-pinski), cena im je niska i lako se nabavljaju. Paralelni izlazne registre (74HC574) i ulazne bafere (74HC541) treba izbegavati, jer okupiraju veliki broj portova mikrontrolera, a umesto njih koristiti adresibilne izlazne (74HC259 ili CD4099B) i ulazne (74HC251 ili CD4512B). Na primeru (slika 2) vidimo da su nam za zajedničku adresu na svim ovim kolima potrebna tri izlazna porta, kao i još jedan ulazno/izlazni port za jednobitnu magistralu podataka. Osim toga, treba obezbediti po jedan -G signal za prozivanje svakog od ovih čipova; ako ih ima više, a treba čuvati portove na mikrokontroleru za druge svrhe, dobro je ovde uposliti adresni dekoder, recimo 74HC138, kao na slici 2. U slučaju da nam zatreba jača struja za pobudu nekog zahtevnijeg potrošača (nekoliko stotona miliampera), dogradićemo tranzistorske drajvere ili koristiti integrisane darlington drajvere (sedmostruki ULN2003 ili osmostruki ULN2803, koji obezbeđuju po 500 mA struje i 50 V po izlazu), a ako su kritične dimenzije i prostor na ploči, vredi upotrebiti NE590, koji ima isti spoj podnožja i funkciju kao 74LS259, samo što ima i open-collector izlaze koji su u stanju da podnesu po 250 mA u ON stanju i 7 V u OFF stanju. Ipak, obratite pažnju na dve stvari: ovi izlazi su inverzni u odnosu na 74HC259 i cena ovog čipa je viša nego 74HC259 i ULN2803 zajedno, koji imaju istu funkciju, pa čak i nešto bolje karakteristike. U kolonu po jedanJoš 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 drajvera od napona samoindukcije, koji se javlja pri ukidanju napona. Najbolje je da se paralelno sa namotajima postavi jedna inverzno polarisana 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) vrlo pogodnim za uređaje koji rade sa baterijskim napajanjem. Power down mod (kada izvrši instrukcija SLEEP) smanjuje potrošnju struje na svega 0.1 mA (u nekim slučajevima čak i 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, kao na slici 3c) ili, ako je stabilnost učestanosti oscilatora od značaja, 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š potrajatiU minimalnoj varijanti, dovoljno je da uz mikrokontroler i programator iz "PC #26" imate bateriju (recimo, od 4.5 V), kvarc-kristal učestanosti 4 MHz ili niže, dva kondenzatora od po 30 pF (pogledajte sliku 3d) 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 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 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. |
|