Upload Sketch su Arduino Mega 2560 da rete o via SD

Ho usato AVRDUDE solo per provare a scrivere i fuse (non sapendo come fare altrimenti).
La scrittura del efuse a FF va a buon fine, ma non quella a 0D.
Se adesso provo a scrivere il bootloader originale , quando termina in errore(byte 0x1e000 0xff != 0x0d), ho il led del pin 13 che lampeggia a intermittenza.
Nonostante questo errore, se lo collego via usb e invio lo sketch del blink, lo upload e funziona( per essere sicuro ho impostato il blink a 100 ms invece di 1000).

Quindi in teoria non dovrebbe essere brikkato.

Il tutto è nato quando ho provato a caricare il bootloader Adriadne.

$0D può non essere accettato perché passi al chip il valore di fuse che non esistono. Secondo il sito Fuse Calculator:
http://www.engbedded.com/fusecalc

con $0D potresti avere problemi, prova con $05.

Sì, è come dice Leo, allora puoi provare 0x05 o 0x07, tanto incidono solo sul BOD level.
Però il blink come prova non è idoneo, quel cavolo di LED lampeggia per la qualsiasi; impostalo su un pin diverso e aggiungi una R + led al volo, oppure carica uno sketch che mostri qualcosa sul serial monitor, insomma una prova più seria, ok?
Se risponde all'IDE non c'è ragione per la quale non funzioni l'ISP....

Provato a cambiare i fuse:

Fuse-->05:

c:\Program Files (x86)\Arduino\hardware\tools\avr\bin>avrdude.exe -CC:\avrdude.c
onf -patmega2560 -cstk500v1 -P\\.\COM8 -b19200 -Uefuse:w:0x05:m

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude.exe: Device signature = 0x1e9801
avrdude.exe: reading input file "0x05"
avrdude.exe: writing efuse (1 bytes):

Writing |                                                    | 0% 0.00s ***faile
d;
Writing | ################################################## | 100% 0.16s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0x05:
avrdude.exe: load data efuse data from input file 0x05:
avrdude.exe: input file 0x05 contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.03s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0x05 != 0xfd
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: efuse changed! Was 5, and is now fd
Would you like this fuse to be changed back? [y/n] n
avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

Provato a caricare Bootloader:

avrdude: Recv: . [10] 
# | 100% 170.56s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x1e000
         0xff != 0x8e
avrdude: verification error; content mismatch
avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

Fuse -->07

avrdude: Recv: . [10] 
# | 100% 170.56s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x1e000
         0xff != 0x8e
avrdude: verification error; content mismatch
avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

Caricamento Bootloader:

# | 100% 170.10s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x1e000
         0xff != 0x8e
avrdude: verification error; content mismatch
avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

Fatte queste prove caricato sketch che scrive su Seriale -->la scheda funziona e sul monitor seriale leggo ciò che scrivo.

E' proprio un comportamento strano, che IDE stai usando?

L'ultima versione stabile-->1.0.5

Non riesce a riprogrammare fuse e bootloader ma quello che c'è carica gli sketch correttamente? :roll_eyes:

Se provo a mettere il fuse -->FF

c:\Program Files (x86)\Arduino\hardware\tools\avr\bin>avrdude.exe -CC:\avrdude.c
onf -patmega2560 -cstk500v1 -P\\.\COM8 -b19200 -Uefuse:w:0xFF:m

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.06s

avrdude.exe: Device signature = 0x1e9801
avrdude.exe: reading input file "0xFF"
avrdude.exe: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.06s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0xFF:
avrdude.exe: load data efuse data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of efuse verified

avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

Così non sembra vada in errore, però poi andato a caricare il bootloader, ricevo ancora errori.

Ne stò uscendo pazzo :cold_sweat: :cold_sweat:

ambro7:
Il tutto è nato quando ho provato a caricare il bootloader Adriadne.

La board per caricare il bootloade di Codebender è questa:

##############################################################

ariadne2560M.name=Arduino Mega 2560 (Ariadne Bootloader)

ariadne2560M.upload.protocol=stk500v2
ariadne2560M.upload.maximum_size=258048
ariadne2560M.upload.speed=115200

