atmega 328 standalone: BOD e clock

Redazione Voyager - Via Umberto Novaro 18 – 00195 Roma Se invece vuoi scriverci via email, il nostro indirizzo è: voyager@rai.it E puoi sempre contattarci e rimanere aggiornato seguendo la nostra pagina ufficiale su Facebook

:grin:

Paolo, la prossima volta consiglia la realizzazione del mio Programmatore ISP: non esiste blatta ATMEL in formato PDIP che non si possa programmare col mio progetto ;) @ ricdata: il mio dubbio è che forse non hai tenuto conto del fatto che la Guida è fatta per l'IDE 0022, mentre per l'IDE 1.0.x occorre approfondire il capitolo di aggiornamento specifico: i collegamenti sono esatti quindi secondo me tenta di programmare il micro della board programmatore, problema che ovviamente non esiste se usi la Mega in quanto il micro è totalmente differente ed allora per la procedua è chiaro che vuoi programmare il micro su bread. Sul BOD ti hanno dato spiegazioni ampie, comunque a me con FF dava semrpe errore richiedendo 07 ed ecco perché alla fine l'ho lasciato come default e problemi non ne ho MAI avuti. Il Brown-out Detector controlla il valore dell'alimentazione, serve per evitare che essa scenda sotto un valore minimo, da settare in base alla prestazioni del micro. Quindi puoi disabilitarlo, come ho fatto io, o impostarlo ad un valore compatibile con l'alimentazione alla quale fai lavorare il micro (il data-sheet ti indica i range di funzionamento specifici per le varie frequenze). Un solo dubbio sciocco.... ma i 5V e GND di cui parli nei collegamenti provengono dalla board Arduino o da un'alimentazione esterna ad essa? Ancora: i GND della bread sono collegati al GND di Arduino programmatore?

salve prof, prima di tutto un doveroso ringraziamento per la stupenda guida.

eliminiamo subito il dubbio sull'alimentazione: non ho usato alimentatori esterni, ho collegato tutto alla board programmatore. ho tenuto anche conto che la guida è per l'ide 022, anche se la procedura è praticamente uguale a parte il fatto di dover selezionare "arduino as ISP" come programmatore (che sulla 022 non c'è).

il problema del caricamento del bootloader al momento è risolto anche se, tra tutte le varie tecniche descritte nella guida, la sola che per me ha avuto successo è quella ISP con MEGA come programmatore e chip da programmare su UNO (pag 16). con le altre tecniche ho sempre ricevuto l'errore riportato nei post precedenti.

nota dolente, è che ora sto avendo problemi anche con il caricamento dello scketch: con il chip caricato con bootloader a 16 mhz nessun problema, riesco a caricare gli sketch con tutte le tecniche, invece con bootloader a 8mhz ricevo il seguente errore in fase di compilazione (anche con altri sketch è lo stesso):

"In file included from Blink.ino:10: /home/xxx/arduino-1.0.5/hardware/arduino/cores/arduino/Arduino.h:213:26: error: pins_arduino.h: File o directory non esistente"

è tutto il pomeriggio che provo, ma non ne ho cavato un ragno dal buco. ho seguito alla lettera il capitolo "programmare atmega328 stand alone configurato a 1-8mhz" sia con la tecnica seriale che ISP, tenendo sempre presente che:

se una qualsiasi operazione su chip a 8MHz/1MHz non va a buon fine è molto probabile che non si riesca più a programmarlo con la breadboard minimal, bisogna quindi ripartire dal caricamento del bootloader con breadboard standard o con Arduino target.

in aggiunta ho provato anche con un convertitore usb/seriale (originale arduino): con bootloader a 16mhz funziona, a 8 mhz ho lo stesso errore riportato sopra. non so più cosa fare...

ricdata: in fase di compilazione (anche con altri sketch è lo stesso): "In file included from Blink.ino:10: /home/xxx/arduino-1.0.5/hardware/arduino/cores/arduino/Arduino.h:213:26: error: pins_arduino.h: File o directory non esistente"

Questo sembra un errore dovuto alla board virtuale. il file pins_arduino.h cambia in base alla "variante". Aggiungi questa riga alle tue board.

nomeboardvirtuale.build.variant=standard

Concordo con Paolo, ed è a quello che mi riferivo, le board virtuali per 1.0.x sono diverse da quelle per 0022 (e il capitolo a cui fai riferimento è sempre per 0022, a mia memoria), avendo alcune righe in più (p.es. la variant) ed altre mancanti (p.es. l'indicazione del programmatore); nella Guida, al capitolo specifico, dovrei aver spiegato questa cosa, prova a ricontrollare, sono sicuro che nel tuo caso si tratta di una cosa da nulla, un particolare che ti sta sfuggendo...

Pensa che le board per la 1.5.x sono ancora diverse. :grin: Ci ho studiato sopra per far funzionare il core Tiny sulla 1.5.5.

grazie Paolo, in effetti inserendo quella riga l'errore si è risolto, ma ho avuto altri errori vari tra cui il sync che non sono riuscito a risolvere. ho quindi deciso di tentare con la 022 su win7 (la 022 su linux non mi funziona, manca un qualcosa relativo a java che non sono stato ad approfondire). ....e finalmente ho avuto successo!! fiuuuu :D sempre tramite tecnica ISP. ora, se fosse possibile, mi farebbe un gran comodo poter caricare gli sketch tramite seriale in modo da avere a portata di mano il serial monitor senza cambiare i collegamenti ogni volta, ma dalle prove che ho fatto non funziona, sia con il convertitore usb/serial, sia con l'arduino senza chip. l'ide restituisce questo errore: avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

mi è venuto in mente che potrebbe essere causato dal fatto che nella board virtuale c'è questo: mega3201.upload.using=arduino:arduinoisp possibile? se è così è possibile impostare la seriale? ho cercato documentazione per la creazione delle board virtuali, ma non ho trovato nulla, forse Paolo che se l'è già studiata mi può indicare qualcosa?

vi ringrazio infinitamente e auguro un nuovo anno migliore per tutti! :)

Per la 0023 devi usare

xxxx.upload.protocol=stk500

con la 1.0.5

xxxx.upload.protocol=arduino

con la 1.5.5

xxxx.upload.tool=avrdude
xxxx.upload.protocol=arduino

Prova a commentare la riga

xxxx.upload.using=arduino:arduinoisp

la seriale continua a non andare. ora ho un problema di compatibilità tra ide 1.5 e 022 ho sviluppato lo sketch con 1.5, solo che ora mi tocca caricarlo con la 022. la libreria Mirf include Arduino.h che sulla 022 non c'è... cosa si può fare? c'è un equivalente sulla 022?

Aggiungi

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
  #include <pins_arduino.h>
#endif

Oppure cerca una vecchia versione.

buona la prima, grazie Paolo :)