- Preparació per a la programació:
- Creació d'un nou projecte mitjançant MPLAB-X:
- Conèixer els registres de configuració:
- Configuració dels bits de configuració a MPLAB-X:
- Programació de PIC per parpellejar un LED:
- Diagrama de circuits i simulació de Proteus:
Aquest és el segon tutorial de la nostra sèrie de tutorials PIC. Al nostre anterior tutorial Introducció al microcontrolador PIC: Introducció a PIC i MPLABX, vam aprendre les coses bàsiques sobre el nostre microcontrolador PIC, també vam instal·lar el programari requerit i vam adquirir un nou programador PicKit 3 que aviat utilitzarem. Ara estem preparats per començar amb el nostre primer programa de parpelleig de LED mitjançant el PIC16F877A. En aquest tutorial també coneixerem els registres de configuració.
Aquest tutorial espera que hàgiu instal·lat el programari requerit a l'ordinador i que conegueu alguns conceptes bàsics dignes sobre la PIC MCU. Si no, torneu a rebutjar el tutorial anterior i comenceu des d'allà.
Preparació per a la programació:
Com que hem decidit utilitzar el PIC16F877A, amb el compilador XC8 ens permetem començar amb el seu full de dades. Recomano a tothom que descarregueu el full de dades PIC16F877A i el manual del compilador XC8, ja que ens referirem amb freqüència a mesura que avancem en el nostre tutorial. Sempre és una bona pràctica llegir el full de dades complet de qualsevol MCU abans de començar a programar-lo.
Ara, abans d’obrir el nostre MPLAB-X i començar a programar, hi ha poques coses bàsiques que cal tenir en compte. De totes maneres, ja que aquest és el nostre primer programa, no vull arengar-vos amb molta teoria, però ens detindrem aquí i allà mentre programem i us explicaré les coses com a tals. Si no teniu prou temps per llegir-los, només cal fer una ullada i saltar al vídeo que hi ha a la part inferior de la pàgina.
Creació d'un nou projecte mitjançant MPLAB-X:
Pas 1: Inicieu l'IDE MPLAB-X que vam instal·lar a la classe anterior, un cop carregat hauria de ser semblant.

Pas 2: feu clic a Fitxers -> Projecte nou o utilitzeu la tecla de drecera Ctrl + Maj + N. Obtindreu el següent POP-UP, del qual heu de seleccionar Projecte independent i fer clic a Següent.

Pas 3: ara hem de seleccionar el nostre dispositiu per al projecte. Escriviu PIC16F877A a la secció desplegable Selecciona dispositiu . Un cop fet hauria de ser així i després fer clic a Següent.

Pas 4: la pàgina següent ens permetrà seleccionar l'eina per al nostre projecte. Aquest seria PicKit 3 per al nostre projecte. Seleccioneu PicKit 3 i feu clic a següent

Pas 5: a la pàgina següent se us demanarà que seleccioneu el compilador, seleccioneu el compilador XC8 i feu clic a Següent.

Pas 6: en aquesta pàgina hem de posar nom al nostre projecte i seleccionar la ubicació on s’ha de desar el projecte. He anomenat aquest projecte com a parpelleig i l'he desat al meu escriptori. Podeu anomenar-lo i desar-lo de la vostra manera preferida. El nostre projecte es desarà com a carpeta amb l’extensió .X, que pot llançar directament MAPLB-X. Feu clic a Finalitza un cop hàgiu acabat.

Pas 7: Ja està !!! El nostre projecte s’ha creat. A la finestra més esquerra es mostrarà el nom del projecte (Aquí parpelleja), feu-hi clic perquè puguem veure tots els directoris que hi ha al seu interior.
Per començar a programar hem d’afegir un fitxer principal C, dins del nostre directori de fitxers font. Per fer-ho, feu clic dret sobre el fitxer font i seleccioneu Nou -> Fitxer principal C, tal com es mostra a la imatge següent.

Pas 8: apareixerà el quadre de diàleg següent en què s’ha d’esmentar el nom del fitxer C. He tornat a nomenar a Blink, però us queda la decisió. Anomeneu-lo a la columna Nom del fitxer i feu clic a Finalitza.

Pas 9: un cop creat el fitxer principal C, l’IDE l’obrirà amb alguns codis predeterminats, tal com es mostra a continuació.

