programmare arduino a 1 mhz

ciao, premetto che ci ho perso tutta la giornata, oggi sono riuscito a mettere l'attiny85, a 8 mhz e a 1 mhz. poi sono riuscito a mettere l'atmega a 8 mhz e funziona. ora invece mi sono perso con quello a 1mhz

questo è quello che ho aggiunto

atmega328_1Mhz.name=ATmega328P 1MHz
atmega328_1Mhz.upload.protocol=stk500
atmega328_1Mhz.upload.maximum_size=30720
atmega328_1Mhz.upload.speed=57600
atmega328_1Mhz.upload.using=arduino:arduinoisp
atmega328_1Mhz.bootloader.low_fuses=0x62
atmega328_1Mhz.bootloader.high_fuses=0xdf
atmega328_1Mhz.bootloader.extended_fuses=0x07
atmega328_1Mhz.bootloader.path=optiboot
atmega328_1Mhz.bootloader.file=optiboot_atmega328.hex
atmega328_1Mhz.bootloader.unlock_bits=0x3F
atmega328_1Mhz.bootloader.lock_bits=0x0F
atmega328_1Mhz.build.mcu=atmega328p
atmega328_1Mhz.build.f_cpu=1000000L
atmega328_1Mhz.build.core=arduino

e mi fa caricare tranquillamente il bootloader invece il problema sorge quando cerco di caricare un schetch... allora mi parte, prova codifica e poi carica, quando carica vedo accendersi 3 volte il TX dell'arduino e poi dopo un po' mi da not in sync. allora poi pensando ho provato a fare con l'arduino come isp, collegando i pin 10,11,12,13 ai pin ecc come per il bootloader, a questo punto carico e mi da questo avrdude: stk500_getsync(): not in sync: resp=0x1c

per favore ho provato di tutto, in maggior parte a cambiare i vari parametri nel pezzo boards.txt, ma non so cosa fare, ho provato a cercare in giro ma niente...

Hai impostato i fuses corretti? Ma tu vuoi l'oscillatore interno o esterno?

interno a 1 mhz, i fuses quelli ho trovato, ma ne ho provati diversi. se hai quelli giusti passameli che li provo

Non basta mettere il chip a 1 MHz, devi anche ricompilare il bootloader per lavorare a questa frequenza, altrimenti vai fuori sincronia. Anzi, è un miracolo che il bootloader compilato a 16 MHz abbia funzionato a 8 MHz ;)

Devi andare nella cartella /hardware/arduino/bootloaders/optiboot e ricreare la voce per il chip a 1 MHz, salvare e ricompilare. Se hai Linux fai tutto velocemente, se hai Windows ti servono degli strumenti ma non so dirti quali che non ho questo sistema operativo.

Ma ti serve proprio avere il bootloader? altrimenti ti basta usare la board a 1MHz e fare l’operazione di caricamento del bootloader, in modo da cambiare i fuses, naturalmente tale bl non ti funzionerà correttamente, ma potrai poi caricare gli sketch direttamente, peraltro sfruttando l’intera memoria flash.
Il problema attuale è che se il tuo micro in questo momento ha i fuse per lavorare con l’oscillatore esterno e tu vuoi settare quello interno, questa fase di programmazione la devi fare COMUNQUE usando quarzo e condensatori esterni (non ha importanza il valore), altrimenti il micro non riesce a lavorare, probabilmente il tuo problema è proprio quello ora.

ah guarda cercavo proprio te! infatti è seguendo la tua guida che sono arrivato a questo punto... cioè non ho capito che significa che a 8 mhz è già un miracolo che funziona... cmq il chip ha già ricevuto sia il bootloader a 16 mhz sia a 8 mhz, quindi ora sto cercando di riportarlo a 1 mhz...(sto facendo varie prove) ho provato anche con quarzo e condensatori, ma niente, sempre solito problema, il bootloader carica ma lo sketch no. caricando direttamente gli sketch significa usare arduino as ISP e attaccare tutto come si carica il bootloader no? già provato stesso problema...

poi pensando ho provato a fare con l'arduino come isp, collegando i pin 10,11,12,13 ai pin ecc come per il bootloader, a questo punto carico e mi da questo avrdude: stk500_getsync(): not in sync: resp=0x1c

