- Potrebni materiali:
- Flash pomnilnik:
- ICSP (in Circuit Serial Programming):
- Vezje in strojna oprema:
- Zapisovanje kode z uporabo MPLAB IPE:
V prejšnjih dveh vajah smo razpravljali o tem, kako začeti uporabljati PIC s pomočjo prevajalnika MPLABX in XC8, naredili smo tudi svoj prvi LED utripajoči program s PIC in ga preverili s simulacijo. Zdaj je čas, da se lotimo strojne opreme. V tej vadnici bomo zgradili majhen krog na Perf Board za utripanje LED s pomočjo PIC. Program bomo prenesli na naš mikrokrmilnik PIC in preverili utripanje LED. Za programiranje PIC MCU bomo uporabili MPLAB IPE.
Potrebni materiali:
Kot smo razpravljali v prejšnji vadnici, bomo potrebovali naslednje materiale:
- PicKit 3
- PIC16F877A IC
- 40 - Nosilec IC zatiča
- Perf deska
- 20 MHz Crystal OSC
- Ženski in moški zatiči Bergstick
- 33pf kondenzator - 2Nos, 100uf in 10uf cap.
- 680 ohm, 10K in 560ohm upor
- LED katere koli barve
- 1 Spajkalni komplet
- IC 7805
- 12V adapter
Kaj se zgodi, ko "zažgemo" mikrokrmilnik !!
Običajna praksa je, da kodo naložite v MCU in začne delovati znotraj MCU.
Da bi to razumeli, si oglejmo naš program
Kot vidimo, je ta koda napisana v jeziku C in za naš MCU nima smisla. Tu pride del našega prevajalnika; prevajalnika je tisto, ki pretvori to kodo v strojno berljivi obliki. Ta strojno berljiv obrazec se imenuje HEX koda, vsak projekt, ki ga izdelamo, bo imel HEX kodo, ki bo v naslednjem imeniku
** Vaša lokacija ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Če vas zanima, kako izgleda ta HEX koda, jo preprosto odprite s pomočjo beležke. Za naš program Blink bo HEX koda videti tako:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Obstajajo načini, kako to prebrati in kako ga razumeti in preusmeriti nazaj v skupščinski jezik, vendar je popolnoma izven področja uporabe te vadnice. Torej, če ga preprosto povem na kratko; HEX je končni programski rezultat našega kodiranja in to je tisto, kar bo poslalo MPLAB IPE za zapisovanje MCU.
Flash pomnilnik:
Koda HEX se shrani v MCU na mestu, imenovanem Flash pomnilnik. Flash pomnilnik je kraj, kjer bo naš program shranjen v MCU in od tam izveden. Ko zberemo program v našem MPLABX, bi na izhodni konzoli dobili naslednje informacije o vrsti pomnilnika
Ker smo pravkar sestavili majhen LED, ki utripa, povzetek pomnilnika kaže, da smo porabili prav 0,5% razpoložljivega programskega prostora in 1,4% podatkovnega prostora.
Spomin mikrokrmilnika PIC16F877 je v osnovi razdeljen na 3 vrste:
Programski pomnilnik: Ta spomin vsebuje program (ki smo ga napisali), potem ko smo ga zažgali. Kot opomnik, števec programov izvrši ukaze, shranjene v programskem pomnilniku, enega za drugim. Ker smo napisali zelo majhen program, smo porabili le 0,5% celotnega prostora. To je nehlapen pomnilnik, kar pomeni, da shranjeni podatki po izklopu ne bodo izgubljeni.
Podatkovni pomnilnik: to je vrsta pomnilnika RAM-a, ki vsebuje posebne registre, kot so SFR (posebni register funkcij), ki vključuje časovni stražnik, Brown out Reset itd. In GPR (General Purpose Register), ki vključuje TRIS in PORT itd. Spremenljivke, ki so shranjene v podatkovnem pomnilniku med programom se izbrišejo, ko izklopimo MCU. Katera koli spremenljivka, prijavljena v programu, bo v pomnilniku podatkov. To je tudi hlapljiv spomin.
Podatki EEPROM (električno izbrisljiv programabilni pomnilnik samo za branje): pomnilnik, ki omogoča shranjevanje spremenljivk kot rezultat zapisovanja zapisanega programa. Če na primer določimo spremenljivko "a", da vanjo shranimo vrednost 5 in jo shranimo v EEPROM, se ti podatki ne bodo izgubili, tudi če je napajanje izklopljeno. To je nehlapen spomin.
Programski pomnilnik in EEPROM sta trajna pomnilnika in se imenujeta Flash pomnilnik ali EEPROM.
ICSP (in Circuit Serial Programming):
Naš PIC16F877A bomo programirali z uporabo možnosti ICSP, ki je na voljo v našem MCU.
Zdaj, kaj je ICSP?
ICSP je preprost način, ki nam pomaga programirati MCU, tudi ko je vstavljen v našo projektno ploščo. Za programiranje MCU ni treba imeti ločene plošče programerja, potrebujemo le 6 povezav programerja PicKit3 z našo ploščo, kot sledi:
1. |
VPP (ali MCLRn) |
Za vstop v način programiranja. |
2. |
Vcc |
Napajalni zatič 11 ali 32 |
3. |
GND |
Ozemljitev PIN 12 ali 31 |
4. |
PGD - Podatki |
RB7. PIN40 |
5. |
PGC - Ura |
RB6. PIN 39 |
6. |
PGM - LVP omogoči |
RB3 / RB4. Ni obvezno |
ICSP je primeren za vse pakete PIC; vse, kar potrebujemo, je izvleči teh pet zatičev (6. pin PGM ni obvezen) iz MCU-ja v Pickit3, kot je prikazano na spodnji sliki.
Vezje in strojna oprema:
Zdaj imamo pripravljeno HEX kodo in vemo tudi, kako povezati PicKit 3 z našim PIC MCU s pomočjo ICSP. Torej, nadaljujmo in spajkamo vezje s pomočjo spodnjih shem:
V zgornjem vezju sem uporabil 7805 za regulacijo izhodne napetosti 5V na moj PIC MCU. Ta regulator bo napajal 12V stenski adapter. RDEČI LED se uporablja za označevanje napajanja PIC. Konektor J1 se uporablja za programiranje ICSP. Zatiči so povezani, kot je opisano v zgornji tabeli.
Prvi pin MCLR je treba privzeto držati visoko s pomočjo 10k. To bo MCU preprečilo ponastavitev. Če želite ponastaviti MCU, je treba MCLR držati na tleh, kar lahko storite s pomočjo stikala SW1.
LED je povezan z zatičem RB3 prek upora v vrednosti 560 ohmov (glej kalkulator uporov LED). Če je po nalaganju programa vse pravilno, mora ta lučka utripati glede na program. Celotno vezje je zgrajeno na Perfboardu s spajkanjem vseh komponent na njem, kot lahko vidite na sliki na vrhu.
Zapisovanje kode z uporabo MPLAB IPE:
Če želite zapisati kodo, sledite spodnjim korakom:
- Zaženite MPLAB IPE.
- En konec PicKita 3 povežite z osebnim računalnikom, drugi konec pa z zatiči ICSP na deski.
- Povežite se s svojo napravo PIC s klikom na gumb za povezavo.
- Poiščite Blink HEX datoteko in kliknite Program.
Če gre vse, kot je bilo načrtovano, morate na zaslonu dobiti sporočilo o uspehu. Preverite spodnjo kodo in video za popolno predstavitev in v primeru dvoma uporabite odsek za komentarje.
Hvala vam!!!
Spoznajmo se v naslednji vadnici, kjer se bomo igrali z več LED-ji in stikalom.