Pages: [1] 2   Go Down
Author Topic: programmazione ATmega esterno ad Arduino  (Read 1400 times)
0 Members and 1 Guest are viewing this topic.
Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,
ho fatto un po' di prove per caricare uno sketch su un ATmega328 usando Arduino + breadboard, seguendo il tutorial ufficiale.
Questa la situazione:
Arduino (UNO o 2009) configurata correttamente (board e COM) sul programming (0022), senza il chip a bordo
Breadboard con quarzo e RC varie e chip con BootLoader UNO precedentemente caricato
Invio lo sketch e mi va in errore, il messaggio tipico dell'autoreset; ho provato con resistenza e/o condensatore sul pin 1 del chip, in un solo caso sono riuscito a fare la procedura, poi però mi ha dato sempre errore.
Ho provato anche a cambiare il chip.
Qualcuno ha mai fatto questo tipo di operazione? Potreste darmi una configurazione certamente funzionante?

Qualcuno si è spinto oltre, p.es. riuscendo a disaccoppiare i due chip, in modo da non togliere quello della board e programmare entrambi?
Per non mettere a rischio Arduino ho realizzato una protoshield su millefori con chip in stand alone (funziona), in modo da collegari i circuiti esterni per le prove. Lo scopo che voglio raggiungere è quello di non toccare mai il chip della board o toglierlo e rimetterlo il meno possibile, alla lunga lo zoccolo comincerà a dare problemi, così come i pin degli in/out, cosa che ho risolto con la protoshield.
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 136
Posts: 9708
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Come è stato detto più volte gli ATmega con il bootloader della UNO funzionano solo sulla UNO, ovvero non è possibile usarli in stand alone.
Il motivo è che all'avvio il bootloader si aspetta una risposta dall'ATmega 8u presente sulla UNO e se non la riceve il bootloader cicla in eterno senza avviare lo sketch.
Una possibile soluzione è inviare un qualunque carattere sul Rx dell'ATmega, o collegarlo a 0 logico per una decina di ms, in questo modo il bootloader si sblocca e cede il controllo allo sketch, però non sono metodi molto pratici.
« Last Edit: April 04, 2011, 06:43:30 am by astrobeed » Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao astrobeed,
io ho realizzato un tutorial di 20 pagine (ho messo il link nel Playground) per spiegare le varie tecniche per caricare il BootLoader nei chip ATmega, usando due Arduino qualsiasi o un'Arduino qualsiasi ed una breadboard.
Si diceva anche (ed è scritto perfino sul sito ufficiale) che con la UNO non era possibile fare questa operazione; io sono riuscito a farlo sia con 2009 che con UNO, indifferentemente.
Aggiungo che l'eccellente circuito che mi hai suggerito (ricordi la sequenza di 24 bit programmabile, a 10MHz?) è agganciato ad un'altra millefori che ospita un chip in stand alone con il bootloader dell'Uno, e funziona egregiamente, quindi questa cosa dell'UNO ormai è abbondantemente smentita.
Mi interessa a questo punto non la soluzione del carattere (dovrei modificare ogni volta gli sketch in base al metodo che uso), bensì quella dello 0 logico; poiché sto lavorando ad una board su millefori con zoccolo textool, ecc. potrei aggiungere un microschedino con un integrato per provocare questo ritardo, quando uso la proto per questa operazione; puoi darmi una delle tue dritte, che funzionano al primo colpo?
Ho un altro Topic (semi-OT) dove speravo di avere un tuo intervento, se ci passi mi aiuteresti molto.
Grazie.
Logged


0
Online Online
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mai avuto un arduino, ho iniziato subito con l'arduino on bread-board... però con bootloader vecchio.
devi avere una pullup fissa sul reset, quando programmi, nell'ide appena compare la scritta "binary sketch size" (qualche frazione di secondo prima è meglio, ci devi prendere la mano e ho sentito dire che la UNO ha tempi di risposta più veloci...) metti il reset a GND e poi lo lasci ritornare subito a vcc.

