Go Down

Topic: programmare il 644 ... ma come???? (Read 26 times) previous topic - next topic

superzaffo

@Michele: Effettivamente poi, pensandoci bene, mi era venuto proprio quel dubbio. Nel pomeriggio scarico nuovamente il bootloader. Ma ho un dubbio... devo impostare nell' ide il 644 16Mhz con o senza bootloader per scaricare appunto il bootloader. Io inizialmente avevo impostato "senza bootloader".

@Tonid: Si ho visto in questo topic il tip del led nel pin 2, ma per farlo devo modificare un file, che ora non ricordo il nome, e poi Leo dice di ricompilarlo.. Con ricompilare, cosa si intende ? Nel senso.. basta scaricare nuovamente il bootloader ? (nel farlo l' ide lo ricompila..) o c'è un compilatore particolare per questi micro ?

leo72


@Michele: Effettivamente poi, pensandoci bene, mi era venuto proprio quel dubbio. Nel pomeriggio scarico nuovamente il bootloader. Ma ho un dubbio... devo impostare nell' ide il 644 16Mhz con o senza bootloader per scaricare appunto il bootloader. Io inizialmente avevo impostato "senza bootloader".

Devi scegliere "con" bootloader altrimenti l'IDE, oltre a non scriverlo, non programma i fuse per preservare lo spazio nella memoria.

Quote

@Tonid: Si ho visto in questo topic il tip del led nel pin 2, ma per farlo devo modificare un file, che ora non ricordo il nome, e poi Leo dice di ricompilarlo.. Con ricompilare, cosa si intende ? Nel senso.. basta scaricare nuovamente il bootloader ? (nel farlo l' ide lo ricompila..) o c'è un compilatore particolare per questi micro ?

Non importa ricompilarlo. Ho visto che nel makefile originale è già presente la voce per attivare l'output sul pin 2 per cui anche usando gli hex originali hai quella funzionalità

superzaffo

Scusa Leo, tanto per completare le mie conoscenze su questi micro, quindi c'è un compilatore ad hoc. O ho capito male ?

leo72


Scusa Leo, tanto per completare le mie conoscenze su questi micro, quindi c'è un compilatore ad hoc. O ho capito male ?


No, il compilatore è sempre avr-gcc. Fino alla versione 002x dell'IDE serviva un core specifico per poterli usare con l'IDE di Arduino, dalla versione 1.0 in poi il supporto è stato lentamente integrato in Arduino stesso. Dalla versione 1.0.2 basta aggiungere le voci nel file boards.txt per usarli senza ulteriori modifiche.
L'unica cosa che non c'è nell'IDE è un bootloader specifico, che invece ha preparato un altro utente del forum, maniacbug. E che io ho integrato nel package che puoi scaricarti dal mio sito dove trovi insieme al file boards.txt

Michele Menniti


No, il compilatore è sempre avr-gcc. Fino alla versione 002x dell'IDE serviva un core specifico per poterli usare con l'IDE di Arduino, dalla versione 1.0 in poi il supporto è stato lentamente integrato in Arduino stesso. Dalla versione 1.0.2 basta aggiungere le voci nel file boards.txt per usarli senza ulteriori modifiche.

Questa frase ricordo che l'hai già detta e lì per lì mi era sfuggita, ma ora è meglio approfondire: se è dalla 1.0.2 che non servono modifiche, io nella 1.0.1 avrei dovuto modificare qualcosa? non è che sto impazzendo per non aver fatto qualcosa sulla 1.0.1? :smiley-eek-blue: anche se c'è sempre il 644 che mi mette fuori strada.
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

astrobeed

Intervento veloce dopo che Michele mi ha spiegato in privato i problemi a cui state andando incontro, lasciate perdere gli "esperimenti" con resistenze e condensatori che non servono a nulla, il problema è nel bootloader che state utilizzando che non è idoneo per il 644/1284.
Adesso non ho tempo per spiegarvi dove sta il problema e la relativa soluzione, sto finendo una libreria per Arduino che renderò di pubblico dominio e devo preparare un rendering 3D di anteprima di una nuova scheda (Linux Embedded) che interesserà anche il mondo Arduino, su questa poi aprirò un topic dedicato.
Non appena ho finito, e non credo se ne parli prima di domani, mi rifaccio sentire in questo topic con tutte le spiegazioni del caso, not get worry, stay tuned  :smiley-mr-green:

Michele Menniti

e cchi sse move de qua! :D 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

superzaffo

cavoli.. che novità !
Staremo incollati al pc  :smiley-mr-green:

superzaffo

Però, aspettando astro, io ho ancora dei problemi (sicuramente banali) con il caricamento dello sketch via seriale.
1) Ho caricato il bootloader, con la scelta "644 w bootloader".
2) Collegato al pin 2 con resistenza il led.
3) Collegato l' adattatore in questo modo TX -> TX, RX -> RX, DTR con un C da 100nF in serie al pin 9

quando cerco di caricare lo sketch blink il led lampeggia un 2-3 volte e poi l' Ide mi da not in sync (provato anche invertire rx e tx, setssa cosa)

Ho provato anche questa strada citata da Michele
Quote

Quindi, io partirei dal caricare lo sketch ArduinoISP sull'Arduino UNO. Poi chiudi l'IDE.
Ora il mio core 644_1284: scaricalo (prendi la versione per IDE 1.0.2 sia per l'IDE 1.0.2 che per l'IDE 1.0.3) ed installalo.
Avvia l'IDE, seleziona "Atmega644 @ 16 MHz w/bootloader" e poi scrivi il bootloader sul microcontrollore (così imposti anche i fuse corretti per lavorare a 16 MHz e riservare l'area al bootloader) con la tecnica ISP usando l'ArduinoISP come programmatore.
Adesso prenditi l'Arduino (lasciamo per ora da parte il tuo convertitore USB/seriale), staccagli il chip e fai questi collegamenti:
Arduino ---> 644P
Pin RST ---> pin 9
Pin RX ---> pin 15
Pin TX ---> pin 14
Pin 5V ---> pin 10 e 30
Pin GND ---> pin 11 e 31

