Problema codice

gpb01:
Se su un Arduino a 16MHz usi un timer a 16 bit (sul ATmega328P il Timer 1) e programmi il prescaler a 64 e carichi TCNTx (x = 1 per Timer 1) al valore 55536 (0xD8F0), hai un periodo di esattamente 40msec. indipendentemente da quello che fa il codice ... lo puoi usare per generare un interrupt che esegui esattamente con quel periodo.

Guglielmo

Aggiungerei solo qualche info:

  1. un link a pagina sui timer e registri del 328: link
  2. un bel libro che spiega anche questa parte: Arduino la guida essenziale scritto da uno degli admin, in parecchi l'abbiamo comprato, fatto molto bene, ci sono le basi ma anche parti avanzate
  3. naturalmente se cambi le impostazioni su Timer1, eventuali librerie che si appoggiano al Timer1 (esempio Servo) potrebbero avere problemi.