Ciao a tutti,
mi sono appena iscritto e non vedevo l'ora di condividere col forum quanto segue :).
Ho da poco ricevuto la mia prima board arduino: Arduino Uno, insieme alla quale ho anche ordinato un ATmega328P-PU vergine. Grazie alla esaustiva guida del prof. Menniti, sono riuscito a dotare di bootloader il chip vergine, ma volevo di piu', riuscire a programmare il chip sulla breadboard tramite Arduino (con il chip originale ancora "on board"). Le guide che si trovano in giro (credo facciano tutte riferimento a http://arduino.cc/en/Tutorial/ArduinoToBreadboard) dicono chiaramente che la tecnica non puo' andare a buon fine con Arduino Uno e che comunque bisogna rimuovere il chip da Arduino. In realta' (e in questo dovrebbe consistere la mia scoperta), si puo' avere un esito positivo evitando di collegare il cavo TX-[pin3-del-chip] e colleganto il cavo RESET-[pin1-del-chip]. A questa conclusione sono arrivato dopo un tour de force di mezza giornata di tentativi di connessioni assurde, fino a che mi sono reso conto che forse bastava "staccare quel cavetto li'"! ![]()
Dopo aver letto eventuali commenti e portato a termine un progettino di shield che combina il programmatore con il bootloader-burner, vedro' di postare il tutto nella sezione internazionale.
Spero di essere riuscito (e di riuscire poi) a dare un piccolo contributo alla comunità di Arduino! ![]()
Ciao,
grazie del complimento!
Ciò che dicono gli svariati tutorial in giro è ormai tutto superato.
Se hai la pazienza di aspettare un paio di giorni, pubblicherò la nuova versione della guida, sono ora 60 pagine, c'è anche questa sezione, in diverse forme...
E' un lavoraccio, ma se voglio che qualcuno usi il termine "esaustivo"
non posso fare diversamente, comunque ormai sono davvero alla fine del lavoro, qualche altra foto e una ricontrollata all'intera guida (ho apportato diverse modifiche anche alla parte che hai già).
A presto e grazie ancora.
Aggiungo che però non ho mai provato questa tecnica a cui ti riferisci e sono molto incuriosito; se ho ben capito hai Arduino col chip on board, e lo colleghi alla bread mediante solo 4 fili: +5,GND, RX e RESET, e così riesci a inviare sketch al chip sulla bread, è così?
Io avevo "scoperto" il fatto che fosse necessario collegare ANCHE il reset, ma comunque sempre togliendo il chip di Arduino. Poi abbiamo studiato (assieme a leo72) una tecnica con l'ISP programmer, ma questa è davvero nuova, se non altro perché non capisco come faccia il chip a ricevere dati in seriale senza il tx ![]()
Mi dici qualcosa in più?
menniti:
se ho ben capito hai Arduino col chip on board, e lo colleghi alla bread mediante solo 4 fili: +5,GND, RX e RESET, e così riesci a inviare sketch al chip sulla bread, è così?
Esatto!
menniti:
non capisco come faccia il chip a ricevere dati in seriale senza il tx
Ebbene, anche io ero turbato da cio'
, ma ragionando sono giunto alla conclusione che per RX, in realta', passano i dati indirizzati proprio al microcontrollore! Altrimenti non saprei spiegarmi come mai, dopo aver caricato lo sketch Blink, riesca a vedere i due led sui pin 13 dei due chip lampeggiare e sfasarsi dopo un po' (credo a causa delle diverse tolleranze delle capacità tra quarzo e massa) ![]()
Del resto il LED RX, a rigor di logica, dovrebbe indicare proprio che il chip sta ricevendo! (quindi c'è un flusso di dati verso il chip)
Torna?
P.S.
Dimenticavo di aggiungere, ma mi sembra scontato, che anche il chip on board viene riprogrammato, allo stesso modo di quello su breadboard!
Hai provato a smontare quel chip ed a montarlo sull'Arduino per vedere se il LED sul pin 13 continuava a lampeggiare?
Cmq il LED "RX", come si vede dallo schema dell'Arduino è collegato non sulla linea seriale direttamente ma solo ad un pin dell'Atmega8U2, quindi dovrebbe in teoria essere comandato da quel micro e non lampeggiare in risposta ad un transito fisico dei dati sulla linea. Bisognerebbe dare un'occhiata al firmware dell'8U2 per capire come lavora.
Ragionandoci su tutto ha una sua logica. La trasmissione seriale (a mia memoria...) avviene a pacchetti, ogni tot byte inviati dal trasmettitore, il ricevitore invia una specie di OK. Quando colleghi, per così dire, in parallelo due chip, è quasi impossibile che siano sincronizzati alla perfezione, l'IDE manda lo sketch a entrambi e entrambi rispondono, quindi l'IDE capisce che qualcosa non va e dà errore.
Col tuo sistema l'IDE manda lo sketch a entrambi ma riceve solo l'OK da Arduino, quindi l'unico problema possibile è che il chip su bread possa non essere programmato correttamente, visto che non c'è il controllo, al limite rifai l'operazione.
La tecnica che vedrai sul prossimo tutorial è un po' più "seria", nel senso che tutto va secondo le regole e soprattutto non si tocca il contenuto del chip di Arduino, però complimenti! Seppur in un momento di "follia" hai scoperto un sistema semplicissimo. Fai però un po' di prove con sketch di grandi dimensioni, per vedere se funziona lo stesso.
Ciao.
PS hai fatto la prova che ti chiede leo72?
leo72:
Hai provato a smontare quel chip ed a montarlo sull'Arduino per vedere se il LED sul pin 13 continuava a lampeggiare?
Non avevo pensato di farlo (nemmeno mi andava, faccio sempre fatica a togliere e mettere i chip evitando di distruggerli!), credevo fosse ovvio che, funzionando il chip scollegato da arduino, non ci fossero problemi. Comunque ora l'ho fatto e funziona tutto. Cosa dovevo aspettarmi? A cosa avevi pensato? Lo chiedo perche' non mi piace dare le cose per scontate, vorrei capire a fondo cio' che faccio (studio ingegneria elettronica e direi che "le basi" le possiedo XD).
menniti:
Ragionandoci su tutto ha una sua logica. La trasmissione seriale (a mia memoria...) avviene a pacchetti, ogni tot byte inviati dal trasmettitore, il ricevitore invia una specie di OK. Quando colleghi, per così dire, in parallelo due chip, è quasi impossibile che siano sincronizzati alla perfezione, l'IDE manda lo sketch a entrambi e entrambi rispondono, quindi l'IDE capisce che qualcosa non va e dà errore.
Col tuo sistema l'IDE manda lo sketch a entrambi ma riceve solo l'OK da Arduino, quindi l'unico problema possibile è che il chip su bread possa non essere programmato correttamente, visto che non c'è il controllo, al limite rifai l'operazione.
Stesso ragionamento che ho fatto io! Nel mio momento di "follia" (:)) li ho fisicamente messi in parallelo! (non sarebbe mica esploso il regolatore
)
menniti:
La tecnica che vedrai sul prossimo tutorial è un po' più "seria", nel senso che tutto va secondo le regole e soprattutto non si tocca il contenuto del chip di Arduino, però complimenti! Seppur in un momento di "follia" hai scoperto un sistema semplicissimo.
Grazie :D. Appena potro' faro' altre prove. Non mi aspettavo (stupidamente) che ci fosse già qualcuno seriamente al lavoro su questo, a me serviva per una questione pratica, quindi non pensavo di espandere il progetto, non vedo l'ora di leggere la nuova guida ![]()
Ho dato un'occhiata al firmware dell'Atmega8U2.
- il LED rx viene fatto lampeggiare dall'Atmega8U2 per indicare un'attività di ricezione dati
- il chip fa da tramite tra l'USART del chip e l'USB, in modo da permettere all'Arduino di comunicare col computer
- il chip ha 2 buffer per tenere in memoria i byte in transito PC->Atmega e Atmega->PC
- durante la ricezione di dati dal PC, il micro spedisce i dati verso l'Atmega328 usando il pin 9 (TX) che è collegato al pin 2 (RX) dell'Atmega328
Quindi, se togli quel pin, in teoria al secondo Atmega sulla breadboard i dati arrivano lo stesso, dato che il pin TX serve per inviare VERSO l'esterno, e non per RICEVERE dall'esterno.
Il reset serve perché attiva il bootloader sul micro di destinazione.
Sicuramente può funzionare, ma solo perché in precedenza hai caricato il bootloader sul micro, se non avessi fatto questa operazione la tecnica della programmazione tramite RX/TX non potrebbe funzionare.
PS:
ho scritto mentre tu pubblicavi la tua risposta.
Quindi ti rispondo io alla tua domanda: no, non stavo pensando a nulla in particolare, solo capire se i 2 LED lampeggiavano perché qualcosa li collegava tra loro tramite breadboard, tutto qui.
Cmq hai letto il mio precedente post?
Analizzando il firmware, dovrebbe funzionare come hai detto. Perché non ci era venuto in mente di pensare che anche i pin RX/TX che escono dall'Atmega8U2 vengono poi invertiti in ingresso all'Atmega328, quindi togliendo il pin TX in realtà non togli il pin che trasmette verso il 328 ma quello che esce da esso.
Cmq, ripeto: la tua procedura può funzionare solo se sul micro hai un bootloader che si mette in ascolto dopo il reset, altrimenti non può andare e serve per forza la tecnica della programmazione ISP.
Si', ovviamente c'e' bisogno di aver caricato il bootloader. Credo, pero', che ci siano progetti che mirano alla programmazione dell'atmega senza bootloader da arduino (usandolo come isp ed immagino con software diversi), ma ripeto, sono praticamente nuovo del mondo arduino, potrei aver capito male. Queste cose le ho incontrate per caso durante le mie ricerche, ma le trovo interessanti. Approfondiro' non appena avro' un po' piu' di tempo ![]()
Ops, ed io ho scritto mentre tu ne pubblicavi un'altra XD
Comunque grazie, almeno so che la cosa aveva senso non solo per me! Eheh
Buongiorno, hai davanti uno dei primi (se non il primo) che è riuscito a programmare un Atmega328 standalone usando una scheda Arduino Uno come programmatore ISP usando i collegamenti di quel tutorial che hai linkato tu, una modifica apportata al file di configurazione dei chip dell'IDE di Arduino ed un condensatore per disabilitare l'autoreset dell'Atmega sull'Arduino... XD
Menniti è venuto alle scuole serali da me
![]()
Wow, che onore!
Mi sa che avrai un altro allievo! ![]()
Se cerchi nei post di queste ultime 2 settimane troverai tutte indicazioni
Ok, tnx! ![]()
Ahi, qui si pecca d'orgoglio, devo difendermi ![]()
leo72:
Buongiorno, hai davanti uno dei primi (se non il primo) che è riuscito a programmare un Atmega328 standalone usando una scheda Arduino Uno come programmatore ISP usando i collegamenti di quel tutorial che hai linkato tu, una modifica apportata al file di configurazione dei chip dell'IDE di Arduino ed un condensatore per disabilitare l'autoreset dell'Atmega sull'Arduino... XDUn po' generica l'affermazione, proviamo a ripristinare la giustizia distinguendo il caricamento del bootloader da quello degli sketch; ho comprato una 2009, pur avendo già l'UNO, perché proprio tu mi dicesti che era impossibile fare questa cosa, ci sono riuscito, l'ho messo nel tutorial e poi mi hai dato atto.... E sempre tu dicesti che la tecnica seriale non funziona, io l'ho fatta funzionare e poi mi hai dato atto...
Se invece parliamo del caricamento di sketch, tanto di cappello, però io te ne do' atto dappertutto, tu invece che vai a dire?Menniti è venuto alle scuole serali da me
![]()
Già, ma solo al "secondo semestre"
e come spesso capita, l'allievo supera il maestro, infatti la TUA tecnica ISP per gli sketch, io l'ho traslata e fatta funzionare anche a 8MHz e 1MHz, tu ancora no
![]()
![]()
Ritorna in te, prenditi tutto il giusto merito, ma dai a Cesare quel ch'è di Cesare, che poi io mi chiamo pure in un altro modo
Dai, scherzo, proprio come fai tu![]()
Con la mia tecnica ci ho programmato anche gli Attiny, tu sei fermo agli Atmega
![]()
E poi non è colpa mia se son povero: tu ti sei addirittura comprato 2 Arduino, io mica posso scialacquare così i miei poveri soldini $)
Diciamo che ognuno di noi ha scoperto qualcosa di nuovo grazie al lavoro dell'altro ![]()
A parte gli scherzi, sapere il mio nome vedendo il mio nick è molto semplice, io però ti chiamo menniti perché non so il tuo vero nome ![]()
leo72:
Con la mia tecnica ci ho programmato anche gli Attiny, tu sei fermo agli Atmega![]()
![]()
E poi non è colpa mia se son povero: tu ti sei addirittura comprato 2 Arduino, io mica posso scialacquare così i miei poveri soldini $)
Diciamo che ognuno di noi ha scoperto qualcosa di nuovo grazie al lavoro dell'altro
Grande leo! Hai ragione, siamo una coppia formidabile, ma SOLO dal punto di vista tecnico, meglio chiarire, qualcuno potrebbe malpensare ![]()
A parte gli scherzi, sapere il mio nome vedendo il mio nick è molto semplice, io però ti chiamo menniti perché non so il tuo vero nome
Nel tutorial ho messo solo il tuo nick, come giustamente dici tu se qualcuno vuol sapere vada a vedere! Io però ho messo il tutorial sul mio sito... hai voglia di informazioni! ![]()
In questi giorni di prove intense ho fatto discrete scoperte, sto facendo un po' di prove del 9, non voglio espormi a figure di ![]()
Riguardo gli ATTINY ero andato prenderne una decina da Gioblu, per il mio lavoretto, purtroppo non è molto fornito di ciò che mi serve, è parecchio specialistico, volevo metterci almeno uno di quegli schedini che ha fatto, ma non ce l'ha
Insomma mi tocca aspettare che gli arrivino, altrimenti le spese di spedizione mi rovinano l'acquisto; speriamo non ci metta molto altrimenti sacrifico gli ATmega, alla fine dal nostro spacciatore polacco (
:D) costano solo 1,60 euro in più.
Ma che bello, è nata una coppia
, ma come screanzato io pensavo proprio questo, e tu che scrivi:Grande leo! Hai ragione, siamo una coppia formidabile, ma SOLO dal punto di vista tecnico, meglio chiarire, qualcuno potrebbe malpensare smiley-mr-green.
Poi Leo è pure sposato.
Diciamo che ognuno di noi ha scoperto qualcosa di nuovo grazie al lavoro dell'altro smiley-wink
La storia siamo noi.
Complimenti a tutte e due, non tiro per nessuno, mah... leo la sa lunga.
Ciao.
MauroTec:
..............Poi Leo è pure sposato.
da 26 anni? =(
Complimenti a tutte e due, non tiro per nessuno, mah... leo la sa lunga.
Ciao.
Completamente d'accordo, ed è anche modesto, io lo lodo e lui non s'imbroda
Grazie dei complimenti, ma noi giochiamo, abbiamo passato un paio di giorni da esaurimento, condividendo disperazione e successi, ovvio che ora ci si possa permettere di prendersi in giro a vicenda e scherzarci su, lo spirito di questo Forum non permetterebbe diversamente, altrimenti uno come Sir (al titolo manca poco, aspetta che con Arduino riesca a levare Camilla dalle balle della regina e vedi che lo fanno baronetto :D) M. Banzi cosa dovrebbe fare? mettere la sua effige al centro dello schermo e costringerci a baciarla (e dagglie! XD) per fare il login? Qui tutti la danno gratis...l'informazione! XD XD XD