- EEPROM a PIC16F877A:
- Diagrama del circuit i explicació:
- Simulació de l'ús de PIC EEPROM:
- Programació de PIC per EEPROM:
- Treball:
En aquest tutorial aprendrem el fàcil que és guardar dades mitjançant la EEPROM present al microcontrolador PIC16F877A. En la majoria dels projectes en temps real, és possible que haguem de desar algunes dades que no s’han d’esborrar fins i tot quan s’apaga l’alimentació. Pot semblar un procés complicat, però amb l'ajuda de XC8 Compiler aquesta tasca es pot fer només amb una sola línia de codi. Si les dades són grans en termes de megabytes, podem connectar un dispositiu d’emmagatzematge com una targeta SD i emmagatzemar-hi. Però podem evitar aquells fatigants processos si les dades són petites, simplement podem utilitzar l’EEPROM present al microcontrolador PIC per desar les nostres dades i recuperar-les en qualsevol moment que vulguem.
Aquest tutorial PIC EEPROM forma part d’una seqüència de tutorials PIC sobre microcontroladors en què vam començar des d’un nivell molt bàsic. Si no heu après els tutorials anteriors, seria millor fer-hi una ullada ara, perquè aquest tutorial suposa que esteu familiaritzat amb la interfície LCD amb microcontrolador PIC i l’ús d’ADC amb microcontrolador PIC.
EEPROM a PIC16F877A:
EEPROM significa "Memòria de només lectura esborrable i programable electrònicament". Com el seu nom indica, és una memòria present dins del microcontrolador PIC en la qual podem escriure / llegir dades programant-les per fer-ho. Les dades emmagatzemades només s’esborraran si s’esmenta que ho fa al programa. La quantitat d'espai d'emmagatzematge disponible a EEPROM varia segons cada microcontrolador; els detalls es donaran al full de dades de forma habitual. En el nostre cas per a PIC16F877A, l’espai disponible és de 256 bytes tal com s’esmenta a la seva fitxa tècnica d’especificacions. Ara vegem com podem utilitzar aquests 256 bytes per llegir / escriure dades mitjançant una senzilla configuració experimental.
Diagrama del circuit i explicació:

El diagrama de circuits del projecte es mostra a la part superior. Hem interfaçat una pantalla LCD per visualitzar les dades que es guarden i es recuperen. Es connecta un potenciòmetre normal al canal analògic AN4, de manera que s’alimenta en tensió variable, aquest voltatge variable s’utilitzarà com a dades que es guardaran a la EEPROM. També hem utilitzat un polsador a RB0, quan es prem aquest botó, les dades del canal analògic es guardaran a la EEPROM.
Aquesta connexió es pot fer en una taula de treball. Els pinouts del microcontrolador PIC es mostren a la taula següent.
|
S. No: |
Número de pin |
Nom del pin |
Connectat a |
|
1 |
21 |
RD2 |
RS de LCD |
|
2 |
22 |
RD3 |
E de pantalla LCD |
|
3 |
27 |
RD4 |
D4 de pantalla LCD |
|
4 |
28 |
RD5 |
D5 de pantalla LCD |
|
5 |
29 |
RD6 |
D6 de pantalla LCD |
|
6 |
30 |
RD7 |
D7 de pantalla LCD |
|
7 |
33 |
RBO / INT |
Polsador |
|
8 |
7 |
AN4 |
Potenciòmetre |
Simulació de l'ús de PIC EEPROM:
Aquest projecte també inclou una simulació dissenyada amb Proteus, mitjançant la qual podem simular el funcionament del projecte sense cap maquinari. El programa d'aquesta simulació es dóna al final d'aquest tutorial. Simplement podeu utilitzar el fitxer Hex des d’aquí i simular tot el procés.
Durant la simulació podeu visualitzar el valor ADC actual i les dades desades a l'EEPROM a la pantalla LCD. Per desar el valor ADC actual a la EEPROM només cal prémer el commutador connectat a RB0 i es desarà. A continuació es mostra una instantània de la simulació.

Programació de PIC per EEPROM:
El codi complet d’aquest tutorial es dóna al final d’aquest tutorial. Al nostre programa hem de llegir els valors del mòdul ADC i quan es prem un botó hem de desar aquest valor a la nostra EEPROM. Com que ja hem après sobre els ADC i la interfície LCD, explicaré més a fons el codi per desar i recuperar dades de l'EEPROM.
Segons la fitxa tècnica "Aquests dispositius tenen 4 o 8.000 paraules del programa Flash, amb un rang d'adreça des de 0000h fins a 1FFFh per al PIC16F877A". Això vol dir que cada espai d’emmagatzematge EEPROM té una adreça a través de la qual es pot accedir i a la nostra MCU l’adreça comença des de 0000h fins a 1FFFh.
Per desar dades en una adreça EEPROM en particular, només cal que utilitzeu la línia següent.
eeprom_write (0, adc);
Aquí "adc" és una variable de tipus enter en què hi ha les dades a desar. I "0" és l'adreça de l'EEPROM on es guarden les nostres dades. La sintaxi "eeprom_write" la proporciona el nostre complidor XC8, de manera que el compilador s'encarregarà automàticament dels registres.
Per recuperar dades que ja estan emmagatzemades a EEPROM i desar-les en una variable, es pot utilitzar la següent línia de codi.
Sadc = (int) eeprom_read (0);
Aquí, "Sadc" és la variable en què es desaran les dades de l'EEPROM. I "0" és l'adreça d'EEPROM de la qual recuperem les dades. La sintaxi "eeprom_read" la proporciona el nostre complidor XC8, de manera que el compilador s'encarregarà automàticament dels registres. Les dades guardades a EEPROM seran de tipus hexadecimal. Per tant, els convertim a tipus enter prefixant a (int) abans de la sintaxi.
Treball:
Un cop entenguem el funcionament del codi i ens preparem amb el maquinari, podem provar el codi. Pengeu el codi al microcontrolador PIC i engegueu la configuració. Si tot funciona com s'esperava, hauríeu de veure els valors ADC actuals mostrats a la pantalla LCD. Ara podeu prémer el botó per desar el valor ADC a la EEPROM. Ara comproveu si es desa el valor desactivant tot el sistema i engegant-lo de nou. Quan estigueu encès, hauríeu de veure el valor desat prèviament a la pantalla LCD.

El funcionament complet d’aquest projecte per utilitzar el microcontrolador PIC EEPROM es mostra al vídeo següent. Espero que hàgiu entès el tutorial i us hagi agradat fer-lo. Si teniu cap dubte, podeu escriure-los a la secció de comentaris de sota o publicar-los als nostres fòrums.
