programmare il 644 ... ma come????

@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?

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

  1. 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. :wink:
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...

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.

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.

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.

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:

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).

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.

Bene, con il vecchio bootloader di mighty sono riuscito finalmente a blinkare :smiley: il 1284P, ma confermo la necessità del C da 100nF in serie al DTR dell'FT232RL ed inoltre ho dovuto comunque mettere una R da 220kohm in serie al tx del Convertitore, quindi sull'rx del micro. Con 120kohm dava segni di vita ma comunque dava un errore, sono saltato direttamente a 220kohm, tanto il valore esatto non ha molta importanza. E' importante che la tecnica funzioni, e questa manovra è la conferma che è come dice Astro, c'è un problema di bootloader; ora appena lui riuscirà a mantenere l'impegno e fornircene uno (o quantomeno le spiegazioni per modificare quello attuale) si dovrebbe riuscire tutti a programmare senza alcuna R o C, insomma con i pin tx/rx liberi, tutt'al più le classiche R da 1k in serie ai due segnali.
Anche questo BL è basato sull'optiboot, nella cartella ci sono anche le board Mighty, che però sono basate sul vecchio bootloader, si evince facilmente dai percorsi e dalla memoria riservata (2k); c'è anche la bobuino ma questa è basata sull'optiboot, infatti la memoria riservata, così come per la versione usata da me, è di 1k.

Ti contraddico ;), non è basato sull'optiboot ma sul vecchio bootloader 2009.
C'è espressamente scritto nel sorgente:

based on stk500boot.c

Se guardi il sorgente del bootloader contenuto nella cartella /bootloader/atmega vedrai infatti che è sostanzialmente lo stesso con l'aggiunta del supporto per il 1284 :wink:

L'ho voluto provare anch'io. Risultato: negativo.

Non riesco a caricare nessuno sketch, nonostante il bootloader risponda correttamente al reset (vedo il lampeggio del led).
Ho provato con:

  1. C da 100 nF in serie sulla linea di reset (proveniente dal pin RST dell'Arduino)
  2. senza detto C
  3. con R da 175K in serie sul pin RX0 del micro
  4. senza detta R
  5. facendo diverse combinazioni fra C ed R

Errata corrige!
Avevo fatto una ca**ata io.
Mi ero dimenticato di mettere la velocità a 57600 nella nuova voce del file boards.txt.

Confermo quindi che con il bootloader standard riesco a programmare il chip. Aggiungo anche che riesco a farlo SENZA nessun componente aggiuntivo sulla linea che dal pin RX dell'Arduino va al pin RX0 del 1284P.
Quindi in sostanza usando solo la R da 1K che c'è in serie sulla scheda. Ottimo, ottimo.

Sono sempre molto di fretta, vi spiego brevemente dove sta il problema, i bootloader che state utilizzando sono pensati per il 328 e similari, il 644/1284 richiede delle tempistiche diverse, va usato il bootloader della Mega2560 (decisamente migliore del optiboot e si può trasferire a 240 kbps, in complenso occupa più spazio nella flash) con alcune piccole modifiche.
Spero domani di avere più tempo per entrare nei dettagli, io ho il bootloader sicuramente funzionante per il 1284, devo inserire anche il 644 e ricompilarlo per questo micro così ve lo passo già pronto all'uso, ovviamente anche il relativo sorgente.

Astro, grazie dell'intervento.
Il bootloader "mighy" è basato sul bootloader standard stk500 usato per le vecchie 10000/2009/Mega.
Con questo funziona correttamente senza ammennicoli sulle linee di trasmissione (almeno per me) però, come dici tu, la velocità è limitata a 57600.

Proverò a spippolare con il bootloader della mega (skt500v2) XD

Grande Astro, così ci leviamo di torno tutte ste cartelle che non ne posso più, anche se credo che comunque il core dobbiamo mantenerlo no? così come il pins_Arduino.h, almeno io che ho la 1.0.1 no?
Va bene, al dunque mi darete le relative istruzioni in modo che si possa sintetizzare al minimo ogni aggiunta all'IDE. :slight_smile:

@ Leo: il mio ragionamento si basava sul nome "optiboot_atmega1284p.hex" e sull'occupazione di memoria (1k), visto che certamente quello della 2009 se ne prende 1,5K e quindi 2k, però mi fido di ciò che dici, ci mancherebbe; ciò che dice Astro conferma i miei dubbi di sempre, sulle temporizzazioni del "dialogo" e ulteriore conferma è che comunque in ogni situazione il tuo 1284 si comporta meglio dei miei :~ Invece non capisco questa cosa della velocità, da sempre io non ho mai fatto caso a questo parametro, più che convinto che venisse bellamente ignorato ed anche in questo frangente ho usato la board di mighty con bootloader 16MHz e ora vedo che il parametro è 115200; poi tu stai parlando di "bootloader standard", ma ti stai riferendo alla versione presente nella cartella "standard"? perché io invece sto usando quello della cartella optiboot, così come previsto dalla board.

Il core non ha nulla a che vedere con il Bootloader, sono due cose distinte, il primo entra in funzione subito dopo il reset e usa i parametri impostati al suo interno e non quelli scritti nel file boards.txt, non appena il bootloader termina il suo lavoro entra in gioco il discorso core che riguarda solo la compilazione dello sketch.

ok, quindi io ho le tre cartelle attuali: cores, variants e bootloaders, devo svuotare la sola bootloaders per metterci i file che fornirai tu, giusto?

Beh, devi anche pensare che sull'Atmega1284 i tagli di memoria riservabili per il bootloader sono 1024/2048/4096/8192 (parlo di byte, non di word) mentre sull'Atmega328 sono 512/1024/2048/4096. Quindi anche con l'Optiboot sui 1284 meno di 1K non si può proteggere.

ciò che dice Astro conferma i miei dubbi di sempre, sulle temporizzazioni del "dialogo" e ulteriore conferma è che comunque in ogni situazione il tuo 1284 si comporta meglio dei miei :~ Invece non capisco questa cosa della velocità, da sempre io non ho mai fatto caso a questo parametro, più che convinto che venisse bellamente ignorato ed anche in questo frangente ho usato la board di mighty con bootloader 16MHz e ora vedo che il parametro è 115200; poi tu stai parlando di "bootloader standard", ma ti stai riferendo alla versione presente nella cartella "standard"? perché io invece sto usando quello della cartella optiboot, così come previsto dalla board.

Se apri il pacchetto mightyhome trovi dentro alla cartella /bootloaders 2 ulteriori cartelle: optiboot e standard.
In optiboot c'è il bootloader Optiboot 4.5 modificato da maniacbug, mentre in standard c'è il bootloader derivato da quello della vecchia 2009.
Se vedi bene nel file boards.txt contenuto nel pacchetto mightyhome, la scheda "Original Mighty" usa il bootloader "standard" mentre sia la Mighty 1284 che la Bobduino usando il bootloader "optiboot".
Attento quindi a quello che hai usato.

Yes.

astrobeed:

[quote author=Michele Menniti link=topic=136740.msg1091351#msg1091351 date=1359309296]
devo svuotare la sola bootloaders per metterci i file che fornirai tu, giusto?

Yes.
[/quote]
optiboot, anzi Optimum!! :grin:

@ Leo: a me scappa da ridere a questo punto :smiley: io ho usato la prima board del file "Mighty 1284p 16MHz using Optiboot" che lavora a 115200 e usa "optiboot_atmega1284p.hex" che si trova in "optiboot", quindi è confermato che ho fatto la prova con il bootloader derivato dall'optiboot, come pensavo, infatti la memoria impostata è 130048, quindi riserva 1k, i conti tornano se non per il fatto che in questo caso a me il 1284P funziona con la R da 220K. Allora prima di andarmene faccio al volo una prova con la "Original Mighty 1284p 16MHz", cambio il bl e vediamo che succede :sweat_smile:

EDIT: prova fatta, ora posso usare la R da 120k, ergo lascerei il bl derivato dall'optiboot, visto che una R vale l'altra, mentre l'optiboot mi fa risparmiare 1k di flash.

Leo se proprio vuoi spippolare guardati la differenza tra questo optiboot e quello che stai usando tu, magari scovi il motivo per il quale a voi funziona ed a me no e magari risolvi pure. Aspettando Astro.......

Bene.....ho seguito questi ultimi post e pare proprio di essere arrivati,grazie alla collaborazione di astro,alla risoluzione dei problemi.
Purtroppo non posso essere di alcun aiuto in quanto questo genere di cose sono ancora un po troppo complicate per me,quindi attendo e seguo silenzioso. :slight_smile:

Senz'altro il passaggio all'uso dell'Optiboot è stato giustificato dal fatto di dimezzare il consumo di Flash rispetto al bootloader standard.

Leo se proprio vuoi spippolare guardati la differenza tra questo optiboot e quello che stai usando tu, magari scovi il motivo per il quale a voi funziona ed a me no e magari risolvi pure. Aspettando Astro.......

Sono 2 bootloader completamente differenti. Anche il bootloader della Mega è diverso (anche se simile a quello "original mighty"), però questo occupa 4 kB di Flash... Boh... aspetto cos'ha elaborato astro e poi vediamo come si casca :wink: