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

sbaglio o abbiamo un Latitante :D?

Mi pare :wink:

Ti aggiorno su un paio di cose:

  1. il bootloader Atmegaboot che ti ho passato ha un bug. Nell'intento di implementare un timeout basato sul watchdog come l'Optiboot, mi sono dimenticato del reset del medesimo se parte la programmazione :sweat_smile: :sweat_smile:
    In allegato trovi la versione corretta. Essa resta in ascolto per 2 secondi (il bootloader originale attende 6/7 secondi) prima di avviare lo sketch se nulla arriva dalla seriale.
  2. devo correggere le prime analisi che avevo fatto su questo bootloader. Esso, senza R sulla linea che va al pin RX0, non funziona. Se lo sketch da programmare è breve (tipo un paio di KB), non ci sono problemi. Ma se si spedisce uno sketch che sia grande (bastano anche 15/16 KB) allora ad un certo punto la programmazione si ferma con un errore di verifica. Inserendo la R, invece, la programmazione termina senza problemi.

Ah, parlando sul forum internazionale, hanno precisato una cosa a cui io lì per lì non avevo dato peso. La R da sola in realtà non è... da sola. Crea comunque un filtro RC con l'impedenza interna del GPIO.
Inoltre qui:

Trovi delle analisi fatte all'oscilloscopio di cosa arriva sul pin RX0 con varie combinazioni di C, R e loro assenza.

ATmegaBOOT_1284P.hex (5.03 KB)

Ma se devo comunque mettere la R in serie perché mi fai provare questo bl? cosa dovrebbe avere di migliorato rispetto a quello che sto usando già?
Leggendo il link di Nick Gammon (il tipo che stiamo seguendo anche per il GLCD) ho visto che lui usa 2 C da 18pF invece dei 22pF, magari l'influenza sulla frequenza dell'oscillatore potrebbe in qualche modo.... lui non usa nulla e dice che programma :sweat_smile:

Giusto per curiosità, per capire quale sia più affidabile. Io mi rendo conto che fra l'Optiboot 4.5 e l'ultimo che ti ho passato, è questo quello che a me funziona meglio.

ok, però io finora ho testato solo il blink, quindi devo ripetere i test con sketch più grandi :sweat_smile:
Allora, attualmente io ho la cartella originale di maniacbug di giugno 2012, l'unica che mi abbia dato effetti positivi, mentre l'ultima versione a me non ha mai funzionato.
Domanda stupida, giusto per capire di che stiamo parlando: questi due che mi stai facendo testare (c'è anche l'altro a 57600) da dove derivano?

Dalla cartella di maniacbug, bootloaders, cartella atmega.
Lì dentro c'è il sorgente di un bootloader elaborato dal codice dell'stk500v2, che è il bootloader originale da cui sono nati quello per la 2009 e la Mega.
Io l'ho preso, ci ho aggiunto il timeout basato sul watchdog, e l'ho ricompilato. stop.
Quindi come bootloader è in pratica più simile a quello della MEGA2560 come diceva Astro, e non ha nulla a che spartire con l'Optiboot.

ok :slight_smile:

Risultati delle prove odierne, ASPETTANDO ASTROBEED :smiley:

1 - i due bootloader di prova non vanno
2 - rimesso il precedente optiboot "originale" tutto ok
3 - il bootloader nuovo (quello che state usando voi) a me funziona solo sul 644P
4 - entrambi i bootloader (opti e standard) della precedente versione mi programmano il 1284P ma non il 644P perché non c'è un bootloader specifico e nemmeno la board (ovviamente evito di mettere mano per non aumentare la confusione).

Pomeriggio mi sono rientrati i due MCP2200, confermo le maggiori difficoltà di questo chip rispetto all'FT232RL, laddove l'FT non sbaglia un colpo, i due MCP ne sbagliano parecchi, arriverei a dire che non vanno... Sui due MCP2200 potrei ancora fare delle prove, p.es. eliminando del due R da 1k in serie a tx e rx e la r da 22k di pull-up sull'rx, ma mi piacerebbe avere il parere di Astro, e molto più mi piacerebbe avere il suo Bootloader per 644/1284. Il ritardo è molto strano, considerando che è uno che le promesse le mantiene sempre; forse ha replicato le nostre prove ed ha incontrato qualche difficoltà anche lui :sweat_smile:
domenica pomeriggio sono di nuovo qui, intanto oggi mi è arrivata la lampada di Aladino, spettacolare!, non vedo l'ora di provarla seriamente saldando il PCB che mi è appena arrivato, ma mi pare che sia davvero eccezionale. XD XD

