Passare da 0022 a 1.0.1 per la programmazione ISP

OK, con un po' di calma e le preziose indicazioni di Testato sono riuscito a programmare con 1.0.1. Altri l’hanno già fatto senza problemi, ma leggo che ogni giorno qualcuno ha le mie stesse difficoltà, proviamo a diffondere la cosa.
Un breve riepilogo a beneficio di tutti coloro che stanno usando le versioni IDE 0022-0023 e volessero passare alla nuova 1.0.1 . Le seguenti informazioni servono per la programmazione di uno sketch o del bootloader su un micro ATmega328P. Partendo dalla board che vi allego, potete con le opportune variazioni, crearvi tutte le versioni che volete. Raccomando la lettura della Guida di Testato per questa fase della programmazione, mentre per la parte hardware vale sempre la mia Guida che, a questo punto, mi corre obbligo di aggiornare quanto prima, aggiungendo un paragrafo specifico.
Una nota importante: purtroppo, senza una ragione valida, a mio parere, entrambe le versioni di IDE creano e modificano lo stesso file di preferenze e questo crea casino ovviamente; quindi se avete una cartella “personale” in cui avete finora tenuto cores e boards aggiuntive per la 0022, vi conviene sdoppiarla perché la 1.0.1 vuole file di info specifici e questa convivenza crea solo problemi! Ogni volta che aprirete l’una o l’altra versione di IDE dovrete prendervi la briga di controllare/cambiare il percorso della cartella personale.

Procedura:

0 - Aggiungi nel file boards.txt queste righe:

##############################################################
atmega3216.name=ATmega328P 16MHz
atmega3216.upload.protocol=arduino
atmega3216.upload.maximum_size=32768
atmega3216.upload.speed=115200
atmega3216.bootloader.low_fuses=0xff
atmega3216.bootloader.high_fuses=0xdf
atmega3216.bootloader.extended_fuses=0xFF
atmega3216.bootloader.path=optiboot
atmega3216.bootloader.file=optiboot_atmega328.hex
atmega3216.bootloader.unlock_bits=0x3F
atmega3216.bootloader.lock_bits=0x0F
atmega3216.build.mcu=atmega328p
atmega3216.build.f_cpu=16000000L
atmega3216.build.core=arduino
atmega3216.build.variant=standard

salva e chiudi il file. Apri l'IDE 1.0.1.
1 - Setta la board che usi (UNO, Duemilanove, ecc) e la relativa COM/USB/DEV (in base alla versione di S.O.).
2 - Setta come Programmatore "Arduino as ISP"
3 - Carica lo sketch ArduinoISP presente negli esempi ed invialo all'Arduino UNO
4 - Carica ora lo sketch blink
5 - Setta la board "ATmega328P 16MHz"
6 - Esegui il comando File - Carica con un programmatore
Con questa semplice procedura a me ha funzionato al primo colpo.
Se invece di uno sketch vuoi caricare il bootloader, devi eseguire solo i passi 1-2-3 quindi:
4 - Esegui il comando Strumenti - Scrivi il bootloader.
Tieni presente che:
il micro esce di fabbrica ad 1MHz, se vuoi usarlo a 16MHz devi settare i fuse; l'unico modo per settare i fuse è caricare PRIMA il bootloader e poi inviare lo sketch.
[le istruzioni sono al singolare perché stavo scrivendo in risposta a Marcus Barnet, poi ho pensato che fosse preferibile aprire un Topic di pubblica utilità.]

ottimo lavoro, spero di vedere a breve tutte le guide aggiornate per la 1.0.1

Chiaro come sempre, bravo Michele.
Ho una domanda: al primo passaggio dici "Setta la board UNO e la relativa COM/USB/DEV quella che è", lo stesso discorso vale ugualmente per arduino 2009?

lesto:
ottimo lavoro, spero di vedere a breve tutte le guide aggiornate per la 1.0.1

Grazie Lesto :slight_smile: l'idea è quella, per ora, di aggiungere uno-due paragrafi nella sezione delle tecniche ISP, per spiegare le differenze tra le due versioni; inoltre devo sistemare un paio di cosette che nel tempo si sono rivelate non molto chiare, tipo il fatto che il caricamento del bootloader è indispensabile per cambiare i fuse, prima di inviare uno sketch ad un micro che dovrà lavorare ad un clock più elevato di 1MHz (fatto salvo l'uso di AVRDUDE in modalità terminale); a diversi utenti questa cosa non è risultata chiara e hanno avuto qualche difficoltà. Se hai suggerimenti sono più che ben accetti XD

