- Materiale necesare:
- Memorie flash:
- ICSP (In Circuit Serial Programming):
- Circuit și hardware:
- Arderea codului folosind MPLAB IPE:
În cele două tutoriale anterioare am discutat Cum să începem cu PIC utilizând compilatorul MPLABX și XC8, am realizat și primul nostru program LED intermitent cu PIC și l-am verificat prin simulare. Acum este timpul să punem mâna pe hardware. În acest tutorial vom construi un mic circuit pe o placă Perf pentru clipirea LED-ului folosind PIC. Vom arunca programul pe microcontrolerul nostru PIC și vom verifica LED-ul intermitent. Pentru a programa PIC MCU vom folosi MPLAB IPE.
Materiale necesare:
După cum sa discutat în tutorialul nostru anterior, vom avea nevoie de următoarele materiale:
- PicKit 3
- PIC16F877A IC
- 40 - Suport IC pin
- Tablou de perfecționare
- 20 MHz Crystal OSC
- Femei și bărbați Bergstick pini
- Condensator de 33pf - capac 2Nos, 100uf și 10uf.
- 680 ohm, rezistență 10K și 560ohm
- LED de orice culoare
- 1Kit de lipit
- IC 7805
- Adaptor de 12V
Ce se întâmplă când „ardem” un microcontroler !!
Este o practică obișnuită să încărcați codul într-un MCU și să îl faceți să funcționeze în interiorul MCU.
Pentru a înțelege acest lucru, puteți arunca o privire asupra programului nostru
După cum putem vedea, acest cod este scris în limbaj C și nu va avea sens pentru MCU-ul nostru. Aici intervine partea compilatorului nostru; un compilator este unul care convertește acest cod într-o formă lizibilă de mașină. Acest formular lizibil de mașină se numește cod HEX, fiecare proiect pe care îl creăm va avea un cod HEX care va fi în următorul director
** Locația dvs. ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Dacă sunteți atât de interesat să știți cum arată acest cod HEX, deschideți-l folosind blocnotesul. Pentru programul nostru Blink, codul HEX va arăta după cum urmează:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Există modalități de a citi acest lucru și de a-l înțelege și inversa înapoi în limbajul asamblării, dar este complet în afara sferei acestui tutorial. Deci, pur și simplu să-l punem pe scurt; HEX este rezultatul final al software-ului codării noastre și acesta este ceea ce va fi trimis de MPLAB IPE pentru arderea MCU.
Memorie flash:
Codul HEX este stocat în MCU într - un loc numit de memorie flash. Memoria flash este locul în care programul nostru va fi stocat în MCU și executat de acolo. Odată ce am compilat programul în MPLABX, am fi primit următoarele informații despre tipul de memorie de pe consola de ieșire
Deoarece tocmai am compilat un mic program LED intermitent, rezumatul memoriei arată că tocmai am consumat 0,5% din spațiul disponibil al programului și 1,4% din spațiul de date.
Memoria microcontrolerului PIC16F877 este practic împărțită în 3 tipuri:
Memorie de program: Această memorie conține programul (pe care l-am scris), după ce l-am ars. Ca memento, Program Counter execută comenzile stocate în memoria programului, una după alta. Din moment ce am scris un program foarte mic, am consumat doar 0,5% din spațiul total. Aceasta este o memorie non-volatilă, înseamnă că datele stocate nu vor fi pierdute după oprire.
Memorie de date: Acesta este un tip de memorie RAM, care conține un registru special, cum ar fi SFR (Special Function Register), care include temporizatorul Watchdog, Brown out Reset etc. și GPR (General Purpose Register) care include TRIS și PORT etc. Variabilele stocate în memoria de date din timpul programului sunt șterse după ce oprim MCU. Orice variabilă declarată în program va fi în memoria de date. Aceasta este, de asemenea, o memorie volatilă.
EEPROM de date (memorie de citire programabilă ștearsă electric): o memorie care permite stocarea variabilelor ca urmare a arderii programului scris. De exemplu, dacă atribuim o variabilă „a” pentru a salva o valoare de 5 în ea și a o stoca în EEPROM, aceste date nu se vor pierde chiar dacă alimentarea este oprită. Aceasta este o memorie non-volatilă.
Memoria de program și EEPROM sunt amintiri nevolatile, numite Memorie Flash sau EEPROM.
ICSP (In Circuit Serial Programming):
Vom programa PIC16F877A folosind opțiunea ICSP disponibilă în MCU.
Acum, ce este ICSP?
ICSP este un mod simplu care ne ajută să programăm un MCU chiar și după ce este plasat în placa noastră de proiect. Nu este nevoie să avem o placă de programare separată pentru a programa MCU, tot ce avem nevoie este de 6 conexiuni de la programatorul PicKit3 la placa noastră, după cum urmează:
1 |
VPP (sau MCLRn) |
Pentru a intra în modul de programare. |
2 |
Vcc |
Pinul de alimentare 11 sau 32 |
3 |
GND |
Împământare PIN 12 sau 31 |
4 |
PGD - Date |
RB7. PIN40 |
5 |
PGC - Ceas |
RB6. PIN 39 |
6 |
PGM - activare LVP |
RB3 / RB4. Nu este obligatoriu |
ICSP este potrivit pentru toate pachetele PIC; tot ce avem nevoie este să scoatem acești cinci pini (al șaselea pin PGM este opțional) de la MCU la Pickit3 așa cum se arată în imaginea de mai jos.
Circuit și hardware:
Acum, avem codul HEX pregătit și știm, de asemenea, cum să ne conectăm PicKit 3 la MCU-ul nostru PIC folosind ICSP. Deci, să mergem mai departe și să lipim circuitul cu ajutorul schemelor de mai jos:
În circuitul de mai sus am folosit un 7805 pentru a regla ieșirea de 5V către MCU-ul PIC. Acest regulator va fi alimentat de un adaptor de perete de 12V. Ledul RED este utilizat pentru a indica dacă PIC este alimentat. Conectorul J1 este utilizat pentru programarea ICSP. Pinii sunt conectați așa cum este discutat în tabelul de mai sus.
Primul pin MCLR trebuie menținut ridicat cu ajutorul unui 10k în mod implicit. Acest lucru va împiedica resetarea MCU. Pentru a reseta MCU pinul MCLR trebuie ținut la sol, ceea ce se poate face cu ajutorul comutatorului SW1.
LED-ul este conectat la pinul RB3 printr-un rezistor de valoare de 560 ohmi (a se vedea calculatorul de rezistență LED). Dacă totul este corect odată ce programul nostru este încărcat, acest LED ar trebui să clipească pe baza programului. Întregul circuit este construit pe Perfboard prin lipirea tuturor componentelor de pe acesta, după cum puteți vedea în imaginea din partea de sus.
Arderea codului folosind MPLAB IPE:
Pentru a arde codul, urmați pașii de mai jos:
- Lansați MPLAB IPE.
- Conectați un capăt al PicKit 3 la computer și celălalt capăt la pinii ICSP de pe placa de perfecționare.
- Conectați-vă la dispozitivul dvs. PIC făcând clic pe butonul de conectare.
- Căutați fișierul Blink HEX și faceți clic pe Program.
Dacă totul merge așa cum este planificat, ar trebui să primiți mesajul de succes pe ecran. Verificați codul și videoclipul de mai jos pentru demonstrație completă și utilizați secțiunea de comentarii dacă aveți vreo îndoială.
Mulțumesc!!!
Să ne întâlnim în următorul tutorial unde ne vom juca cu mai multe LED-uri și un comutator.