Pas 10: ara ja podem començar a programar el nostre codi al fitxer C-main. El codi per defecte no s’utilitzarà als nostres tutorials. Per tant, eliminem-los completament.
Conèixer els registres de configuració:
Abans de començar a programar qualsevol microcontrolador, hem de conèixer els registres de configuració.
Quins són aquests registres de configuració, com i per què hem de configurar-los?
Els dispositius PIC tenen diverses ubicacions que contenen els bits o fusibles de configuració. Aquests bits especifiquen el funcionament fonamental del dispositiu, com ara el mode oscil·lador, el temporitzador de vigilància, el mode de programació i la protecció del codi. Aquests bits s’han d’establir correctament per executar el codi, en cas contrari, disposem d’un dispositiu que no s’executa . Per tant, és molt important conèixer aquests registres de configuració abans que comencem amb el nostre programa Blink.
Per utilitzar aquests registres de configuració, hem de llegir el full de dades i entendre quins tipus de bits de configuració hi ha disponibles i les seves funcions. Aquests bits es poden configurar o restablir segons els nostres requisits de programació mitjançant un pragma de configuració.
El pragma té les formes següents.
#pragma config setting = valor-estat #pragma config register = valor
on la configuració és un descriptor de configuració de configuració, per exemple, WDT, i l'estat és una descripció textual de l'estat desitjat, per exemple, OFF. Penseu en els exemples següents.
#pragma config WDT = ON // activa el temporitzador de vigilància #pragma config WDTPS = 0x1A // especifica el valor de postescala del temporitzador
RELAXAR-SE !!….. RELAXAR-SE !!…. RELAXAR-SE !!…...
Sé que ens ha entrat massa al cap i establir aquests bits de configuració pot semblar una mica difícil per a un principiant. Però, desafiant, no ho és amb el nostre MPLAB-X.
Configuració dels bits de configuració a MPLAB-X:
El microxip ha facilitat molt aquest cansat procés mitjançant l'ús de representacions gràfiques dels diferents tipus de bits de configuració. Ara, per establir-los, simplement hem de seguir els passos següents.
Pas 1: feu clic a Finestra -> Vista de memòria PIC -> Bits de configuració. Com es mostra a continuació.

Pas 2: s'hauria d'obrir la finestra de configuració de bits a la part inferior del nostre IDE, tal com es mostra a continuació. Aquest és el lloc on podem configurar cadascun dels bits de configuració segons les nostres necessitats. Explicaré cadascun dels bits i el seu propòsit a mesura que avancem en els passos.

Pas 3: el primer bit és el bit de selecció de l’oscil·lador.
El PIC16F87XA es pot operar en quatre modes d'oscil·lador diferents. Aquests quatre modes es poden seleccionar programant dos bits de configuració (FOSC1 i FOSC0):
- LP Crystal Low-Power
- XT Crystal / Resonator
- Cristall / ressonador d'alta velocitat HS
- Resistència / condensador RC

Per als nostres projectes, utilitzem un Osc de 20 MHz, per tant, hem de seleccionar el HS al quadre desplegable.
Pas 4: el següent bit serà el nostre temporitzador de vigilància Activa el bit.
El temporitzador Watchdog és un oscil·lador RC de funcionament gratuït que no requereix cap component extern. Aquest oscil·lador RC és separat de l’oscil·lador RC del pin OSC1 / CLKI. Això vol dir que el WDT funcionarà fins i tot si s'ha aturat el rellotge dels pins OSC1 / CLKI i OSC2 / CLKO del dispositiu. Durant el funcionament normal, un temps d'espera WDT genera un restabliment del dispositiu (Restabliment del temporitzador de vigilància). El bit TO del registre d’estat s’esborrarà en un temps d’espera del temporitzador de vigilància. Si el temporitzador no s’esborra a la nostra codificació de programari, tota la MCU es restablirà en cada desbordament del temporitzador WDT. El WDT es pot desactivar permanentment si esborreu el bit de configuració.
No fem servir WDT al nostre programa, així que deixeu-ho esborrar seleccionant DESACTIVAT al quadre desplegable.
Pas 5: el bit següent serà Bit de temporitzador d’engegada.
El temporitzador d’engegada proporciona un temps d’espera nominal fix de 72 ms en encendre només des del POR. El temporitzador d’engegada funciona amb un oscil·lador RC intern. El xip es manté en Restabliment sempre que el PWRT estigui actiu. El retard de temps del PWRT permet que VDD pugi a un nivell acceptable. Es proporciona un bit de configuració per habilitar o desactivar el PWRT.
No necessitarem aquests retards al nostre programa, així que desactivem-ho també.
Pas 6: el següent bit serà la programació de baixa tensió.
El bit LVP de la paraula de configuració permet la programació ICSP de baix voltatge. Aquest mode permet programar el microcontrolador mitjançant ICSP mitjançant una font VDD en el rang de tensió de funcionament. Això només significa que VPP no ha de portar-se a VIHH, sinó que es pot deixar a la tensió de funcionament normal. En aquest mode, el pin RB3 / PGM està dedicat a la funció de programació i deixa de ser un pin d'E / S d'ús general. Durant la programació, VDD s'aplica al pin MCLR. Per entrar al mode de programació, s'ha d'aplicar VDD al RB3 / PGM sempre que el bit LVP estigui configurat.
Desactivem LVP perquè puguem utilitzar RB3 com a pin d'E / S. Per això, només cal convertir aquesta OFF usant el botó desplegable.
Pas 7: els següents bits seran EEPROM i bits de protecció de memòria de programa. Si aquest bit està activat, un cop programada la MCU, ningú no recuperarà el nostre programa del maquinari. Però ara per ara deixem tots tres apagats.
Un cop feta la configuració tal com s’ha indicat, el quadre de diàleg hauria de tenir un aspecte semblant.

