Go Down

Topic: Guida: La programmazione di micro ATMEL con Arduino [rel. 4] (Read 68032 times) previous topic - next topic

Michele Menniti


No, Michele. I led RX e TX non sono collegati direttamente alle linee RX e TX del 328 che escono dai pin D0 e D1 ma sono comandati da 2 pin aggiuntivi dell'8U2 direttamente dal firmware di questo micro in base alle operazioni di RX e TX eseguite sulla comunicazione seriale che va al PC. Lo schema dell'Arduino me lo sono studiato benino, ultimamente, e sono un po' ferrato.  :D

http://arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf

Sì, però sono segnali "paralleli", da quanto ne so: in pratica sia per tx che per rx escono due linee, pilotate in contemporanea da due circuiti identici, una alimenta i led e l'altra va all'ATmega, in modo da non sovraccaricare il segnale http://pdf1.alldatasheet.com/datasheet-pdf/view/392231/ATMEL/ATMEGA8U2-MU.html; quindi se funziona l'uno funziona anche l'altro, salvo guasti dell'8u2, ma non è il suo caso.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

f.schiano

Stavo cominciando a leggere questa conversazione, ma per mancanza di tempo ora non posso leggerla tutta completamente, dalle prime pagine ho notato che serve una traduzione in Inglese, se volete e se vi serve ancora, io mi offro volontario (insieme a qualcun altro) per effettuarla!! :)

P.s. Non so se ho capito tanto bene dalle poche cose che ho letto, ma questa guida serve per programmare tramite arduino un ATMEGA per utilizzarlo stand-alone?

Ciao!!!
L'impossibile...richiede solo piu' tempo!

Michele Menniti

Direi proprio di sì, ma anche molte altre cose, frutto di una intensa collaborazione sviluppatasi su questo Forum.
Visto che dovrebbe esserci una 4a versione (credo e spero definitiva!) si è pensato di tradurla quando sarà finita; ci sono un altro paio di volontari, considerati arruolato anche tu  XD
Comunque al momento opportuno aprirò un Topic specifico.
Grazie
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

f.schiano

L'impossibile...richiede solo piu' tempo!

Francesco_MIRM

Ciao ragazzi, innanzi tutto volevo fare i complimenti per l'ottima guida!
Mi servirebbe un informazione però, ho bisogno di modificare il fuse relativo al clock dell'atmega, vorrei utilizzare un atmega "solo" con quarzo esterno da 20Mhz, è possibile cambiare tale valore senza utilizzare un programmatore esterno?

Michele Menniti

#80
May 14, 2011, 05:01 pm Last Edit: May 14, 2011, 05:10 pm by menniti Reason: 1
EDIT:


Mi servirebbe un informazione però, ho bisogno di modificare il fuse relativo al clock dell'atmega, vorrei utilizzare un atmega "solo" con quarzo esterno da 20Mhz, è possibile cambiare tale valore senza utilizzare un programmatore esterno?

Ciao, il FuseCalc prevede un valore unico per quarzi da 8MHz in su, dovrebbe bastare metterlo al posto del 16MHz per lavorare a quella frequenza che è la massima prevista per il chip.
Non puoi cambiare i fuse senza un programmatore, puoi farlo però usando Arduino come programmatore, come spiegato nella Guida. Ti consiglio però di non fare prove "tanto per", il chip ti si blocca e poi sono problemi seri.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Francesco_MIRM

Grazie della pronta risposta!
Sono andato sul sito AVR Fuse Calculator e ho dato un occhiata, posto che basterebbe mettere il quarzo da 20Mhz, ho comunque la necessità di disabilitare il fuse CKDIV8, sarebbe fantastico poter usare Arduino, però non ho capito quale parte della guida devo seguire e cosa cambiare per disabilitare sudetto fuse, se potresti indirizzarmi, grazie.

Michele Menniti

Rassegnati, per quello che devi fare, considerando che evidentemente non hai mai usato Arduino come ISP programmer, la Guida te la devi leggere praticamente tutta, per poter capire come programmare un micro con bootloader e/o sketch in stand alone; se poi vuoi lanciarti accomodati, ma poi non dire che non eri stato avvisato.
Ribadisco che il FuseCalc lo devi lasciar perdere per ciò che vuoi fare; una volta che programmi un chip con uno sketch, con le tecniche della Guida, ci metti il tuo quarzo da 20MHz e ti funziona; i valori che vedi appena scegli il 328 nel FuseCalc NON sono queli usati da Arduino UNO o 2009, nei quali ovviamente il divisore per 8 è GIA' disabilitato, altrimenti come farebbe a lavorare a 16MHz?
Se ti serve aiuto io, come tanti altri, sono a tua disposizione, ma un minimo di sacrificio penso tu debba farlo, è il peso della cultura :smiley-sweat: ;)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Francesco_MIRM