@ BUD: grazie anche a te. Certamente, come detto stavo scrivendo in risposta a Marcus, che usa la UNO, e non mi sono preoccupato di standardizzare, proprio perché mi riservo di modificare seriamente la Guida (però ora correggo... :)). Resta sempre valido il discorso che a prescindere dalla board che usi puoi caricare sullo stand-alone il bootloader che più ti piace, tanto per fare un esempio.
La chiave di tutto sta nel fatto che le board virtuali hanno alcune varianti, ben descritte da Testato e soprattutto nel fatto che devi tenere alla larga tutto il "materiale aggiuntivo" (leggi cartella "personale") per la 0022/23, non che crei conflitti ma, almeno a me, manda in confusione. Certo se facessero due diversi file di preferences sarebbe davvero l'ideale.

Grazie al mitico Michele Menniti, sono riuscito a risolvere il problema della programmazione tramite ISP.

Premetto che uso MAC OSX e Arduino 1.0.1.

Per la programmazione dell'atmel in standalone, ho utilizzato i passaggi elencati nel primo post di questo topic, però, se usavo la board personalizzata ricevevo un errore di questo tipo:

Dimensione del file binario dello sketch: 1.084 bytes (su un massimo di 32.768 bytes)
avrdude: stk500_recv(): programmer is not responding

Per risolvere, prima di caricare lo sketch, ho dovuto scegliere come board quella di Arduino UNO e tutto è andato a buon fine.

Non lo so, magari può servire a qualcuno..

Al primo tentativo, comunque, quell'errore me lo da lo stesso, ma poi se riprovo me lo carica.

Beh, grazie del "mitico" ma mi pare davvero troppo :blush:
Invece sono io che ringrazio te ed un altro amico (su Open Electronics) che mi avete "costretto" a prendere finalmente di punta queste benedette prove e finalmente le ho portate a buon fine.
Purtroppo non ho possibilità di fare test su MAC OS, vorrei però chiederti:
Se provi a caricare, come prima prova, il bootloader (ovviamente usando la board Arduino UNO) ti dà sempre errore al primo tentativo?
Sul tuo topic mi pare di capire che si accendono i tre led, ma lì se non erro nei comments è scritto che uno dei tre devi usarlo "rosso" in quando se si accende indica errore, prova a controllare...

Oggi mi sono cimentato anche io con la 1.0.1.
Sono riuscito a programmare un 644 ed un 1284 in standalone usando l'Arduino come ISP. Mi ci è voluto un po' per capire che dovevo usare il comando presente nel menu File invece che usare semplicemente l'upload, come si faceva con la 0022, ma a parte questo ci sono riuscito XD
Domani provo ad integrare il core Tiny, se tutto va bene il passaggio alla 1.0.1 si pnuò dire concluso. Mi restano solo i dubbi sulla questione SoftwareSerial con i Tiny, ma qualcuno tempo fa aveva fatto delle prove e mi pare che fossero state positive.

leo72:
Oggi mi sono cimentato anche io con la 1.0.1.
Sono riuscito a programmare un 644 ed un 1284 in standalone usando l'Arduino come ISP. Mi ci è voluto un po' per capire che dovevo usare il comando presente nel menu File invece che usare semplicemente l'upload, come si faceva con la 0022, ma a parte questo ci sono riuscito XD
Domani provo ad integrare il core Tiny, se tutto va bene il passaggio alla 1.0.1 si pnuò dire concluso. Mi restano solo i dubbi sulla questione SoftwareSerial con i Tiny, ma qualcuno tempo fa aveva fatto delle prove e mi pare che fossero state positive.

quale core hai usato per i 644/1284? io ho provato solo il 328 perché poi mi sono messo a scrivere le istruzioni (perfino quelle in inglese per Open El :sweat_smile:)
Inoltree ho fatto l'aggiornamento della toolchain e poi ho usato con successo il tuo ISP :wink:
Prossime prove proprio i tiny e i bestioni, mi servono info....grazie :slight_smile:

leo72:
Mi ci è voluto un po' per capire che dovevo usare il comando presente nel menu File

tutta la mia guida si basa sulla spiegazione di questo punto :slight_smile:

Il core che ho citato più volte nel thread di Pelletta sul 644, il maniacbug-mighty1284, che poi è lo stesso che è stato usato come core per la Bobuino. Inoltre quel core ha un bootloader modificato (Optiboot 4.5) che dovrebbe risolvere il problema della programmazione degli sketch oltre i 64 kB di flash.

Inoltree ho fatto l'aggiornamento della toolchain e poi ho usato con successo il tuo ISP :wink:
Prossime prove proprio i tiny e i bestioni, mi servono info....grazie :slight_smile:

Appena ne avrò sarai il primo a saperle :wink:

Testato:

leo72:
Mi ci è voluto un po' per capire che dovevo usare il comando presente nel menu File

tutta la mia guida si basa sulla spiegazione di questo punto :slight_smile:

Vero, infatti ti ho citato nel post iniziale perché grazie a quelle info e anche a quelle relative alle boards virtuali sono riuscito a flashare sia il bl che uno sketch al primo colpo.
Però ho un appunto da farti: se non erro tu ad un certo punto dici che le board virtuali non servono e che si possono usare quelle dell'IDE, però con quelle come programmi i chip con clock diversi da 16MHz? Per non parlare dei modelli di micro non usati dalle board Arduino...

