Nano via Leonardo as ISP = mismatch at 0x0002 every time

Hi,

I’m trying to program a Nano using a Leonardo as an ISP.

I’ve got as far as getting avrdude to read the device signature and fuse settings correctly:

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e950f (probably m328p)

avrdude.exe: safemode: Fuses OK (E:FD, H:DA, L:FF)

but every time I try to program a sketch I end up with this:

avrdude: verification error, first mismatch at byte 0x0002
         0x40 != 0x5c

So it seems that nothing is actually being programmed at all. I’ve got the devices connected via their ICSP headers and the latest version of the ArduinoISP sketch loaded on the Leonardo.

Ideas welcome!

Here’s the full output when trying to upload a sketch:

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\ian\AppData\Local\Temp\arduino_build_396254/Blink.ino.hex"
avrdude: writing flash (924 bytes):

Writing | ################################################## | 100% 0.54s

avrdude: 924 bytes of flash written
avrdude: verifying flash memory against C:\Users\ian\AppData\Local\Temp\arduino_build_396254/Blink.ino.hex:
avrdude: load data flash data from input file C:\Users\ian\AppData\Local\Temp\arduino_build_396254/Blink.ino.hex:
avrdude: input file C:\Users\ian\AppData\Local\Temp\arduino_build_396254/Blink.ino.hex contains 924 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.30s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0002
         0x40 != 0x5c
avrdude: verification error; content mismatch

avrdude done.  Thank you.

the selected serial port 
 does not exist or your board is not connected

I’ve found a partial solution to this. If I do a manual erase of the flash on the Nano, it programmes correctly. I have to do an erase for every programming cycle.

Is there a way of automating this in the GUI? Is this even a safe thing to do?