Arduino duemilanove per caricare bootloader su ATMEGA8

Ancora una volta mi vedo costretto a chiedervi aiuto...

Sto cercando senza alcun risultato alcuni tipi di errore che mi appaiono durante la scrittura del bootloader ma nulla.

Dunque vi illustro lo scenario:

Board usata: Arduino duemilanove (non fatta in italia credo). Micro-controllore vergine: Atmega8 IDE di programmazione: 0022

Ho provato a scriverci su il bootloader seguendo questo schema:

e ancor prima questo, usando una board arduino uno di appoggio:

Seguite entrambe alla lettera, ma per entrambe da questi errori:

avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Ho cercato e ricercato.. fatto svariati tentantivi ... non capisco quale sia il problema.. ho svariati micro-controllori atmega8 vergini, senza bootloader. Ma non capisco dove sbaglio o cosa c'è che non va... Non vi sono neanche spiegazioni chiare in merito a quegli errori.

Help! :S

Ho letto questo topic: http://arduino.cc/forum/index.php/topic,56149.0.html

premettendo che la usano un atmega328 ed io invece dispongo di un atmega8. Alla fine dal Menu Board cosa devo selezionare? Arduino duemilanove w/ Atmega328 oppure Arduino NG or Older w/ Atmega8 ?

Ho anche letto nel topic che viene prima caricato lo sketch, e poi parte il "burning". Ma questo nella guida ufficiale non c'è scritto...

Potete scrivermi PASSO PASSO come fare? non so se sbaglio qualche dettaglio o altro.. Mah

allora, colleghi solo la 2009, carichi arduinoISP, selezioni come board Older w/ Atmega8, e poi fai partire il burn boot-loader.

considera però che l'atmega8 è un pò diverso dai successori, quindi non assicuro nulla sul successo dell'operazione

lesto, devo collegare la 2009 senza micro controllore vergine sopra? e provare a caricare lo sketch?

L'ho fatto selezionando appunto la board 2009 w/ Atmega328 e mi da quegli errori sopra....

in teoria poi devo collegare l'atmega8 su bread con l'arduino? e fare il burn?

Come detto io riesco a flashare solo con la UNO, provo a spiegarti passo-passo, riprendendo l’”elenco” fatto da GianfrancoPa:

1) Seleziona dal menuTools/Board --> "Arduino UNO" 2) Dal menu Tools/Serial Board, seleziona la porta COM dell'Arduino UNO. 3) Dagli esempi richiama lo sketch ArduinoISP (0022) e invialo alla UNO 4) SENZA spegnere la UNO ora collega la 2009, in base al tutorial ufficiale: tieni presente che nella figura la tua UNO è quella di sotto (programmer) e la 2009 quella di sopra (target), se fallisce il tentativo riprova con la breadboard al posto della 2009 5) Ora seleziona dal menu Tools/Board l’unica Arduino con chip ATmega8 6) Seleziona dal menu Tools/Burn Bootloader --> w/ Arduino as ISP

Inizialmente hai un paio di lampeggi dei 3 led (è la verifica iniziale), subito dopo o esce l’errore (e qui rifasi tutto e prova con la bread), oppure iniziano piacevolmente a lampeggiare tutti e tre sulla UNO e il “13” sulla 2009, dopo meno di un minuto (almeno con il BL UNO o 2009) si spegne tutto ed il gioco è fatto. Così va bene? Ciao.

Non va bene :S

Mi servono più dettagli.. i passaggi grossolani credo siano ok...

Ad esempio al punto 3.. ma sto sketch che invio nn deve essere memorizzato in un microcontrollore? quindi ce lo devo attaccare?

Inoltre leggete qua: http://laclefyoshi.blogspot.com/2011/01/note-of-caution-for-arduino-isp.html

Per risolvere questo problema molti parlano di resistenze o condensatori attaccati tra il pin reset e +5V... purtroppo non ho resistenze del valore che consigliano loro ed ho provato con una dal valore più alto..

Adesso stavo provando col 2009 ad usare il metodo con chip vergine su breadboard.. ma sti errori spuntano ovunque.. ho provato prima a metterci un microcontrollore sull'arduino e caricare lo sketch ArduinoISP e fino a qua tutto ok. Poi a collegare a breadboard il tutto e provare a fare il burn scegliendo come board l'ultima opzione dove spunta la voce Atmega8. Però viene fuori appunto questo errore: avrdude: stk500_getsync(): not in sync: resp=0x15

Come detto sopra, cercando online consigliano di mettere questa resistenza/condensatore tra pin reset e 5V.

Se provo a caricare sull'arduino 2009 lo sketch senza che vi sia il micro controllore sopra o senza che sia attaccato a breadboard spunta invece l'altro errore scritto all'inizio della discussione:

avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Che pesci devo prendere? :S non so proprio dove metter mani più...non ho resistenze da 120 Ohm quindi non posso neanche verificare se funziona con sto ponticello.

Dispongo di svariati Atmega8, 1 arduino 2009, 1 arduino uno.

:S siate più dettagliati.. perchè credo sia una stupidaggine ciò che mi sfugge.. non si spiega proprio...

quale schema sati usando d http://arduino.cc/en/Tutorial/ArduinoISP? dovrebbe essere targeting Arduino NG or older se ancora non va dai un'occhiata quì: http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

:S siate più dettagliati.. perchè credo sia una stupidaggine ciò che mi sfugge.. non si spiega proprio...

