Full swing crystal atmega328

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 :slight_smile:

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 : AVR® Fuse Calculator – The Engbedded Blog

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

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

Grazie mille :slight_smile:
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?

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.

ekjk:
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.

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.

ekjk:
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.

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.

ekjk:
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.

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

ekjk:
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.

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?

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

Peggiora un po ma da gli stessi problemi.