A voi la parola....

  1. i bootloader che ti ho spedito io vanno solo su 1284, non l'ho compilato per 644. Ma l'intenzione era appunto quella di iniziare ad utilizzare il chip più "grosso"
  2. se ti serve un bootloader per il 644, nel mio package ce n'era uno basato sull'Optiboot 4.5. Bastava flasharlo direttamente dall'IDE
  3. non posso fare confronti fra MCP2200 e FT232
  4. che cos'è la lampada di Aladino??? è tipo la sfera di cristallo di Uwe? :stuck_out_tongue_closed_eyes:

leo72:

  1. i bootloader che ti ho spedito io vanno solo su 1284, non l'ho compilato per 644. Ma l'intenzione era appunto quella di iniziare ad utilizzare il chip più "grosso"

No, alla fine decido di aspettare una risposta definitiva di Astro, se lui decide di fornirmi un bootloader funzionante come si deve risolvo tutti i problemi, in caso contrario, ma "tanto per", ho il bl nuovo del 644 che mi funziona con la R, ed il bl vecchio del 1284 che mi funziona sempre con la R, anche se non ho fatto prove approfondite con sketch lunghi, ma detto questo all'occorrenza vado di ISP, ormai i piani sono cambiati....

  1. se ti serve un bootloader per il 644, nel mio package ce n'era uno basato sull'Optiboot 4.5. Bastava flasharlo direttamente dall'IDE

no, come spiegato sopra, sono a posto, anche se preferirei una versione funzionante al 100%

  1. non posso fare confronti fra MCP2200 e FT232

non ha importanza, con il 328 l'MCP2200 va una meraviglia, è giusto una mia curiosità, ma possso agire solo su tre R implicate nel collegamento, mi piacerebbe anche qui il parere di Astro il quale però, e giustamente direi, nel momento in cui addebita tutto al bootloader non vedrà alcun problema reale, e quindi non lo vedo nemmeno io :wink:

  1. che cos'è la lampada di Aladino??? è tipo la sfera di cristallo di Uwe? :stuck_out_tongue_closed_eyes:

sì, tipo, la sfera di Uwe gli fa vedere le cose invisibili, la mia lampada di Aladino mi fa vedere finalmente i componenti smd ed i relativi PCB, senza dover fare contorsioni con e senza occhiali. E' una belva con 64 LED messi attorno ad una lente che ingrandisce in modo eccellente e mi permette di lavorare con precisione su questi componenti che per la mia vista sono davvero piccoli. IN più ho preso una pedana a rotelle che, assieme ai bracci snodabili della lente mi permette di non avere intralci sul tavolo XD

sì, tipo, la sfera di Uwe gli fa vedere le cose invisibili, la mia lampada di Aladino mi fa vedere finalmente i componenti smd ed i relativi PCB, senza dover fare contorsioni con e senza occhiali. E' una belva con 64 LED messi attorno ad una lente che ingrandisce in modo eccellente e mi permette di lavorare con precisione su questi componenti che per la mia vista sono davvero piccoli. IN più ho preso una pedana a rotelle che, assieme ai bracci snodabili della lente mi permette di non avere intralci sul tavolo

Maa.......la devi accarezzare per farla accendere??? :grin:

no, però ieri sera quando l'ho dovuta spegnere per andare via me la sono abbracciata e sbaciucchiata, prossimo appuntamento d'amore domani pomeriggio :*

Ma.. alla fine, dalle prove fatte, quale è il modo migliore per programmare il 644/1284 via seriale ?
Con tutte ste prove che avete fatto mi sono un po' perso :smiley: :*
Naturalmente aspettando Astro...

Riassumo brevemente, anche alla luce di quanto affermato ultimamente nella sezione internazionale.

