Go Down

Topic: [RISOLTO] ATMega328 - Arduino AVR ISP - set fuse (Read 4461 times) previous topic - next topic

Michele Menniti



Nel secondo caso lo sketch "danneggia" il bootloader ed infatti lo usiamo solo per circuiti in stand-alone; ma se inviamo uno sketch ad un micro tramite ArduinoISP il micro non prende i fuse della board settata, ma succedono cose disparate. Tutto qui.


Guarda che la spiegazione è in quello che ho postato prima, se programmi il bootloader da IDE, non importa se 0022 o 1.0, vengono inviati anche i comandi per i fuse, se programmi solo sketch non vengono inviati i comandi per i fuse, se vuoi modificarli devi aggiungere alla riga di comando di avrdude i necessari comandi, e sono validi per tutti i modelli di AVR e non solo per alcuni.


Sì, stiamo dicendo la stessa cosa, per me è tutto chiaro.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Testato

e no, non e' la stessa cosa, permettimi  :)

io, astro e leo stiamo dicendo che non ci sono stranezze (in piu' loro hanno chiarito anche il perche')

cioe' l'ide arduino e' programmato appositamente per cambiare i fuse solo con il caricamento bootloader, tu invece riferisci "stranezze"

Volendo, essendo opensource l'ide, si potrebbe modificare in modo da cambiare i fuse anche durante il caricamento di skcetch via ISP
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

DanielaES

Caspita, la discussione è andata avanti parecchio :)
Cmq come dicevo ho risolto, ho provato (a monte della discussione) a scrivere il bootloader, e poi caricare lo sketch... ora funziona tutto, anzi ricordatevi di guardare le foto che posto nel topic di aggiornamento :)


Semplicemente, quando vuoi far cambiare i fuse al micro devi prima caricare il bootloader e poi, sempre con la procedura ISP, lo sketch che ovviamente sovrascriverà il bootloader, se stai usando le mie board virtuali.


Menny, la tua guida è davvero ottima, la riprova è che una come me - che a dirla tutta nemmeno sapeva bene cosa stava facendo - in un numero limitato di tentativi è riuscita nell'intento.
Al di la di questo, però, secondo me dovresti specificare meglio questa questione nella guida.
Hai fatto uno sforzo notevole per rendere ultra comprensibili tutti i passaggi ma, secondo la mia niubbagine, questa questione è rimasta criptica.
La pagina che hai riportato, che avevo letto, parla di preparare un chip per lavorare a frequenze di 8 o 1 MHz... che non centra molto con il problema che ho avuto io :\
Sicuramente per chiunque abbia esperienza quella nota è immediatamente comprensibile, ma per chi ci capisce poco la questione è diversa.
Si compra un chip vergine, il chip vergine è di fabbrica settato ad una frequenza diversa dai 16 canonici di arduino. Non è possibile settare i fuses caricando uno sketch. I fuses possono essere settati solo tramite bootloader.
Se si compra un chip vergine la prima ed obbligatoria operazione per avere i classici 16MHz deve essere mettere il bootloader.
Questa cosa dovrebbe essere scritta a lettere capitali ad inizio guida :P

Ripeto la guida è ottima ma manca una spiegazione chiara su questa questione.
Sempre in my humble opinion :)

Michele Menniti

@ Testato: ho spiegato chiaramente cosa sono le stranezze a cui mi riferisco e le ribadisco: lo stess osketch, caricato diverse volte su diversi chip, settati ad una stessa frequenza, usando una board virtuale con fuse settati per una frequenza diversa, danno comportamenti differenti e STRANI.
Altrimenti SPEGATEMI questo comportamento:
Micro settato a 16MHz (convinto invece che fosse vergine e quindi a 1MHz)
Carico via ISP il blink
Sulla board ISP Programmer il led si accende per 1 secondo, si spegne per 16 secondi, si accende per 1 secondo e così via.
Ho provato a "simulare" questa cosa ripetendo l'"errore" ma stavolta ho avuto un comportamento diverso
Non me li sono segnati, ma di questi comportamenti anomali ne ho visti a decine, e mi riferisco ai tempi in cui facevo prove per la guida.

@ Daniela: prendo atto, ma a mia memoria è la prima volta che qualcuno mi fa questa obiezione, probabilmente perché la prima operazione della Guida è proprio il caricamento del bootloader a 16MHz, quindi magari molti avranno fatto questo test e si saranno trovati bene; comunque appena possibile aggiungo un paragrafetto in cui scrivo chiaramente questa cosa. Tutto è migliorabile, anche la tua attenzione.... ;)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

