Duda con EEPROM 16F877

Esta es la primera vez que utilizo la memoria eeprom de un microcontrolador, en concreto la del 16F877, y la verdad es que ando un poco liado. Me explico: he mirado el datasheet y el ejemplo (de escritura) que ponen:



Entiendo lo que hacen todas las intrucciones, hasta aquí ningún problema.

Mirando por internet he encontrado la siguiente web: http://www.alos.5u.com/pic16f877/Modulo6.html

Explica bastantes cosas de la eeprom del Pic que voy a utilizar. En el ejemplo de escritura ponen el siguiente:



Es parecido al ejemplo del Datasheet, aunque aquí primero se van al banco 2, y no al 3. Pero supongo que el orden no importará.
En esa misma web ponen ejemplos de programas en los que utilizan la eeprom, y es quí donde me lío, ya que en esos programas la serie de intrucciones que utilizan es mas larga:



Lo único que no acabo de entender es si hay que poner el bucle en el que espera al final de la grabación o no, ya que en el datasheet no lo veo. Tambíen aparece la siguiente linea:

bcf PIR2,EEIF ;Si termina Borra bandera de interrupción

Que ni en el otro ejemplo ni en el datasheet aparecen.
La lectura si que le he simulado (con el mismo programa con el cual estoy trabajando, MPLAB), pero la escritura no consigo simularla (no se si es fallo de MPLAB o mio).

Gracias de antemano.
 
Hola.
Dejando de lado los pro y contras primero leerias las capacidades del simulador del MPLAB, hay cosas que no puede...

- La escritura de EEPROM dura al rededor de 10ms para esos PIC y en el simulador eso es eterno jeje..
- Haz caso al ejemplo de datasheet puesto que es lo mas simple en ejemplos... no te lies con flags de interrupcion y mas cosas (segun el ejemplo de la web usa interrupcion para avisar que la escritura EEPROM a finalizado... recuerda que se tarda al rededor de 10ms y en el ejemplo evitan esperar los 10ms en que el PIC no hace nada).
- Si tienes dudas sobre los Bancos no hay nada mejor que "revisar el Datasheet", todo esta ahi... verifica que hace cada registro.

- Sin interrupciones lo mas usado es el blucle que hace con btfsc EECON1,WR para esperar que termine de escribir.

Saludos
 
Hola.
Dejando de lado los pro y contras primero leerias las capacidades del simulador del MPLAB, hay cosas que no puede...

- La escritura de EEPROM dura al rededor de 10ms para esos PIC y en el simulador eso es eterno jeje..
- Haz caso al ejemplo de datasheet puesto que es lo mas simple en ejemplos... no te lies con flags de interrupcion y mas cosas (segun el ejemplo de la web usa interrupcion para avisar que la escritura EEPROM a finalizado... recuerda que se tarda al rededor de 10ms y en el ejemplo evitan esperar los 10ms en que el PIC no hace nada).
- Si tienes dudas sobre los Bancos no hay nada mejor que "revisar el Datasheet", todo esta ahi... verifica que hace cada registro.

- Sin interrupciones lo mas usado es el blucle que hace con btfsc EECON1,WR para esperar que termine de escribir.

Saludos

Muchas gracias por contestar, entonces usaré el ejemplo del datasheet, pero añadiendo el bucle btfsc EECON1,WR.

Veo que en el último ejemplo que he puesto para pasar un dato al Work Register (antes de mandarlo a EEDATA y EEADR) van al banco cero. ¿Ese paso es innecesario, verdad? ya que se puede escrivir desde cualquier banco el Work register, o almenos eso creo...

Gracias por la respuesta.
 
Atrás
Arriba