This is for the ones having the same problem like me.
Uploading from the bootloader on the 2560 works
fine. But never get any sketch (like blink) via ISP
working.
First of all, it's a problem with adressing, so the highfuses.
When having a Mega 2560 with bootloader programmed,
after readout the fuses (with e.g PROGisp) you'll see fuses
Low: FF High: D8 Ext: FD. This is correct when there is a
programm in it uploaded via USB. But for direct ISP
programming you don't need a bootloader and needing
another start adress. Thanks to the fuse calculator programm
to find the problem.
Ok, we have a Mega 2560 with bootloader and the blink
programm uploaded via USB. Reading now the flash,
it looks odd, having multiple times same programm.
Mentioned in the Arduino IDE software the is a difference
in blocks. And this is controlled by the highfuses. Don't
know why it's different, maybe other programming structure
or needed for the bootloader. But setting the Highfuse to DB
(eg. with PROGisp) will give a clean code starting at 0x0000.
Now you can read and save the bin- or hex-file and upload
again with eg. an USBasp. And don't forget to do a chiperase.
Because we don't want that bootloader or any other thing.
Till so far, it is working. As far we now know, when having
a Mega 2560, change the Highfuse to DB and do chiperase.
This you can do with an (chinese) USBasp and PROGisp.
There are other programms can do the same. But first
of all fuses: Low: FF High: DB Ext: FD Loc: FF and Chip Erase
Disconnect everything. And you have now an erased
Mega 2560 without bootloader.
When having a MegaISP or USBasp, connect it to the
pc, and the other end ofcourse at the ICSP header.
Startup Arduino IDE, check the right programmer type.
Then load a sketch eg. blink. And press 'upload with programmer'
Et voila, it is working.
The '?' in my topic name means there could be a better
solution, like improving the Arduino IDE doing it in
the right way.
Please leave comments, we are all here to learn