Si esta pregunta debería estar en StackExchange en lugar de aquí, puedo eliminar aquí y publicar allí.
Utilizando un Arduino Duemilanove (Atmega328) Estoy intentando generar una onda cuadrada (50% de ciclo de trabajo) de frecuencia en algún lugar entre 500 Hz y 200 KHz, tal como lo ingresó un usuario. No necesito ningún ciclo de trabajo de PWM variable, solo una simple onda cuadrada. Además, no puedo usar Timer0 ya que la modificación de eso afecta el retraso () y otras funciones relacionadas con el tiempo del Arduino.
Los cálculos del temporizador para el prescaler y el contador superior me confunden mucho. ¿Puede alguien indicarme un algoritmo para identificar qué combinación de prescaler y valores superiores dará la frecuencia de salida más cercana a la especificada? En muchos casos, dos o más combinaciones de prescaler y top dan resultados de frecuencia de salida similares pero ninguno es exacto.
Por ejemplo, el usuario ingresa un valor de 98350 Hz. ¿Cómo sabría mi código Arduino qué valor de prescaler y de contador superior para establecer los registros del temporizador 2, para la coincidencia más cercana a esa frecuencia?