Il problema di questi chip sembra che risieda nella vicinanza del pin RX0 al pin XTAL1 del chip. Il pin XTAL1 è quello più importante dei 2 a cui si collega il quarzo. Stranamente, rispetto ad esempio all'Atmega328, la coppia di pin XTAL1/2 è stata invertita, così che XTAL1 sia accanto al pin RX0. Se ci fosse stato il pin XTAL2 ci sarebbero stati meno problemi. Un altro problema deriva dai fuse. Impostando il fuse basso per un clock esterno in realtà si abilita il micro ad attendersi un segnale di clock sul pin XTAL1, con tensioni e corrente interne basse, passibili di interferenze esterne. Usare quindi il valore $FF non è una buona idea. In diversi hanno suggerito l'uso del fuse $F7, che abilita il micro ad usare un cristallo esterno ("full swing"), gestito tramite dei segnali con più corrente in modo che siano un po' più insensibili ai disturbi arrecati dal flusso di dati che può transitare sul pin RX0.
In diversi hanno detto che usando questo valore per il fuse hanno risolto i problemi di programmazione usando l'Optiboot 4.5 modificato da maniacbug. In diversi concordano poi che la breadboard non è la soluzione migliore per eseguire questo genere di test per via della capacità parassita delle sue piste. In diversi hanno poi suggerito di evitare di far passare i segnali sui 2 pin XTAL1 e RX0 molto vicini, su un PCB, e di usare un piano di massa intorno ai pin del cristallo..
Io tutte queste prove non posso farle, non producendomi i PCB in casa.

Questa la teoria... adesso la mia pratica.
Io senza la R sulla linea RX0 non riesco a programmare il chip, anche usando il valore $F7 per il fuse basso. Ed usando il bootloader standard, quello a 57K, perché con l'Optiboot e la sola R non riesco, devo usare l'accoppiata R+C.

Insomma, un gran casino.

Azz.. quindi per fare dei veri test, si dovrebbe fare un pcb specifico prestando molta attenzione a interferenze e spurie varie.
Ma la configurazione (usb-serial converter-R-C) migliore, per te, qualè ?

Io non ho molta scelta, ho usato solo l'Atmega8U2 della UNO.
Quindi non faccio casistica :sweat_smile:

ok...
vediamo cosa dice Michele, le sue considerazioni...

se mi date il tempo...ecco la mia.....
Con l'unico bootloader per 644 (chiamiamolo quello "di Leo" per capirci, visto che si può scaricare anche dal suo sito) io riesco a programmare con la famosa resistenza.
Per programmare il 1284 invece devo ricorrere alla versione di giugno 2012 (sempre maniacbug), sia standard che optiboot, in entrambi i casi devo usare la resistenza.
Ho fatto a suo tempo la prova con il generatore di clock esterno a 16MHz, una bella onda quadra a 5V applicata all'XTAL1 con fuse $F7, senza alcun risultato positivo. Non credo troppo alle prove "PCB" anche se proprio in questi giorni sto sperimentando la notevole differenza di comportamento di un circuito "serio" montato su breadboard o su PCB. Credo piuttosto che ci siano problemi di tempistica di questi micro, che variano anche da lotto a lotto, e che nelle migliaia di prove fatte dagli utenti, alcuni abbiano trovato una propria soluzione, che però spesso non funziona agli altri.
In definitiva concordo con Astrobeed, il problema è nel bootloader. Se così non fosse la prova che mi ha fatto fare il supporto ATMEL (estremamente disponibile!) non sarebbe andata a buon fine, invece se carico via ISP un qualsiasi programma che fa uso anche intenso della seriale funziona tutto a meraviglia, quindi non c'è assolutamente alcuna influenza reciproca tra XTAL1 e RX0.
Astrobeed è una persona seria, quindi se non ci ha fornito il bootloader che ci aveva promesso è perché alla fine anche lui probabilmente sta avendo gli stessi problemi nostri e sta cercando di risolverli, compatibilmente con le altre mille cose che ha da fare.
L'unica cosa strana è che non ci abbia aggiornati, ma non sarò certo io a rompergli i maroni, l'ho già fatto fin troppe volte in passato, e solo quando altri hanno cominciato a fare lo stesso con me ho capito cosa significava :grin:
Tanto lui questi interventi li legge di sicuro, quindi sta a lui intervenire o meno.......

@ sz: ho usato indifferentemente 8u2, MCP2200 e FT232RL, sai il migliore qual è? il PL2303, un chippetto che si trova nei vecchi cavi USB Nokia, l'unico col quale ho programmato il 644 perfino senza resistenza; l'ho messo da parte perché è un TSSOP, scomodissimo da saldare, e perché non voglio legare l'idea di funzionamento a qualcosa di obbligato, quando siamo in uno standard.

Devi considerare la capacità "parassita" introdotta dai circuiti interni del MCU, quidi una R da 120K, con qualche decina di picoFarad (stima a naso) in parallelo, possono certamente ritardare un segnale in maniera misurabile.

Comunque sia nel precedente post ho descritto i miei risultati, visto che tu ne hai aperto un altro provo a rispondere lì per vedere se sei nelle mie stesse condizioni, però il 644 lo abbiamo programmato tutti, in un modo o nell'altro.....