Go Down

Topic: Atmega328p 8Mhz stk500 sync dopo il primo sketch (Read 854 times) previous topic - next topic

Bartleboom

Salve a tutti!

Ho da poco caricato tramite porta parallela questo bootloader ATmegaBOOT_168_atmega328_pro_8MHz.hex con i fuse settati in questo modo: low_fuses=0xE2 high_fuses=0xD9 extended_fuses=0x07.

L'upload di sketch avviene tramite adattatore USB-Serial su breadboard.

Il primo upload va sempre a buon fine. Se voglio riuploadare lo stesso sketch subito dopo mi dà stk500_sync() error e quindi se voglio caricare un altro sketch devo riprogrammare il 328 ricaricando il bootloader.

E' normale tutto questo? E' un problema di fuse? Dovrei abilitare il Boot Reset Vector? Devo usare un altro bootloader tipo Optiboot? E' un problema di porte COM?

Non sono un tecnico e sarei grato se qualcuno mi aiutasse a capirci qualcosa.

Buona giornata!

<Bartleboom>

Michele Menniti

Ciao,
nemmeeno io sono esperto, ma quell'errore di solito è legato al reset; potresti provare a premere il pulsantino del reset prima di rifare l'upload, tanto per capire, poi nel frattempo qualcuno ti darà la soluzione certa.
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

Fusecal mi dice che con quei fuse metti il 328 a 1 MHz... (attivi l'oscillatore a 8 MHz e poi il divisore per 8), imposti la flash da riservare al bootloader a 2 KB ed il valore dell'extended fuse non è giusto....

Bartleboom

Leo, con lfuse = 0xE2 Fusecalc attiva l'oscillatore interno ma non divide per 8... Forse ti sei confuso...

leo72

Non avevo ripremuto bene "Apply values" una volta messi tutti i valori.
Cmq restano i problemi col il valore $07 per l'extfuse che non è a "norma" e lo spazio del bootloader impostato a 2 KB.

Potresti per favore spiegarmi alcune cose?
1) stai usando un Atmega standalone oppure rimetti il chip nell'Arduino?
2) se lo metti nell'Arduino, che Arduino usi?
3) parli di bootloader: quale usi?



Bartleboom

Ho cambiato vari valori dei fuse ma nemmeno va. In particolare con l'efuse ho provato 0x04 e 0x05.

1) Per fare il burn del bootloader uso la porta parallela collegata su Arduino Uno, il bootloader è quello che si trova nella cartella Arduino ATmegaBOOT_168_atmega328_pro_8MHz.hex

Una volta caricato il bootloader tolgo il chip dall'arduino e lo metto su una breadboard con usb-to-serial e basta. Come già detto il primo upload dello sketch (il blink) và a buon fine, i successivi mi da errore. Se provo a fare l'upload da Arduino Uno funziona bene...

A questo punto credo che ci sia qualcosa di sbagliato sulla breadboard. Ma è elementare, ho collegato i TX e RX del IC con quelli della usb-to-serial e poi collego l'alimentazione. Devo collegare qualcosa sul reset? Oppure è qualcosa sulla porta COM.


leo72

Ma per programmare un Atmega non puoi usare i pin RX/TX, quelli servono solo per il trasporto dei dati da e per Arduino (porta seriale).
Per programmare un Atmega devi usare un altro schema (vedi apposita discussione).

Bartleboom

Credo che il problema sia nell'adattatore USB-to-Serial ( questo: http://www.sparkfun.com/products/8165 ) che non fa l'autoreset. Se provassi a collegare il DTR dell'adattatore al Reset dell'atmega328?

leo72

Nella pagina di quel componente ad un certo punto leggo fra i commenti:
Quote
To program a arduino mini pro, add a 100nf cap between pin 4 (middle connector long side (connected to pin 2 on the ft232)) to the arduino reset pin. tx -> tx rx -> rx


Forse potrebbe adattarsi anche al tuo caso.



nikone

Guarda prova a cambiare approccio: potresti programmarlo usando avrdure-gui :
http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
qui invece al posto di bruciare il bootloader ci metti lo schetk come hex ,che ottieni mentre lo compili premendo shift, mentre poi setti i fuses come vuoi
Spero di aver aiutato   niko
Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

Bartleboom

Ho risolto, altro bootloader (Arduino mini pro) + autoreset. Grazie a tutti x l'aiuto!

Go Up