Non riesco a programmare ATmega644P

Non sballi nulla. La definizione del quarzo nella board virtuale serve solo a regolare le impostazioni dei timer.
Io ho usato un risonatore ceramico a 12 MHz per i primi test con il 1284P.

E se per assurdo provi con una breadboard ? ]:smiley:

Ho un quarzo da 8Mhz, adesso provo con quello.

Leo, ti sarei grato se mi riscrivi qua sotto la sequenza completa di tutte le prove possibili ed impossibili da fare, perchè ho perso un pò il filo...

Ho tutto smontato, con la Bord "bella" poggiata sopra una Breadboard comune, e sono pronto ad usarla come ponte per i passaggi resistenze-condensatori vari.

superzaffo:
E se per assurdo provi con una breadboard ? ]:smiley:

no, non coglioneggiare, gli fai perdere solo tempo! Bab però non ha scritto se ha fatto le varie prove col C in serie al reset e le varie opzioni R o RC, ha impostato il low fuse su F7? ne parlavamo ieri sera con Leo.
E non biasimatelo se perde la pazienza, vi assicuro che l'ultima volta mi era venuta voglia di vedere che effetto faceva un 1284P sotto l'effetto di una martellata, dopo averlo poggiato delicatamente sulla mia nuovissima morsa (sto allestendo un bel banco meccanico per lavori hard :D)
Bab, il problema di quella scheda, vista la problematica delle "distanze", potebbe essere proprio quel bellissimo ZIF, come il quarzo su "zoccolo", ecc.; io penso che la prova su millefori possa essere estremamente indicativa, ma comunque ormai nessuno mi toglie dalla testa che il problema sia esclusivamente di bootloader. Io penso che tutti coloro che si sono cimentati siano partiti dall'optiboot o dalla versione precedente e si siano preoccupati esclusivamente della funzionalità del micro, programandolo via ISP, che infatti è perfetta qualunque sia il bl usato, il resto è "culo" (pablos: fatti i zz tuoi :grin:) e purtroppo ho la sensazione di aver trovato qualcuno che ne ha ancora meno di me, non lo pensavo possibile. :frowning:

@ Bab: lascia perdere il quarzo da 8MHz, se metti la tua scheda su breadboard davvero non lo programmi nemmeno con un bazooka!

Io ho provato 3 configurazioni:

  1. senza nulla
  2. con C da 100pF fra RX0 e GND e R da 10K in serie al segnale che va al pin RX0
  3. con R da 175K in serie al segnale che va al pin RX0 senza C aggiuntivo

Come bootloader prova anche quello che ho allegato nelle ultime pagine dell'altro thread sulla programmazione dei 644. E' basato sul bootloader stk500 (quello usato dalla vecchia 2009) e, nonostante funzioni a 57600 bps, a me ha funzionato meglio dell'Optiboot 4.5

svariate volte hai parlato di 100pF NON nF, un errore o diverse combinazioni?

Grazie Michele e grazie Leo per la pazienza.

MA UNA DOMANDA!!! In condensatorino dopo la R da 10.000 Ohm per fare il filtro anti-rompiscatole-1284, non era da 100pF??? Adesso leggo che è da 100nF...

Ecco, mi sembrava!!

Meno male che ci sei tu a vegliare su di me :sweat_smile:
Ora correggo.

Cmq adesso carico il Bootloader Sanguino. Almeno una prima programmazione del Blink me lalasciava fare. Poi comincio con i tentativi.

Babbuino, una precisazione. Io di problemi ne ho più con il 1284 che con il 644.
Quest'ultimo con me fa meno lo str...zo dell'altro.

Sisi, sabato notte mi sono letto le 23 pagine del mega-post. Per questo che mi meraviglio a maggior ragione.

Cmq bootloader caricato, adesso metto il Blink...

Blink caricato ad 1 Hz. Adesso provo a 2 Hz.

Intanto date un'occhiata alla def di Board:

##############################################################
atmega644.name=Sanguino W/ ATmega644P via Bootloader
atmega644.upload.protocol=stk500
atmega644.upload.maximum_size=63488
atmega644.upload.speed=57600
atmega644.bootloader.low_fuses=0xF7
atmega644.bootloader.high_fuses=0x9A
atmega644.bootloader.extended_fuses=0xFF
atmega644.bootloader.path=atmega
atmega644.bootloader.file=ATmegaBOOT_168_atmega644p.hex
atmega644.bootloader.unlock_bits=0x3F
atmega644.bootloader.lock_bits=0x0F
atmega644.build.mcu=atmega644p
atmega644.build.f_cpu=16000000L
atmega644.build.core=arduino
##############################################################
atmega644.name=Sanguino W/ ATmega644 via ISP
atmega644.upload.protocol=stk500
atmega644.upload.maximum_size=65536
atmega644.upload.speed=115200
atmega644.upload.using=arduino:arduinoisp
atmega644.bootloader.low_fuses=0xF7
atmega644.bootloader.high_fuses=0xDF
atmega644.bootloader.extended_fuses=0xFF
atmega644.bootloader.path=atmega
atmega644.bootloader.file=ATmegaBOOT_168_atmega644p.hex
atmega644.bootloader.unlock_bits=0x3F
atmega644.bootloader.lock_bits=0x0F
atmega644.build.mcu=atmega644p
atmega644.build.f_cpu=16000000L
atmega644.build.core=arduino

Sembrano a posto, varia sempre l'HFuse visto che ogni bl ha la sua capienza, ma con il low a F7 siamo a posto

Ultimo tentativo è stato di estrarre il 644 dalla board "bella" e buttarlo stand alone su una breadboard, con tutti i componenti di contorno.

Niente da fare. Carica bene il Bootloader, carica il 1° Blink via seriale, ed al secondo si pianta. Provati 2 ATMega644 ed entrambi hanno lo stesso comportamento.

Per ora ci rinuncio...

Mah...Io ho usato il bl di Leo e nelle board di testo vedo che per il caricamento in ISP si utilizza la velocità di 19200 mentre per caricamento tramite bootloader la velocità sale a 115200.
Queste sono le differenze ma non credo sia questo il problema.

Io ti posso dire che ho usato il C da 100nf in serie con il la linea di reset e la R in pull-up... tra l' altro il quarzo nella breadb. non è neanche tanto vicino al micro.
Ora nella Bread ho collegato la micro 5 sensori di tutti i tipi e anche un port expander i2c e una micro sd via ISP, funziona tutto a meraviglia.. (per il momento) ]:smiley:
Cosa ti dice il led nel pin2 e con il boot loader di Leo ?

Ciao

Ciao,
potrei dire cose già dette o castronate, non son ancora riuscito a leggermi tutte le pagine del thread...

Per ora la parte di caricamento del bootloader me la son schivata: ho un paio di ATMega644p già con bootloader sanguino.
Ieri sera ho dovuto aggiornare con nuovo firmware uno di questi.
Sono su board Sanguinololu - c'è un convertitore ftdi e quarzo 20mhz

In ogni caso, modificando il file boards.txt e impostando (riporto solo i cambiamenti):

atmega644.upload.protocol=arduino
atmega644.upload.speed=38400

il caricamento dello sketch avviene senza problemi (se non consideriamo il giochetto del tasto di reset tenuto premuto prima dell'upload).

@pitusso:
mettendo 38400 però dovresti ricompilare il bootloader per lavorare a quella velocità. Il bootloader AtmegaBOOT lavora a 57600 mentre l'Optiboot 4.5 a 115200.

@babbuino:
fai un'ultima prova. Prova con il filtro RC e non usare jumper per fare il collegamento tra pin del convertitore e pin RX0 del micro ma utilizza la stessa resistenza come ponticello. Sembrerà una scemenza ma a me ha funzionato. In pratica ci deve essere la minor distanza possibile da percorrere.