Atmega standalone senza quarzo

salve,

avrei bisogno d’aiuto; vi spiego:

sto tentando di usare un atmega 328p standalone su una breadbord, senza nessun componente aggiuntivo (condensatori, quarzi, resistenza di pull-up su reset) si DOVREBBE poter fare, l’ho letto qua http://arduino.cc/en/Tutorial/ArduinoToBreadboard in fondo alla pagina.

Ho seguito la guida al link sopracitato ma dopo aver scaricato il file boards.txt riavviato l’IDE, selezionato la piattaforma corretta dal menu strumenti, cerco di compilare l’esempio BlinkWIthoutDelay dagli esempi dell IDE e mi dice:

“”"
Erorre durante la compilazione.
In file included from BlinkWithoutDelay.cpp:2:
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Arduino.h:213:26: error: pins_arduino.h: No such file or directory
“”"
secondo voi che potrei fare? (non ho problemi ad usare un comune UNO, quindi l’IDE funziona)

Grazie!

http://arduino.cc/forum/index.php/topic,109635.60.html Puoi provare a seguire la guida fatta da un utente del forum, in particolare ha scritto il primo post di questa discussione. la guida è per l'IDE 0.22 ma sempre in questa discussione ci sono le modifiche da fare se usi l'IDE 1.0.1 Per l'errore che hai riportato non so come aiutarti.

Riccardo

Ciao, consulta quanto ti ha indicato Brainconfusion: La mia Guida 0022 è linkata in firma al post, invece l'integrazione per usare l'IDE 1.0.1 è qui: http://arduino.cc/forum/index.php/topic,109635.msg823354.html#msg823354

Per usare il chip senza componenti esterni ti basta non modificare nulla a livello fuses, perché di fabbrica esce a 1MHz, l'alternativa è settarlo a 8MHz, cambiando opportunamente i fuses, ma purtroppo su questa cosa non dai info.

NON usare la versione IDE 1.0 in quanto l'ISP è bacata e non funziona, quindi scaricati l'utlima versione che si chiama 1.0.1.

Se hai bisogno di aiuto chiedi però abituati a creare un quadro chiaro della situazione, altrimenti le serate se ne vanno solo per sapere come sei combinato. :)

grazie a entrambi per i suggerimenti, ora provo e vi faccio sapere.

@Menniti: io ci ho provato a fare un quadro chiaro della situazione, riguardo al fatto che uscisse di fabbrica a 1Mhz e si potesse settare a 8Mhz con i fuses (senza quarzo), semplicemente non lo sapevo! Credo comunque che per quello che ci devo fare io, (lettura di 4 fotoresistenze e conseguente movimento di un supporto per pannelli fotovoltaici) vada bene a 1Mhz.

Simonhh

Simonhh:
grazie a entrambi per i suggerimenti, ora provo e vi faccio sapere.

@Menniti: io ci ho provato a fare un quadro chiaro della situazione, riguardo al fatto che uscisse di fabbrica a 1Mhz e si potesse settare a 8Mhz con i fuses (senza quarzo), semplicemente non lo sapevo!
Credo comunque che per quello che ci devo fare io, (lettura di 4 fotoresistenze e conseguente movimento di un supporto per pannelli fotovoltaici) vada bene a 1Mhz.

Simonhh

Scusami, non intendevo la questione clock ma esattamente ciò che hai detto ora (lettura di 4…); ti confermo che a 1MHz vai più che bene; fatti un’idea più chiara sulla programmazione ISP, quando ti cimenti, se hai bisogno, chiedi su questo stesso Topic e vedrai che tutto andrà bene :wink:

Ok, grazie del chiarimento e grazie della guida, che sto leggendo.
Non credi che sarebbe utile metterla (o mettere un link) nel playground, almeno chi come me si cimenta in un progetto con Atmega standalone per la prima volta non deve aprire un Topic per trovare questa utilissima risorsa?

Simonhh

