Strano problema con signature scrivendo il bootloader

Ma ne sei estremamente sicuro?
Da quello che so io (letto in altri post di questo fourm in inglese) la signature impostata per il 328 di arduino uno (atmega328p) è 1E 94 0F
Quella che ho dovuto impostare io per far quagliare il tutto è 1E 94 14.

se trovo il link lo riallego.

Eccolo :

http://arduino.cc/forum/index.php/topic,58670.0.html

Scusami ma io flasho da almeno 6 mesi gli Atmega328p-20pu in standalone e non ho mai modificato la signature nel file boards.txt.
Che poi, a ripensarci, la signature manco c'è nel file originale. C'è solo il modello di micro che, per gli Atmega dell'Arduino, sono "atmega328p".
Inoltre avrdude non supporta neanche gli atmega328 senza "p", ho appena provato.

PS: confermo che la signature per i 328p è proprio 1E 95 0F. E' quella che mi da avrdude del mio 328 standalone.
Scusa, ma puoi postare questo boards.txt o no?

niki77:
Ma ne sei estremamente sicuro?

Il datasheet dice che è esattamente come dico io quindi si, sono sicuro al 1000% :grin:

Da quello che so io (letto in altri post di questo fourm in inglese) la signature impostata per il 328 di arduino uno (atmega328p) è 1E 94 0F
Quella che ho dovuto impostare io per far quagliare il tutto è 1E 94 14.

La signature del 328 è 0x1E 0x95 0x14, la signature del 328p è 0x1E 0x95 0x0F, quelle con lo 0x94 sono del 168 e comunque il terzo valore è diverso.
0x1E 0x94 0x14 non è una signature valida ne per il 168 ne per il 328, se non ci credi leggi il datasheet.

leo72:
Che poi, a ripensarci, la signature manco c'è nel file originale. C'è solo il modello di micro che, per gli Atmega dell'Arduino, sono "atmega328p".
Inoltre avrdude non supporta neanche gli atmega328 senza "p", ho appena provato.

Esatto, la signature non c'è nel file boards.txt, quella si trova nel file di configurazione di avrdude, il famigerato avrdude.conf, che contiene tutte le informazioni per i vari modelli di micro inclusa la signature.

Piccola precisazione , a memoria avevo confuso il secondo byte della signature, è in effetti 95, non 94

Su file boards.txt ci sono solo i parametri da passare ad avrdude
Su boards.txt troverai solo atmega328p, perlomeno in quello di serie.
Nel mio invece ho replicato il blocco di arduino uno

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

uno.name=Arduino Uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino

e modificando la copia facendola diventare

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

atmega328pu.name=Atmega328PU su shield
atmega328pu.upload.protocol=stk500
atmega328pu.upload.maximum_size=32256
atmega328pu.upload.speed=115200
atmega328pu.bootloader.low_fuses=0xff
atmega328pu.bootloader.high_fuses=0xde
atmega328pu.bootloader.extended_fuses=0x05
atmega328pu.bootloader.path=optiboot
atmega328pu.bootloader.file=optiboot_atmega328.hex
atmega328pu.bootloader.unlock_bits=0x3F
atmega328pu.bootloader.lock_bits=0x0F
atmega328pu.build.mcu=atmega328pu
atmega328pu.build.f_cpu=16000000L
atmega328pu.build.core=arduino

in modo tale da avere sulla lista delle boards anche la voce 'Atmega328PU su shield'

Poi su avrdude.conf ho creato la entry per gestire il famoso 'atmega328pu' che ho referenziato nel file board, altrimenti va in errore e dice che non se lo trova (giustamente)

[allego solo le prime righe giusto per capire]

anche qui duplicando l'intera definizione per Atmega328

#------------------------------------------------------------

ATmega328

#------------------------------------------------------------

part
id = "m328p";
desc = "ATMEGA328P";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x86;

avr910_devcode = 0x;

signature = 0x1e 0x95 0x0F;
pagel = 0xd7;
bs2 = 0xc2;
chip_erase_delay = 9000;

etc etc etc ...

e modificando la copia facendola diventare

#------------------------------------------------------------

ATmega328PU

#------------------------------------------------------------

part
id = "m328pu";
desc = "ATMEGA328PU";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x86;

avr910_devcode = 0x;

signature = 0x1e 0x95 0x14;
pagel = 0xd7;
bs2 = 0xc2;
chip_erase_delay = 9000;

etc etc etc ...

e così facendo mi trovo nelle condizioni che ho detto.

Signatura esistente o meno, io riesco a programmare i miei nuovi micro SOLO utilizzando queste impostazioni,
se vado a reimpostare la signature a 1e 95 0f non li scrive!

niki77:
Piccola precisazione , a memoria avevo confuso il secondo byte della signature, è in effetti 95, non 94

Si ma tu non stai usando un ATmega328p stai usando un ATmega328, la PU indica solo il case, la "p" dopo il 328 fa la differenza tra i due core e la signature, uno è siglato 328p-PU quello che hai tu è siglato 328-PU, Arduino usa l'ATmega328p-PU.

Ma dove li hai comprati, i tuoi Amtega?

Li ho acquistati nel post della discordia aperto poco tempo fà proprio su questo forum.

Comunque se leggete bene il mio primo intervento :

La cosa strana viene ora, sempre con lo stesso chip , che ricordo essere da sigla un atmega328-pu...

parlavo di atmega 328-pu

A questo punto riducendo tutto ai minimi termini, i miei micro nuovi sono dei 328, quello che avevo nella UNO è un 328p ?

E in tutti i casi, perchè il 328p lo riesco a programmare con entrambi i signature mentre il 328 no?

