- Materials necessaris:
- Memòria flash:
- ICSP (In Circuit Serial Programming):
- Circuit i maquinari:
- Gravació del codi mitjançant MPLAB IPE:
En els nostres dos tutorials anteriors, vam parlar de Com començar amb PIC mitjançant el compilador MPLABX i XC8, també hem realitzat el nostre primer programa de parpelleig LED amb PIC i ho hem verificat per simulació. Ara és el moment de posar-nos en pràctica el maquinari. En aquest tutorial crearem un petit circuit en una placa Perf per parpellejar el LED mitjançant PIC. Bolcarem el programa al nostre microcontrolador PIC i verificarem que el LED parpelleja. Per programar el PIC MCU utilitzarem MPLAB IPE.
Materials necessaris:
Tal com es va comentar al nostre tutorial anterior, necessitarem els materials següents:
- PicKit 3
- PIC16F877A IC
- 40 - Suport IC de pin
- Tauler de perf
- 20 MHz Crystal OSC
- Pines Bergstick femella i home
- Capacitor de 33pf: tap de 2Nos, 100uf i 10uf.
- Resistència de 680 ohm, 10K i 560ohm
- LED de qualsevol color
- 1Kit de soldadura
- IC 7805
- Adaptador de 12 V.
Què passa quan "Gravem" un microcontrolador !!
És una pràctica habitual carregar el codi a una MCU i fer-lo funcionar dins de la MCU.
Per comprendre-ho, consulteu el nostre programa

Com podem veure, aquest codi està escrit en llenguatge C i no tindrà cap sentit per a la nostra MCU. Aquí és on entra la part del nostre compilador; un compilador és aquell que converteix aquest codi en una forma llegible per màquina. Aquest formulari llegible per màquina s’anomena codi HEX, cada projecte que creem tindrà un codi HEX que es trobarà al directori següent
** La vostra ubicació ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Si esteu tan interessats en conèixer l’aspecte d’aquest codi HEX, obriu-lo amb el bloc de notes. Per al nostre programa Blink, el codi HEX serà el següent:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Hi ha maneres de llegir-lo i de comprendre-lo i revertir-lo al llenguatge Assembly, però està completament fora de l’abast d’aquest tutorial. Per tant, simplement posar-ho en poques paraules; el HEX és el resultat final del programari de la nostra codificació i això és el que enviarà MPLAB IPE per gravar l'MCU.
Memòria flash:
El codi HEX s’emmagatzema a la MCU en un lloc anomenat memòria Flash. La memòria flash és el lloc on s’emmagatzemarà el nostre programa dins de la MCU i s’executarà des d’aquí. Un cop compilem el programa al nostre MPLABX, hauríem obtingut la següent informació sobre el tipus de memòria de la consola de sortida

Com que acabem de compilar un petit programa LED parpellejant, el resum de memòria mostra que acabem de consumir el 0,5% de l'espai disponible del programa i l'1,4% de l'espai de dades.
La memòria del microcontrolador PIC16F877 es divideix bàsicament en 3 tipus:
Memòria del programa: aquesta memòria conté el programa (que havíem escrit) després de gravar-lo. Com a recordatori, el comptador de programes executa ordres emmagatzemades a la memòria del programa, una darrere l’altra. Com que hem escrit un programa molt petit, només hem consumit el 0,5% de l’espai total. Es tracta d’una memòria no volàtil, cosa que significa que les dades emmagatzemades no es perdran després d’apagar-se.
Memòria de dades: es tracta d'un tipus de memòria RAM, que conté registres especials com SFR (registre de funcions especials) que inclou temporitzador de vigilància, restabliment marró, etc. i GPR (registre d'ús general) que inclou TRIS i PORT, etc. Les variables que s'emmagatzemen a la memòria de dades durant el programa s’esborren després d’apagar l’MCU. Qualsevol variable declarada al programa estarà dins de la memòria de dades. Aquesta també és una memòria volàtil.
EEPROM de dades (memòria de només lectura programable esborrable elèctricament): una memòria que permet emmagatzemar les variables com a resultat de la gravació del programa escrit. Per exemple, si assignem una variable "a" per guardar-hi un valor de 5 i l'emmagatzemem a l'EEPROM, aquestes dades no es perdran encara que l'alimentació estigui apagada. Es tracta d’una memòria no volàtil.
La memòria del programa i la EEPROM són memòries no volàtils, anomenades memòria flash o EEPROM.
ICSP (In Circuit Serial Programming):
Programarem el nostre PIC16F877A mitjançant l’opció ICSP disponible a la nostra MCU.
Ara, què és ICSP?
ICSP és una manera senzilla que ens ajuda a programar una MCU fins i tot després de col·locar-la dins del tauler de projecte. No cal tenir una placa de programador independent per programar la MCU, només necessitem 6 connexions des del programador PicKit3 a la nostra placa de la següent manera:
|
1 |
VPP (o MCLRn) |
Per entrar al mode de programació. |
|
2 |
Vcc |
Pin d' alimentació 11 o 32 |
|
3 |
GND |
PIN de terra 12 o 31 |
|
4 |
PGD: dades |
RB7. PIN40 |
|
5 |
PGC: rellotge |
RB6. PIN 39 |
|
6 |
PGM - habilitació LVP |
RB3 / RB4. No obligatori |
ICSP és adequat per a tots els paquets PIC; tot el que necessitem és treure aquests cinc pins (el PGM de sisè pin és opcional) de la MCU a Pickit3 tal com es mostra a la imatge següent.

Circuit i maquinari:
Ara tenim el nostre codi HEX a punt i també sabem com connectar el PicKit 3 a la nostra PIC MCU mitjançant ICSP. Per tant, anem a soldar el circuit amb l'ajut dels esquemes següents:

Al circuit anterior he utilitzat un 7805 per regular la sortida de 5 V a la meva MCU PIC. Aquest regulador serà alimentat per un adaptador de paret mart 12V. El led VERMELL s’utilitza per indicar si el PIC està alimentat. El connector J1 s’utilitza per a la programació ICSP. Els pins estan connectats tal com es descriu a la taula anterior.
El MCLR del primer pin s'ha de mantenir elevat amb l'ajut de 10k per defecte. Això evitarà que la MCU es restableixi. Per restablir l'MCU, el pin MCLR s'ha de mantenir a terra, cosa que es pot fer amb l'ajut del commutador SW1.
El LED està connectat al pin RB3 mitjançant una resistència de valor de 560 ohms (vegeu la calculadora de resistències LED). Si tot és correcte un cop carregat el nostre programa, aquest LED hauria de parpellejar en funció del programa. Tot el circuit es construeix a Perfboard soldant tots els components que hi ha, tal com es pot veure a la imatge de la part superior.
Gravació del codi mitjançant MPLAB IPE:
Per gravar el codi, seguiu els passos següents:
- Inicieu el MPLAB IPE.
- Connecteu un extrem del PicKit 3 al vostre PC i un altre extrem als pins ICSP del tauler de perf.
- Connecteu-vos al dispositiu PIC fent clic al botó de connexió.
- Cerqueu el fitxer Blink HEX i feu clic a Programa.
Si tot va segons el previst, hauríeu de mostrar el missatge d'èxit a la pantalla. Consulteu el codi i el vídeo següents per obtenir una demostració completa i utilitzeu la secció de comentaris si teniu cap dubte.
Gràcies!!!
Ens reunim al següent tutorial on jugarem amb més LEDs i un commutador.
