Paso 11: Ingeniería inversa: volver a crear el resultado
Configurar un temporizador en un ATmega8.
El ATmega está funcionando a 12MHz.
Un temporizador está configurado con un prescaler 128 en el modo de CTC. En el modo de la CTC, el temporizador se restablece y se llama una interrupción cuando el contador alcanza un determinado temporizador comparar valor.
El contador se actualiza cada ciclo de 128 reloj. Esto significa que tengo que usar 120 y 58 como los valores de contador para los pulsos cortos y largos.
(1000/12000000) * 128 * 121 = 1,29 mS
(1000/12000000) * 128 * 59 = 0,62 mS
Esto es bastante cerca de los tiempos originales.
Junté una simple función para llenar un buffer con los tiempos de retardo para un determinado marco de RF. Una rutina de interrupción entonces enciende un pin IO y apaga y establece el temporizador comparar valor para crear el pulso de la longitud deseada.
Me enganchó hasta el analizador lógico y copiar-pegar el resultado en Gimp. ¡ Bingo! La señal resultante es idéntica a del mando a distancia RF :D
Código se incluye en un paso posterior.