- Příprava na programování:
- Vytvoření nového projektu pomocí MPLAB-X:
- Seznámení s registry konfigurace:
- Nastavení konfiguračních bitů v MPLAB-X:
- Programování PIC na blikání LED:
- Schéma zapojení a simulace Proteus:
Toto je druhý výukový program z naší série výukových programů PIC. V našem předchozím tutoriálu Začínáme s mikrokontrolérem PIC: Úvod do PIC a MPLABX jsme se dozvěděli základní informace o našem mikrokontroléru PIC, nainstalovali jsme také požadovaný software a zakoupili nový programátor PicKit 3, který brzy použijeme. Nyní jsme připraveni začít s prvním blikajícím programem LED pomocí PIC16F877A. V tomto kurzu se také dozvíme o registrech konfigurace.
V tomto výukovém programu se očekává, že jste do počítače nainstalovali požadovaný software a že víte nějaké slušné základy o PIC MCU. Pokud ne, vraťte se k předchozímu tutoriálu a začněte odtud.
Příprava na programování:
Vzhledem k tomu, že jsme se rozhodli použít PIC16F877A, můžeme pomocí kompilátoru XC8 začít s jejich datovým listem. Doporučuji všem, aby si stáhli datový list PIC16F877A a příručku kompilátoru XC8, protože na ně budeme v průběhu našeho tutoriálu často odkazovat. Vždy je dobrým zvykem přečíst si kompletní datový list jakéhokoli MCU, než s ním skutečně začneme programovat.
Nyní, než otevřeme náš MPLAB-X a začneme programovat, je třeba si uvědomit několik základních věcí. Jelikož se jedná o náš první program, nechci vás obtěžovat lidmi se spoustou teorie, ale my se zastavíme tady a tam, když programujeme, a vysvětlím vám věci jako takové. Pokud nemáte dost času na to, abyste si je všechny přečetli, stačí letmý pohled a skočit do videa v dolní části stránky.
Vytvoření nového projektu pomocí MPLAB-X:
Krok 1: Spusťte MPLAB-X IDE, který jsme nainstalovali v předchozí třídě, po načtení by měl vypadat nějak takto.
Krok 2: Klikněte na Soubory -> Nový projekt nebo použijte klávesovou zkratku Ctrl + Shift + N. Získáte následující POP-UP, ze kterého musíte vybrat Samostatný projekt a kliknout na Další.
Krok 3: Nyní musíme vybrat naše zařízení pro projekt. Zadejte tedy jako PIC16F877A v rozevírací části Vybrat zařízení . Jakmile to uděláte, mělo by to být takto a poté klikněte na Další.
Krok 4: Další stránka nám umožní vybrat nástroj pro náš projekt. To by byl PicKit 3 pro náš projekt. Vyberte PicKit 3 a klikněte na další
Krok 5: Další stránka vás požádá o výběr kompilátoru, vyberte kompilátor XC8 a klikněte na další.
Krok 6: Na této stránce musíme pojmenovat náš projekt a vybrat místo, kam se má projekt uložit. Pojmenoval jsem tento projekt jako Blink a uložil jsem ho na plochu. Můžete jej pojmenovat a uložit preferovaným způsobem. Náš projekt bude uložen jako složka s příponou .X, kterou může přímo spustit MAPLB-X. Po dokončení klikněte na Dokončit.
Krok 7: To je ono !!! Náš projekt byl vytvořen. V okně nejvíce vlevo se zobrazí název projektu (zde bliká), klikněte na něj, abychom mohli zobrazit všechny adresáře v něm.
Aby bylo možné zahájit programování, musíme do hlavního adresáře zdrojových souborů přidat soubor C Main. Chcete-li to provést, jednoduše klikněte pravým tlačítkem na zdrojový soubor a vyberte Nový -> C Hlavní soubor, jak je znázorněno na obrázku níže.
Krok 8: Zobrazí se následující dialogové okno, ve kterém je třeba uvést název souboru C. Znovu jsem pojmenoval Blink, ale volba je na vás. Pojmenujte jej ve sloupci Název souboru a klikněte na dokončení.
Krok 9: Jakmile je vytvořen hlavní soubor C, IDE nám jej otevře s některými výchozími kódy, jak je uvedeno níže.
Krok 10: To je vše, nyní můžeme začít programovat náš kód v hlavním souboru C. Výchozí kód nebude použit v našich cvičeních. Pojďme je tedy úplně smazat.
Seznámení s registry konfigurace:
Než začneme programovat jakýkoli mikrokontrolér, musíme vědět o jeho konfiguračních registrech.
Takže jaké jsou tyto konfigurační registry, jak a proč bychom je měli nastavit?
Zařízení PIC mají několik umístění, která obsahují konfigurační bity nebo pojistky. Tyto bity určují základní provoz zařízení, jako je režim oscilátoru, časovač hlídacího psa, režim programování a ochrana kódu. Tyto bity musí být správně nastaveny, aby bylo možné spustit kód, jinak máme neběžící zařízení . Je tedy velmi důležité vědět o těchto konfiguračních registrech ještě předtím, než začneme s naším Blink programem.
Abychom mohli používat tyto konfigurační registry, musíme si přečíst datový list a porozumět tomu, jaké různé typy konfiguračních bitů jsou k dispozici, a jejich funkce. Tyto bity lze nastavit nebo resetovat na základě našich programovacích požadavků pomocí konfigurační pragmy.
Pragma má následující podoby.
#pragma config setting = stav-hodnota #pragma config register = hodnota
kde setting je deskriptor nastavení konfigurace, např. WDT, a state je textový popis požadovaného stavu, např. OFF. Zvažte následující příklady.
#pragma config WDT = ZAPNUTO // zapnout časovač hlídacího psa #pragma config WDTPS = 0x1A // určit hodnotu časovače postcale
ODPOČINOUT SI!!….. RELAX !!…. RELAX !!…...
Vím, že to příliš šlo do našich hlav a nastavení těchto konfiguračních bitů se může pro nováčka zdát trochu obtížné !! Ale s naším MPLAB-X to vzdorovitě není.
Nastavení konfiguračních bitů v MPLAB-X:
Microchip tento únavný proces výrazně usnadnil použitím grafických znázornění různých typů konfiguračních bitů. Abychom je nyní nastavili, musíme jednoduše postupovat podle níže uvedených kroků.
Krok 1: Klikněte na Okno -> Zobrazení paměti PIC -> Konfigurační bity. Jak je ukázáno níže.
Krok 2: Tím by se mělo otevřít okno Configuration Bits ve spodní části našeho IDE, jak je znázorněno níže. Na tomto místě můžeme nastavit každý z konfiguračních bitů podle našich potřeb. Jak postupujeme kroky, vysvětlím každou z bitů a její účel.
Krok 3: První bit je bit výběru oscilátoru.
PIC16F87XA lze provozovat ve čtyřech různých režimech oscilátoru. Tyto čtyři režimy lze vybrat naprogramováním dvou konfiguračních bitů (FOSC1 a FOSC0):
- LP nízkonapěťový krystal
- Krystal / rezonátor XT
- Vysokorychlostní krystal / rezonátor HS
- RC rezistor / kondenzátor
Pro naše projekty používáme 20Mhz Osc, proto musíme z rozevíracího seznamu vybrat HS.
Krok 4: Dalším bitem bude náš Watchdog timer Enable Bit.
Watchdog Timer je volně běžící RC oscilátor na čipu, který nevyžaduje žádné externí komponenty. Tento RC oscilátor je samostatný od RC oscilátoru pinu OSC1 / CLKI. To znamená, že WDT bude fungovat, i když byly zastaveny hodiny na pinech OSC1 / CLKI a OSC2 / CLKO zařízení. Během normálního provozu vyprší časový limit WDT a reset zařízení (Watchdog Timer Reset). Bit TO v registru stavu bude vymazán po vypršení časového limitu časovače Watchdog. Pokud časovač není vymazán v našem softwarovém kódování, pak se celý MCU resetuje při každém přetečení časovače WDT. WDT lze trvale deaktivovat vymazáním konfiguračního bitu.
V našem programu nepoužíváme WDT, takže to necháme vymazat výběrem VYPNUTO z rozevíracího seznamu.
Krok 5: Další bit bude Bit časovače zapnutí.
Časovač zapnutí poskytuje pevný jmenovitý časový limit 72 ms při zapnutí pouze z POR. Časovač zapnutí pracuje na interním RC oscilátoru. Čip je udržován v resetu, dokud je aktivní PWRT. Časové zpoždění PWRT umožňuje vzestupu VDD na přijatelnou úroveň. K povolení nebo zakázání PWRT je k dispozici konfigurační bit.
Nebudeme potřebovat taková zpoždění v našem programu, tak to také vypneme.
Krok 6: Dalším bitem bude programování nízkého napětí.
Bit LVP konfiguračního slova umožňuje programování ICSP pro nízké napětí. Tento režim umožňuje programování mikrokontroléru pomocí ICSP pomocí zdroje VDD v rozsahu provozního napětí. To znamená pouze to, že VPP nemusí být přiveden na VIHH, ale může být ponechán na normálním provozním napětí. V tomto režimu je pin RB3 / PGM vyhrazen pro programovací funkci a přestává být univerzálním I / O pinem. Během programování se VDD aplikuje na pin MCLR. Pro vstup do programovacího režimu je nutné použít VDD na RB3 / PGM za předpokladu, že je nastaven bit LVP.
Vypneme LVP, abychom mohli použít RB3 jako I / O pin. Chcete-li to provést, jednoduše toto vypněte pomocí rozevíracího seznamu.
Krok 7: Dalšími bity budou bity EEPROM a Programové ochrany paměti. Pokud je tento bit zapnutý, jakmile bude naprogramován MCU, nikdo nebude získávat náš program z hardwaru. Ale prozatím nechme všechny tři vypnuté.
Jakmile je nastavení provedeno podle pokynů, mělo by dialogové okno vypadat nějak takto.
Krok 8: Nyní klikněte na Generovat zdrojový kód na výstup, náš kód se vygeneruje nyní, zkopírujte jej spolu se souborem záhlaví a vložte jej do našeho C-souboru Blink.c, jak je znázorněno níže.
Tím je naše konfigurační práce hotová. Tuto konfiguraci můžeme mít pro všechny naše projekty. Ale pokud vás to zajímá, můžete se s nimi později pohrávat.
Programování PIC na blikání LED:
V tomto programu použijeme náš mikrokontrolér PIC k blikání LED připojené k I / O kolíku. Pojďme se podívat na různé I / O piny dostupné na našem PIC16F877A.
Jak je uvedeno výše, PIC16F877 má 5 základních vstupních / výstupních portů. Obvykle se označují jako PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) a PORT E (RE). Tyto porty se používají pro rozhraní vstupu a výstupu. V tomto řadiči je „PORT A“ široký pouze 6 bitů (RA-0 až RA-5), „PORT B“, „PORT C“, „PORT D“ jsou široký pouze 8 bitů (RB-0 až RB-7, RC-0 až RC-7, RD-0 až RD-7), „PORT E“ má šířku pouze 3 bitů (RE-0 až RE-2).
Všechny tyto porty jsou obousměrné. Směr portu je řízen pomocí registrů TRIS (X) (TRIS A slouží k nastavení směru PORT-A, TRIS B slouží k nastavení směru PORT-B atd.). Nastavením bitu TRIS (X) „1“ nastavíte jako vstup odpovídající bit PORT (X). Vymazáním bitu TRIS (X) „0“ nastavíte odpovídající PORT (X) bit jako výstup.
Pro náš projekt musíme vytvořit pin RB3 na PORT B jako výstup, aby k němu mohla být připojena naše LED. Zde je kód pro blikání LED pomocí mikrokontroléru PIC:
#zahrnout
Nejprve jsme určili externí frekvenci Crystal pomocí #define _XTAL_FREQ 20000000. Potom jsme ve funkci void main () dali instrukci našemu MCU, že použijeme RB3 jako výstupní (TRISB = 0X00;) pin. Nakonec se použije nekonečná smyčka while, takže LED bliká navždy. Abychom mohli blikat LED, musíme ji jednoduše zapnout a vypnout se znatelným zpožděním.
Po dokončení kódování vytvořte projekt pomocí příkazu Spustit -> Vytvořit hlavní projekt. To by mělo váš program zkompilovat. Pokud je vše v pořádku (jak by mělo být), zobrazí se ve výstupní konzole v dolní části obrazovky zpráva BUILD SUCCESSFUL, jak je znázorněno na obrázku níže.
Schéma zapojení a simulace Proteus:
Jakmile sestavíme projekt a pokud bude Build úspěšný, byl by na pozadí našeho IDE vygenerován soubor HEX. Tento soubor HEX lze nalézt v níže uvedeném adresáři
Může se lišit, pokud jste ukládali na jiném místě.
Nyní si rychle otevřete Proteus, který jsme nainstalovali dříve, a vytvořme schémata pro tento projekt. Nebudeme vysvětlovat, jak to udělat mimo rozsah tohoto projektu. Ale nebojte se, je vysvětleno ve videu níže. Jakmile budete postupovat podle pokynů a sestavíte schémata, mělo by to vypadat nějak takto
Chcete-li simulovat výstup, po načtení hexadecimálního souboru klikněte na tlačítko přehrávání v levém dolním rohu obrazovky. Mělo by blikat LED připojené k RB3 na MCU. Pokud v něm máte nějaký problém, podívejte se na video, pokud stále není vyřešen, použijte sekci komentářů pro pomoc.
Nyní jsme vytvořili náš první projekt s mikrokontrolérem PIC a ověřili jsme výstup pomocí simulačního softwaru. Jděte a vylaďte se s programem a sledujte výsledky. Dokud se nesetkáme na našem dalším projektu.
Ach počkej !!
V našem dalším projektu se budeme učit, jak to dosáhnout na skutečném hardwaru. K tomu budeme potřebovat následující nástroje, které je připraví. Do té doby ŠŤASTNÉ UČENÍ !!
- PicKit 3
- PIC16F877A IC
- 40kolíkový držák IC
- Perf deska
- 20MHz Crystal OSC
- Ženské a mužské špendlíky
- Kondenzátor 33pf - 2č
- Rezistor 680 ohmů
- LED libovolné barvy
- Pájecí souprava.