- Nødvendige materialer:
- Glimtvis erindring:
- ICSP (In Circuit Serial Programming):
- Kredsløb og hardware:
- Afbrænding af koden ved hjælp af MPLAB IPE:
I vores to foregående tutorials diskuterede vi Sådan kommer du i gang med PIC ved hjælp af MPLABX og XC8 compiler, vi har også lavet vores første LED-blinkende program med PIC og verificeret det ved simulering. Nu er det tid for os at få fat på hardware. I denne vejledning bygger vi et lille kredsløb på et Perf Board til at blinke LED ved hjælp af PIC. Vi vil dumpe programmet til vores PIC-mikrocontroller og kontrollere, at LED'en blinker. For at programmere PIC MCU bruger vi MPLAB IPE.
Nødvendige materialer:
Som diskuteret i vores tidligere vejledning har vi brug for følgende materialer:
- PicKit 3
- PIC16F877A IC
- 40 - IC-holder til pin
- Perf bord
- 20 MHz Crystal OSC
- Kvinde- og mandstifter
- 33pf kondensator - 2Nos, 100uf og 10uf cap.
- 680 ohm, 10K og 560ohm modstand
- LED i enhver farve
- 1Lodningssæt
- IC 7805
- 12V adapter
Hvad sker der, når vi "brænder" en mikrokontroller !!
Det er en almindelig praksis at uploade koden til en MCU og få den til at fungere inde i MCU.
For at forstå dette kan vi se på vores program
Som vi kan se, er denne kode skrevet på C-sprog, og det giver ingen mening for vores MCU. Det er her den del af vores kompilator kommer ind; en Compiler er en, der konverterer denne kode til en maskinlæsbar form. Denne maskinlæsbare form kaldes HEX-koden, hvert projekt, vi opretter, vil have en HEX-kode, som vil være i følgende bibliotek
** Din placering ** \ Blink \ Blink.X \ dist \ standard \ produktion \ Blink.X.produktion.hex
Hvis du er så interesseret i at vide, hvordan denne HEX-kode ser ud, skal du bare åbne den ved hjælp af notesblokken. For vores Blink-program vil HEX-koden se ud som følger:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Der er måder, hvordan man læser dette, og hvordan man kan forstå og vende det tilbage til forsamlingssprog, men det er helt uden for denne tutorials omfang. Så for blot at sætte det i en nøddeskal; HEX er det endelige softwareresultat af vores kodning, og dette er hvad der sendes til ud af MPLAB IPE til afbrænding af MCU.
Glimtvis erindring:
Den HEX koden er lagret i MCU på et sted kaldet Flash-hukommelse. Flash-hukommelsen er det sted, hvor vores program gemmes inde i MCU'en og udføres derfra. Når vi har kompileret programmet i vores MPLABX, ville vi have fået følgende oplysninger om typen af hukommelse på outputkonsollen
Da vi lige har sammensat et lille LED-blinkende program, viser hukommelsesoversigten, at vi lige har brugt 0,5% af det tilgængelige programplads og 1,4% af datarummet.
Hukommelsen til PIC16F877 mikrocontroller er grundlæggende opdelt i 3 typer:
Programhukommelse: Denne hukommelse indeholder programmet (som vi havde skrevet), efter at vi har brændt det. Som en påmindelse udfører Program Counter kommandoer, der er gemt i programhukommelsen, den ene efter den anden. Da vi har skrevet et meget lille program, har vi kun brugt 0,5% af den samlede plads. Dette er en ikke-flygtig hukommelse, hvilket betyder, at de lagrede data ikke går tabt, efter slukningen er slået til.
Datahukommelse: Dette er RAM-hukommelsestype, der indeholder specielle registre som SFR (Special Function Register), der inkluderer Watchdog timer, Brown out Reset osv. Og GPR (General Purpose Register), der inkluderer TRIS og PORT osv. De variabler, der er gemt i Data Memory under programmet slettes, efter at vi slukker for MCU. Enhver variabel, der er angivet i programmet, vil være inde i datahukommelsen. Dette er også en ustabil hukommelse.
Data EEPROM (Elektrisk sletbar programmerbar skrivebeskyttet hukommelse): En hukommelse, der muliggør lagring af variablerne som et resultat af brænding af det skrevne program. For eksempel hvis vi tildeler en variabel "a" for at gemme en værdi på 5 i den og gemme den i EEPROM, går disse data ikke tabt, selvom strømmen er slukket. Dette er en ikke-flygtig hukommelse.
Programhukommelse og EEPROM er ikke-flygtige minder og kaldes Flash-hukommelse eller EEPROM.
ICSP (In Circuit Serial Programming):
Vi programmerer vores PIC16F877A ved hjælp af ICSP-indstillingen, der er tilgængelig i vores MCU.
Hvad er ICSP nu?
ICSP er en enkel måde, der hjælper os med at programmere en MCU, selv efter at den er placeret inde i vores projektkort. Der er ikke behov for at have et separat programmørkort for at programmere MCU, alt hvad vi behøver er 6 forbindelser fra PicKit3 programmør til vores kort som følger:
1 |
VPP (eller MCLRn) |
For at gå ind i programmeringstilstand. |
2 |
Vcc |
Power Pin 11 eller 32 |
3 |
GND |
Jord- PIN 12 eller 31 |
4 |
PGD - data |
RB7. PIN40 |
5 |
PGC - Ur |
RB6. PIN 39 |
6 |
PGM - LVP-aktivering |
RB3 / RB4. Ikke obligatorisk |
ICSP er velegnet til alle PIC-pakker; alt hvad vi har brug for er at trække disse fem ben ud (6. pin PGM er valgfri) fra MCU til Pickit3 som vist på billedet nedenfor.
Kredsløb og hardware:
Nu har vi vores HEX-kode klar, og vi ved også, hvordan vi forbinder vores PicKit 3 til vores PIC MCU ved hjælp af ICSP. Så lad os gå videre og lodde kredsløbet ved hjælp af nedenstående skemaer:
I ovenstående kredsløb har jeg brugt en 7805 til at regulere output 5V til min PIC MCU. Denne regulator får strøm fra en 12V wall mart-adapter. Den RØDE LED bruges til at indikere, om PIC'en er tændt. Stikket J1 bruges til ICSP-programmering. Stifterne er forbundet som beskrevet i ovenstående tabel.
Den første pin MCLR skal holdes høj ved hjælp af en 10k som standard. Dette forhindrer MCU i at nulstille. For at nulstille MCU'en skal stiften MCLR holdes på jorden, hvilket kan gøres ved hjælp af switch SW1.
LED'en er forbundet til stiften RB3 gennem en modstand med værdi 560 ohm (Se LED-modstandsberegner). Hvis alt er korrekt, når vores program er uploadet, skal denne LED blinke baseret på programmet. Hele kredsløb er bygget på Perfboard ved at lodde alle komponenterne på det som du kan se på billedet øverst.
Afbrænding af koden ved hjælp af MPLAB IPE:
Følg nedenstående trin for at brænde koden:
- Start MPLAB IPE.
- Tilslut den ene ende af din PicKit 3 til din pc og den anden ende til dine ICSP-ben på perf-kortet.
- Opret forbindelse til din PIC-enhed ved at klikke på forbindelsesknappen.
- Gennemse Blink HEX-filen, og klik på Program.
Hvis alt går som planlagt, skal du få succesmeddelelsen på skærmen. Tjek koden og videoen nedenfor for fuld demonstration, og brug kommentarsektionen, hvis du er i tvivl.
Tak skal du have!!!
Lad os mødes i den næste tutorial, hvor vi vil lege med flere LED'er og en switch.