domanda su programmazione arduino con quarzo interno

ciao, dovrei impostare l' atmega per il funzionamento con il qarzo interno, ho dato una lettura alla giuda di menniti, che dice di montare il chip su una brad board, e poi programmarlo, volevo sapere se era possibile programmarlo direttamente usando la scheda arduino, senza passare dalla breadboard, ovviamente modificando il file board.txt

e visto che uso la funzione millis(), potrei avere probelemi a usare un frequenza diversa? grazie

chi è questo "giuda" che mi tradisce? :grin: :grin: (hai scritto male....)

Puoi usare un secondo Arduino al posto della breadboard

Oppure, se hai Arduino 2009, puoi ricorrere alla tecnica Bit-Bang

Oppure, se hai un convertitore USB-seriale basato su FT232RL, ma con TUTTI i segnali disponibilit, puoi ricorrere alla tecnica Bit-Bang anche con Arduino UNO

Il micro non ha un quarzo interno ma un oscillatore, se lo usi a 1MHz o 8MHz, usando la board corretta, non avrai alcun problema con le funzioni temporali, l'importante è che la prima operazione che esegui sia quella di caricare il bootloader, serve per settare correttamente i fuse.

purtoppo io e la tastiera abbiamo un rapporto un po difficoltoso... inverto molto spesso le lettere :smiley:
visto che ho arduino UNO, magari provo con in bit-bang, oppure con la breadboard.. che vado sul sicuro (serve per forza un altro atmega sull'arduino?) perche ne ho 2 e mi sa che uno è morto...

comunque quando riscivo il bootloader mi fa errore...

ecco le scritte che escono sul IDE:

D:\arduino-1.0\hardware/tools/avr/bin/avrdude -CD:\arduino-1.0\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cstk500v1 -P\.\COM5 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m

avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "D:\arduino-1.0\hardware/tools/avr/etc/avrdude.conf"

Using Port : \.\COM5
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv: - [2d]
avrdude: stk500_getsync(): not in sync: resp=0x2d

avrdude done. Thank you.

ma stai usando IDE 1.0?? alla larga! Aggiorna almeno alla 1.0.1 e poi riprova.
COmunque sia quando scrivi sembri una pallina da flipper ]:smiley: salti da una cosa all'altra senza ritegno.
OK, hai usato avrdude da riga di comando con quella sintassi, bene, ma con quale configurazione hardware??

non ho usato arvudude, quelle sono le scritte che appaiono nell ide, che si è la versione 1.0, ma fino a domani pomeriggio non posso scarcare la nuova, perche sono connesso con un cellulare... domani roprovo con l' ultima versione e ti faccio sapere

Ah, ok, mi era sfuggito che l'avessi scritto; decisamente inutile continuare con l'IDE 1.0, comunque devi anche decidere esattamente cosa vuoi fare e quale tecnica adottare, altrimenti di sicuro ti incasini e renderai difficile anche il possibile aiuto da parte del Forum. Il mio consiglio è:
1 - usa Arduino UNO come programmatore, col micro buono a bordo ed il file ArduinoISP (sempre versione 1.0.1 o successiva!)
2 - monta il micro che ritieni fasullo su breadboard, però predisponi inizialmentela configurazione con quarzo esterno e 2 condensatori
3 - collega Arduino UNO e breadboard come da mia Guida per la programmazione ISP (ci sono foto e descrizioni dettagliate, non puoi sbagliare, se le segui alla lettera)
4 - segui sulla mia Guida il capitolo relativo alla versione 1.0.x
5 - carica il bootloader usando come board la stand-alone a 16MHz

Dobbiamo necessariamente portare a buon fine questa serie di operazioni, poi possiamo configurare l'oscillatore come meglio credi, ma bisogna arrivarci per gradi.

ciao, ho aggiornati l' ide, ma non riesco comunque a caricare il bootloader sull atmega... l' arrore sembra essere sempre lo stesso

D:\robotica\arduino\hardware/tools/avr/bin/avrdude -CD:\robotica\arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cstk500v1 -P\.\COM5 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m

avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "D:\robotica\arduino\hardware/tools/avr/etc/avrdude.conf"

Using Port : \.\COM5
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv: - [2d]
avrdude: stk500_getsync(): not in sync: resp=0x2d

avrdude done. Thank you.

uso arduino UNO r3,ovviamente ho staccato tutti i vari tasti led e l' lcd attaccati alla board