Simonhh: Ok, grazie del chiarimento e grazie della guida, che sto leggendo. Non credi che sarebbe utile metterla (o mettere un link) nel playground, almeno chi come me si cimenta in un progetto con Atmega standalone per la prima volta non deve aprire un Topic per trovare questa utilissima risorsa?

Simonhh

Prego. Sì che lo credo, infatti c'è :D

Prima di tutto parte un complimento a Michele per la guida che ha in firma, ottimo ne terrò conto per quando mi auto costruirò il mio primo Arduino.

Volevo chiedere una cosa, ma perchè voler aver yn Atmega standalone senza quarzo? per le dimensione? a sto punto meglio un miniarduino no? anche se ammetto che lo trovo molto interessante come progetto

Pietro

iz2rpn: Prima di tutto parte un complimento a Michele per la guida che ha in firma, ottimo ne terrò conto per quando mi auto costruirò il mio primo Arduino.

Volevo chiedere una cosa, ma perchè voler aver yn Atmega standalone senza quarzo? per le dimensione? a sto punto meglio un miniarduino no? anche se ammetto che lo trovo molto interessante come progetto

Pietro

piu che altro per l'assorbimento totale del progetto; col quarzo l'atmega assorbe di piu proprio perchè va piu veloce.

Comunque visto che stiamo in tema, @Menniti quando setto a 8Mhz il quarzo i tempi di delay non corrispondono. quali sono? tipo 1 sec a 16 Mhz quant secondi sono a 8 o a 1Mhz? io purtropoo non ho gli strumenti per verificarlo

igor97: piu che altro per l'assorbimento totale del progetto; col quarzo l'atmega assorbe di piu proprio perchè va piu veloce.

Non è del tutto corretto. La velocità dipende dal valore nominale del clock, non dalla presenza o meno del cristallo stesso. Cioè usare un quarzo esterno ad 8 MHz o usare l'oscillatore interno ad 8 MHz fa lavorare il micro alla stessa velocità. Casomai si usa l'oscillatore interno per ridurre l'ingombro, togliendo appunto il quarzo ed i suoi condensatori.

Comunque visto che stiamo in tema, @Menniti quando setto a 8Mhz il quarzo i tempi di delay non corrispondono. quali sono? tipo 1 sec a 16 Mhz quant secondi sono a 8 o a 1Mhz? io purtropoo non ho gli strumenti per verificarlo

No. Se hai impostato la board inserendo la giusta velocità, compilando ad 8 MHz hai anche le tempistiche corrette perché 1 ms è sempre 1 ms. Se ciò non ti risulta o non hai modificato i fuse per far lavorare il micro al clock scelto oppure ti sei dimenticato di inserire nel file boards.txt la voce per il tuo micro.

iz2rpn: Prima di tutto parte un complimento a Michele per la guida che ha in firma, ottimo ne terrò conto per quando mi auto costruirò il mio primo Arduino. Volevo chiedere una cosa, ma perchè voler aver yn Atmega standalone senza quarzo? per le dimensione? a sto punto meglio un miniarduino no? anche se ammetto che lo trovo molto interessante come progetto Pietro

Grazie :) Leo e igor97 ti hanno dato una risposta soddisfacente; io direi che far lavorare il micro con i settaggi di default (1MHz) significa ridurre draticamente i consumi, quindi va benissimo per molte applicazioni che non richiedono l'intera potenza del micro

igor97: @Menniti quando setto a 8Mhz il quarzo i tempi di delay non corrispondono. quali sono? tipo 1 sec a 16 Mhz quant secondi sono a 8 o a 1Mhz? io purtropoo non ho gli strumenti per verificarlo