@ Leo: ma quel core non ha i tuoi interventi correttivi, che farai, ti metti al lavoro su questo nuovo? Ormai è inutile fare un bootloader per la 0022.

si ho letto, grazie della citazione.

per il discorso delle board il concetto e' questo:

  • con l'ide fino al 0.23 eri costretto a fare le board per qualsiasi cosa, proprio perche' non era previsto ufficialmente l'upload via icsp di sketch.
    Ora che e' ufficialmente supportato tutte le board presenti permettono di usarlo, senza toccarle.
    E' normale che se ti serve una board che non c'e' te la devi creare, mentre se ti va bene una delle tante presenti la usi cosi' come e'.
    L'utente medio che vuole caricare blink via icsp su una ArduinoNG, oppure su una Arduino 2009, oppure su una Uno, ecc ecc non dovra' nemmeno sapere cosa e' una board.
    Questo prima non era possibile

Ho voluto sottolineare entrambe le cose, sia che quelle presenti non serve toccarle, sia ho spiegato come creare, ed anche inserita una per atmega8A, perche' nei casi in cui nessuna delle board ufficiali vada bene la si puo' creare da solo, mettendo in evidenza le differenze da tener presente nella creazione di nuove board rispetto alle vecchie.

Ho già dato un'occhiata al core maniacbug ed ho sistemato l'unica cosa che mancava, per cui per quanto riguarda i 644/1284 sono a posto. Adesso devo guardare il core Tiny ma, soprattutto, le librerie per la seriale e l'I2C.

leo72:

[quote author=Michele Menniti link=topic=109635.msg824144#msg824144 date=1339536996]
@ Leo: ma quel core non ha i tuoi interventi correttivi, che farai, ti metti al lavoro su questo nuovo? Ormai è inutile fare un bootloader per la 0022.

Ho già dato un'occhiata al core maniacbug ed ho sistemato l'unica cosa che mancava, per cui per quanto riguarda i 644/1284 sono a posto. Adesso devo guardare il core Tiny ma, soprattutto, le librerie per la seriale e l'I2C.
[/quote]
ok, appena devo mettere mano a queste famiglie ti contatto e mi dai il materiale, inutile che faccio collezione ora....

OT
@Michele , nella tua guida potresti anche aggiungere un paragrafo sulla programmazione bit banging per chi non può usare 2 arduini , potrebbe andare?
ciao niko

nikone:
OT
@Michele , nella tua guida potresti anche aggiungere un paragrafo sulla programmazione bit banging per chi non può usare 2 arduini , potrebbe andare?
ciao niko

Ciao Niko, per quanto ne so questa tecnica è una sorta di auto-programmazione che si fa con un solo Arduino, NON con due; sinceramente non mi ha mai attirato molto perché ricordo che c'erano da fare "manovre" sulla board, non che io le tema, però se ti rivolgi ad un pubblico potenzialmente vasto non puoi rischiare di spiegare cose per le quali uno rischia di fondere Arduino a poi te ne dà la colpa; per cui ti chiedo scusa ma sinceramente non me la sento. però ho da dirti due cose:
1 - il secondo Arduino è sostituibilissimo con una breadboard a con una millefori creata ad hoc.
2 - a brevissimo Elettronica In metterà in vendita il PCB del mio programmatore ISP, che si realizza con due soldi ed è di una comodità estrema per la programmazione ISP
Se poi hai provato a fare questa bit-bang e hai difficoltà dimmelo che provo a darci un'occhiata.

Credo che il bit bang su arduino sia limitato alla duemilanove e modelli simili che montano il connettore x3, che poi è il pinheader dove si prelevano gli altri segnali usati dall'ftdi per emulare l'isp.
in alternativa è possibile usare un cavo seriale (serio :smiley: ) quelli con anche gli altri segnali di handshake portati fuori (su pin).
P.S.
Complimenti mike, come al solito il tuo approccio didascalico alle cose è insostituibile :wink:

BrainBooster:
Credo che il bit bang su arduino sia limitato alla duemilanove e modelli simili che montano il connettore x3, che poi è il pinheader dove si prelevano gli altri segnali usati dall'ftdi per emulare l'isp.
in alternativa è possibile usare un cavo seriale (serio :smiley: ) quelli con anche gli altri segnali di handshake portati fuori (su pin).
P.S.

grazie del chiarimento, ho sempre ignorato questa cosa e la tua è la ragione per cui continuerò ad ignorarla.

Complimenti mike, come al solito il tuo approccio didascalico alle cose è insostituibile :wink:

servo vostro :slight_smile:

concordo che non conviene mettere carne a cuocere, anche perche' il bitbang e' fattibile solo con FT232
allego immagine con connessioni

mike come e' andato il discorso con Ein per i pcb ? sara' fatto un kit sia per il prog icsp che per l'HV ?

connecting.jpg