Carissimi, ho ripreso a studiare per la mia prossima fatica, sto nuovamente approfondendo la tematica dei FUSE, si scoprono cose nuove ad ogni lettura, complice il fatto che li aggiornano in continuazione.
Come tutti sappiamo il LOW FUSE BYTE di Arduino UNO è FF, cioè tutti i suoi bit sono disabilitati. Dal punto di vista della sorgente di clock ciò significa:
Low Power Crystal Oscillator
Frequency range 8.0 - 16.0
Crystal Oscillator, slowly rising power
Start-up time from sleep 16K CK and additional delay from reset 14CK + 65ms
Bene, anzi male, Arduino UNO non ha mai avuto un quarzo esterno bensì un risonatore ceramico, quindi la corretta impostazione dovrebbe essere:
Ceramic resonator, slowly rising power
Start-up time from sleep 1K CK and additional delay from reset 14CK + 65ms
Di conseguenza il LOW FUSE BYTE dovrebbe essere CF.
Il discorso si fa un po' più lungo leggendo le note relative all'opzione che ho appena citato come corretta:
These options are intended for use with ceramic resonators and will ensure frequency stability at start-up. They can also be used with crystals when not operating close to the maximum frequency of the device, and if frequency stability at start-up is not important for the application.
Quindi le problematiche legate alla tempistica, durante l'uso di Arudino UNO potrebbero anche essere parzialmente legate al non corretto settaggio del FUSE LOW, e chi ha giocherellato con timer, soprattutto generando frequenze di 1Hz o chi, come me, ha lavorato con una libreria per la lettura di frequenze, sa benissimo quanto Arduino UNO sia decisamente impreciso rispetto al fratello più vecchio Duemilanove, sul quale invece campeggia un bel quarzo! Allora la domanda è: pensate sia importante quanto qui detto e che valga la pena cambiare il Low Fuse? Servirebbero dei Test e qui chiamo in causa Testato, perché lui combatte con orologi e frequenze ed è attrezzato per farla una prova, ma naturalmente chiunque è invitato a fare prove, ovviamente avendo un micro di ricambio con bootloader, in caso si dovesse bloccare qualcosa (io sono ancora fuori sede...)
Ancora un approfondimento; la stessa ATMEL, a proposito della sorgente Low Power Crystal Oscillator scrive sul data-sheet
Pins XTAL1 and XTAL2 are input and output, respectively, of an inverting amplifier which can be configured for use as an On-chip Oscillator. Either a quartz crystal or a ceramic resonator may be used. This Crystal Oscillator is a low power oscillator, with reduced voltage swing on the XTAL2 output. It gives the lowest power consumption, but is not capable of driving other clock inputs, and may be more susceptible to noise in
noisy environments. In these cases, refer to the ”Full Swing Crystal Oscillator”
Quindi per evitare problemi di "rumore" e, per poter correttamente gestire altri ingressi di clock (ma qui vorrei capire se si stanno riferendo, p.es. al watchdog o a cosa...), sarebbe stato preferibile ricorrere a questo tipo di settaggio, nel qual caso il solito LOW FUSE sarebbe pari a C7.
Con questa configurazione l'amplificatore interno del micro non subirebbe attenuazione alcuna e potrebbe operare nelle migliori condizioni possibili, a discapito di un maggiore consumo che sarebbe poca cosa considerando che Arduino è di norma alimentato via USB o comunque con una fonte esterna proveniente da un alimentatore.
A voi i commenti, per favore discussioni costruttive, niente polemiche, io sono il primo a non volerne fare, questa è una discussione puramente tecnica, NON una critica ai progettisti che, se qui uscisse un fondo di verità, potrebbero invece trarne beneficio.