ariadne2560M.bootloader.low_fuses=0xFF
ariadne2560M.bootloader.high_fuses=0xD8
ariadne2560M.bootloader.extended_fuses=0xFD
ariadne2560M.bootloader.path=ariadne
ariadne2560M.bootloader.file=ariadne_atmega2560.hex
ariadne2560M.bootloader.unlock_bits=0x3F
ariadne2560M.bootloader.lock_bits=0x0F

ariadne2560M.build.mcu=atmega2560
ariadne2560M.build.f_cpu=16000000L
ariadne2560M.build.core=arduino:arduino
ariadne2560M.build.variant=arduino:mega

##############################################################

I fuse sono: FF D8 FD
SPI enable
Boot Size 0
Boot Size 1
Boot Reset
BoD level 1

--> -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfd:m

Trovi il file board.txt completo qui --> https://github.com/codebendercc/Ariadne-Bootloader/tree/mega/hardware/ariadne

ma i fuse sono identici alla board originale!!!
Fai una cosa, con avrdude leggi tutti e tre i fuse e cerchiamo di capire cosa dobbiamo sistemare, certamente l'extended che è FD e non FF, ma vediamo gli altri due

Ma questo è il contenuto del file boards.txt che è sotto C:\Program Files (x86)\Arduino\hardware\ariadne

I fuse glieli imposta l'ide arduino quando scrivo il bootloader giusto?
Oppure li devo impostare in manuale.
Grazie ancora per l'aiuto!!!

Per leggerli quale comando devo utilizzare?

dovrebbe essere:
-U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

Ora sono lontano dall'Arduino....Penso di provare lunedì mattina....
Vi ringrazio

:slight_smile: :slight_smile: :slight_smile:

OK, allora ti lascio i compitini :smiley:
1 - leggi i tre fuse
2 - confrontali con gli standard: low=FF high=D8 extended=FD
3 - se trovi valori diversi ripristina quelli originali, poi rifai le tue prove
4 - se con i fuse a posto hai ancora problemi rivediamo tecnica e collegamenti ISP

Rileggevo il messaggo di errore:

avrdude: verification error, first mismatch at byte 0x1e000

Qui mi pare che ci sia stato un pò un miscuglio di problemi. Sono stati cioè mescolati i problemi con i fuse con quelli relativi alla programmazione della Flash.

L'errore che si evidenzia in alto parrebbe relativo alla barriera dei 128 kB ($1E000 = 120 kB) dell'Arduino MEGA.
Non mi ricordo se l'hai specificato, per cui ti chiedo cortesemente: stai usando che cosa per programmare lo sketch?

Sta usando IDE 1.0.5
Gli sketch riesce a programmarli senza problemi, tramite IDE + USB
NON riesce a caricare il bootloader via ISP ed ottiene quegli errori
Il dubbio che mi è venuto è che il fuse h sia programmato a favella per cui non ci sia spazio sufficiente per il bootloader
Ho constatato che sulla carta la board che ha usato per quel suo bl ha gli stessi fuse della originale MEGA 2560/ADK, quindi non dovrebbe aver brickato.
Da qui la richiesta di leggere i tre fuse prima di fare altre prove e verificare per bene (cosa che finora non abbiamo fatto) tutta la tecnica ISP che usa.

Il problema è che stia usando un qualcosa (Arduino UNO con sketch ArduinoISP?) che non riesca a scrivere oltre la barriera dei 128K di Flash. Siccome il bootloader sta nella parte più alta della memoria, il programmatore DEVE per forza passare oltre i 128K. Magari scrivendo il suo sketch tale limite non lo supera e l'errore non si presenta.

Quindi era per sapere che versione di Arduino usava e capire quale fosse il bootloader sopra caricato.

All'inizio ha riportato le connessioni, è palese che sta usando due Arduino MEGA ;). Ora, se non erro, il problema over 128K è del compilatore e non dell'Arduino, ma è possibilissimo che le cose stiano come dici tu, per cui potrebbe risolvere con l'aggiornamento software di Astrobeed.

Quindi è probabile che stia usando l'ArduinoISP compilato con un compilatore che non può indirizzare dati oltre i 128 kB. Ergo, l'ArduinoISP può non riuscire a scrivere oltre i 128 kB della memoria della seconda Mega. Io la prova la farei.