Programació en pic-as del PIC 16F690

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Memòria EEPROM

En el nostre programa, a més de la memòria de dades, també podem fer servir la memòria EEPROM per guardar dades. La memòria EEPROM conserva el seu contingut quan es perd l'alimentació elèctrica; per tant és útil per guardar aquelles dades que no interessa que es perdin encara que el programa torni a començar. A la memòria EEPROM hi podem guardar valors en el moment de programar, per tant també és útil per aquells valors constants que sempre són els mateixos.

La forma de lectura i escriptura de la memòria EEPROM és mitjançant un adreçament indirecte gestionat per uns bits de control.

A l'exemple EE guardem dades a la memòria EEPROM en el moment de programar i després les llegim des del programa. Podem provar la la lectura i l'escriptura de l'EEPROM amb l'exemple ME.

Cal tenir present que la memòria EEPROM pot ser esborrada, si ho desitgem, en el moment de programar. Si fem servir el programador PICkit 2, cal tenir marcada la casella Preserve device EEPROM si no volem que a l'enviar un nou programa s'esborrin les dades que tenim guardades.

PICkit 2

Si emprem el programador PICkit 3, cal anar al menú Memories to Program, en el desplegable triar Manually select memories and ranges i deixar sense marcar la casella EEPROM si no volem que a l'enviar un nou programa s'esborrin les dades.

PICkit 3

Lectura de la memòria EEPROM

Per llegir el contingut d'una adreça de la memòria EEPROM cal posar l'adreça al registre EEADR, desactivar el bit EEPGD per indicar que treballem amb EEPROM i activar el bit RD per demanar que es faci la lectura. Un cop activat RD, el valor demanat estarà a EEDAT, d'on el podrem copiar. El tros de programa següent llegeix l'adreça de la memòria EEPROM etiquetada com Adre i deixa el valor a W. S'ha suposat que en començar està actiu el banc 0 que és el que queda actiu en acabar.

  ...
  bsf RP1  ; Tria el banc 2
  movlw Adre  ; Llegim l'adreça de la variable
  movwf EEADR  ; Adreça EEPROM
  bsf RP0  ; Tria el banc 3
  bcf EEPGD  ; Accés a EEPROM
  bsf RD  ; Lectura
  bcf RP0  ; Tria el banc 2
  movf EEDAT,w  ; Llegim
  bcf RP1  ; Tria el banc 0
  ...

Escriptura de la memòria EEPROM

Quan escrivim a la memòria EEPROM hem de seguir un procés similar al de la lectura però una mica més llarg. La primera consideració és que si aparegués una interrupció a mig procés d'escriptura el resultat podria ser greu; per tant cal desactivar les interrupcions i comprovar que el bit GIE s'ha desactivat. Durant el procés d'escriptura cal escriure uns valors a l'adreça EECON2 per activar el procés. El tros de programa següent escriu el valor que hi ha a l'acumulador a l'adreça de la memòria EEPROM etiquetada com Adre. Si s'ha d'escriure més d'un byte, cal repetir cada vegada el procés. S'ha suposat que en començar està actiu el banc 0 que és el que queda actiu en acabar.

  ...
  bsf RP1  ; Tria el banc 2
  movwf EEDAT  ; Guarda el valor de l'acumulador al registre EEDAT
  movlw Adre  ; Llegim l'adreça de la variable
  movwf EEADR  ; Adreça EEPROM
  bsf RP0  ; Tria el banc 3
  bcf EEPGD  ; Accés a EEPROM
  bsf WREN  ; Activa la possibilitat d'escriptura
  bcf GIE  ; Desactiva les interrupcions
  btfsc GIE  ; Comprova si el bit s'ha desactivat
  goto $-2
  movlw 0x55  ; Valor necessari
  movwf EECON2  ; Escriu 55h
  movlw 0xAA  ; Valor necessari
  movwf EECON2  ; Escriu AAh
  bsf WR  ; Inicia l'escriptura
  btfsc WR  ; Ha acabat l'escriptura?
  goto $-1  ; No, doncs esperem
  bsf GIE  ; Torna a activar les interrupcions
  bcf WREN  ; Desactiva la possibilitat d'escriptura
  bcf RP0
  bcf RP1  ; Tria el banc 0
  ...

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.