Cerco di programmare ATmega328 con la 2009, dove sbaglio?

Dovendo programmare dei chip vergini ed avendo la UNO (NOTE: Currently, you cannot use an Arduino Uno as an ISP programmer because the optiboot bootloader does not support this sketch), ho comprato anche la 2009, da usare per qualche altra applicazione. Ho realizzato la versione breadboard e, seguendo il tutorial (almeno mi pare…) ho fatto così:
1 – La 2009 come sorgente col proprio chip (quindi uso il pin 10)
2 – La Bread come destinazione col chip vergine (quindi uso il Reset)
3 –Ho collegato al PC l’USB della 2009
4 - Nel programma (vers. 022) ho selezionato la seriale della 2009 e la 2009 come board (Arduino Duemilanove or Nano w/ ATmega328 - You'll need to select the board and serial port from the Tools menu that correspond to your board)
5 – In Burn Bootloader ho selezionato w/Arduino as ISP (Use the Burn Bootloader > Arduino as AVRISP command)
Risultato:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
Il mio dubbio è: You can do this using an Arduino board as an in-system program (ISP).
Significa che NON devo usare l’USB ma i sei pin ISP? Se la risposta è sì come li collego?
Prima di scrivere ho fatto decine di prove con la UNO, la 2009 e perfino la Luigino (compatibile alla 2009), ma sempre collegando l’USB
Infine, naturalmente vorrei usare 2 Arduino per fare questa operazione, ho capito che la Uno non può essere usata come programmatore ma come target va bene? Il dubbio mi esce sul fatto che il tutorial mostra un’immagine sulla quale è scritto espressamente che il circuito targeting è una 2009 o diecimila).
Vi prego aiutatemi, ho letto alcuni post recenti e tutti confermano tutto, ma allora cosa sbaglio?
Ho ben 10 Atmega 328, attualmente figli di NN, che aspettano una paternità….
Grazie.

Magari dico una cavolata...
mi pare che per usare arduino duemilanove come programmatore devi togliere l'atmega dalla scheda che usi come ISP... controlla nel tutorial se lo dice!
O forse si fa in questo modo solo per caricare li sketches! Boh non ho ancora provato!

Ciao, per scrupolo l'avevo fatta la prova, ma il tutorial dice chiaramente che questa cosa va fatta solo per caricare gli skecth, come giustamente concludi tu.
Ma tu l'hai fatta questa operazione? Hai usato l'USB? Sono veramente disperato, mi seccherebbe proprio aver speso i soldi per una 2009 senza risolvere niente, anche se potrebbe servirmi per altro; peggio ancora per avere tutti questi ATmega senza poterli utilizzare!

stai facendo confusione, esistono vari metodi.
Se vuoi usare la 2009 come ISP, guarda negli sketch di esempio, c'è uno sketch che se caricato trasforma l'arduino in ISP:

// this sketch turns the Arduino into a AVRISP
// using the following pins:
// 10: slave reset
// 11: MOSI
// 12: MISO
// 13: SCK

// Put an LED (with resistor) on the following pins:
// 9: Heartbeat - shows the programmer is running
// 8: Error - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave

altrimenti puoi togliere l'atmega e saldare sulla scheda dei pin si MOSI MISO e SCK, e usare la voce "Burn Bootloader"

Grazie lesto,
ho trovato lo sketch, per una prova al volo posso evitare di realizzare la circuiteria dei pint 7-8-9, tanto sono tutti in Output, e naturalmente uso la bread (o una eventuale Arduino) come destinazione, vero?
Invece vorrei un chiarimento su:

altrimenti puoi togliere l'atmega e saldare sulla scheda dei pin si MOSI MISO e SCK, e usare la voce "Burn Bootloader"

cioè tolgo l'atmega dalla 2009 e poi ? ti spiace spiegarmi esattamente cosa devo fare con questi 3 pin? ti riferisci a 11,12,13 della 2009? attualmente sono collegati alla BB sui pin dell'atmega vergine, così come nelle immagini del tutorial, inoltre il 10 è collegato al reset dell'atmega vergine.
Scusami ma non ho mai fatto né visto questa operazione. :blush:

Per la prima domanda, sì,, puoi evitare ma fai attenzione che abbia finito il suo lavoro prima di staccare tutto.

per la seconda domanda:
se guardi gli schemi arduino, noti che ci sono 4 pin non collegati che arrivano dall'FTDI.
devi saldarci 4 pin e a quel punto usi il chip FTDI direttamente per programmare l'arduino.
ti sconsiglio questo sistema visto che puoi usare direttamente lo sketch, cosa molto meno invasiva.

Sì, sì, certamente, era solo per "sete di sapere", questo mondo, per me nuovissimo, avendo solo qualche esperienza di elettronica di base, mi sta affascinando (forse troppo).
Un'ultima sola domanda (poi corro a provare, ho il mio mini-lab a qualche km da casa): come faccio a scegliere, secondo necessità, il bootloader della 2009 o della UNO, mi è sufficiente selezionare la relativa board a prescindere dal fatto che sia sempre collegata la 2009?
Grazie mille!

