ATmega328P-PU (scelta quarzo + capacità di carico)

Ciao ragazzi, ho un problema sulla mia arduino uno r3, praticamente penso che non mi oscilla piu il risuonatore collegato all'atmega328p-pu. Quindi ho intenzione di sostituire il risuonatore (16Mhz) con un quarzo (16Mhz, ovviamente con 2 condensatori per farlo oscillare). Ho però un dubbio che mi ha letteralmente bloccato e cioè:

Sulla scheda arduino è montato sul convertitore usb/serial un quarzo da 16Mhz e 2 condensatori da 22pF. Devo utilizzare la stessa tipologia per il 328p-pu?

Io ho trovato un quarzo da 16Mhz con capacità di carico da 18pF. Posso utilizzare questo tris di componenti per il 328p-pu?

Buongiorno, NON avendolo tu ancora fatto, nel rispetto del regolamento della sezione Italiana, ti chiedo di presentarti QUI ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

Il datasheet (http://www.atmel.com/devices/ATMEGA328P.aspx) dice che può variare tra i 12 e i 22pF. Non so dirti però al livello pratico cosa cambia. 18pF è nell'intervallo quindi può andare bene.

PaoloP: Idice che può variare tra i 12 e i 22pF.

Quelli sono i valori entro i quali è garantito il funzionamento dell'oscillatore degli AVR, il reale valore dipende dal quarzo e non dal micro, ci sono quarzi che lavorano con 14 pf, quarzi che lavorano con 18-22 pf, quarzi che lavorano con 30 pf, i primi due tipi vanno bene con gli AVR, il terzo tipo non va bene. Per sapere l'esatto valore della capacità di carico serve il datashett del quarzo, altrimenti tocca andare per tentativi, un valore troppo distante, bastano 2-3 pf, dal valore ottimale comporta il blocco dell'oscillatore o il suo funzionamento a "singhiozzo". Con i quarzi da 16 MHz normalmente reperibili nel mondo amatoriale tipicamente vanno bene valori compresi tra 18 e 22 pf, preferibilmente 18 pf come valore di partenza. Attenzione che per passare da risonatore a quarzo è necessario cambiare i fuse e se il micro non ha il clock funzionante non è possibile farlo con un normale programmatore ISP, è necessario usare la programmazione HV per resettare i fuse.

Ciao amici e grazie per il vostro prezioso supporto tecnico,

sul sito di RS...... il quarzo da 16Mhz con codice prodotto 814-9440 è dichiarato con capacità di carico 18pF (non ci sono altri quarzi con capacità di carico da 22pF). Se apro il suo datasheet è però riportato un range che va da 10 a 32 pF (vedi datasheet sotto)

http://docs-europe.electrocomponents.com/webdocs/12f2/0900766b812f2aef.pdf

Da come mi dite voi penso che potrei allora utilizzare un quarzo da 16Mhz con 2 condensatori ceramici da 18pF.

Grazie Astro, non sapevo che bisognava cambiare i fuse se si vuol sostituire il risonatore con un quarzo :( Volevo rendermi la vita piu semplice per la saldatura, anzichè saldare con tecnica "reflow" volevo saldare con un comunissimo saldatore a punta :)

(Il risonatore originale è un CSTCE16M0V53-R0)

Ho notato che tra le opzioni di scelta di un quarzo, c'è anche il [u]"Modo di Oscillazione"[/u]

Quello originale oscilla in [u]espansione[/u] Altri oscillano in [u]terza armonica[/u] Altri oscillano in [u]fondamentale[/u]

Non avendo mai avuto modo di lavorare su queste caratteristiche, non so se io debba tenere conto anche di questa caratteristica tecnica.

Eventualmente potrei utilizzare il risonatore linkato di seguito (oscillazione terza armonica) senza modificare nessun fuse e senza pregiudicarne il funzionamento?

http://it.rs-online.com/web/p/risonatori-ceramici/1062884/

NOTA: un mio carissimo amico possiede un programmator HV (mi pare si tratti di un avrDragon). Con questo quindi potrei settare i fuse per far funzionare il quarzo esterno. Ma in termini di programmazione è facile da eseguire?

Altra cosa che mi fa sorgere un dubbio, guardate questo link: http://it.rs-online.com/web/cp/6962260,9214545,9222142,9222142P/?sra=p&r=t

Due dei 3 atmega messi a confronto riportano alcuni dati differenti.

  • Lunghezza
  • Numeo di unità PWM
  • Altezza
  • Risoluzione PWM
  • Larghezza
  • Timer
  • Core del dispositivo
  • Pulse Width Modulation
  • Dimensione memoria programmi

Vorrei evitare di acquistare un atmega che abbia funzionalità diverse e/o che le misure tra i pin non corrispondano a quello originale. Quali dei due devo acquistare per poterlo utilizzare col mio arduino unor3?

valeriosandrelli:
sul sito di RS… il quarzo da 16Mhz con codice prodotto 814-9440 è dichiarato con capacità di carico 18pF (non ci sono altri quarzi con capacità di carico da 22pF).

Si è da 18pf, il datasheet riporta il range di capacità a seconda del modello del quarzo, nel tuo caso è marcato 18B che sta per 18pf range temperatura -40° +85°, il 23B è la precisione (2), 20 ppm, la stabilità (5), 50 ppm, confezione (B) bulk (singolo pezzo).

Grazie Astro ;)