#83
May 14, 2011, 10:45 pm Last Edit: May 14, 2011, 10:58 pm by Francesco_MIRM Reason: 1
Io la guida l'ho letta tutta.
La parte della guida dove spiega come modificare i fuse non l'ho vista. (non sto dicendo che non c'è, andrò a ricontrollare dopo aver scritto questo post).
Ho chiesto se è possibile modificare il valore di un fuse senza usare un programmatore, mi sono spiegato male, ho usato il termine "esterno" che non significa nulla, intendevo chiedere se tale operazione era possibile usando Arduino come programmatore.
Mi hai risposto dicendo che è possibile, ma inutile (nel mio caso) visto che FuseCalc prevede un valore unico per quarzi da 8MHz in su.
Ora, non sapendo dell'esistenza di AVR Fuse Calculator, ho googlato FuseCalc e sono andato sul sito, dal menù a tendina ho scelto 328p e ho dato un occhiata, non ho potuto fare a meno di notare che CKDIV8 era selezionato, per questo ho scritto "ho comunque la necessità di disabilitare il fuse CKDIV8".
Avrei dovuto capirlo da solo che i valori del FuseCalc del 328 non sono gli stessi del 328 usato su Arduino, sono stato tratto in inganno dalla mia ignoranza e dal fatto che il progetto che sto seguendo è basato su un ATmega 168 "solo" quindi con risonatore da 8Mhz attivo e di conseguenza CKDIV8.
Ho visto che mi hai scritto:
"Ti consiglio però di non fare prove "tanto per", il chip ti si blocca e poi sono problemi seri."
Cosa intendi per prove tanto per? Io seguirei la tua guida..
"se poi vuoi lanciarti accomodati, ma poi non dire che non eri stato avvisato."
Non ho capito una cosa, anche cappellando al massimo, cosa può succedere? butto i 7 euro dell' ATmega, i 25 dell'Arduino? Entrambi? O posso combinare casini più grandi?
Un ultima cosa, mi dici rassegnati, un minimo di sacrificio.. a me dispiace tanto, io non sono uno che vuole la pappa pronta, ne una persona polemica, sembra che io sta guida proprio non volevo leggerla, quando invece l'ho fatto, purtroppo non sono un ingegnere, io la domanda l'ho fatta innocentemente, ciao e grazie ancora.

leo72

Modificare i fuse non è così semplice da fare ed "indolore", nel senso che c'è da precisare una cosa: se pensi di usare l'Atmega anche con l'Arduino oppure programmarlo esternamente col metodo RX/TX descritto nella guida , allora devi anche cambiargli il bootloader perché quello preinstallato è programmato per lavorare con un clock a 16 MHz e non funzionerebbe più.
Detto questo, quandi menniti ti ha detto che potresti avere dei problemi, lo ha detto a ragion veduta perché lui, sperimentando con i micro, ne ha "piantati" diversi. Per "piantati" significa che ha sbagliato a programmare i fuse ed ha bloccato i chip, rendendoli inusabili e solo costruendosi un programmatore ad alto voltaggio li ha potuto sbloccare.

Michele Menniti

#85
May 15, 2011, 11:35 am Last Edit: May 15, 2011, 11:39 am by menniti Reason: 1

....omissis....Detto questo, quandi menniti ti ha detto che potresti avere dei problemi, lo ha detto a ragion veduta perché lui, sperimentando con i micro, ne ha "piantati" diversi. Per "piantati" significa che ha sbagliato a programmare i fuse ed ha bloccato i chip, rendendoli inusabili e solo costruendosi un programmatore ad alto voltaggio li ha potuto sbloccare.

Ciao Leo, grazie per aver chiarito il mio intento, ma è giusto che io spieghi anche il resto. XD

Io la guida l'ho letta tutta.
La parte della guida dove spiega come modificare i fuse non l'ho vista. (non sto dicendo che non c'è, andrò a ricontrollare dopo aver scritto questo post).

Tutta la sezione da pag. 30 in su, più o meno, fa riferimento al file boards.txt, e ho messo le immagini con i nuovi valori di fuses; ho scritto anche che l’uso del FuseCalc non era negli intenti della Guida, e altre raccomandazioni, che certamente vedrai rileggendo.
Quote

Ho chiesto se è possibile modificare il valore di un fuse senza usare un programmatore, mi sono spiegato male, ho usato il termine "esterno" che non significa nulla, intendevo chiedere se tale operazione era possibile usando Arduino come programmatore.
Mi hai risposto dicendo che è possibile, ma inutile (nel mio caso) visto che FuseCalc prevede un valore unico per quarzi da 8MHz in su.
Ora, non sapendo dell'esistenza di AVR Fuse Calculator, ho googlato FuseCalc e sono andato sul sito, dal menù a tendina ho scelto 328p e ho dato un occhiata, non ho potuto fare a meno di notare che CKDIV8 era selezionato, per questo ho scritto "ho comunque la necessità di disabilitare il fuse CKDIV8".
Avrei dovuto capirlo da solo che i valori del FuseCalc del 328 non sono gli stessi del 328 usato su Arduino, sono stato tratto in inganno dalla mia ignoranza e dal fatto che il progetto che sto seguendo è basato su un ATmega 168 "solo" quindi con risonatore da 8Mhz attivo e di conseguenza CKDIV8.

