- Potrebné materiály:
- Flash pamäť:
- ICSP (v obvodovom sériovom programovaní):
- Obvody a hardvér:
- Napaľovanie kódu pomocou MPLAB IPE:
V našich predchádzajúcich dvoch tutoriáloch sme diskutovali Ako začať s PIC pomocou kompilátora MPLABX a XC8, vytvorili sme tiež náš Prvý program blikania LED s PIC a overili sme ho simuláciou. Teraz je čas, aby sme sa dostali k hardvéru. V tomto tutoriále postavíme malý obvod na doske Perf pre blikanie LED pomocou PIC. Program vypustíme do nášho mikrokontroléra PIC a overíme blikanie LED. Na programovanie PIC MCU budeme používať MPLAB IPE.
Potrebné materiály:
Ako už bolo spomenuté v našom predchádzajúcom tutoriále, budeme potrebovať nasledujúce materiály:
- PicKit 3
- PIC16F877A IC
- 40 - pinový držiak IC
- Perf doska
- 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 ľubovoľnej farby
- 1spájkovacia súprava
- IC 7805
- 12V adaptér
Čo sa stane, keď „vypálime“ mikrokontrolér !!
Je obvyklou praxou nahrať kód do MCU a zaistiť jeho fungovanie v MCU.
Aby sme tomu porozumeli, pozrime sa na náš program
Ako vidíme, tento kód je napísaný v jazyku C a nebude mať zmysel pre náš MCU. Tu prichádza na rad časť nášho kompilátora; Compiler je ten, ktorý prevádza tento kód do strojovo čitateľnej forme. Táto strojom čitateľná forma sa nazýva HEX kód, každý projekt, ktorý vytvoríme, bude mať HEX kód, ktorý bude v nasledujúcom adresári.
** Vaša poloha ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Ak vás tak zaujíma, ako tento HEX kód vyzerá, otvorte ho pomocou poznámkového bloku. Pre náš program Blink bude kód HEX vyzerať takto:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Existujú spôsoby, ako to prečítať a ako im porozumieť a vrátiť ich späť do jazyka zhromaždenia, ale je to úplne mimo rozsah tohto tutoriálu. Jednoducho povedané v skratke; HEX je konečný softvérový výsledok nášho kódovania a to bude to, čo pošle MPLAB IPE na vypálenie MCU.
Flash pamäť:
HEX kód je uložený do MCU v mieste zvanom pamäti Flash. Flash pamäť je miesto, kde bude náš program uložený vo vnútri MCU a bude odtiaľ spustený. Len čo zostavíme program v našom MPLABX, na výstupnej konzole by sme dostali nasledujúce informácie o type pamäte
Pretože sme práve zostavili malý blikajúci program LED, súhrn pamäte ukazuje, že sme práve spotrebovali 0,5% dostupného programového priestoru a 1,4% dátového priestoru.
Pamäť mikrokontroléra PIC16F877 je v zásade rozdelená do 3 typov:
Programová pamäť: Táto pamäť obsahuje program (ktorý sme si napísali) potom, čo sme ho spálili. Pripomíname, že program Counter vykonáva príkazy uložené v pamäti programu jeden za druhým. Keďže sme napísali veľmi malý program, spotrebovali sme iba 0,5% z celkového priestoru. Toto je energeticky nezávislá pamäť, čo znamená, že uložené dáta sa po vypnutí nestratia.
Dátová pamäť: Toto je typ pamäte RAM, ktorý obsahuje špeciálne registre ako SFR (Register špeciálnych funkcií), ktorý obsahuje časovač Watchdog, Brown out Reset atď. A GPR (Register všeobecného účelu), ktorý obsahuje TRIS a PORT atď. Premenné, ktoré sú uložené v dátovej pamäti sa počas programu vymažú po vypnutí MCU. Akákoľvek premenná deklarovaná v programe bude vo vnútri dátovej pamäte. Toto je tiež nestála pamäť.
Dáta EEPROM (elektricky mazateľná programovateľná pamäť iba na čítanie): Pamäť, ktorá umožňuje ukladanie premenných v dôsledku vypálenia napísaného programu. Napríklad ak priradíme premennú „a“, aby sme do nej uložili hodnotu 5 a uložili ju do EEPROM, tieto údaje sa nestratia, aj keď je napájanie vypnuté. Toto je energeticky nezávislá pamäť.
Programová pamäť a EEPROM sú stále pamäte, ktoré sa volajú ako Flash pamäť alebo EEPROM.
ICSP (v obvodovom sériovom programovaní):
Budeme programovať náš PIC16F877A pomocou možnosti ICSP, ktorá je k dispozícii v našom MCU.
Čo je to ICSP?
ICSP je jednoduchý spôsob, ktorý nám pomáha programovať MCU aj po jeho umiestnení do našej projektovej dosky. Na programovanie MCU nie je potrebné mať samostatnú programátorskú dosku, všetko, čo potrebujeme, je 6 pripojení od programátora PicKit3 k našej doske nasledovne:
1 |
VPP (alebo MCLRn) |
Pre vstup do programovacieho režimu. |
2 |
Vcc |
Napájací kolík 11 alebo 32 |
3 |
GND |
Uzemnený PIN 12 alebo 31 |
4 |
PGD - údaje |
RB7. PIN40 |
5 |
PGC - hodiny |
RB6. PIN 39 |
6 |
PGM - povolenie LVP |
RB3 / RB4. Nie je povinné |
ICSP je vhodný pre všetky balíčky PIC; všetko, čo potrebujeme, je vytiahnuť týchto päť pinov (šiesty pin PGM je voliteľný) z MCU na Pickit3, ako je to znázornené na obrázku nižšie.
Obvody a hardvér:
Teraz máme pripravený náš HEX kód a tiež vieme, ako pripojiť náš PicKit 3 k nášmu PIC MCU pomocou ICSP. Poďme teda ďalej a na spájkovanie obvodu pomocou nasledujúcich schém:
Vo vyššie uvedenom obvode som použil 7805 na reguláciu výstupu 5V na môj PIC MCU. Tento regulátor bude napájaný z 12 V adaptéra na stenu. ČERVENÁ LED dióda slúži na indikáciu, či je PIC napájaný. Konektor J1 sa používa na programovanie ICSP. Kolíky sú spojené, ako je popísané v tabuľke vyššie.
Prvý pin MCLR musí byť štandardne držaný vysoko s pomocou 10 kB. Toto zabráni resetovaniu MCU. Na resetovanie MCU musí byť pin MCLR pridržaný na zemi, čo je možné vykonať pomocou spínača SW1.
LED je pripojená k vývodu RB3 cez odpor s hodnotou 560 ohmov (pozri kalkulačku odporu LED). Ak je po nahraní nášho programu všetko v poriadku, táto LED by mala blikať na základe programu. Celý obvod je postavený na Perfboard spájkovaním všetkých komponentov na ňom, ako vidíte na obrázku v hornej časti.
Napaľovanie kódu pomocou MPLAB IPE:
Pri vypaľovaní kódu postupujte podľa nasledujúcich pokynov:
- Spustite MPLAB IPE.
- Pripojte jeden koniec svojej PicKit 3 k počítaču a druhý koniec k svojim ICSP pinom na doske perf.
- Pripojte sa k svojmu zariadeniu PIC kliknutím na tlačidlo pripojenia.
- Vyhľadajte súbor Blink HEX a kliknite na Program.
Ak všetko pôjde podľa plánu, mali by ste na obrazovku dostať správu o úspechu. V úplnom predvedení si prečítajte nižšie uvedený kód a video a v prípade akýchkoľvek pochybností použite sekciu komentárov.
Ďakujem!!!
Poďme sa stretnúť v ďalšom tutoriále, kde si zahráme s viac LED a prepínačom.