e per il resto delle altre cose cosa puoi dirmi?

  • scelta del risonatore linkato
  • programmazione fuse "facilità"
  • scelta atmega

Ma come sei giunto alla conclusione che il risuonatore non oscilla più? Mai visto un oscillatore rompersi.

L'ho dissaldato e ne ho saldato uno preso da un altro Arduino (stesso modello) e funziona. Siccome pr dissaldarlo e saldarlo non è cosa semplice, voglio sostituirlo con un quarzo da 16Mhz e la coppia dei due condensatori ceramici da 18pF.

Però ho visto che i quarzi hanno 3 diverse dipologie di oscillazione (vedi discussione sopra) E guardando sul sito di RS...... mi sono imbattuto nella scelta di 2 amega328p-pu con alcune differenze (vedi discussione sopra) e non so quale scegliere.

Il quarzo/risonatore deve essere in fondamentale, il risonatore per Arduino si trova da Distrelec a 60 cent (+iva). Gli atmega328P sono tutti identici a livello di elettronica interna, quello che cambia è il tipo di case e il numero di pin, nelle versioni SMD sono disponibili due ingressi analogici in più, la selezione che hai visto su RS cambia solo per il tipo di confezione, quelli che costano di meno sono venduti in lotti di 14 pezzi, gli altri due in lotti di due pezzi, confezionati singolarmente o due per ogni confezione. Nella descrizione RS dei vari tipi di confezione dei 328 c'è uso di termini differenti per definire la stessa cosa e varie inesattezze, non prendere mai per oro colato le descrizioni che trovi su i cataloghi dei vari fornitori, solo il datasheet del componente fa testo.

Grazie delle risposte. A proposito: appena mi arriverà l'atmega328p-pu, dovrò caricargli il bootloader o è gia caricato dentro?

Un'altra cosa importante: ho visto in rete moltissime realizzazioni di board con atmega328p-pu standalone collegato ad una scheda arduino per la programmazione ISP e nella fase di programmazione (utilizzando una breadboard) si utilizzava appunto:

[u]un quarzo da 16Mhz[/u], due condensatori ceramici da 22pF, una resistenza da 1K, una resistenza da 10K (collegati ai pin 10-11-12-13-5v-gnd di arduino).

Facendo riferimento a quando scritto da Astro...

