我有一个旧的通用电视红外遥控器(品牌:2D魔术UNICODE)买了在2008年与avr atmel attiny 2313 v里面和55矩阵键按钮.时钟是外部与xtal 4 Mhz石英。它是用RC 5协议编程的,现在我想在三星32位协议重写所有代码的变化。我已经Map了所有的PCB矩阵与一个PCB找到引脚和红外发射器led连接到PD 0引脚,这不是专用于波形生成输出.我的想法是编码与16位定时器/计数器1在CTC模式和中断的方法,以获得38 Khz PWM频率载波红外线发送(预分频器是1),但也阅读的时钟,我不明白如果要发送载波上的代码,我可以选择一个任意的引脚(所以PD 0引脚顺利)或只有OC 1A和OC 1B专用于这样做.我用一个ftdi 232 rl usb把电线焊接到专用的引脚上,然后用avrdude做了一个编程器。先谢了。
我可以使用延迟功能来制作载波吗?
1条答案
按热度按时间tez616oj1#
我认为两种方式都有可能。如果您在CTC模式下使用定时器1并使用中断,则可以在中断处理程序中更改任何引脚。更改引脚值的最佳方法是将1写入PINx寄存器的相应位。在您的情况下,引脚PD 0将是
PIND |=1;
仅当输出波形的生成将完全由硬件实现时,才必须使用OC1A和OC1B。
使用
_delay_us()
函数的第二种方式也是可能的。在IR代码传输期间不需要做任何其他事情,因此在延迟功能中阻塞CPU不是问题。在这里,将有可能进行小的校正,这将校正在生成所发送的IR命令的位形式的代码中花费的时间。