- Príprava na programovanie:
- Vytvorenie nového projektu pomocou MPLAB-X:
- Zoznámenie sa s konfiguračnými registrami:
- Nastavenie konfiguračných bitov v MPLAB-X:
- Programovanie PIC na blikanie LED:
- Schéma zapojenia a simulácia proteínu:
Toto je druhý návod z našej série návodov PIC. V našom predchádzajúcom tutoriáli Začíname s mikrokontrolérom PIC: Úvod do PIC a MPLABX sme sa dozvedeli základné informácie o našom mikrokontroléri PIC, nainštalovali sme tiež požadovaný softvér a zakúpili nový programátor PicKit 3, ktorý budeme čoskoro používať. Teraz sme pripravení začať s našim prvým blikajúcim programom LED pomocou modelu PIC16F877A. V tomto výučbe sa tiež dozvieme o registroch konfigurácie.
Tento výukový program očakáva, že ste do počítača nainštalovali požadovaný softvér a že viete nejaké slušné základy o PIC MCU. Ak nie, vráťte sa k predchádzajúcemu tutoriálu a začnite odtiaľ.
Príprava na programovanie:
Pretože sme sa rozhodli použiť PIC16F877A, pomocou kompilátora XC8 môžeme začať s ich údajovým listom. Odporúčam každému, aby si stiahli údajový list PIC16F877A a príručku kompilátora XC8, pretože na ne budeme v priebehu nášho tutoriálu často odkazovať. Je dobrým zvykom prečítať si kompletný údajový list ľubovoľného MCU skôr, ako s ním skutočne začneme programovať.
Teraz, predtým, ako otvoríme náš MPLAB-X a začneme programovať, je treba si uvedomiť niekoľko základných vecí. Pretože toto je náš prvý program, nechcem vás obťažovať ľuďmi s mnohými teóriami, ale pri programovaní sa zastavíme tu a tam a vysvetlím vám veci ako také. Ak nemáte dostatok času na to, aby ste si ich všetky prečítali, stačí letmý pohľad a skočiť do videa v dolnej časti stránky.
Vytvorenie nového projektu pomocou MPLAB-X:
Krok 1: Spustite IDE MPLAB-X, ktoré sme nainštalovali v predchádzajúcej triede, po načítaní by malo vyzerať asi takto.
Krok 2: Kliknite na Súbory -> Nový projekt alebo použite klávesovú skratku Ctrl + Shift + N. Dostanete nasledujúci POP-UP, z ktorého musíte zvoliť Samostatný projekt a kliknúť na Ďalej.
Krok 3: Teraz musíme pre projekt zvoliť naše Zariadenie. V rozbaľovacej časti Vybrať zariadenie zadajte ako PIC16F877A. Po dokončení by to malo byť takto a potom kliknite na Ďalej.
Krok 4: Ďalšia stránka nám umožní vybrať nástroj pre náš projekt. Pre náš projekt by to bol PicKit 3. Vyberte PicKit 3 a kliknite na ďalšie
Krok 5: Na ďalšej stránke sa zobrazí výzva na výber kompilátora, vyberte kompilátor XC8 a kliknite na tlačidlo Ďalej.
Krok 6: Na tejto stránke musíme pomenovať náš projekt a zvoliť miesto, kde sa má projekt uložiť. Tento projekt som pomenoval ako Blink a uložil som ho na plochu. Môžete ho pomenovať a uložiť vhodným spôsobom. Náš projekt bude uložený ako priečinok s príponou.X, ktorú môže priamo spustiť program MAPLB-X. Po dokončení kliknite na tlačidlo Dokončiť.
Krok 7: To je všetko !!! Náš projekt bol vytvorený. V ľavom hornom okne sa zobrazí názov projektu (tu bliká), kliknite naň, aby sme mohli zobraziť všetky adresáre v ňom.
Aby sme mohli začať programovať, musíme pridať hlavný súbor C do nášho adresára zdrojových súborov. Stačí kliknúť pravým tlačidlom myši na zdrojový súbor a zvoliť Nový -> C hlavný súbor, ako je to znázornené na obrázku nižšie.
Krok 8: Zobrazí sa nasledujúce dialógové okno, v ktorom je potrebné uviesť názov súboru C. Znovu som pomenoval Blink, ale výber zostáva na vás. Pomenujte ho v stĺpci Názov súboru a kliknite na dokončenie.
Krok 9: Po vytvorení hlavného súboru C ho IDE otvorí pre nás s predvolenými kódmi, ako je uvedené nižšie.
Krok 10: To je všetko, teraz môžeme začať programovať náš kód v C-hlavnom súbore. Predvolený kód sa v našich výučbách nepoužije. Poďme ich teda úplne vymazať.
Zoznámenie sa s konfiguračnými registrami:
Pred začatím programovania ktoréhokoľvek mikrokontroléra musíme vedieť o jeho konfiguračných registroch.
Čo sú to tieto konfiguračné registre, ako a prečo by sme ich mali nastaviť?
Zariadenia PIC majú niekoľko umiestnení, ktoré obsahujú konfiguračné bity alebo poistky. Tieto bity určujú základnú činnosť zariadenia, ako napríklad režim oscilátora, časovač strážneho psa, režim programovania a ochrana kódu. Tieto bity musia byť správne nastavené, aby sa dal spustiť kód, inak máme nebežiace zariadenie . Takže je veľmi dôležité vedieť o týchto konfiguračných registroch ešte predtým, ako začneme s našim Blink programom.
Aby sme mohli používať tieto konfiguračné registre, musíme si prečítať údajový list a pochopiť, aké rôzne typy konfiguračných bitov sú k dispozícii, a ich funkcie. Tieto bity je možné nastaviť alebo resetovať na základe našich programovacích požiadaviek pomocou konfiguračnej pragmy.
Pragma má nasledujúce podoby.
nastavenie #pragma config = stav-hodnota #pragma config register = hodnota
kde setting je deskriptor nastavenia konfigurácie, napr. WDT, a state je textový popis požadovaného stavu, napr. OFF. Zvážte nasledujúce príklady.
#pragma config WDT = ZAPNUTÉ // zapnúť časovač strážneho psa #pragma config WDTPS = 0x1A // určiť hodnotu časovej stupnice
RELAX !!….. RELAX !!…. RELAX !!…...
Viem, že to prešlo príliš veľa do našich hláv a nastavenie týchto konfiguračných bitov by sa pre nováčika mohlo zdať trochu náročné !! Ale s našim MPLAB-X to vzdorovito nie je.
Nastavenie konfiguračných bitov v MPLAB-X:
Microchip výrazne uľahčil tento proces únavy využitím grafických znázornení rôznych typov konfiguračných bitov. Takže teraz, aby sme ich mohli nastaviť, musíme jednoducho postupovať podľa nasledujúcich krokov.
Krok 1: Kliknite na okno -> PIC zobrazenie pamäte -> konfiguračné bity. Ako je uvedené nižšie.
Krok 2: Týmto by sa malo otvoriť okno Konfiguračné bity v spodnej časti nášho IDE, ako je uvedené nižšie. Na tomto mieste môžeme nastaviť každý z konfiguračných bitov podľa našich potrieb. Keď budeme postupovať týmito krokmi, vysvetlím každú z týchto častí a jej účel.
Krok 3: Prvý bit je bit výberu oscilátora.
PIC16F87XA je možné prevádzkovať v štyroch rôznych režimoch oscilátora. Tieto štyri režimy je možné zvoliť programovaním dvoch konfiguračných bitov (FOSC1 a FOSC0):
- LP nízkoenergetický krištáľ
- XT kryštál / rezonátor
- Vysokorýchlostný kryštál / rezonátor HS
- RC odpor / kondenzátor
Pre naše projekty používame 20Mhz Osc, preto musíme z rozbaľovacieho zoznamu zvoliť HS.
Krok 4: Ďalším bitom bude náš Watchdog timer Enable Bit.
Watchdog Timer je voľne bežiaci RC oscilátor na čipe, ktorý nevyžaduje žiadne externé komponenty. Tento RC oscilátor je samostatný od RC oscilátora kolíka OSC1 / CLKI. To znamená, že WDT bude fungovať, aj keď sú hodiny na pinoch OSC1 / CLKI a OSC2 / CLKO zariadenia zastavené. Počas normálnej prevádzky časový limit WDT vygeneruje reset zariadenia (Watchdog Timer Reset). Bit TO v registri stavu sa vymaže po uplynutí časového limitu časovača Watchdog. Ak časovač nie je vymazaný v našom softvérovom kódovaní, potom sa celý MCU resetuje po každom pretečení časovača WDT. WDT je možné trvalo deaktivovať vymazaním konfiguračného bitu.
V našom programe nepoužívame program WDT, takže ho vyčistíme výberom možnosti VYPNUTÉ v rozbaľovacej ponuke.
Krok 5: Ďalším bitom bude Bit časovača zapnutia.
Časovač zapnutia poskytuje fixný 72 ms nominálny časový limit pri zapnutí iba z POR. Časovač napájania pracuje na vnútornom RC oscilátore. Čip je udržiavaný v resetovaní, pokiaľ je aktívny PWRT. Časové oneskorenie PWRT umožňuje VDD vystúpiť na prijateľnú úroveň. K dispozícii je konfiguračný bit na povolenie alebo zakázanie PWRT.
Nebudeme potrebovať také oneskorenia v našom programe, preto ich vypnime tiež.
Krok 6: Ďalším bitom bude programovanie nízkeho napätia.
Bit LVP konfiguračného slova umožňuje programovanie ICSP nízkeho napätia. Tento režim umožňuje programovanie mikrokontroléra cez ICSP pomocou zdroja VDD v rozsahu prevádzkového napätia. To znamená iba to, že VPP nemusí byť privádzaný na VIHH, ale môže byť ponechaný na normálnom prevádzkovom napätí. V tomto režime je pin RB3 / PGM určený pre programovacie funkcie a prestáva byť univerzálnym I / O pinom. Počas programovania sa VDD aplikuje na pin MCLR. Pre vstup do programovacieho režimu je potrebné použiť VDD na RB3 / PGM za predpokladu, že je nastavený bit LVP.
Vypnime LVP, aby sme mohli použiť RB3 ako I / O pin. Ak to chcete urobiť, jednoducho to vypnite pomocou rozbaľovacieho poľa.
Krok 7: Ďalšími bitmi budú bity EEPROM a Program Memory Protection. Ak je tento bit zapnutý, po naprogramovaní MCU už nikto nebude načítať náš program z hardvéru. Ale teraz nechajme všetky tri vypnuté.
Po dokončení nastavení podľa pokynov by dialógové okno malo vyzerať asi takto.
Krok 8: Teraz kliknite na Generovať zdrojový kód na výstup, náš kód sa vygeneruje, teraz ho jednoducho skopírujte spolu so súborom hlavičky a vložte do nášho C-súboru Blink.c, ako je uvedené nižšie.
To je všetko, čo sa týka našej konfiguračnej práce. Túto konfiguráciu môžeme mať pre všetky naše projekty. Ale ak máte záujem, môžete sa s nimi neskôr pomotať.
Programovanie PIC na blikanie LED:
V tomto programe použijeme náš mikrokontrolér PIC na blikanie LED pripojenej k I / O kolíku. Pozrime sa na rôzne I / O piny dostupné na našom PIC16F877A.
Ako je uvedené vyššie, PIC16F877 má 5 základných vstupno / výstupných portov. Spravidla sa označujú ako PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) a PORT E (RE). Tieto porty sa používajú na prepojenie vstupov a výstupov. V tomto radiči je „PORT A“ široký iba 6 bitov (RA-0 až RA-5), „PORT B“, „PORT C“, „PORT D“ majú šírku iba 8 bitov (RB-0 až RB-7, RC-0 až RC-7, RD-0 až RD-7), „PORT E“ má šírku iba 3 bitov (RE-0 až RE-2).
Všetky tieto porty sú obojsmerné. Smer portu sa riadi pomocou registrov TRIS (X) (TRIS A používaný na nastavenie smeru PORT-A, TRIS B používaný na nastavenie smeru PORT-B atď.). Nastavením bitu TRIS (X) „1“ nastavíte ako vstup zodpovedajúci bit PORT (X). Vymazaním bitu TRIS (X) „0“ nastavíte ako výstup zodpovedajúci bit PORT (X).
Pre náš projekt musíme urobiť pin RB3 na PORT B ako výstup, aby sa k nemu dala pripojiť naša LED. Tu je kód na blikanie LED pomocou mikrokontroléra PIC:
#include
Najskôr sme zadali externú frekvenciu Crystal pomocou #define _XTAL_FREQ 20000000. Potom sme vo funkcii void main () dali pokyn nášmu MCU, že použijeme RB3 ako výstupný (TRISB = 0X00;) pin. Potom konečne nekonečné zatiaľ čo slučka sa používa tak, že LED bliká pokračuje večne. Aby sme mohli LED diódu blikať, musíme ju jednoducho zapnúť a vypnúť so znateľným oneskorením.
Po dokončení programovania zostavte projekt pomocou príkazu Spustiť -> Vytvoriť hlavný projekt. Toto by malo zostaviť váš program. Ak je všetko v poriadku (ako sa patrí), výstupná konzola v dolnej časti obrazovky zobrazí BUILD SUCCESSFUL správu, ako je to znázornené na obrázku nižšie.
Schéma zapojenia a simulácia proteínu:
Len čo zostavíme projekt a ak bude zostavenie úspešné, na pozadí nášho IDE by sa vygeneroval súbor HEX. Tento súbor HEX sa nachádza v nižšie uvedenom adresári
Môže sa to líšiť od vás, ak ste ukladali na inom mieste.
Poďme teraz rýchlo otvoriť Proteus, ktorý sme nainštalovali skôr, a vytvorme schémy pre tento projekt. Nebudeme vysvetľovať, ako to urobiť, pretože to je mimo rozsahu tohto projektu. Ale aby ste sa nebáli, je to vysvetlené vo videu nižšie. Len čo budete postupovať podľa pokynov a zostavíte schému, malo by to vyzerať asi takto
Ak chcete simulovať výstup, po načítaní hexadecimálneho súboru kliknite na tlačidlo prehrávania v ľavom dolnom rohu obrazovky. Mal by blikať LED pripojený k RB3 na MCU. Ak máte akýkoľvek problém, pozrite si video. Ak problém stále nie je vyriešený, použite sekciu komentárov.
Teraz sme vytvorili náš prvý projekt s mikrokontrolérom PIC a výstup sme overili pomocou simulačného softvéru. Prejdite sa s programom a sledujte výsledky. Až sa stretneme pri ďalšom projekte.
Ach počkaj !!
V našom ďalšom projekte sa naučíme, ako to dosiahnuť na skutočnom hardvéri. Na to budeme potrebovať nasledujúce nástroje, ktoré ich udržia pripravené. Dovtedy ŠŤASTNÉ UČENIE !!
- PicKit 3
- PIC16F877A IC
- 40-pólový držiak IC
- Perf doska
- 20MHz Crystal OSC
- Ženské a mužské špendlíky
- Kondenzátor 33pf - 2č
- Rezistor 680 ohmov
- LED ľubovoľnej farby
- Spájkovacia súprava.