Collega l'Arduino, apri l'IDE, poi scegli la voce "Atmega 644 @ 16 MHz w/bootloader", carica lo sketch Blink e spedisci con l'icona di upload. Adesso prendi un LED + R e collegali al pin 19 del 644: se il bootloader ha svolto il suo compito, lo sketch Blink dev'essere sul micro ed il LED deve lampeggiare.

Ma l' errore che mi compare, dopo che il led nel pin 2 lampeggia e anche i led rx e tx dell' aruino lampeggiano, protocol error, expect=014, resp=0x41.. ecc..

Non capisco dove ancora sto sbagliando.. anche perchè non mi sembra molto complessa la cosa.. (ahh io ho un 644P)


leo72

@michele:
per la 1.0.1 servono dei file del core modificati per integrare il supporto al 1284 (di serie c'è solo quello per il 644). Tale supporto è stato aggiunto a partire dalla versione 1.0.2. Per tutte le versioni serve poi uno specifico file pins_arduino.h che descrive i pin e le funzionalità ad essi agganciati.

@superzaffo:
ho timore di aver fatto casino quando ho scritto quelle istruzioni. Non mi ricordavo che si doveva ragionare tenendo a mente l'Atmega8U2: sulle schede Arduino il pin RX è collegato al pin RX0 dell'Atmega328 ma è collegato al pin TX dell'Atmega8U2 per cui non va invertito. Stessa cosa per il pin TX. Collega quindi il pin RX con il piedino 14 del 644/1284 ed il pin TX con il piedino 15.

@astrobeed:
che problema sarebbe, che hai riscontrato nel bootloader?

superzaffo

Grazie Leo, infatti ho fatto la prova di invertire ed infatti il problema di protocol error era con i pin invertiti.
Adesso grazie a queste tue istruzioni
Quote

3) usare un filtro RC sulla linea RX del microcontrollore composto da una R da 10K in serie fra il pin RX dell'Arduino ed il pin RX0 del 644P/1284P, ed un condensatore ceramico da 100 pF (100 picoFarad) in parallelo (fra RX0 e GND).

Sono riuscito a scaricare lo sketch via arduino seriale e funziona.  ;)
Adesso però proverò con il convertitore uguale a Paolo S... vediamo.. Lui mi sembra che ha detto che non ha messo niente, ne C sul reset e ne pull up ...
Vediamo...

superzaffo

Ok, fatto anche la prova con l'adattatore usb seriale come quello di Paolo S
Alla fine tutto ok...
Configurazione funzionante a me..
Tx->TX senza pull up
Rx->Rx senza pull up
DTR->reset con C da 100nF in serie e una R da 10K in Pull up.

Nota: Se provo a memorizzare in ISP il bootloader con la resistenza da 10k di Pull-up nel reset, la procedura non funziona.


Michele Menniti

Leo: fammi capire, stai parlando di tutto quanto ho dovuto mettere nella cartella hardware, giusto? quindi niente di nuovo. Con Astro inutile insistere, c'ho già provato io, è con l'acqua alla gola con i lavori che deve completare, dopo ci spiegherà, posso dirti che era a conoscenza del problema, quantomeno quando gliene ho parlato mi ha detto "scommetto che state usando il bootloader basato su optiboot!". Aspettiamo e speriam bene.

SZ: anch'io col convertitore con CP2102 non ho avuto problemi col 644, invece niente da fare con 1284, domani vorrei riprovare alla luce dei nuovi test che abbiamo fatto.
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


Leo: fammi capire, stai parlando di tutto quanto ho dovuto mettere nella cartella hardware, giusto? quindi niente di nuovo.

Sì, il pacchetto che ho preparato io. Ci sono 3 sottocartelle, variants, bootloaders e cores, ognuna con dei file che variano in base alla versione di IDE usata.

Quote


Con Astro inutile insistere, c'ho già provato io, è con l'acqua alla gola con i lavori che deve completare, dopo ci spiegherà, posso dirti che era a conoscenza del problema, quantomeno quando gliene ho parlato mi ha detto "scommetto che state usando il bootloader basato su optiboot!". Aspettiamo e speriam bene.

SZ: anch'io col convertitore con CP2102 non ho avuto problemi col 644, invece niente da fare con 1284, domani vorrei riprovare alla luce dei nuovi test che abbiamo fatto.

Michele, se vuoi fare un tentativo, scaricati il pacchetto originale di maniacbug:
https://github.com/maniacbug/mighty-1284p
Dentro a /bootloaders/standard trovi un file denominato ATmegaBOOT_1284P.hex. Questo è il primo bootloader che l'utente ha usato. Non so quanto impegni di flash, controlla nel file boards.txt allegato allo ZIP che hai scaricato le impostazioni dei fuse. Prova questo bootloader, vedi se cambia qualcosa.
Non è basato sull'Optiboot, credo sia basato sul vecchio bootloader tipo 2009 (o forse Mega non so).

Michele Menniti

MI sa che era quello che mi ero messo inizialmente da parte per le prove, poi passando il tempo, quando hai messo appunto il tuo lavoro, l'ho mollato, una prova è fattibile, in attesa dell'intervento di Astro.
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