- Potřebné materiály:
- Flash paměť:
- ICSP (In Circuit Serial Programming):
- Obvody a hardware:
- Vypalování kódu pomocí MPLAB IPE:
V našich předchozích dvou tutoriálech jsme diskutovali o tom, jak začít s PIC pomocí kompilátoru MPLABX a XC8, také jsme vytvořili náš první LED blikající program s PIC a ověřili jsme ho simulací. Nyní je čas, abychom se dostali k hardwaru. V tomto tutoriálu postavíme malý obvod na Perf Board pro Blinking LED pomocí PIC. Vypustíme program do našeho mikrokontroléru PIC a ověříme blikání LED. K programování PIC MCU budeme používat MPLAB IPE.
Potřebné materiály:
Jak je popsáno v našem předchozím tutoriálu, budeme potřebovat následující materiály:
- PicKit 3
- PIC16F877A IC
- 40kolíkový držák IC
- Perf deska
- 20 MHz Crystal OSC
- Ženské a mužské špendlíky
- Kondenzátor 33pf - 2Nos, 100uf a 10uf cap.
- 680 ohm, 10K a 560ohm rezistor
- LED libovolné barvy
- 1 Pájecí sada
- IC 7805
- 12V adaptér
Co se stane, když „vypálíme“ mikrokontrolér !!
Je obvyklou praxí nahrát kód do MCU a zajistit, aby fungoval uvnitř MCU.
Abychom tomu porozuměli, podívejme se na náš program
Jak vidíme, tento kód je napsán v jazyce C a pro náš MCU nebude mít smysl. Tady přichází část našeho kompilátoru; Compiler je ten, který převádí tento kód do strojově čitelné formě. Tento strojově čitelný formulář se nazývá HEX kód, každý projekt, který vytvoříme, bude mít HEX kód, který bude v následujícím adresáři
** Vaše poloha ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Pokud vás tak zajímá, jak tento hexadecimální kód vypadá, otevřete jej pomocí poznámkového bloku. U našeho programu Blink bude kód HEX vypadat takto:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Existují způsoby, jak si to přečíst a jak jej pochopit a vrátit zpět do jazyka Assembly, ale je to zcela mimo rozsah tohoto kurzu. Jednoduše řečeno, ve zkratce; HEX je konečný softwarový výstup našeho kódování a to je to, co bude zasláno MPLAB IPE pro vypálení MCU.
Flash paměť:
HEX kód je uložen do MCU v místě zvaném paměti Flash. Flash paměť je místo, kde bude náš program uložen uvnitř MCU a proveden odtamtud. Jakmile zkompilujeme program v našem MPLABX, dostali bychom na výstupní konzoli následující informace o typu paměti
Jelikož jsme právě sestavili malý blikající program LED, souhrn paměti ukazuje, že jsme právě spotřebovali 0,5% dostupného programového prostoru a 1,4% datového prostoru.
Paměť mikrokontroléru PIC16F877 je v zásadě rozdělena do 3 typů:
Programová paměť: Tato paměť obsahuje program (který jsme napsali) poté, co jsme jej vypálili. Připomínáme, že Program Counter vykonává příkazy uložené v paměti programu jeden po druhém. Jelikož jsme napsali velmi malý program, spotřebovali jsme pouze 0,5% z celkového prostoru. Toto je energeticky nezávislá paměť, což znamená, že po vypnutí nebudou uložená data ztracena.
Datová paměť: Jedná se o typ paměti RAM, který obsahuje speciální registry, jako je SFR (Special Function Register), který zahrnuje časovač Watchdog, Brown out Reset atd. A GPR (General Purpose Register), který zahrnuje TRIS a PORT atd. Proměnné, které jsou uloženy v datové paměti během programu jsou odstraněny po vypnutí MCU. Jakákoli proměnná deklarovaná v programu bude uvnitř datové paměti. Toto je také nestálá paměť.
Data EEPROM (elektricky mazatelná programovatelná paměť pouze pro čtení): Paměť, která umožňuje ukládání proměnných v důsledku vypálení zapsaného programu. Například pokud přiřadíme proměnnou „a“, abychom do ní uložili hodnotu 5 a uložili ji do EEPROM, tato data se neztratí, i když je napájení vypnuto. Toto je energeticky nezávislá paměť.
Programová paměť a EEPROM jsou energeticky nezávislé paměti, které se nazývají Flash paměť nebo EEPROM.
ICSP (In Circuit Serial Programming):
Budeme programovat náš PIC16F877A pomocí možnosti ICSP, která je k dispozici v našem MCU.
Co je ICSP?
ICSP je jednoduchý způsob, který nám pomáhá naprogramovat MCU i poté, co je umístěn uvnitř naší projektové desky. K programování MCU není potřeba mít samostatnou programátorskou desku, vše, co potřebujeme, je 6 připojení programátoru PicKit3 k naší desce, a to následovně:
1 |
VPP (nebo MCLRn) |
Vstup do programovacího režimu. |
2 |
Vcc |
Napájecí kolík 11 nebo 32 |
3 |
GND |
Uzemněný PIN 12 nebo 31 |
4 |
PGD - Data |
RB7. PIN40 |
5 |
PGC - hodiny |
RB6. PIN 39 |
6 |
PGM - povolení LVP |
RB3 / RB4. Nepovinné |
ICSP je vhodný pro všechny balíčky PIC; vše, co potřebujeme, je vytáhnout těchto pět pinů (šestý pin PGM je volitelný) z MCU na Pickit3, jak je znázorněno na obrázku níže.
Obvody a hardware:
Nyní máme náš HEX kód připravený a také víme, jak připojit náš PicKit 3 k našemu PIC MCU pomocí ICSP. Pojďme tedy dál a pájíme obvod pomocí níže uvedených schémat:
Ve výše uvedeném obvodu jsem použil 7805 k regulaci výstupu 5V na můj PIC MCU. Tento regulátor bude napájen 12V nástěnným adaptérem. ČERVENÁ LED slouží k indikaci, zda je PIC napájen. Konektor J1 se používá pro programování ICSP. Kolíky jsou připojeny, jak je popsáno ve výše uvedené tabulce.
První pin MCLR musí být ve výchozím nastavení držen vysoko pomocí 10k. To zabrání resetování MCU. Pro resetování MCU musí být pin MCLR přidržen na zemi, což lze provést pomocí spínače SW1.
LED je připojena ke kolíku RB3 přes odpor o hodnotě 560 ohmů (viz kalkulačka odporu LED). Pokud je vše v pořádku, jakmile je náš program nahrán, měla by tato LED blikat na základě programu. Celý obvod je postaven na Perfboardu pájením všech komponent na něm, jak vidíte na obrázku nahoře.
Vypalování kódu pomocí MPLAB IPE:
Chcete-li vypálit kód, postupujte podle následujících kroků:
- Spusťte MPLAB IPE.
- Připojte jeden konec PicKit 3 k počítači a druhý konec ke svým ICSP pinům na desce perf.
- Připojte se ke svému zařízení PIC kliknutím na tlačítko připojení.
- Vyhledejte soubor Blink HEX a klikněte na Program.
Pokud vše půjde podle plánu, měli byste na obrazovce dostat zprávu o úspěchu. Kompletní ukázku najdete v níže uvedeném kódu a videu a v případě pochybností použijte sekci komentářů.
Děkuji!!!
Pojďme se setkat v dalším tutoriálu, kde budeme hrát s více LED a přepínačem.