Oppure se il tuo chip FTDI (o quello che usi) ha anche il reset, allora puoi collegare una resistenza (100NM c'è scritto)a RTS e un condensatore(100n) a DTR, entrambi in parallelo col PIN reset... questo è il metodo usato sull'arduino 2009
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 136
Posts: 9708
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi questa cosa dell'UNO ormai è abbondantemente smentita.

Io non ti ho detto che non puoi programmare un ATmega tramite la UNO, a quanto pare è stata trovata una soluzione semplice e funzionante che non richiede modifiche al software.
Ti sto dicendo che un ATmega programmato con il bootloader della UNO non funziona, cioè non partono gli Sketch caricati, se non installato su una UNO, che è una cosa diversa dal programmare il Bootloader.
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusami, probabilmente continuo a fare confusione io; intendi dire che se il chip non è installto direttamente sulla UNO non è possibile caricare gli sketch? ma mi parlavi della possibilità di inserire un ritardo, non serve per risolvere questa cosa? potresti indicarmi come?

Riguardo lo stand alone, per evitare altra confusione (purtroppo ancora non ho le idee chiarissime su certa terminologia), intendo dire un chip con bootloader dell'UNO ed uno skecth caricato in precedenza direttamente sull'UNO, ma installato su una millefori, con quarzo e gli RC minimi per tale configurazione, sta funzionando benissimo, collegato alla scheda che ho realizzato col tuo  prezioso suggerimento, quindi senza l'UNO collegato.

Il problema è che ogni volta che voglio cambiare la sequenza dei 24 bit devo togliere il chip, montarlo sull'UNO e rimandare lo sktech, ecco perché mi avrebbe fatto comodo eseguire questa operazione via tx/rx; farò una prova mettendo il botloader del 2009 e usando Arduino 2009 per inviaRE LO sketch, vediamo se ce la faccio.
« Last Edit: April 05, 2011, 04:20:45 am by menniti » Logged


Napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questa cosa del bootloader dell'uno che non funziona come standalone mi ha stupito.. Che senso ha allora installare il bootloader dell'uno? Bisogna installare quello del 2009 per usare poi le standalone?

Ma ragazzi, se metto un atmega con bootloader 2009 in un arduino uno, se selezioni arduino 2009 nell'ide viene programmato tranquillamente?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oggi pomeriggio provo a programmare uno sketch su un Atmega standalone con bootloader Uno e poi vi faccio sapere.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Questa cosa del bootloader dell'uno che non funziona come standalone mi ha stupito.. Che senso ha allora installare il bootloader dell'uno? Bisogna installare quello del 2009 per usare poi le standalone?

Ma ragazzi, se metto un atmega con bootloader 2009 in un arduino uno, se selezioni arduino 2009 nell'ide viene programmato tranquillamente?
Ciao, vai nel Playground, ho realizzato un Tutorial di 20 pagine (Italiano e molte foto) sul bootloader; riguardo la programmazione, se metti un atmega con bl 2009 in Arduino UNO, selezionando Arduino 2009 funziona senza problemi.
« Last Edit: April 05, 2011, 01:40:55 am by menniti » Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oggi pomeriggio provo a programmare uno sketch su un Atmega standalone con bootloader Uno e poi vi faccio sapere.
Thank's, I'm waiting.....
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 136
Posts: 9708
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La prova l'ho fatta io, in effetti mi è venuto un dubbio relativo all'hardware di una stand alone, non c'è la parte USB e il relativo Autoreset.
Se si mette l'ATmega 328 con il bootloader della UNO su una 2009, o clone similare, il problema c'è ed è quello che ho già descritto con i relativi workaround possibili.
Se si mette l'ATmega con bootloader della UNO su una stand alone, nel mio caso ho usato una Luigino, funziona senza problemi.
La spiegazione dovrebbe essere nel fatto che con la parte USB realizzata con l'FTDI durante l'avvio a freddo (connessione dell'alimentazione) arrivano alcuni impulsi per l'autoreset e questo attiva la procedura di riconoscimento dell'ATmega 8u per la USB causando il blocco, infatti se collego alla Luigino un'interfaccia USB-TTL esterna con chip FTDI, la scheda è già predisposta per questo, il problema si presenta esattamente allo stesso modo, però è sempre possibile programmare l'ATmega e una volta scollegata l'interfaccia USB, previo riavvio, il tutto funziona regolarmente.
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La prova l'ho fatta io, in effetti mi è venuto un dubbio relativo all'hardware di una stand alone, non c'è la parte USB e il relativo Autoreset.
Se si mette l'ATmega 328 con il bootloader della UNO su una 2009, o clone similare, il problema c'è ed è quello che ho già descritto con i relativi workaround possibili.
Se si mette l'ATmega con bootloader della UNO su una stand alone, nel mio caso ho usato una Luigino, funziona senza problemi.
La spiegazione dovrebbe essere nel fatto che con la parte USB realizzata con l'FTDI durante l'avvio a freddo (connessione dell'alimentazione) arrivano alcuni impulsi per l'autoreset e questo attiva la procedura di riconoscimento dell'ATmega 8u per la USB causando il blocco, infatti se collego alla Luigino un'interfaccia USB-TTL esterna con chip FTDI, la scheda è già predisposta per questo, il problema si presenta esattamente allo stesso modo, però è sempre possibile programmare l'ATmega e una volta scollegata l'interfaccia USB, previo riavvio, il tutto funziona regolarmente.
Mille grazie, allora mi basta usare una board Luigino o 2009 (senza chip) per poter aggiornare il programma su un chipo con bootloader UNO, stasera faccio la prova (avevo fatto prove usando sempre la board UNO come programmatore) e ti faccio sapere. Gentilmente ti chiedo di controllare l'altro post a cui hai già risposto ieri, per un mio dubbio. Grazie ancora.
« Last Edit: April 05, 2011, 04:18:08 am by menniti » Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@Astrobeed:
Dunque, ho fatto un po' di prove:
usando la 2009 (configurata come UNO sul programming) e mettendo sulla breadboard un chip con bootloader UNO, collegando poi tx, rx, +5, GND (quindi come da tutorial), purtroppo non funziona.
Se sul pin 1 (reset) del chip collego una res da 120Ohm verso +5 ed un c 10µF verso GND, la procedura funziona 1 sola volta; se voglio inviare una modifica o un nuovo sketch devo scollegare l'USB, attendere qualche secondo, e ricollegare l'USB, e posso riprogrammare un'altra volta sola, ecc.; in pratica se non tolgo l'alimentazione mi fa programmare solo una volta.
Ho fatto le stesse prove con la UNO, mi ha funzionato una sola volta in assoluto, poi basta e non c'è stato verso.
Parlavi della possibilità di un ritardo sul reset, puoi dirmi come fare, vorrei sperimentarlo.

....Oppure se il tuo chip FTDI (o quello che usi) ha anche il reset, allora puoi collegare una resistenza (100NM c'è scritto)a RTS e un condensatore(100n) a DTR, entrambi in parallelo col PIN reset... questo è il metodo usato sull'arduino 2009
Io ho la 2009, se ho ben capito mi stai descrivendo proprio i collegamenti già esistenti sulla board, almeno così interpreto guardando lo schema elettrico.
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 136
Posts: 9708
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora puoi collegare una resistenza (100NM c'è scritto)a RTS

Assolutamente no, quello è un errore presente sullo schema ufficiale di Arduino 2009, la famigerata R2 riportata come 100NM  (unità di misura inesistente in elettronica) non va montata, infatti sulla 2009 non c'è, il relativo slot è vuoto.
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12643
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bah, ad essere elastici si potrebbe pensare ai nanometri degli infrarossi, davo per scontato che parlassimo di resistenze e mi riferivo alla 100K che collega il reset del chip ai +5.
Proprio non vogliamo farla questa prova del ritardo?  smiley-cry
Logged


Pages: [1] 2   Go Up
Jump to: