I tried Nick Gammon's programmer, using a programming cable (reset -> D10 on the running Due).
The first attempt it seemed to recognise the Mega, and I could even attempt to program it. However it failed verification completely, and then after that, I cannot even get it to "enter programming mode" in many attempts.
Atmega chip programmer.
Written by Nick Gammon.
Version 1.37
Compiled on Sep 29 2017 at 22:26:54 with Arduino IDE 10804.
Attempting to enter ICSP programming mode ......................................................
Failed to enter programming mode. Double-check wiring!
Type 'C' when ready to continue with another chip ...
Attempting to enter ICSP programming mode ......................................................
Failed to enter programming mode. Double-check wiring!
Type 'C' when ready to continue with another chip ...
When the Mega is plugged into ICSP it powers up with the ON and LED next to AREF permanently lit.
Looks like it is bricked, or was a brick when I bought it from ebay.
Does anyone know what kind of diagnosis I could do? I don't mind writing my own code to probe ICSP etc. Is it possible to make use of this board at all or will I just have to throw it away?
Can you expand on "The Due is a 3.3v device"? The Due has +5V regulated on the board and that's what its ICSP interface offers. Its GPIO is all 5V output.
Warning: Unlike most Arduino boards, the Arduino Due board runs at 3.3V. The maximum voltage that the I/O pins can tolerate is 3.3V. Applying voltages higher than 3.3V to any I/O pin could damage the board.
I'm sorry, the confusion is my fault. I was using "Due" as short for "Duemilanove". I didn't realise there was actually a separate product named "Due".
To be clear, I'm using a Duemilanove.
So, is the Mega 2560 a brick? Any way to troubleshoot it further?
I've also tried using the Arduino as ISP method, but it's a bit unclear whether this is supposed to be able to burn the Mega 2560 bootloader.
In any case, any attempt to upload a sketch fails like this ("Upload Using Programmer" with Programmer set to "Arduino as ISP", and the ArduinoISP Example sketch running on the Duemilanove):
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude: stk500_disable(): unknown response=0x12
the selected serial port avrdude: stk500_disable(): unknown response=0x12
does not exist or your board is not connected
Trying to "Burn bootloader" produces the same result.