Pages: [1]   Go Down
Author Topic: Full swing crystal atmega328  (Read 284 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,
a causa di frequenti disturbi apparentemente ineliminabili vorrei provare a settare i fuse su un atmega vergine per il full swing crystal oscillator che da datasheet lo dato come più immune ai disturbi.

Non ho mai settato i fuse prima d'ora ne scritto il bootloader ma ho letto guide al riguardo di quest'ultimo e qualcosa sui fuse.

Mi sapete guidare su cosa e come modificare un bootloader standard per abilitare l'opzione suddetta?

In rete c'è molta confusione riguardo il full swing, vorrei quindi capire se poi devo utilizzare il solito quarzo con i c da 22p oppure un oscillatore differente.

Grazie smiley
Logged

Online Online
Edison Member
*
Karma: 41
Posts: 1386
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

There is a difference in quality of crystals, but that is mostly for the temperature range and mechanical strength. Bad quality crystals stop working below 0 degrees.

You can enable the full swing with the same crystal and 22pF : http://www.engbedded.com/fusecalc/

See the file 'boards.txt' to see what Arduino uses for the fuses.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il full swing crystal non è altro che un bel quarzo. L'external crystal oscillator è un circuito oscillante.
Per aiutarsi con il calcolo dei valori per i fuse, usa questo tool:
http://www.engbedded.com/fusecalc/

Inserisci i fuse usati dall'Arduino e poi seleziona la voce appropriata in alto. A quel punto, copiati la voce dell'Arduino UNO nel file boards.txt dandogli un nuovo nome (es.: uno_mod.xxxxxx) e lascia tutte le voci inalterate tranne il fuse Low. Per comodità, ho calcolato il suo valore: $F7
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie mille smiley
Non ho capito bene di che voce parli quando dici di copiarla in boards.txt
Dici di creare una nuova board all'interno di boards.txt in cui tutte le voci le copio da quelle della Uno e la voce del fuse low la modifico scrivendogli 0xf7?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sì, esatto.
Come vedi, nel file boards.txt tutte le voci sono composte da questo schema:
nome.proprietà

La parte "nome" deve essere univoca e serve all'IDE a caricare tutti i parametri "proprietà" relativi a quella voce. Siccome c'è già la voce "uno" non puoi crearne una identica, perciò usa un nome alternativo. Cambia solo il valore del lowfuse.
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 9746
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a causa di frequenti disturbi apparentemente ineliminabili vorrei provare a settare i fuse su un atmega vergine per il full swing crystal oscillator che da datasheet lo dato come più immune ai disturbi.

Che tipo di disturbi hai ?
Il full swing serve solo per gli ambiente con alti livelli EMI in quanto il quarzo viene pilotato in modo rail to rail invece di utilizzare solo 1V, per contro questa modalità aumenta sensibilmente il consumo del 328 e le sue emissioni EMI.
Se i tuoi problemi, come penso, sono da disturbi sulla alimentazione non serve a nulla mandare il quarzo in full swing.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie Leo, molto chiaro!
 Ciao astrobeed; dunque di disturbi condotti sull'alimentazione non ne ho o almeno credo di non averne e come solito ho preso tutte le precauzioni per filtrare al top.
Ho provato a schermare e la situazione è migliorata molto ma secondo me ho EMI ancora forti perché capita che si blocca proprio e credo che il disturbo agisca su i pin xtal. 1v di swing per il clock mi pare basso e altamente suscettibile ad EMI irradiata ma anche condotta.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 9746
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato a schermare e la situazione è migliorata molto ma secondo me ho EMI ancora forti perché capita che si blocca proprio e credo che il disturbo agisca su i pin xtal.

Quanto è distante il quarzo dal ATmega ?
Stai provando su breadboard, causa primaria di molti problemi, oppure su millefori o pcb reale ?
Sei sicuro che le capacità di carico del quarzo sono quelle giuste ? Il primo sintomo sono proprio arresti casuali del clock.
Che si tratta realmente di problemi EMI è una possibilità molto remota, servono livelli ben oltre quelli ammessi per legge per mandare il blocco l'oscillatore, se è realmente così allora hai grossi problemi di contorno ad Arduino.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sia su PCB reale sia su millefiori
Ovvio che su PCB è un po meglio ma mi sarei aspettato più miglioramenti.
Il quarzo è il più vicino possibile al micro e i c sono giusti.
Il PCB è fatto direi quasi a regola d'arte.
Le EMI sicuramente sono elevate. Si parla di generazione di una scintilla da bobina at.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 9746
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si parla di generazione di una scintilla da bobina at.

Potevi dirlo subito, non c'è swing che tenga, devi mettere la board dentro una gabbia di Faraday.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Già provato. Ho messo il PCB in scatola d'alluminio collegata al piano di massa del PCB ma non è migliorato molto.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 137
Posts: 9746
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Già provato. Ho messo il PCB in scatola d'alluminio collegata al piano di massa del PCB ma non è migliorato molto.

Allora hai sicuramente degli spike che viaggiano attraverso la massa, devi isolare galvanicamente Arduino dalla parte HT.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si forse è quello..devo provare ad inserire un induttore di modo comune da 1mH per ogni percorso sia sul più che sulla massa in modo da lasciar passare solo la continua. Non ho modo di isolare galvanicamente a meno che non esista un dcdc o AC DC che riesca a lavorare con tensioni minime di 3v ingresso per produrre 5v in uscita.
Che dici?
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 566
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se elimini il collegamento fra la scatola e la massa, la situazione migliora o peggiora?
(O rimane invariata)?
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 268
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Peggiora un po ma da gli stessi problemi.
Logged

Pages: [1]   Go Up
Jump to: