diff --git a/src/updi_nvm_v3.c b/src/updi_nvm_v3.c index 9100f2bc..b29da528 100644 --- a/src/updi_nvm_v3.c +++ b/src/updi_nvm_v3.c @@ -125,6 +125,19 @@ int updi_nvm_chip_erase_V3(const PROGRAMMER *pgm, const AVRPART *p) { pmsg_error("updi_nvm_wait_ready_V3() failed\n"); return -1; } + if (updi_nvm_command_V3(pgm, p, UPDI_V3_NVMCTRL_CTRLA_EEPROM_PAGE_BUFFER_CLEAR) < 0) { + pmsg_error("sending eeprom page buffer clear command failed\n"); + return -1; + } + status = updi_nvm_wait_ready_V3(pgm, p); + if (updi_nvm_command_V3(pgm, p, UPDI_V3_NVMCTRL_CTRLA_NOCMD) < 0) { + pmsg_error("sending empty command failed\n"); + return -1; + } + if (status < 0) { + pmsg_error("updi_nvm_wait_ready_V3() failed\n"); + return -1; + } return 0; } diff --git a/src/updi_nvm_v5.c b/src/updi_nvm_v5.c index 7bdd2861..8cd4006e 100644 --- a/src/updi_nvm_v5.c +++ b/src/updi_nvm_v5.c @@ -126,6 +126,19 @@ int updi_nvm_chip_erase_V5(const PROGRAMMER *pgm, const AVRPART *p) { pmsg_error("updi_nvm_wait_ready_V5() failed\n"); return -1; } + if (updi_nvm_command_V5(pgm, p, UPDI_V5_NVMCTRL_CTRLA_EEPROM_PAGE_BUFFER_CLEAR) < 0) { + pmsg_error("sending eeprom page buffer clear command failed\n"); + return -1; + } + status = updi_nvm_wait_ready_V5(pgm, p); + if (updi_nvm_command_V5(pgm, p, UPDI_V5_NVMCTRL_CTRLA_NOCMD) < 0) { + pmsg_error("sending empty command failed\n"); + return -1; + } + if (status < 0) { + pmsg_error("updi_nvm_wait_ready_V5() failed\n"); + return -1; + } return 0; }