- Priprava na programiranje:
- Ustvarjanje novega projekta z uporabo MPLAB-X:
- Spoznavanje konfiguracijskih registrov:
- Nastavitev konfiguracijskih bitov v MPLAB-X:
- Programiranje PIC za utripanje LED:
- Shema vezij in simulacija Proteusa:
To je druga vadnica naše serije vadnic PIC. V prejšnji vadnici Kako začeti z mikrokrmilnikom PIC: Uvod v PIC in MPLABX smo se naučili osnovnih informacij o našem mikrokrmilniku PIC, namestili smo tudi potrebno programsko opremo in kupili nov programator PicKit 3, ki ga bomo kmalu uporabili. Zdaj smo pripravljeni začeti z našim prvim utripajočim programom LED s pomočjo PIC16F877A. V tej vadnici bomo izvedeli tudi o konfiguracijskih registrih.
Ta vadnica pričakuje, da ste v računalnik namestili potrebno programsko opremo in da poznate nekaj spodobnih osnov o PIC MCU. V nasprotnem primeru se vrnite na prejšnjo vadnico in začnite od tam.
Priprava na programiranje:
Ker smo se odločili za uporabo PIC16F877A, nam z prevajalnikom XC8 začnimo z njihovim podatkovnim listom. Vsem priporočam, da si prenesejo podatkovni list PIC16F877A in priročnik za prevajalnik XC8, saj se bomo med napredovanjem skozi naše vadnice nanje pogosto sklicevali. Vedno je dobra praksa, da preberete celoten podatkovni list katerega koli MCU, preden začnemo z njim programirati.
Zdaj, preden odpremo MPLAB-X in začnemo s programiranjem, se moramo zavedati nekaj osnovnih stvari. Kakor koli že, ker je to naš prvi program, ne želim vas preganjati, ljudje z veliko teorije, vendar se bomo tu in tam ustavili, ko bomo programirali, in vam bom razložil stvari kot take. Če nimate dovolj časa, da bi vse to prebrali, si le oglejte in skočite v video na dnu strani.
Ustvarjanje novega projekta z uporabo MPLAB-X:
Korak 1: Zaženite MPLAB-X IDE, ki smo ga namestili v prejšnjem razredu, ko bo naložen, naj bo videti nekako tako.
2. korak: Kliknite Datoteke -> Nov projekt ali uporabite bližnjično tipko Ctrl + Shift + N. Dobili boste naslednji POP-UP, med katerim morate izbrati Samostojni projekt in klikniti Naprej.
3. korak: Zdaj moramo za projekt izbrati svojo napravo. V spustnem razdelku Izberite napravo vnesite kot PIC16F877A. Ko končate, mora biti tako in nato kliknite Naprej.
4. korak: Naslednja stran nam bo omogočila, da izberemo orodje za naš projekt. To bi bil PicKit 3 za naš projekt. Izberite PicKit 3 in kliknite naprej
5. korak: Naslednja stran vas bo pozvala, da izberete prevajalnik, izberete XC8 Compiler in kliknete Next.
6. korak: Na tej strani moramo poimenovati svoj projekt in izbrati mesto, kamor bo projekt treba shraniti. Ta projekt sem poimenoval Blink in ga shranil na namizje. Lahko ga poimenujete in shranite na svoj zaželen način. Naš projekt bo shranjen kot mapa z razširitvijo .X, ki jo lahko neposredno zažene MAPLB-X. Ko končate, kliknite Končaj.
7. korak: To je to !!! Naš projekt je bil ustvarjen. V levem oknu bo prikazano ime projekta (Here Blink), kliknite nanj, da si bomo lahko ogledali vse imenike v njem.
Za začetek programiranja moramo dodati datoteko C Main v naš imenik izvornih datotek. To preprosto naredite tako, da z desno miškino tipko kliknete izvorno datoteko in izberete Novo -> Glavna datoteka, kot je prikazano na spodnji sliki.
8. korak: Pojavi se naslednje pogovorno okno, v katerem je treba omeniti ime datoteke C. Ponovno sem imenoval Blink, vendar je izbira prepuščena vam. Poimenujte ga v stolpec Ime datoteke in kliknite na zaključek.
Korak 9: Ko je glavna datoteka C ustvarjena, nam jo bo IDE odprl z nekaj privzetimi kodami, kot je prikazano spodaj.
Korak 10: To je to, zdaj lahko začnemo programirati našo kodo v glavni datoteki C. Privzeta koda v naših vajah ne bo uporabljena. Torej jih popolnoma izbrišimo.
Spoznavanje konfiguracijskih registrov:
Preden začnemo programirati kateri koli mikrokrmilnik, moramo vedeti o njegovih konfiguracijskih registrih.
Kaj so torej ti konfiguracijski registri, kako in zakaj bi jih morali nastaviti?
Naprave PIC imajo več lokacij, ki vsebujejo nastavitvene bite ali varovalke. Ti biti določajo temeljno delovanje naprave, kot so način oscilatorja, časovni pas, časovni način programiranja in zaščita kode. Te bite je treba pravilno nastaviti, da lahko zaženemo kodo, sicer imamo nedelujočo napravo . Zato je zelo pomembno vedeti o teh konfiguracijskih registrih, še preden začnemo z našim programom Blink.
Za uporabo teh konfiguracijskih registrov moramo prebrati podatkovni list in razumeti, katere vrste konfiguracijskih bitov so na voljo in njihove funkcije. Te bite lahko nastavite ali ponastavite glede na naše programske zahteve s pomočjo konfiguracijske pragme.
Pragma ima naslednje oblike.
#pragma config nastavitev = stanje-vrednost #pragma config register = vrednost
kjer nastavitev je konfiguracija nastavitev deskriptor, na primer, WDT, in stanje je tekstualni opis želenega stanja, npr OFF. Upoštevajte naslednje primere.
#pragma config WDT = ON // vklopi nadzorni časovnik #pragma config WDTPS = 0x1A // podajte vrednost skale postcale
SPROSTITE !!….. SPROSTITE !!…. SPROSTITE !!…...
Vem, da nam je šlo preveč v glavo in se zdi, da je nastavitev teh nastavitvenih bitov za začetnika nekoliko težavna !! Vendar z našim MPLAB-X kljub temu ni.
Nastavitev konfiguracijskih bitov v MPLAB-X:
Microchip je ta utrujajoči postopek precej olajšal z uporabo grafičnih predstavitev različnih vrst nastavitvenih bitov. Torej, da jih nastavimo, moramo preprosto slediti spodnjim korakom.
1. korak: Kliknite Okno -> Pogled pomnilnika PIC -> Konfiguracijski bit. Kot je prikazano spodaj.
2. korak: To bi moralo odpreti okno Configuration Bits na dnu naše IDE, kot je prikazano spodaj. To je kraj, kjer lahko nastavimo vsak konfiguracijski bit glede na naše potrebe. Po napredovanju skozi korake bom razložil vsak bit in njegov namen.
3. korak: Prvi bit je bit za izbiro oscilatorja.
PIC16F87XA lahko upravljate v štirih različnih načinih oscilatorja. Te štiri načine lahko izberete s programiranjem dveh konfiguracijskih bitov (FOSC1 in FOSC0):
- LP kristal nizke porabe
- XT kristal / resonator
- HS visokohitrostni kristal / resonator
- RC upor / kondenzator
Za naše projekte uporabljamo 20 MHz osc, zato moramo iz spustnega polja izbrati HS.
4. korak: Naslednji bit bo naš časovni pas Omogoči bit.
Watchdog Timer je RC oscilator, ki deluje na čipu in ne potrebuje zunanjih komponent. Ta RC oscilator je ločen od RC oscilatorja zatiča OSC1 / CLKI. To pomeni, da bo WDT deloval, tudi če je bila ura na zatičih OSC1 / CLKI in OSC2 / CLKO ustavljena. Med običajnim delovanjem časovna omejitev WDT ustvari ponastavitev naprave (ponastavitev časovnega pasu). Bit TO v registru stanja bo izbrisan po izteku časovne omejitve Watchdog Timer. Če pri našem kodiranju programske opreme časovnik ni odstranjen, se celotni MCU ponastavi ob vsakem prelivanju časovnika WDT. WDT lahko trajno onemogočite z brisanjem konfiguracijskega bita.
V našem programu ne uporabljamo WDT, zato ga počistimo, tako da v spustnem polju izberemo OFF.
5. korak: Naslednji bit bo bit časovnika vklopa.
Časovnik za vklop zagotavlja fiksno nominalno časovno omejitev 72 ms ob vklopu samo iz POR-a. Časovnik za vklop deluje na notranjem RC oscilatorju. Čip je v ponastavitvi, dokler je PWRT aktiven. Časovna zakasnitev PWRT omogoča, da se VDD dvigne na sprejemljivo raven. Na voljo je konfiguracijski bit, ki omogoči ali onemogoči PWRT.
Takšnih zamud v našem programu ne bomo potrebovali, zato tudi to izklopite.
6. korak: Naslednji del bo nizkonapetostno programiranje.
LVP-bit konfiguracijske besede omogoča nizkonapetostno programiranje ICSP. Ta način omogoča programiranje mikrokrmilnika prek ICSP z uporabo vira VDD v območju delovne napetosti. To pomeni samo, da VPP ni treba pripeljati v VIHH, temveč ga je treba pustiti pri normalni obratovalni napetosti. V tem načinu je zatič RB3 / PGM namenjen funkciji programiranja in preneha biti vhodno / izhodni zatič splošnega namena. Med programiranjem se VDD nanaša na zatič MCLR. Za vstop v način programiranja mora biti VDD uporabljen za RB3 / PGM, če je nastavljen bit LVP.
Izključimo LVP, da bomo lahko RB3 uporabili kot vhodno / izhodni pin. Če želite to narediti, preprosto vklopite to OFF uporabo spustno polje.
7. korak: Naslednji bit bosta EEPROM in Programski zaščitni bit. Če je ta bit vklopljen, ko je MCU programiran, nihče ne bo našel našega programa s strojne opreme. Za zdaj pa pustimo vse tri izklopljene.
Ko so nastavitve izvedene po navodilih, mora biti pogovorno okno videti nekako tako.
Korak 8: Zdaj kliknite Generate Source Code to Output, naša koda se bo ustvarila, zdaj jo samo kopirajte skupaj z datoteko glave in prilepite v našo datoteko Blink.c, kot je prikazano spodaj.
To je to, kar je končano z našo konfiguracijo. To konfiguracijo lahko dobimo za vse naše projekte. Če pa vas zanima, se lahko pozneje z njimi zmešate.
Programiranje PIC za utripanje LED:
V tem programu bomo z našim mikrokrmilnikom PIC utripali LED, priključen na V / I zatič. Oglejmo si različne I / O nožice, ki so na voljo na našem PIC16F877A.
Kot je prikazano zgoraj, ima PIC16F877 5 osnovnih vhodno / izhodnih vrat. Običajno jih označimo s PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) in PORT E (RE). Ta vrata se uporabljajo za vhodno / izhodno povezavo. V tem krmilniku je "PORT A" širok le 6 bitov (RA-0 do RA-5), "PORT B", "PORT C", "PORT D" pa je širok le 8 bitov (RB-0 do RB-7, RC-0 do RC-7, RD-0 do RD-7), "PORT E" ima samo 3-bitne širine (RE-0 do RE-2).
Vsa ta vrata so dvosmerna. Smer pristanišča se nadzoruje z uporabo registrov TRIS (X) (TRIS A se uporablja za nastavitev smeri PORT-A, TRIS B se uporablja za nastavitev smeri za PORT-B itd.). Če nastavite bit TRIS (X) '1', bo ustrezen bit PORT (X) nastavljen kot vhod. Če izbrišete TRIS (X) bit '0', bo ustrezen bit PORT (X) nastavljen kot izhod.
Za naš projekt moramo kot izhod narediti zatič RB3 PORTA B, tako da je nanj mogoče priključiti naš LED. Tu je koda za utripanje LED z mikrokrmilnikom PIC:
#include
Najprej smo z #define _XTAL_FREQ 20000000 določili zunanjo kristalno frekvenco. Nato smo v void main () funkciji MCU ukazali, da bomo RB3 uporabili kot izhodni (TRISB = 0X00;) pin. Nato se končno uporabi neskončna zanka while, tako da utripanje LED traja večno. Če želimo utripati LED, jo moramo preprosto vklopiti in izklopiti z opazno zamudo.
Ko je kodiranje končano, zgradite projekt z ukazom Zaženi -> Zgradi glavni projekt. To bi moralo sestaviti vaš program. Če je vse v redu (kot bi moralo biti), bo izhodna konzola na dnu zaslona prikazala sporočilo BUILD SUCCESSFUL, kot je prikazano na spodnji sliki.
Shema vezij in simulacija Proteusa:
Ko zgradimo projekt in če je gradnja uspešna, bi bila v ozadju našega IDE ustvarjena datoteka HEX. To HEX datoteko najdete v spodnjem imeniku
Za vas se lahko razlikuje, če ste shranili na drugem mestu.
Zdaj pa na hitro odprimo Proteus, ki smo ga že namestili, in ustvarimo sheme za ta projekt. Ne bomo razlagali, kako to storiti, saj to ne spada v okvir tega projekta. A brez skrbi, je razloženo v spodnjem videu. Ko sledite navodilom in sestavite sheme, mora biti videti nekako tako
Če želite simulirati izhod, kliknite gumb za predvajanje v spodnjem levem kotu zaslona po nalaganju Hex datoteke. Utripati mora LED, priključen na RB3 MCU. Če imate kakršne koli težave, si oglejte videoposnetek, če še vedno ni rešen, za pomoč uporabite oddelek za komentarje.
Zdaj smo naredili prvi projekt z mikrokrmilnikom PIC in preverili izhod s pomočjo simulacijske programske opreme. Pojdite in se potegnite s programom in opazujte rezultate. Do srečanja pri naslednjem projektu.
Ohh počakaj !!
V naslednjem projektu se bomo naučili, kako to delati na dejanski strojni opremi. Za to bomo potrebovali naslednja orodja, ki bodo pripravljena nanje. Do takrat VESELO UČENJE !!
- PicKit 3
- PIC16F877A IC
- 40-polno držalo IC
- Perf deska
- 20Mhz Crystal OSC
- Ženski in moški zatiči Bergstick
- 33 pf kondenzator - 2 št
- 680 ohmski upor
- LED katere koli barve
- Komplet za spajkanje.