Una pregunta, quiero probar para contar las vueltas de un tacómetro y guardarlas por si hay corte de tensión.
En float se usan 4 direcciones, voy a usar un int16 que es más que suficiente.
He leido por algun sitio que no hay que abusar de la eeprom a la hora de estar guardando datos.
Como solo va ser en momentos puntuales, ¿es correcto que ponga "write_int16_eeprom(direccion,variable);" dentro le la interrupción?
¿O no es un problema de mayor importancia?
Es preferible usar banderas y posteriormente las verifiques.
En algunos casos no pasa nada si se introducen rutinas de ese tipo en el servicio de interrupción, pero en otros casos sí pueden afectar.
Como quiera, el compilador se da cuenta de ello y deshabilita la interrupción hasta que se ejecute el código interno.
Cuando eso sucede lo podrás ver en el log de compilación como una advertencia.
Ahora, la mayoría de las EEPROMS internas de los PIC's, si no es que todos, soportan alrededor de un millón de lecturas o escrituras.
Alguna hoja de datos dijo:
• 1,000,000 erase/write cycle Data EEPROM memory typical
• Data EEPROM Retention > 40 years
Así que con ese dato puedes saber cuánto podría tener de vida la EEPROM.
Que escribiéndola constantemente como en el código que expones, no sería por mucho tiempo.
Es mejor realizar lo que menciona Gudino, si no quieres que la EEPROM se deteriore pronto.
Por aquí en alguno de los foros subí un ejemplo de cómo hacerlo.
No recuerdo en cual, ni tampoco en qué lenguaje escribí el programa.
Pero dale una leída al registro PCON y te podrás dar una idea de la implementación.