problema con scrittura del bootloader su atmega328P

ciao a tutti,
sono andrea ed è il mio primo intervento qui sul forum, dove ho sempre trovato la soluzioni alle mie domande su Arduino.
Stavolta no e quindi vi spiego cosa accade:
la mia configurazione è
ubuntu 10.04
arduino UNO
un atmega328p montato su breadboard e connesso all'arduino secondo lo schema presente nel tutorial presente qui:

con aggiunto la disabilitazione del reset connettendolo con resistenza e condensatore secondo il tutorial presente qui:
http://www.michelemenniti.it/VHD/Elettronica/GPAT_v3.pdf

Ho seguito alla lettera il tutorial di menniti ed ottengo, al momento del burning del bootloader l'errore:
avrdud: stk500_recv(): programmer is not responding
non preceduto da nessuna altra indicazione.

La dinamica è questa:
avvio la scrittura del bootloader
iniziano a lampeggiare i led rx tx per qualche secondo
poi si spengono e rimane tutto li ed esce l'errore

il tentativo è stato ripetuto anche bootstrappando con windows e ho provato con due chip, di cui uno usato e perfettamente funzionante.

per cercare di capire meglio ho lanciato l'avrdude da riga di comando per vederne l'output.

primo comando, per i fuse:
avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m

che va a buon fine (non posto l'output sennò il sistema mi dice che questo post è troppo lungo)

e poi il secondo comando di scrittura del bootloader vero e proprio

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p m328p -v -e -U flash:w:ATmegaBOOT_168_atmega328.hex -U lock:w:0x0F:m

ed ecco l'output

avrdude: Version 5.10, compiled on Mar 23 2010 at 15:03:00
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/andrea/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/ttyACM0
Using Programmer : avrisp
Overriding Baud Rate : 19200
AVR Part : ATMEGA328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


eeprom 65 5 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : STK500
Description : Atmel AVR ISP
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.13s

avrdude: Device signature = 0x1e950f
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D6
avrdude: safemode: efuse reads as 5
avrdude: erasing chip
avrdude: reading input file "ATmegaBOOT_168_atmega328.hex"
avrdude: input file ATmegaBOOT_168_atmega328.hex auto detected as Intel Hex
avrdude: writing flash (32670 bytes):

Writing | ############################################### | 94% 0.00savrdude: stk500_recv(): programmer is not responding

l'unica cosa che sin da subito non mi sconfinfera tanto è la riga
Oscillator : Off
che a naso mi sembra indichi che non viene utilizzato il quarzo esterno (invece presente e settato l' lfuse per vederlo).

Avete qualche idea o suggerimento?

Grazie
Andrea

no, quello credo che significhi cheil programmatore non deve fornire lui il clock al micro.
...comunque è strano perchè la programmazione e il dialogo con il micro iniziano.

Ok, intanto grazie per il chiarimento sul clock.
Si, la comunicazione inizia e l'errore che avrdude restituisce non e' quello tipico dell'autoreset che la interrompe...
Mi ci sto arrovellando da qualche giorno ma non ne vengo proprio fuori!

Il bootloader della UNO, l'Optiboot, è scritto per stare in 512 byte di flash e si chiama optiboot_atmega328.hex mentre tu usi il bootloader della 2009, che occupa 2048 byte. Però tu riservi solo 256 word (512 byte) per il bootloader. Intanto correggi questo.

Poi ti consiglio di flashare usando avrdude e avrdude.conf forniti con l'IDE di Arduino, usando il secondo come file di configurazione.
Quindi portati in /hardware/tools e riscrivi i comandi così (tenendo conto dei punti e degli slash):

./avrdude -C ./avrdude.conf -P /dev/ttyACM0 -b 19200 -c stk500 -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
./avrdude -C ./avrdude.conf -P /dev/ttyACM0 -b 19200 -c stk500 -p m328p -v -e -U flash:w:../hardware/arduino/bootloaders/optiboot/optiboot_atmega328.hex -U lock:w:0x0F:m

Riprova così.

Oggi avevo fatto la prova con optiboot che vedevo che era meno grosso, e infatti l'errore non avveniva piu al 47% della scrittura ma al 95%.
Domani riprovo con le dritte che mi hai suggerito.
Grazie.

Soprattutto ricontrolla che l'operazione sui fuse vada a buon fine e che il quarzo sia montato correttamente con i giusti condensatori. Prova anche abbassando la velocità di trasferimento a 9600 baud.

ok,

Però tu riservi solo 256 word (512 byte) per il bootloader. Intanto correggi questo.

purtroppo non so come aumentare questo spazio per il bootloader.
Che valore dare ad efuse ? (se poi di questo si tratta)
puoi chiarirmi meglio?

Grazie

Mentre aspetto lumi ho provato a documentarmi il più possibile per risolvere il problema di ingrandire lo spazio dedicato al bootloader.
Nel farlo ho trovato questo tool interessante, che rendo pubblico qui per altri principianti come me:

http://www.engbedded.com/fusecalc/

ho testato i valori che il tool tira fuori variando i parametri dei bit BOOTSZ0 e BOOTSZ1 ma non ho risolto nulla.
Aspetto qualche vostra notizia.
Grazie
Andrea