:)
Quote

Ho visto che mi hai scritto:
"Ti consiglio però di non fare prove "tanto per", il chip ti si blocca e poi sono problemi seri."
Cosa intendi per prove tanto per? Io seguirei la tua guida..
"se poi vuoi lanciarti accomodati, ma poi non dire che non eri stato avvisato."
Non ho capito una cosa, anche cappellando al massimo, cosa può succedere? butto i 7 euro dell' ATmega, i 25 dell'Arduino? Entrambi? O posso combinare casini più grandi?

Qui Leo ha chiarito il mio pensiero; il mondo di Arduino, e quindi questo Forum, è fatto di cose piccole e che costano relativamente  poco, quindi chiaramente ogni frase o consiglio è adeguata alla misura, non intendevo dire che sarebbe fallita la Banca d’Italia  ;) e comunque non puoi rompere Arduino, a meno che, dopo aver bloccato il chip tu non lo prenda a cacciavitate… ]:D Ci sono post in cui ragazzi si stanno organizzando per dividersi 10 euro di spese di trasporto, era questo il senso e non voleva essere offensivo.
Quote

Un ultima cosa, mi dici rassegnati, un minimo di sacrificio.. a me dispiace tanto, io non sono uno che vuole la pappa pronta, ne una persona polemica, sembra che io sta guida proprio non volevo leggerla, quando invece l'ho fatto, purtroppo non sono un ingegnere, io la domanda l'ho fatta innocentemente, ciao e grazie ancora.

Anche qui, è la prima volta che “postiamo”, altrimenti sapresti che sono uno che gioca sempre, prende in giro e si fa prendere in giro, la tua domanda non sembrava fatta da uno che avesse letto (che poi mica sei obbligato), quindi se ti ho offeso ti chiedo scusa, ma il mio intento è aiutare quando sono in grado di farlo perché contestualmente molti (tra i quali proprio il nostro caro Leo) mi aiutano ogni qualvolta lo chiedo.
Quindi, mi affliggo da solo la punizione e mi metto a tua completa disposizione. Chiedi e ti saranno indicate pagine e paragrafi o, in alternativa, tutto ciò che con le mie poche conoscenze sarò in grado di spiegare.
Ciao!
XD XD XD
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Francesco_MIRM

[QUOTE

..mi affliggo da solo la punizione e mi metto a tua completa disposizione. Chiedi e ti saranno indicate pagine e paragrafi o, in alternativa, tutto ciò che con le mie poche conoscenze sarò in grado di spiegare.
Ciao!
XD XD XD

Menniti mio sei fregato!  :smiley-yell:
Scherzi a parte, tutto ok, ti ringrazio per la disponibilità e la pazienza che contraddistingue un po' tutti in questo forum, anche leo ne sa qualcosa..
Comunque giusto per completezza, sto cercando di realizzare il circuito per il tvtext, se ne era parlato proprio con leo in un altro thread, mi ero bloccato perchè per continuare dovevo necessariamente comprare un programmatore, ma adesso con la tua guida posso ripartire!!

Michele Menniti

:smiley-sweat: :smiley-sweat: :smiley-sweat: Allora me la sono scampata??? Yeah! ma no, se hai bisogno chiedi, anzi se trovi punti oscuri segnala senza pietà e tutto sarà migliorato.
Sappi che, tanto per cambiare XD, Leo ha una parte pesante in quella Guida, lui è una sorta di manovratore occulto ( 8)) e già si sta lavorando assieme, ma comunque con l'aiuto di tanti in generale, per la prossima versione, nella quale inseriremo altre tecniche, insomma dobbiamo dare ad Arduino l'importanza che merita! Oggi ho letto anche che presto sarà disponibile un bel logo utilizzabile da noi comuni (o no?) mortali (o no? :D), sarà messo subito in bella vista!
Aspetto tue nuove.
Ciao.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

@Francesco:
ah, eri quel Francesco lì? Non mi ricordavo più  ;)
Cmq sappi che da gennaio ho una breadboard con su un Atmega, 2 resistenze e qualche pulsantino che collego alla TV di casa per giocare a Space Invaders XD
Ho provato anche a fare quello che si disse, ossia ho provato ad usare 2 Atmega. 1 leggeva una tastiera e l'altro spediva i dati al video... Risultato? Non ha funzionato una cippa  XD
Invece un altro progettino ha funzionato. Ho caricato un chip con il tvText, e poi ci ho collegato il PC: scrivevo sul PC e leggevo sul monitor  :smiley-yell:

@Michele:
alla fine mi sa che dovrò cominciare a chiedere le royalty  :D

Michele Menniti

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up