nell IDE, nella sezione programmatore, uso "Arduino a isp" sbaglio qualcosa? grazie

e come faccio a sapere se sbagli qualcosa se non mi dici niente? :sweat_smile:
Invece di continuare a postare 50 righe di inutile errore spiega per filo e per segno TUTTA la procedura che hai fatto, nella corretta sequenza, sia riguardo i collegamenti che riguardo il software, a quel punto possiamo provare a scovare qualcosa, magari una bella e CHIARA foto dei collegamenti che hai effettuato sarebbe di GRANDE aiuto.

milvusmilvus:
visto che ho arduino UNO, magari provo con in bit-bang

Con la UNO non puoi utilizzare la tecnica del bit-bang, perché se non erro funziona solo con i chip FTDI, che erano presenti ad esempio sulla 2009.

I simulatori lasciali perdere.

Modifiche per usare l'ADC:
Avcc e Vcc vanno collegati tra loro mediante una impedenza da 10µH
Su ognuno di questi tre pin, vicinissimo ad ognuno di essi, devi collegare un C (poliestere o ceramico, a scelta) da 100nF: Vcc, AVcc, ARef
Via software dei spegnere i pin digitali associati agli analogici, per evitare disturbi, non ho il comando sottomano, se non lo posta prima Paolo ci penso io più tardi o domani.

Eccomi.
Il comando è

DIDR0 = 0b00111111;

In questo modo disabiliti il buffer di tutti gli I/O digitali dai pin usati anche come ingressi analogici.
Con 1 disabiliti, con 0 lasci inalterato. I primi 2 a sinistra sono sempre 0 perché ADC6 e ADC7 non sono collegati a I/O digitali.

Se ad esempio ti serve un ingresso digitale sul pin A2 (il terzo da destra)e vuoi disabilitare gli altri, il comando sarà

DIDR0 = 0b00111011;

In effetti esiste anche il comando

DIDR1 = 0b00000011;

che disabilita il buffer degli ingressi digitali del comparatore dell'ADC.
Serve per risparmiare corrente (dice il datasheet a pag 241--> Smart | Connected | Secure | Microchip Technology)

mi sa che il mio problema riguarda il fatto che il pin 12 della mia board non funziona... quindi mi fa errore quando lo uso per caricare lo sketch, a me serve caricare uno sketch a 1mhz... solo che a quanto pare mi serve un quarzo da 16 per poterlo fare... e ho fatto apposta lo stand alone senza proprio perche non riesco a trovarlo.. ora vedo di staccarlo da qualche parte ma la vedo difficile..

Il pin 12 è usato dalla programmazione ISP, se sai che non funziona non c'è altro modo per programmarlo se non via seriale (sempre che abbia il bootloader funzionante) ma non puoi cambiare i fuse e quindi la velocità del micro.

PaoloP:
Il pin 12 è usato dalla programmazione ISP, se sai che non funziona non c'è altro modo per programmarlo se non via seriale (sempre che abbia il bootloader funzionante) ma non puoi cambiare i fuse e quindi la velocità del micro.

è per quello infatti che non lo farò piu.. :frowning: non si puo cambiare il pin in qualche modo? magari acnhe ricompilando il sorgente dell IDE

No, non puoi scambiare il pedale dell'acceleratore anche se cambi colore alla carrozzeria. :grin:

PaoloP:
No, non puoi scambiare il pedale dell'acceleratore anche se cambi colore alla carrozzeria. :grin:

ma se smonto tutto potrei rimontarlo come voglio :smiley: hahhaha, quindi l' unica soluzione è trovare un quarzo da 16 mhz... a questo punto li prnedo su intenret...

No, l'unica cosa è comprare un Atmega328P su internet. :grin:

PaoloP:
No, l’unica cosa è comprare un Atmega328P su internet. :grin:

che differenza ha l’ atmegaP ??

Il P è quello usato su Arduino.
Quello senza P (liscio) è una vecchia versione (non PicoPower) che da problemi di programmazione e un sacco di grane. Purtroppo ne vendono ancora in giro, quindi occhio!

In effetti sul forum quando si parla di 328 si dovrebbe sempre specificare 328P.

ho controllato.. il mio chip è 328P-pu... come anhce quello fuso :D, il problema è il pin 12 che non funziona, e il fatto che non ho un quarzo da 16hmz..