Pas 8: Feu clic a Generar codi font a la sortida, el nostre codi es generarà ara només cal copiar-lo juntament amb el fitxer de capçalera i enganxar-lo al nostre fitxer C Blink.c, tal com es mostra a continuació.

Això és el nostre treball de configuració acabat. Podem tenir aquesta configuració per a tots els nostres projectes. Però si us interessa, podeu fer-ho amb ells més endavant.
Programació de PIC per parpellejar un LED:
En aquest programa utilitzarem el nostre microcontrolador PIC per parpellejar un LED connectat a un pin d'E / S. Vegem els diferents pins d'E / S disponibles al nostre PIC16F877A.

Com es mostra més amunt, el PIC16F877 té 5 ports d'entrada / sortida bàsics. Normalment es denoten per PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) i PORT E (RE). Aquests ports s’utilitzen per a la interfície d’entrada / sortida. En aquest controlador, "PORT A" només té 6 bits d'amplada (RA-0 a RA-5), "PORT B", "PORT C" i "PORT D" només tenen 8 bits d'ample (RB-0 a RB-7, RC-0 a RC-7, RD-0 a RD-7), "PORT E" té només 3 bits d'amplada (RE-0 a RE-2).

Tots aquests ports són bidireccionals. La direcció del port es controla mitjançant registres TRIS (X) (TRIS A s’utilitza per configurar la direcció de PORT-A, TRIS B s’utilitza per configurar la direcció de PORT-B, etc.). Si definiu un bit TRIS (X) '1', s'establirà el bit PORT (X) corresponent com a entrada. Si esborreu un bit TRIS (X) '0', s'establirà el bit PORT (X) corresponent com a sortida.
Per al nostre projecte hem de fer el pin RB3 del PORT B com a sortida perquè el nostre LED es pugui connectar a ell. Aquí teniu el codi per a parpellejar LED amb microcontrolador PIC:
#incloure
Primer hem especificat la freqüència externa de Crystal mitjançant #define _XTAL_FREQ 20000000. Després, en la funció void main () , vam indicar a la nostra MCU que utilitzarem el RB3 com a pin de sortida (TRISB = 0X00;) . A continuació, finalment s’utilitza un bucle while infinit perquè el LED parpelleja continuï per sempre. Per parpellejar un LED, hem d’encendre’l i apagar-lo amb un retard notable.
Un cop finalitzada la codificació, creeu el Projecte mitjançant l'ordre Executa -> Construeix el projecte principal. Això hauria de compilar el vostre programa. Si tot està bé (com hauria de ser), una consola de sortida a la part inferior de la pantalla mostrarà un missatge CREAR ÈXIT, tal com es mostra a la imatge següent.

Diagrama de circuits i simulació de Proteus:
Una vegada que construïm un projecte i si la compilació té èxit, s’hauria generat un fitxer HEX al fons del nostre IDE. Aquest fitxer HEX es troba al directori següent
Pot variar per a vosaltres si heu desat en alguna altra ubicació.
Ara, obrim ràpidament Proteus que hem instal·lat anteriorment i creem esquemes per a aquest projecte. No explicarem com fer-ho ja que fora de l'abast d'aquest projecte. Però no us preocupeu, s’explica al següent vídeo. Un cop seguiu les instruccions i construïu els esquemes, hauria de ser semblant a això

Per simular la sortida, feu clic al botó de reproducció de l'extrem inferior esquerre de la pantalla després de carregar el fitxer Hex. Ha de parpellejar el LED connectat al RB3 de la MCU. Si teniu algun problema, mireu el vídeo, si encara no es resol, utilitzeu la secció de comentaris per obtenir ajuda.
Ara hem fet el nostre primer projecte amb microcontrolador PIC i hem verificat la sortida mitjançant un programari de simulació. Aneu a modificar el programa i observeu els resultats. Fins que ens trobem amb el nostre proper projecte.
Ohh espera !!
En el nostre pròxim projecte aprendrem com aconseguir que funcioni en un maquinari real. Per a això, necessitarem les eines següents per mantenir-les a punt. Fins llavors FELIÇ APRENENTATGE !!
- PicKit 3
- PIC16F877A IC
- Suport IC de 40 pins
- Tauler de perf
- 20Mhz Crystal OSC
- Pines Bergstick femella i home
- Condensador de 33pf - 2Nos
- Resistència de 680 ohm
- LED de qualsevol color
- Kit de soldadura.
