Estoy terminando una aplicación que utilizará algunos parámetros no volátiles almacenados en una EEPROM AVR Atmega644P. Los valores iniciales de EEPROM se generaron utilizando el atributo EEMEM (como se describe en este tutorial ) y se grabaron en el AVR de la avrdude
siguiente manera:
avrdude -c usbasp -p atmega644p -u -U eeprom:w:application.eep
La aplicación se ejecuta y recupera los valores correctos de la EEPROM, pero si actualizo solo el firmware con avrdude -c usbasp -p atmega644p -u -U flash:w:application.hex
la EEPROM parece que también se borra, ya que los valores leídos son "todos unos" en lugar de los cargados previamente. Entonces pregunto, ¿hay alguna forma de grabar el firmware en flash pero evitar que se borre la EEPROM (usando avrdude
)?
Antes de volver a flashear cualquier MCU Atmel AVR, debe borrarlo. El procedimiento de borrado por defecto borra FLASH, EEPROM y bits de bloqueo. Hay 2 formas de resolver tu problema:
Me funcionó en un ATtiny84 usando PlatformIO como IDE con el siguiente comando AVRDUDE
upload_command = avance $UPLOAD_FLAGS -U flash:w:$SOURCE:i
donde $UPLOAD_FLAGS
fue establecido por el archivo de configuración platformio.ini.
Los valores de mi EEPROM se venden al por menor durante la actualización del nuevo programa, pero aún puedo leer y escribir mediante programación en EEPROM: ¡felices días!
x4mer
Claudio
eeprom_update_byte
función, ¿no puedo tener el conjunto de fusibles EESAVE?x4mer
Claudio