diff --git a/ChangeLog b/ChangeLog index 1c5c317b..7b64eb15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,8 +4,12 @@ * jtagmkII_private.h: Add CMND_XMEGA_ERASE as well as the various XMEGA_ERASE_* definitions (from updated appnote AVR067) - * jtagmkII.c (jtagmkII_chip_erase): Correctly implement - Xmega chip erase based on CMND_XMEGA_ERASE. + * jtagmkII.c (jtagmkII_chip_erase): Correctly implement Xmega chip + erase based on CMND_XMEGA_ERASE. After erasing an Xmega part, do + *not* reinitialize the world, as a subsequent programming + operation will fail (for unknown reasons). Actually, this was + really only required for ancient AVRs, but doesn't hurt on mega + and tiny devices. * jtagmkII.c (jtagmkII_pre_write): Remove, this turned out to be just a chip erase. * jtagmkII.c (jtagmkII_program_disable): Don't try reading diff --git a/jtagmkII.c b/jtagmkII.c index 95cababc..c66852f2 100644 --- a/jtagmkII.c +++ b/jtagmkII.c @@ -907,7 +907,8 @@ static int jtagmkII_chip_erase(PROGRAMMER * pgm, AVRPART * p) return -1; } - pgm->initialize(pgm, p); + if (!(p->flags & AVRPART_HAS_PDI)) + pgm->initialize(pgm, p); return 0; }