Se riesci a fare un paio di foto dei collegamenti e postarle qui quando tutto funziona, possono tornare utili a molti! (me compreso)

prima di partire stampati queste pagine:
http://www.arduino.cc/playground/Code/MegaISP
e

good luck!

Purtroppo non ho esperienze con la 2009, però ho programmato un bootloader usando la UNO:

  1. Seleziona dal menuTools/Board --> "Arduino UNO"
  2. Dal menu Tools/Serial Board, seleziona la porta come dell'Arduino UNO.
  3. Carica lo sketch ArduinoISP (0022) senza alcuna modifica
  4. Segui questo tutorial: http://arduino.cc/en/Tutorial/ArduinoISP per collegare in maniera appropriata i due Arduino (oppure Arduino + breadboard)
  5. Nell'Arduino che fa da programmatore metti una capacità da 10 uF (cavo lungo su
    reset, corto su GND)
  6. Seleziona dal menu Tools/Burn Bootloader --> w/ Arduino as ISP

GianfrancoPa il punto 1 è errato, devi selezionare il modelllo di board da programmare con arduino ISP. Dopo, al punto "5,5", selezioni la board UNO

Questa è la procedura che ho usato per programmare un Arduino UNO con un altro UNO, sinceramente non ho provato con altre schede anche perchè non ne ho...

AAAAARGH!
Ma perché allora tutti, dico tutti, tutorial compreso ]:slight_smile: dicono che con la UNO non si può fare? Era tutto un problema di ritardare l'autoreset con un condensatore? E lo dici così, come se niente fosse? :wink: c'è pieno di post che affermano l'impossibilità di questa operazione!
E comunque, rileggendo come si deve (e non con la fretta degli stolti :cold_sweat:) ho visto che come prima cosa bisognava caricare lo sketch ArduinoISP, e non lo facevo, hai voglia di aspettare che funzionasse.
Va bene, stasera farò mille prove, poi scriverò un tutorial con tutte le possibili soluzioni, con tanto di foto (in questo sono molto bravo, non come ad usare Arduino!) e lo posterò in un topic dedicato a tutti i principianti come me, con tanto di ringraziamenti a tutti coloro che, come te e lesto, hanno contribuito a farmi risolvere questa cosa.
Grazie ad entrambi!!!!

non fare un topic, crea una pagina nel playground (che in pratica è la wiki)

lesto:
GianfrancoPa il punto 1 è errato, devi selezionare il modelllo di board da programmare con arduino ISP. Dopo, al punto "5,5", selezioni la board UNO

Nel caso si voglia programmare un atmega su breadboard con il bootloader di arduino uno, cosa bisogna selezionare come board? Sempre arduino uno?

Se usi un oscillatore da 16Mhz esterno, suppongo proprio di si. Non ne sono sicuro, ma penso di si.

Ricordo che per caricare lo sketch su un ATmega328 (con bootloader), con oscillatore esterno da 16Mhz, selezionavo Arduino UNO. Magari lo stesso vale per la scrittura del bootloader!!

In ogni caso io ho scoperto pochi giorni fa, dal forum internazionale, che si potesse fare, e domenica ho fatto delle prove. Per sicurezza ho scritto il bootloader pure su un secondo ATmega vergine, e anche li ha funzionato :smiley:

menniti:
AAAAARGH!
Ma perché allora tutti, dico tutti, tutorial compreso ]:slight_smile: dicono che con la UNO non si può fare? Era tutto un problema di ritardare l'autoreset con un condensatore? E lo dici così, come se niente fosse? :wink: c'è pieno di post che affermano l'impossibilità di questa operazione!

Ed io ero uno tra quelli. Ma le cose evolvono ed è di pochi giorni fa la "scoperta" che anche l'Uno, con il condensatore, pare (io non l'ho provato, Gianfranco sì e dice che si può fare) che si possa fare anche con l'Uno.

Ti voglio ora se non funziona a nessuno... :grin:

allora, quando uppi lo sketch arduinoISR per forza di cose devi selezionare la board sulla quale stai programmando, altrimenti non riuscirai mai ad uppare nulla :slight_smile:
Poi devi selezionare la board sulla quale devi mettere il boot-loader, perchè è da lì che l'ide prende l'informazione di quale boot-loader caricare!

GianfrancoPa ha programmato da una UNO ad una UNO, e quindi ha tenuto selezionato UNO sempre. Tu invece carichi sulla 2009 ma programmi la UNO :slight_smile:

A questo punto, preso per buono il metodo del condensatore per la Uno, con qualunque scheda Arduino (2009 o Uno) si può programmare un Atmega senza bisogno di averlo montato su un'altra Arduino. Basta montarlo su una breadboard con un cristallo a 16 MHz, collegare i pin corretti dall'Arduino ai piedini del micro e dare una tensione al chip (schema "Arduino Standalone").