niki77:
quello che avevo nella UNO è un 328p ?

Sulla UNO c'è il 328p

E in tutti i casi, perchè il 328p lo riesco a programmare con entrambi i signature mentre il 328 no?

Non è possibile, il 328p lo puoi programmare solo se viene riconosciuta la sua signature, idem per il 328 senza p.

Avevi scritto "328pu", si dava per scontato che fossero 328p. Come ti ha detto astrobeed, "pu" è il suffisso che indica il package. Allora, per completezza, i micro sono marchiati "Atmel ATMEGA328P-PU".

Ora dico la mia ca##ata.
Che tu possa programmare un 328p sia come 328p che come 328 potrebbe essere logico, dato che il 328p è un'evoluzione del 328 con nuovi sistemi di gestione del risparmio energetico, quindi pienamente compatibile con il micro precedente: viceversa, invece, non si può dire. Quindi non sapendo a priori se nel tuo codice usi o meno le nuove caratteristiche, avrdude ti impedisce di flasharlo.

Io la vedo così.

E' plausibile, a me era venuto il dubbio che avesse scritto correttamente la sua sigla, altrimenti non si spiegava la cosa.
Comunque non so da dove vengano questi micro, io non ne ho mai visti in giro, non so nemmeno se ATMEL li produce ancora; in ogni caso, la modifica dovrebbe essere un'aggiunta del nuovo modello, non una sostituzione, come consiglio sempre di fare, è più ordinato e più comodo.

Chiedo umilmente scusa a tutti ma ho commesso una gaffa micidiale.

Io possiedo un 328p e quattro 328 , il 328p si può programmare il bootloader SOLO con la sua signature, idem per il 328 .

La programmazione spicciola invece,ovvero l'upload di schetch , la riescoa fare su entrambi i chip SOLO specificando la board ARDUINO UNO.

Mi ritiro a fare ammenda delle minchiate scritte in precedenza! :zipper_mouth_face:

@Mike:
il datasheet parla di 328 e 328p ed il sito di Atmel li riporta ancora entrambi.
Però avrdude non supporta i 328 normali (senza "p"), neanche le ultimissime versioni, non solo la vecchia release che è inserita nell'IDE.

niki77:
Chiedo umilmente scusa a tutti ma ho commesso una gaffa micidiale.

Io possiedo un 328p e quattro 328 , il 328p si può programmare il bootloader SOLO con la sua signature, idem per il 328 .

La programmazione spicciola invece,ovvero l'upload di schetch , la riescoa fare su entrambi i chip SOLO specificando la board ARDUINO UNO.

Mi ritiro a fare ammenda delle minchiate scritte in precedenza! :zipper_mouth_face:

Quest'ultima parte si riferisce all'operazione di montare il micro (qualsiasi) sullo zoccolo di Arduino ed usare l'IDE per inviare uno sketch?
Non ti preoccupare di ciò che dici, come vedi ormai abbiamo le spalle grosse su quest'argomento e non crediamo a nessuno che dica cose che non tornano XD almeno fino a prova contraria CERTA :slight_smile:

@Leo: beh, ovviamente mica fanno sparire il datasheet, bisognerebbe vedere sul sito ATMEL se li producono/vendono ancora; comunque questa storia della signature se ricordi l'abbiamo affrontata con l'atmega8 (senza la A), solo che lì fu durissima a metterci sul il BL, e Daniele riuscì solo per il prezioso aiuto di BB che gli scrisse tutte le modifiche da fare e gli spiegò come ricompilare il file, ma non chiedermi altro se vuoi approfondire, c'è il Topic.

menniti:
Quest'ultima parte si riferisce all'operazione di montare il micro (qualsiasi) sullo zoccolo di Arduino ed usare l'IDE per inviare uno sketch?

Si esattamente quella procedura.
Non aggiungo altro, mi cospargo il capo di cenere e torno in punizione =(

:roll_eyes: La colpa è mia... =( mi sono accorto adesso dell'errore di acquisto... non :disappointed_relieved: Non pensavo che vi fosse differenza tra i 328p e i 328 senza P... Pensavo che non vi fossero problemi di programmazione... Però con le opportune modifiche si riesce a caricare sia il bootloader che gli sketch :sweat_smile:

gcblack:
:roll_eyes: La colpa è mia... =( mi sono accorto adesso dell'errore di acquisto... non :disappointed_relieved: Non pensavo che vi fosse differenza tra i 328p e i 328 senza P... Pensavo che non vi fossero problemi di programmazione... Però con le opportune modifiche si riesce a caricare sia il bootloader che gli sketch :sweat_smile:

Non entro nel merito della vostra questione, ovviamente. La differenza sostanziale tra "P" e non, come ben spiegato da Leo, sta nel fatto che il "nonP" consuma abbastanza più dell'altro quindi è meno idoneo per la progettazione di circuiti stand-alone in ci sia fondamentale il risparmio energetico, per il resto si usano, si programmano, come dimostrato, e funzionano, quindi smettetela con questi "miserere nobis" e buon divertimento, noi siamo a disposizione per qualsiasi aiuto Vi si possa dare, nei limit delle conoscenze che ognuno di noi ha.
Ciao XD

Sì, difatti. Se fossero questi i mali della vita... XD

Sempre gentile per la disponibilità! Volevo fare una domanda... Ho già testato la possibilità di caricare il bootloader e gli sketch.. solo che sul mio 2009 con su il chip 328 (senza p) carico il boot -> carico lo sketch tutto ok.. se ne voglio caricare un altro mi dà errore... devo cancellare il chip con avrdude e poi ricaricare un altro sketch da IDE... come mai??