inoltre a parte il fatto che prima era settato a 8 mhz e quindi già usava quello interno, il BOOTLOADER carica tranquillamente!!

ecco invece leo72 mi ha fatto notare questa cosa, ricompilare il bootloader per farlo lavorare a questa frequenza... come si fa? qualcuno l'ha mai fatto? non ci sono bootloader già sfornati? gli attiny mi sembra che avevano proprio la cartella variants dentro con tutti i bootloader, ma degli atmega non riesco a trovare niente!....

sai mi sa che ho capito quale era il problema.... un semplice tasto cliccato male sul ide... in pratica sbagliavo nella tecnica per mandare i dati con l'ISP con l'ide 1.0.1 in poi... il fatto che quel punto sia scritto praticamente solo una volta in tutta la guida e per giunta in un capitolo a parte specifica... si quel bottone carica con un programmatore... a volte è proprio utile staccare tutto per qualche ora e rileggere tutto d'accapo

invece per la tecnica seriale ancora nessun risultato...

Dimensione del file binario dello sketch: 1.102 bytes (su un massimo di 30.720 bytes)
avrdude: stk500_getsync(): not in sync: resp=0x00

Per la tecnica seriale ti serve il bootloader ricompilato a 1MHz. Non ci sono altre vie. ;)

euge95: inoltre a parte il fatto che prima era settato a 8 mhz e quindi già usava quello interno, il BOOTLOADER carica tranquillamente!!

Non avevi specificato che usassi un bootloader già compilato ad 8 MHz.

ecco invece leo72 mi ha fatto notare questa cosa, ricompilare il bootloader per farlo lavorare a questa frequenza... come si fa? qualcuno l'ha mai fatto? non ci sono bootloader già sfornati?

Ma che SO hai?

gli attiny mi sembra che avevano proprio la cartella variants dentro con tutti i bootloader, ma degli atmega non riesco a trovare niente!....

Sono bootloader finti, vuoti, inutili... servono solo per poter cambiare i fuse usando l'IDE quando si usa il comando "scrivi bootloader".

PaoloP: Per la tecnica seriale ti serve il bootloader ricompilato a 1MHz. Non ci sono altre vie. ;)

Appunto...

C'è un piccolo problema di fondo che non avete preso in considerazione, a 1 MHZ non è possibile lavorare a più di 9600bps (19200 è già fuori specifiche) sulla seriale, vedere tabella al capitolo 20.10 (Examples of Baud Rate Setting) del datasheet. L'IDE programma a 115200 bps se si usa l'optiboot e a 57600 se si usa il bootloader della 2009, ovvero è impossibile programmare un micro con clock minore di 8MHz da IDE tramite il bootloader.

E se nel board.tx mettesse

atmega328_1Mhz.upload.speed=9600

risolve?

PaoloP: E se nel board.tx mettesse

atmega328_1Mhz.upload.speed=9600

risolve?

Tocca provare, forse si forse no.

Ma sempre bisogna ricompilare il bootloader a 1MHz.

@ euge95: la Guida è nata nel pieno splendore dell'IDE 0022/23, in quest'ultima versione ho aggiunto un capitolo specifico per l'1.0.x, credo di aver enfatizzato la cosa nell'introduzione. Effettivamente c'è tanta roba e di fronte ad un qualsiasi problema conviene sempre prendersi una pausa di riflessione e rileggere le istruzioni, comunque l'importante è che tu abbia risolto.

grazie ragazzi, comunque adesso che ho risolto mi sto infilando con atmel studio 6, per ora sono riuscito a caricare un po' di sketch e per ora va tutto bene... vediamo...(anche se i fuse bits li sto settando ancora con il "bootloader" di arduino)

ah una cosa, io su atmel studio sto uploadando a 19200 sull'attiny a 1 mhz e non mi sta dando nessun errore, mentre su arduino a 115200. è il mio solito culo che poi mi porta a non capire i problemi dopo o cosa?

Sugli Atmega328 stai dialogando con l’Optiboot, che è compilato per lavorare di default a quella velocità, per cui l’IDE dialoga con il bootloader che poi pensa a scriverli in Flash.
Sui Tiny, invece, il bootloader non c’è e la programmazione va fatta con la tecnica ISP tramite la porta SPI e l’IDE lavora a 19200 per cui devi usare quella velocità.