DanielaES


@ Daniela:prendo atto, ma a mia memoria è la prima volta che qualcuno mi fa questa obiezione
Tutto è migliorabile, anche la tua attenzione.... ;)

Menny... non era un obiezione, non siamo ad un processo :)
Riportavo la mia esperienza con la tua guida, sperando ti potesse essere utile.
Non avendo letto nulla che indicasse di seguire un ordine preciso, sono andata liberamente secondo le esigenze :)
Tutto qui...

Quote

@ Testato: ho spiegato chiaramente cosa sono le stranezze a cui mi riferisco e le ribadisco: lo stess osketch, caricato diverse volte su diversi chip, settati ad una stessa frequenza, usando una board virtuale con fuse settati per una frequenza diversa, danno comportamenti differenti e STRANI.
Altrimenti SPEGATEMI questo comportamento:
comportamenti anomali ne ho visti a decine, e mi riferisco ai tempi in cui facevo prove per la guida.


Ragazzi ma, sembra a me, o c'è un pochino di tensione sul forum ultimamente?
Cmq, se (condizionale!) ho capito quello di cui state parlando... confermo il comportamento strano.
Due chip vergini, caricato lo stesso blink con delay 1000.
Sul primo il led lampeggiava ad intervalli di 18 secondi, sul secondo ad intervalli di 14.
Magari i secondi non saranno precisi, perché li contavo ad occhio, ma la differenza era chiaramente verificabile.

leo72


Ragazzi ma, sembra a me, o c'è un pochino di tensione sul forum ultimamente?

Insomma.... pare anche a me  :smiley-sweat:

Quote

Cmq, se (condizionale!) ho capito quello di cui state parlando... confermo il comportamento strano.
Due chip vergini, caricato lo stesso blink con delay 1000.
Sul primo il led lampeggiava ad intervalli di 18 secondi, sul secondo ad intervalli di 14.
Magari i secondi non saranno precisi, perché li contavo ad occhio, ma la differenza era chiaramente verificabile.

Stiamo parlando di chip SENZA quarzo esterno, programmati per usare l'oscillatore interno?
Allora la risposta è SI'! Ho fatto tempo fa delle prove: ho messo su una breadboard un Tiny85, un Tiny84, un Atmega328 ed un Atmega644, ognuno impostato per operare con l'oscillatore interno e con lo sketch Blink caricato. I risultati? Dopo neanche 5 secondi si vedeva ad occhio nudo uno sfasamento dei lampeggi, dopo 1 minuto ognuno andava come gli pareva  :smiley-yell:
Tieni presente che il margine dell'oscillatore interno è molto elevato, +-10%, quindi dopo 10 secondi hai perso o guadagnato anche 1 secondo rispetto al tempo reale.

Testato

non so sul forum, ma fra me e menny non c'e' nessuna tensione, sono cose da maschi, l'avere ragione fino a prova contraria e' insita nel maschio, chi piu' chi meno, ma di certo e' molto forte in Tecnici e Professori.

sia leo, e secondo me anche daniela, dovrebbero saperlo  :smiley-yell:
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Testato

per quanto riguarda le prove fatte quelli di daniela si spiegano come ha detto leo, mentre quelli di Michele restano davvero "stranezze" perche' riferisce differenze tra on e off a parita' di delay.
servirebbero dei test  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


non so sul forum, ma fra me e menny non c'e' nessuna tensione, sono cose da maschi, l'avere ragione fino a prova contraria e' insita nel maschio, chi piu' chi meno, ma di certo e' molto forte in Tecnici e Professori.


Mah....  ^_^

Quote

sia leo, e secondo me anche daniela, dovrebbero saperlo  :smiley-yell:

Credo di essere l'unico, qui, che crede che la Dany sia appunto una "lei"....  :smiley-roll-sweat:

Michele Menniti