Attenzione che per passare da risonatore a quarzo è necessario cambiare i fuse e se il micro non ha il clock funzionante non è possibile farlo con un normale programmatore ISP, è necessario usare la programmazione HV per resettare i fuse.

...mi domando: mettendo un atmega328p-pu "vergine" con un quarzo esterno da 16Mhz, si riesce a programmarlo ugualmente? (sembra che quel tipo di collegamento/programmazione sia una cosa "comune" e che non necessita di nessuna modifica dei fuse

valeriosandrelli: ...mi domando: mettendo un atmega328p-pu "vergine" con un quarzo esterno da 16Mhz, si riesce a programmarlo ugualmente?

Un ATmega328p-pu "vergine" arriva con i "fuse" programmati per usare il suo oscillatore interno e quindi NON usa il quarzo all'esterno (che sia presente o meno).

Se però modifichi i "fuse" per lavorare con il quarzo esterno, da quel momento, anche in fase di programmazione, necessiterà del quarzo.

Ovviamnete, a quarzo montato, potrai poi sempre tornare indietro e riprogrammare i "fuse" per usare l'oscillatore intero.

Consiglio un'attento studio del datasheet ;)

Guglielmo

Grazie Guglielmo, spiegazione chiara e sintetica ;)

E per modificare i fuse per utilizzare il quarzo esterno da 16mhz posso utilizzare il sistema di programmazione ISP (con due schede arduino collegate tramite connettore ICSP)? Quale hardware/soffware devo necessariamente utilizzare per modificare i fuse per abilotare l'uso del kit esterno "quarzo 16Mhz + 2 condensatori ceramici 22pF"?

Se usi un programmatore ISP supportato dal IDE basta che dal menù "strumenti" usi "scrivi bootloader" e automaticamente vengono settati i fuse per il quarzo da 16MHz e caricato il bootloader, funziona sia con un AVR vergine, di default clock rc interno a 1MHz, che con uno già usato con il clock funzionante. Attenzione che una volta settati i fuse per l'uso del quarzo se questo non è presente l'AVR non funziona e non è possibile modificare i fuse senza usare un programmatore HV.

>valeriosandrelli : **Programmatoraccio da quttro soldi fatto **moooolto tempo fa su una millifori per ATMega328P e ATtiny85 ...

... nota, in basso vicino allo zif a 28 pin, quarzo e condensatori ... :D

Tutti i collegamenti sotto fatti con filo da wire wrap.

Guglielmo

Siete molto disponibili e professionali e per questo vi ringrazio di cuore.

Ok, allora io potrei farmi prestare da un amico un programmatore ISP (mi sembra che abbia un AVRdragon), e dall'IDE vedo che esiste l'opzione di scelta "AVR ISP", quindi posso utilizzare questo. Quindi con questo hardware e l'IDE di Arduino potrei sia modificare i fuse, sia ripristinare i fuse nel caso in cui qualcosa dovesse non andare bene... Corretto?

Una curiosità: ho un firmware chè è stato scritto e caricato in un atmega328o-pu (Arduino uno r3). Se io tolgo il risonatore e gli metto un quarzo 16Mhz e due condensatori da 22pF, il firmware continuerebbe a funzionare sempre allo stesso modo?

Se la velocità è la stessa si. Altrimenti lo devi ricompilare indicando il nuovo clock.

Per caricare il singolo firmware ti consiglio AVRDUDESS (su Windows)
http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/
L’ultima versione di AVRdude la scarichi qui → Index of /releases/avrdude/

Ciao Paolo,

io attualmente ho sempre usato l'IDE di Arduino per caricare il firmware. Tu mi consigli di utilizzare AVRDUDESS perche è possibile anche settare il nuovo clock?

Visto che hai parlato di firmware e non di sketch ho pensato non avessi il listato in C ma solo il file già compilato da caricare nel microcontrollore. Se non è così AVRDUDESS non ti serve.

Ho il listato in C