Precisione timer1

Ciao a tutti.
Sto cercando con Arduino di generare un'onda quadra per trasmettere dati in modalità seriale a 2000Hz o 1920Hz.

Nel primo caso ho fatto così: ho incluso timerOne.h e creato nel setup un Timer1.initialize(500) e Timer1.attachInterrupt(funzione).
La funzione esegue delle istruzioni e alla fine con un digitalWrite creo l'onda quadra con high o low in base al bit che voglio spedire. Funziona tutto alla perfezione.

Il problema mi sorge con la frequenza di 1920Hz: dovrei inizializzare il Timer1 a 520,833333... (con 3 periodico) e mi è impossibile. C'è un altro sistema per aggirare questo problema?

Grazie a tutti per l'aiuto : )

I timer hanno registri numerici che possono contenere solo numeri interi, non è facile ottenere tutte le frequenze possibili.
Se elimini la TimerOne e manipoli i rgistri del timer 1 direttamente, puoi ottenere qualcosa di molto vicino a 520,8333 con il timer imostato su Fast PWM con OCRA come top, oggle del pin OCxA, prescaler a 64 e OCR1A impostato a 239 :slight_smile:
(Dati calcolati con l'app ArduCompanion :wink: )

Grazie :slight_smile: