Micro que deja de funcionar el programa correctamente.

Hola a todos, me ha pasado una cosa realmente rara, a ver si alguno le ha pasado algo similar o sabe porque puede haber pasado.

Os pongo en situación:

HARDWARE: placa de perfboard con un arduino micro, display lcd 16x2, 4 relés conectados via transistor, lm35 para temperatura, hc-sr04 para medir el nivel de agua de un canal y max485 para comunicación via modbus.

SOFTWARE: Rutina del lcd, lectura de la sonda de ultrasonidos, lectura de la temperatura y libreria simplemodbus.

El aparato en cuestión se encarga de supervisar el nivel de agua en un canal, según este se activaran los relés a un valores definidos que son variables del modbus. La sonda de temperatura, además de para saberla, es para corregir la velocidad del sonido según la temperatura y reducir el error. Los valores a los que se activan los relés tienen un valor por defecto al reiniciar el aparato y mediante modbus se pueden modificar.

Hardware OK y Software OK. Todo funcionando. El sistema está conectado a un SAI que falla, y algunas veces cuando se va la luz, tengo que volver a introducir los datos via modbus.

Llevaba un tiempo sin cambiar los valores ya que no he tenido que controlar el nivel del agua, pero sin embargo llevo supervisando el nivel y la temperatura unos meses, sin errores de modbus ni nada, cuando he querido volver a poner los nuevos valores... no me deja!!. Error de timeout para la funcion 0x10 y de función ilegal para la 0x06. Reseteo y sigue igual. Quito el Micro, reprogramo con el mismo programa y a funcionar...

¿Qué puede haber pasado?¿Se puede haber borrado un área de la memoria?¿No tiene sentido verdad?

A veces pasan cosas extrañas. Yo hace poco, hice un montaje con un nano para una moto, que duró un dia. Pongo otro igual (habia hecho tres por si acaso) y perfecto. El que no funciona, se le debe haber averiado el atmega, ya que no se puede ni re-programar por ICSP.