0) Devi usare la Arduino UNO, col suo chip montato, come programmer, quindi collegala alla USB del tuo PC 1) Seleziona dal menuTools/Board --> "Arduino UNO" 2) Dal menu Tools/Serial Board, seleziona la porta COM dell'Arduino UNO. 3) Dagli esempi richiama lo sketch ArduinoISP (0022) e invialo alla UNO (che deve avere il suo microcontrollore a bordo, altrimenti dove memorizzi?) ------- Fino a questo punto devi lavorare SOLO con la UNO, da ora in poi entra in gioco la 2009 o la breadboard--------- 4) Ora prendi la 2009, togli il suo microcontrollore e montaci l'AT8 vergine. 5) SENZA spegnere la UNO ora collega la 2009 in base al tutorial ufficiale: tieni presente che nella figura la tua UNO è quella di sotto (programmer) e la 2009 quella di sopra (target), se fallisce il tentativo riprova con la breadboard al posto della 2009. 6) Ora seleziona dal menu Tools/Board l’unica Arduino con chip ATmega8 7) Seleziona dal menu Tools/Burn Bootloader --> w/ Arduino as ISP In pratica ognuna delle 2 Arduino ha un microcontrollore a bordo, nella UNO c'è il suo, con bootloader UNO, nella 2009 c'è il tuo AT8 vergine

@ lesto:

lesto: quale schema sati usando d http://arduino.cc/en/Tutorial/ArduinoISP? dovrebbe essere targeting Arduino NG or older se ancora non va dai un'occhiata quì: http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

Quella parte secondo me è da usare se hai una vecchia board, perché il pin di reset non è collegato direttamente all'uscita, lui invece usa la 2009 col solo micro "vecchio", quindi penso vada bene il primo schema. Appena possibile devo fare le prove con resistenza e condensatore (entrambi con un capo sul pin 1, poi la res va sui +5 e il negativo del condensatore a massa, giusto?) per vedere se funziona la 2009 col suo bootloader come programmer.

AH :D

Confermo, col procedimento che mi hai scritto menniti, funziona TUTTO a dovere! :) :) :)

Ottimo!

Adesso una domanda.

Ma scegliendo nella lista Board l'ultima opzione dove c'è la voce Atmega8, che bootloader viene inserito esattamente?

Ancora grazie ;)

Te l'avevo detto che sono bravo a spiegare, è il mio mestiere.... è quando devo capire che deficito ( :astonished:)

Ma scegliendo nella lista Board l'ultima opzione dove c'è la voce Atmega8, che bootloader viene inserito esattamente?

quello della board indicata, se vuoi mettere su ATmega8 il bootloader della UNO o della 2009, arrivato a questo passaqggio devi scegliere la UNO o la 2009, ok? Solo che io non conosco la differenza tra 328 e 8 (anzi perché non me lo spieghi?), se tu sei sicuro che l'8 accetti questi BL lanciati! vedrai che funzionerà, ormai sei un esperto della bootloaderizzazione! Una sola aggiunta: quando colleghi la seconda Arduino segui la sequenza: GND, +5V, poi tutti gli altri pin (senza un particolare ordine), è la cosa migliore. Sono contento per te! XD

Tra Atmega328 e Atmega8 dovrebbe cambiare solo la quantità di memoria. 32 kB di Flash contro 8. Gli Atmega8 sono i primi della serie, e furono usati per i primi Arduino, poi sono arrivati l'168 e dopo il 328.

quindi anche mettendoci su il bl del 2009 restano 5,5K scarsi, sto completando uno stand alone con un programmino di un paio di k, a questo punto potrei usare questo, e risparmiare qualcosa in più, anche se il nostro amico polacco ormai li vende a poco più di 1 euro di differenza. Però non voglio ripetere l'errore del burn e voglio farla una prova col bl della UNO in stand alone, non vorrei che funzionasse.... ed in ogni caso ancora non ho ben capito perché non deve funzionare, forse con quel k risparmiato sul bl si sono perse le funzionalità di autostart? Puoi darmi chiarimenti leo?

Dunque, grazie per le risposte.

Allora ho provato a scegliere come Opzione Arduino Uno, durante il burning. Però mi sa non sia possibile, esce fuori questo errore:

avrdude: Expected signature for ATMEGA328P is 1E 95 0F Double check chip, or use -F to override this check.

Ho provato anche scegliendo l'opzione Duemilanove w/ atmega328. Da lo stesso errore.

@leo72 - Non credo ci sia la sola differenza della memoria. A quanto ho letto in giro differenzia anche per quanto riguarda qualcosa che ha a che fare con la temporizzazione ed anche i registri interni credo siano diversi. Cercando online probabilmente si trovano le differenze specifiche.

Comunque tornando a noi, in sostanza Selezionando Arduino Uno non è possibile scriverci sull'ATMEGA8 il bootloader dell'uno. Non so.. qualche idea?

Beh, sembra proprio che ci siano delle differenze, la procedura io l'ho provata con i 328 che accettano sia UNO che 2009, e d'altra parte funziona anche a te col BL specifico; dal messaggio sembra proprio che il software cerchi un 328, forse si potrebbe intervenire sul software.

Attenzione che forse c’è un po’ di confusione con i codici: c’è l’Atmega8 e l’Atmega88. L’atmega88 è uguale all’168 ed al 328 tant’è che il datasheet è unico per tutti e 3 i micro. Probabilmente l’Atmega8 è diverso in qualcosa.