Quando setti i fuse tu metti a posto l'hardware, e non è automatico che il software funzioni correttamente. Ti faccio un banale esempio: studiando in questi giorni l'AVRDUDE, ho scritto una piccola variante del blink in modo che potesse funzionare con tutti i micro che stavo testando (mega644, mega1284, mega328P, tiny84, tiny85); inizialmente ho compilato il blink usando la board per il 328P e quindi ho iniziato a flashare lo stesso file hex su tutti i micro settati a 1MHz, risultato devastante :fearful: A quel punto ho realizzato che ogni volta che volevo flashare lo sketch su un micro dovevo ricompilarlo usando la relativa board. Altra prova: ho compilato il micro col 328P a 16MHz e poi ho iniziato a flashare lo stesso file hex sullo stesso micro ma cambiando ogni volta i fuse per le diverse velocità, anche qui risultati stravaganti. Quindi la cosa da fare sempre è: 1 - Settare i fuse del micro 2 - creare ed usare la board specifica per quel micro, quel clock e quei fuse 3 - compilare e flashare lo sketch con la board specifica

[quote author=Michele Menniti link=topic=112855.msg849717#msg849717 date=1341496104] Ti faccio un banale esempio: studiando in questi giorni l'AVRDUDE, ho scritto una piccola variante del blink in modo che potesse funzionare con tutti i micro che stavo testando (mega644, mega1284, mega328P, tiny84, tiny85); inizialmente ho compilato il blink usando la board per il 328P e quindi ho iniziato a flashare lo stesso file hex su tutti i micro settati a 1MHz, risultato devastante :fearful: A quel punto ho realizzato che ogni volta che volevo flashare lo sketch su un micro dovevo ricompilarlo usando la relativa board. Altra prova: ho compilato il micro col 328P a 16MHz e poi ho iniziato a flashare lo stesso file hex sullo stesso micro ma cambiando ogni volta i fuse per le diverse velocità, anche qui risultati stravaganti. [/quote] Beh, questo è normale. Anche se riempi lo sketch di direttive per il compilatore, non puoi creare materialmente un firmware che vada bene per tutti i microcontrollori perché ogni microcontrollore internamente è diverso. Durante la compilazione il compilatore vede il microcontrollore e genera il codice relativo. Pensa ad esempio ai vettori interrupt che sono allocati nella prima parte della memoria: ogni microcontrollore non ha gli stessi interrupt/timer/periferiche per cui a partire da lì cambia ogni cosa.

Leo, perché mi maltratti? non ho detto che non capisco cosa è successo, sto confermando con prove tangibili che bisogna fare quello che hai detto tu prima per avere risultati corretti :disappointed_relieved: Tu sai che io faccio prove a prescindere dalla loro apparente validità scientifica, ricordati che in fondo è il mio vero lavoro ;) e le scoperte si fanno solo osando dove altri nemmeno guardano; certo prima di fare qualcosa di buono si va incontro a centinaia di insuccessi, ma poi arriva la volta buona e sei ripagato di tutto XD

Un esempio importante: se un anno e passa fa TI avessi dato ascolto quando mi dicevi che con Arduino UNO non era possibile fare la programmazione ISP (l'avevi letto sul PlayGround e allora non sapevi di avere il problema dell'autoreset ;)) a quest'ora non avrei scritto la Guida che oggi aiuta così tanta gente a superare le prime difficoltà :stuck_out_tongue_closed_eyes: (non è vendetta, solo un minimo di autodifesa, oggi mi stai picchiando su tutti i Topic :D)

oggi tutti cattivi ]:D allora ho capito piu o meno tutto ora vi scrivo le stringhe nel file boards.txt:

atmega328_8Mhz.name=ATmega328P 8MHz
atmega328_8Mhz.upload.protocol=arduino
atmega328_8Mhz.upload.maximum_size=32768
atmega328_8Mhz.upload.speed=115200
atmega328_8Mhz.bootloader.low_fuses=0xfd
atmega328_8Mhz.bootloader.high_fuses=0xdf
atmega328_8Mhz.bootloader.extended_fuses=0x07
atmega328_8Mhz.bootloader.path=optiboot
atmega328_8Mhz.bootloader.file=optiboot_atmega328.hex
atmega328_8Mhz.bootloader.unlock_bits=0x3F
atmega328_8Mhz.bootloader.lock_bits=0x0F
atmega328_8Mhz.build.mcu=atmega328p
atmega328_8Mhz.build.f_cpu=8000000L
atmega328_8Mhz.build.core=arduino
atmega328_8Mhz.build.variant=standard

