TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Azicuetano en 25 de Octubre de 2005, 09:15:00
-
Buenas a todos amigos foreros, tengo una duda y me gustaría saber que opinais.
Tengo un programa en el que continuamente (cada pocos ms) por medio de la interrupción del TMR0 me salta al vector de interrupciones. En el vectro de interrupciones lo que hago es visualizar 6 displays de 7 seg. Hasta este punto todo va perfecto. El problema viene cuando grabo datos en la EEPROM (PIC 16F87X en ensamblador).
Siempre me lo hace perfectamente pero... he detectado que hay algunos micros que se cualgan cuando efectúo la grabación. Se pueden considerar defectuosos??
He investigado el tema y he llegado a la siguiente conclusión.
En la función de grabar en la eeprom hay que deshabilitar las interrupciones para meterle un par de secuencias 55h y AAh (en el datasheet lo explican). Pues bien, en los micros que me dan problemas, si deshabilito las interrupciones antes de entrar en la función de grabar los datos en la EEPROM, funcionan bien.
Recapitulamos:
Si deshabilito las interrupciones dentro de la misma función de grabación en EEPROM algunos micros se cuelgan.
Si deshabilito las interrupciones antes de función de grabación en EEPROM... TODOS me van perfectamente.
A alguien le ha pasado esto?? Esto es posible?? Nunca me había percatado de este problema y... hace ya años que me dedico a esto.
Bueno... espero que alguna mente privilegiada me instruya... tanto a mi como a todos los colegas que formamos esta gran familia jeje.
Un saludo desde Alicante.
-
Hola.
Yo para hacer las rutinas de lectura y escritura en la eeprom interna del 16F876 no segui el pdf del pic, porque me dijeron que habia algun error, y me guie a partir de unas rutinas que me dejaron, si quieres te puedo mandar las rutinas que a mi si que me funcionan. Pero en principio, no hagas mucho caso del pdf.
-
Hola yo siempre utilizo esta subrutina que es del PDF...
Como ves se desactivan las interrupciones antes de mandar el 55 y el AA...
Pues a mi me ha funcionaod bien siempre ![Helado Helado]()
Que raro lo que dices 
ESCRIBIR_EEPROM
BSF STATUS, RP1
BSF STATUS, RP0
BTFSC EECON1, WR
GOTO $-1
BCF STATUS, RP0
MOVF ADDR, W
MOVWF EEADR
MOVF VALUE, W
MOVWF EEDATA
BSF STATUS, RP0
BCF EECON1, EEPGD
BSF EECON1, WREN
BCF INTCON, GIE
MOVLW 0x55
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
BSF EECON1, WR
nop
BCF EECON1, WREN
BCF STATUS, RP1
BCF STATUS, RP0
return
-
Hola otra vez a todos.
Ya he resuelto el problema. El datasheet que yo utilizaba es del 1999 y... en una versión más actualizada la rutina de grabación en la EEPROM es un poco distinta.
También he visto un pdf de erratas de microchip en el que comentan algunos problemas al grabar en la eeprom.
Gracias y... un saludo desde Alicante.