Arduino Microcontroller Fixer

Buon pomeriggio a tutti. Fra ieri e oggi mi sono imbattuto nel caricamento di progetti su Atmega328P e Atmega328, credo che molti di voi conoscano la fastidiosa situazione di dover sostituire ogni volta il file "avrdude.conf" al cambio di mcu. Per cui mi piacerebbe condividere con voi questo programmino che ho realizzato per semplificare le cose, due pulsanti per cambiare il file.

Potete scaricarlo da qui.
Se avete suggerimenti sarei felicissimo di ascoltarli, non è un programma fatto per "impressionare", solo un lavoretto per semplificarmi la giornata :smiley: .

Edit: ho dimenticato di dirvi che và avviato con permessi di amministratore.
Saluti, Alessandro.

mmm, se ho capito tu falsifichi la signature del 328 che avrdude si aspetta giusto ?
questo se e' vero che funziona per programmi semplici potrebbe creare problemi in quanto il core del 328 e' diverso dal 328P

Testato:
mmm, se ho capito tu falsifichi la signature del 328 giusto ?

Non serve, le ultime release di avrdude includono sia il 328 che il 328p, avrdude allegato al IDE 1.6.x è aggiornato e prevede tutte e due le versioni oltre a molte altre varianti dei micro Atmel.
Per quanto riguarda la questione upload programma sul micro non fa nessuna differenza se è un 328 o un 328p, quello ha importanza solo per il compilatore.

quindi per usare un 328 su un arduino ora basta farsi una virtualboard giusto ? ed in questo modo si riesce sia ad uplodare che a compilare correttamente il codice.
Mentre come fa lui non crea nessuna virtualboard, falsifica il file config con la signature del 328 e quindi il compilatore compila comunque per 328P

Per capirci se lui usaa le funzioni di risparmio energetico l'ide glielo carica senza errori, invece creandosi una viartualbord corretta verrebbe avvisato del problema. (no pico power su 328)
Almeno questo credo :slight_smile:

Testato:
quindi per usare un 328 su un arduino ora basta farsi una virtualboard giusto ? ed in questo modo si riesce sia ad uplodare che a compilare correttamente il codice.
Mentre come fa lui non crea nessuna virtualboard, falsifica il file config con la signature del 328 e quindi il compilatore compila comunque per 328P

Non ho guardato come fa lui, però se si limita a modificare il file config di avrdude è il modo sbagliato in quanto il 328 è leggermente diverso dal 328p anche nelle istruzioni assembly, oltre che alla gestione dei consumi, compilare per il 328p e caricare sul 328 può portare a risultati bizzarri.
Anche nelle precedenti versioni del IDE era possibile compilare per il 328 usando l'apposita board virtuale, però non riuscivi a caricare lo sketch da IDE perché il file di configurazione di avrdude non prevedeva il 328, più che altro la sua signature, e bloccava l'operazione con un bel errore di signature.
Se non mi ricordo male a suo tempo c'è stata una lunga discussione sulla questione e su come risolvere utilizzando avrdude standard, invece di quello fornito con l'IDE, con relativa riga di comando.

e si, ricordo la questione e proprio per questo che lo sto mettendo in guardia.
nel suo rpogramma vedo due file config con le signature modificate, visto che nel messaggio parla della scocciatura di sostituire il file config credo sia solo una gui per farlo velocemente, il che non va bene :slight_smile:

afelicetti confermaci questa cosa, se e' cosi' ritira il sw dal forum e crea una bella virtualboard al suo posto, ci metti un minuto (puoi guardare la mia guida in firma) e poi la condividi con tutti :wink:

Salve di nuovo :open_mouth:, si, in effetti quello che faccio io è semplicemente "falsificare la firma" accettata dal compilatore...
Non mi ha mai causato problemi e avevo letto sul web che non ne avrebbe causati in quanto fra i due chip cambiava solo il consumo.
Ripeto che è un programma che ho fatto per me e ho condiviso in caso serva a qualcuno, se non è la soluzione corretta potete tranquillamente non usarla :sweat_smile:

afelicetti:
e avevo letto sul web che non ne avrebbe causati in quanto fra i due chip cambiava solo il consumo.

Non è che cambia il consumo, il 328p ha due istruzioni assembly in più, abbastanza importanti perché fanno parte di quelle del blocco branch, inoltre sul 328 non ci sono i registri per la gestione del consumo energia, queste differenze hardware tra i due micro li rendono compatibili dal punto di vista dell'eseguibile, però non sono compatibili al 100% e un .hex per il 328p non è detto che funziona senza problemi sul 328.

afelicetti:
Ripeto che è un programma che ho fatto per me e ho condiviso in caso serva a qualcuno, se non è la soluzione corretta potete tranquillamente non usarla :sweat_smile:

Non capisco, invece di interessarti a creare la soluzione giusta, per te stesso prima che per gli altri, ritieni opportuno invece continuare ad usare una soluzione sbagliata ?
:fearful:
Non lo capisco specialmente in quanto la soluzione giusta e' piu' veloce e semplice della soluzione sbagliata.
In pratica non devi fare nessuna sostituzione di file e non devi lanciare nessun sw

In effetti quando ho tempo vado ad informarmi meglio grazie dei consigli :).

afelicetti:
In effetti quando ho tempo vado ad informarmi meglio ...

Più che genericamente "informarsi meglio", basterebbe studiare il datasheet ... :smiling_imp:

  1. Pag. 40, BOD Disable, nota 1: BOD disable only available in picoPower devices ATmega48PA/88PA/168PA/328P

  2. Pag. 45, "10.11.2 MCUCR"– MCU Control Register, Bit 6 – BODS: BOD Sleep, nota 1: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

  3. Pag. 68, MCUCR – MCU Control Register, Nota 1: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

  4. Pag. 91, ancora MCUCR – MCU Control Register, stessa nota 1: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

  5. Pag. 612-615, "36. Register Summary", a pag. 614, quando descrive il MCUCR, riporta ancora una volta (... come se non si fosse capito :grin: ) nella nota 6: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

Attenzione poi a NON confondere gli ATmega328-PU con gli ATmega328P-PU ... il primo, con solo -PU, è un 328 (senza picoPower) in package PDIP, il secondo, che ha la P attaccata al numero (328P) è la versione picoPower.

Guglielmo

gpb01:
Più che genericamente "informarsi meglio", basterebbe studiare il datasheet ... :smiling_imp:

  1. Pag. 40, BOD Disable, nota 1: BOD disable only available in picoPower devices ATmega48PA/88PA/168PA/328P

  2. Pag. 45, "10.11.2 MCUCR"– MCU Control Register, Bit 6 – BODS: BOD Sleep, nota 1: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

  3. Pag. 68, MCUCR – MCU Control Register, Nota 1: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

  4. Pag. 91, ancora MCUCR – MCU Control Register, stessa nota 1: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

  5. Pag. 612-615, "36. Register Summary", a pag. 614, quando descrive il MCUCR, riporta ancora una volta (... come se non si fosse capito :grin: ) nella nota 6: BODS and BODSE only available for picoPower devices ATmega48PA/88PA/168PA/328P

Attenzione poi a NON confondere gli ATmega328-PU con gli ATmega328P-PU ... il primo, con solo -PU, è un 328 (senza picoPower) in package PDIP, il secondo, che ha la P attaccata al numero (328P) è la versione picoPower.

Guglielmo

Grazie mille Guglielmo!