ditemi se sbaglio u npassaggio: 1-carico su arduino target l'isp 2-preparo la breadboard con chip (precedentemente settato a 1Mhz) col quarzo 3-collego tutto 4-seleziono dal menu board l'atmega328p 8mhz 5-carico

oggi ho fatto un'altra prova e praticamente dopo aver scritto il bootloader correttamente, se non uso il qurzo 16mhz il chip non funziona anche se è settato a 8 :fearful: :fearful: perchè??

Premesso che con Leo scherziamo sempre, sprattutto tra noi, quindi non prendere ......... per lampioni :stuck_out_tongue_closed_eyes: una cosa per volta, carichi cosa? se è il bootloader effettivamente setti i fuse, altrimenti non fai altro che caricare uno sketch compilato a 8MHz su un chip compilato a 1MHz

[quote author=Michele Menniti link=topic=112855.msg849974#msg849974 date=1341510234] Premesso che con Leo scherziamo sempre, sprattutto tra noi, quindi non prendere ......... per lampioni :stuck_out_tongue_closed_eyes: una cosa per volta, carichi cosa? se è il bootloader effettivamente setti i fuse, altrimenti non fai altro che caricare uno sketch compilato a 8MHz su un chip compilato a 1MHz [/quote] n allora innanzitutto il chip è settato per il quarzo esterno. io ora lo voglio portare a 8 e ci riesco caricando "il bootloader". ma il chip una volta tolto il quarzo(che mi è servito per scrivere il bl) non funziona

ok, ma avevi scritto 1MHz e non hai parlato di 16MHz Se il chip è settato correttamente per 16MHz ovvio che la programmazione devi farla usando il quarzo esterno e qui mi pare che ci siamo. Non capisco invece che c'entrano quei valori di fuse con un chip da far lavorare a 8MHz senza quarzo :fearful: usa: low = e2 high = d9 ext = ff (oppure 07 se ti dà errore al caricamento del bl)

quelli che stai usando tu sono per oscillatore a 8MHz ma con quarzo esterno, ovvio che se lo toglio non ti funziona più. Rifai l'operazione e carica il bootloader per settare i fuse e poi lo sketch, vedrai che ti funziona tutto. ;)

Grazie a tutti per la spiegazione allora ho risolto i problemi di ingombro per la mia futura lampada arcobaleno :P

[quote author=Michele Menniti link=topic=112855.msg850147#msg850147 date=1341519228] ok, ma avevi scritto 1MHz e non hai parlato di 16MHz Se il chip è settato correttamente per 16MHz ovvio che la programmazione devi farla usando il quarzo esterno e qui mi pare che ci siamo. Non capisco invece che c'entrano quei valori di fuse con un chip da far lavorare a 8MHz senza quarzo :fearful: usa: low = e2 high = d9 ext = ff (oppure 07 se ti dà errore al caricamento del bl)

quelli che stai usando tu sono per oscillatore a 8MHz ma con quarzo esterno, ovvio che se lo toglio non ti funziona più. Rifai l'operazione e carica il bootloader per settare i fuse e poi lo sketch, vedrai che ti funziona tutto. ;) [/quote] APPENA ho tempo lo faccio; mi sto facendo un converitore seriale DIY (quello di arduino serial v1) :stuck_out_tongue_closed_eyes:

Comunque i valori li ho presi dalla tua guida :P :P

Azz, non ci sto capendo più niente: uno apre il topic, un altro mi chiede spiegazioni, un terzo mi ringrazia, mi sembrate i fratelli di Mi sdoppio in quattro
Va bene, l’importante è che tutto funzioni, altrimenti chiedete :sweat_smile: