Stap 11: Reverse-engineering: opnieuw maken het resultaat
Mij troep opwaarts een timer op een ATmega8.
De ATmega bedraagt 12MHz.
Een timer is ingesteld met een 128 prescaler in CTC-modus. In de CTC-modus, wordt de timer opnieuw ingesteld en een interrupt wordt aangeroepen wanneer de teller op een bepaald timer waarde vergelijken.
De teller wordt bijgewerkt elke 128 klokcyclus. Dit betekent dat ik moet gebruiken van 120 en 58 als de itemwaarden worden weergegeven voor de korte en lange pulsen.
(1000/12000000) * 128 * 121 = 1.29 mS
(1000/12000000) * 128 * 59 = 0.62 mS
Dit is vrij dicht bij de oorspronkelijke tijdsinstellingen.
Ik samengesteld een eenvoudige functie om te vullen een buffer met de vertragingstijden voor een bepaald frame van de RF. Een interrupt routine schakelt dan een IO-pin in en uit en sets de timer waarde vergelijkt met de pols van de gewenste lengte te maken.
Ik verslaafd aan de logic analyzer en copy-geplakt het resultaat in Gimp. Bingo! Het resulterende signaal is identiek aan die van de RF-afstandsbediening :D
Code is opgenomen in een latere stap.