@ Daniela: non è facile comunicare solo per iscritto, io quando parlo (e perfino quando scrivo), uso molto la mimica facciale, cosa che peraltro mi torna utilissima durante le mie lezioni; quindi mi rendo conto che una frase si può interpretare in diversi modi, magari in base al proprio stato d'animo... Io non ho preso il tuo intervento come una critica, non ho inteso rispondere ad una critica; cioè, letto il tuo suggerimento ho tenuto a precisare che era la prima volta che mi arrivava una nota del genere in quanto molti altri sono riusciti senza problemi; ciò non significa che la spiegazione sia perfetta e quindi ho detto che era migliorabile, ma nel contempo ho voluto scherzosamente scaricare sulla tua disattenzione un po' di "colpe". Poi tu invece vedi tutto sotto tensione (Ragazzi ma, sembra a me, o c'è un pochino di tensione sul forum ultimamente?) e quindi hai dato la tua interpretazione tutto qui.



non so sul forum, ma fra me e menny non c'e' nessuna tensione, sono cose da maschi, l'avere ragione fino a prova contraria e' insita nel maschio, chi piu' chi meno, ma di certo e' molto forte in Tecnici e Professori.


Mah....  ^_^

confermo quanto detto da Testato, abbiamo un ottimo rapporto, intra ed extra-forum, ma da quando abbiamo scoperto i nostri rispettivi ruoli nella vita ovviamente è partita l'atavica sfida, e non c'è niente da fare, è più forte di noi, aggiungi inoltre che siamo due capetoste (come dicolo loro... :smiley-yell:), che non mollano facilmente la preda (oops, le proprie ragioni). Però vedo che finalmente lui ha capito che la storia del delay è assolutamente anomala :smiley-sweat:

Quote

Credo di essere l'unico, qui, che crede che la Dany sia appunto una "lei"....  :smiley-roll-sweat:

più che una certezza la tua è una speranza ormonale :smiley-yell: :smiley-yell: :smiley-yell:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

DanielaES


@ Daniela:
più che una certezza la tua è una speranza ormonale :smiley-yell: :smiley-yell: :smiley-yell:


:*
Più che altro, facciamo una domanda seria:
Credete sia possibile uppare uno sketch in standalone con l'IDE 1.0?
Al momento ho lavorato per la retrocompatibilità, tutti i codici vanno sia sulla 22 che sulla 1 (con le opportune lib modificate). Però per uppare uno standalone sono legata all'ide 22 e quindi anche agli sketch della 22.
Alternativamente potrei flashare il bootloader con la 22 e caricare gli sketch dalla 1 con il convertitore usb seriale quando mi arriva. Però mi chiedevo, è in programma il porting della guida sul IDE 1?

Michele Menniti

Francamente, essendo uno con pochissimo tempo a disposizione, faccio gli upgrade molto a rilento, per cui sto alla larga dalla 1.0 in quanto ho letto di vari problemini, di cui in questo momento non sento assolutamente la mancanza  :smiley-sweat:
E' il motivo per cui per il momento non credo di poter creare una versione nuova della Guida se non per apportare modifiche o implementazioni di qualche novità scovata dopo la sua pubblicazione.
Ma tu stai dicendo che la tecnica ISP non funziona con IDE 1.0? Ora non ricordo bene ma mi pare che Astrobeed dicesse che addirittura in tal senso c'erano state migliorie (se non sbaglio parlava dell'autoreset).
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

DanielaES


Ma tu stai dicendo che la tecnica ISP non funziona con IDE 1.0? Ora non ricordo bene ma mi pare che Astrobeed dicesse che addirittura in tal senso c'erano state migliorie (se non sbaglio parlava dell'autoreset).


Diciamo che ho fatto solo una prova e probabilmente l'ho fatta all'ugello di canide.
Ho provato a modificare il file board dell'ide 1.0 con le stesse modifiche per la 22... Non funziona, quantomeno non come dovrebbe. Probabilmente la sintassi è un po' diversa :)
Una volta visto che la board standalone nemmeno mi compariva nell'elenco board, ho lasciato perdere.

Mettero i bootloader con la 22 e poi userò la 1 con il convertitore usb seriale :P

leo72

Tempo fa leggevo sul forum internazionale che c'erano dei problemi tra lo sketch ArduinoISP e l'IDE 1.0, ma non mi ricordo se si riferivano alle versioni in beta della 1.0 oppure alla versione definitiva.

Cmq il problema dell'autoreset è stato risolto da mesi con l'Optifix 4.4 che ora è preinstallato negli Arduino UNO R3 come bootloader predefinito.

Michele Menniti

Mi incuriosisce questa cosa, non so se altri hanno provato, mi pare che Leo sia rimasto sulla versione 0023, forse Testato deve aver fatto delle prove con la 1.0.
Comunque per ora sono ancora fuori sede e ci vorrà fine della prossima settimana per rientrare, poi si vedrà.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up