Frecuencia del modo CTC en la atmega328

0

Estoy intentando entender la expresión para la frecuencia de la forma de onda del modo CTC (pág. 99 de hoja de datos ).

Suponiendo que el prescaler es 1 y que \ $ OCR0A \ $ es un valor constante, en \ $ (1 + OCR0A) / f \ $ segundos, el \ $ TCNT0 \ $ regsiter se reinicia desde \ $ 0 \ $. Entonces la frecuencia es \ $ f / (1 + OCR0A) \ $. Mi razonamiento está desactivado por un factor de \ $ 1/2 \ $. ¿Qué me estoy perdiendo?

    
pregunta Suba Thomas

1 respuesta

3

La frecuencia que ha calculado es la frecuencia en la que la salida cambia.

Entonces, si calcula una frecuencia de 10 kHz, la salida cambia 10.000 veces por segundo. Es decir, va alto si es bajo, o baja si es alto. Eso significa que tiene que generar dos ciclos a través del temporizador para generar un solo período de la frecuencia de salida.

  

Para generar una salida de forma de onda en modo CTC, la salida OC0A se puede configurar para alternar su nivel lógico en cada   compare la coincidencia configurando los bits del modo Comparar salida en modo de conmutación (COM0A1: 0 = 1). El valor OC0A será   no será visible en el pin del puerto a menos que la dirección de datos para el pin esté configurada para la salida. La forma de onda generada será   tiene una frecuencia máxima de f OC0 = f clk_I / O / 2 cuando OCR0A se establece en cero (0x00).

Por lo tanto, una frecuencia calculada de 10 KHz generará una frecuencia de salida de 5 KHz.

Para hacerlo más pictórico, aquí están las opciones:

CTC: 10kHz T T T T T T T T T T
Out:  5KHz 1 0 1 0 1 0 1 0 1 0

Cada vez que el CTC realiza un ciclo, invierte el pin IO. Así que dos ciclos forman un ciclo completo de encendido y apagado del pin IO. De ahí el / 2.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas