- Nødvendige materialer:
- Flashminne:
- ICSP (In Circuit Serial Programming):
- Krets og maskinvare:
- Brenning av koden ved bruk av MPLAB IPE:
I våre to tidligere veiledninger diskuterte vi Hvordan komme i gang med PIC ved hjelp av MPLABX og XC8 kompilator, vi har også laget vårt første LED-blinkende program med PIC og verifisert det ved simulering. Nå er det på tide for oss å få tak i maskinvaren. I denne opplæringen vil vi bygge en liten krets på et Perf Board for å blinke LED ved hjelp av PIC. Vi vil dumpe programmet til PIC-mikrokontrolleren vår og verifisere at LED-lampen blinker. For å programmere PIC MCU bruker vi MPLAB IPE.
Nødvendige materialer:
Som diskutert i vår forrige opplæring, trenger vi følgende materialer:
- PicKit 3
- PIC16F877A IC
- 40 - IC-holder for pinne
- Perf brett
- 20 MHz Crystal OSC
- Kvinne og mann Bergstick pins
- 33pf kondensator - 2Nos, 100uf og 10uf cap.
- 680 ohm, 10K og 560ohm motstand
- LED i alle farger
- 1Loddesett
- IC 7805
- 12V adapter
Hva skjer når vi "brenner" en mikrokontroller !!
Det er vanlig å laste opp koden til en MCU og få den til å fungere inne i MCU.
For å forstå dette kan vi ta en titt på programmet vårt
Som vi kan se, er denne koden skrevet på C-språk, og det gir ingen mening for MCU. Det er her delen av kompilatoren vår kommer inn; en kompilator er en som konverterer denne koden til en maskinlesbar form. Denne maskinlesbare skjemaet kalles HEX-koden, hvert prosjekt vi lager, vil ha en HEX-kode som vil være i følgende katalog
** Din posisjon ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Hvis du er så interessert i å vite hvordan denne HEX-koden ser ut, er det bare å åpne den med notisblokken. For vårt Blink-program vil HEX-koden se slik ut:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Det er måter å lese dette på og hvordan du kan forstå og reversere det til forsamlingsspråk, men det er helt utenfor omfanget av denne opplæringen. Så, for å bare sette det i et nøtteskall; HEX er det endelige programvareresultatet for kodingen vår, og dette vil bli sendt til MPLAB IPE for å brenne MCU.
Flashminne:
Den HEX koden er lagret i MCU på et sted kalt Flash-minne. Flash-minnet er stedet der programmet vårt lagres inne i MCU og kjøres derfra. Når vi har samlet programmet i MPLABX, ville vi ha følgende informasjon om typen minne på utgangskonsollen
Siden vi nettopp har samlet et lite LED-blinkende program, viser minnesammendraget at vi nettopp har brukt 0,5% av tilgjengelig programplass og 1,4% av datarommet.
Minne til PIC16F877 mikrokontroller er i utgangspunktet delt inn i tre typer:
Programminne: Dette minnet inneholder programmet (som vi hadde skrevet) etter at vi har brent det. Som en påminnelse utfører Programteller kommandoer som er lagret i programminnet, den ene etter den andre. Siden vi har skrevet et veldig lite program, har vi bare brukt 0,5% av den totale plassen. Dette er et ikke-flyktig minne, noe som betyr at de lagrede dataene ikke går tapt etter strømmen.
Dataminne: Dette er RAM-minnetype, som inneholder spesielle registre som SFR (Special Function Register) som inkluderer Watchdog timer, Brown out Reset etc. og GPR (General Purpose Register) som inkluderer TRIS og PORT etc. Variablene som er lagret i dataminnet under programmet slettes etter at vi slår av MCU. Enhver variabel som er angitt i programmet, vil være inne i dataminnet. Dette er også et ustabilt minne.
Data EEPROM (Elektrisk slettbart programmerbart skrivebeskyttet minne): Et minne som gjør det mulig å lagre variablene som et resultat av å brenne det skrevne programmet. For eksempel hvis vi tilordner en variabel "a" for å lagre en verdi på 5 i den og lagrer den i EEPROM, vil ikke disse dataene gå tapt selv om strømmen er slått AV. Dette er et ikke-flyktig minne.
Programminne og EEPROM er ikke-flyktige minner, og kalles som Flash-minne eller EEPROM.
ICSP (In Circuit Serial Programming):
Vi programmerer PIC16F877A ved hjelp av ICSP-alternativet som er tilgjengelig i vår MCU.
Nå, hva er ICSP?
ICSP er en enkel måte som hjelper oss å programmere en MCU selv etter at den er plassert inne i prosjektbrettet. Det er ikke nødvendig å ha et eget programmererkort for å programmere MCU, alt vi trenger er 6 tilkoblinger fra PicKit3-programmereren til styret vårt som følger:
1 |
VPP (eller MCLRn) |
For å gå inn i programmeringsmodus. |
2 |
Vcc |
Power Pin 11 eller 32 |
3 |
GND |
Bakken PIN 12 eller 31 |
4 |
PGD - Data |
RB7. PIN40 |
5 |
PGC - Klokke |
RB6. PIN 39 |
6 |
PGM - LVP-aktivering |
RB3 / RB4. Ikke obligatorisk |
ICSP er egnet for alle PIC-pakker; alt vi trenger er å trekke ut disse fem pinnene (6. pin PGM er valgfritt) fra MCU til Pickit3 som vist på bildet nedenfor.
Krets og maskinvare:
Nå har vi vår HEX-kode klar, og vi vet også hvordan vi skal koble PicKit 3 til vår PIC MCU ved hjelp av ICSP. Så la oss fortsette og lodde kretsen ved hjelp av nedenstående skjemaer:
I kretsen ovenfor har jeg brukt en 7805 for å regulere utgangen 5V til min PIC MCU. Denne regulatoren får strøm fra en 12V veggmatteradapter. RØD LED brukes til å indikere om PIC-en er strømforsynt. Koblingen J1 brukes til ICSP-programmering. Pinnene er koblet sammen som beskrevet i tabellen ovenfor.
Den første pin-MCLR-en må holdes høy ved hjelp av en 10k som standard. Dette vil forhindre at MCU tilbakestilles. For å tilbakestille MCU-en, må stiften MCLR holdes i bakken, noe som kan gjøres ved hjelp av bryter SW1.
LED-en er koblet til pinnen RB3 gjennom en motstand med verdi 560 ohm (se kalkulator for LED-motstand). Hvis alt er riktig når programmet vårt er lastet opp, bør denne LED-lampen blinke basert på programmet. Hele kretsen er bygget på Perfboard ved å lodde alle komponentene på den som du kan se på bildet øverst.
Brenning av koden ved bruk av MPLAB IPE:
Følg trinnene nedenfor for å brenne koden:
- Start MPLAB IPE.
- Koble den ene enden av PicKit 3 til PC-en og den andre enden til ICSP-pinnene på perf-kortet.
- Koble til PIC-enheten din ved å klikke på tilkoblingsknappen.
- Bla etter Blink HEX-filen og klikk på Program.
Hvis alt går som planlagt, bør du få suksessmeldingen på skjermen. Sjekk koden og videoen nedenfor for full demonstrasjon og bruk kommentarseksjonen hvis du er i tvil.
Takk skal du ha!!!
La oss møtes i Neste opplæring der vi skal spille med flere lysdioder og en bryter.