我和我的朋友想设计一个通用的学习型遥控器,像这样,用于学习。我们基本上要做的是存储和重放红外脉冲。
我们要检测36kHz,38kHz和40kHz信号。40kHz信号的周期为25。
我们想使用一个8位PIC单片机,现在我们选择了PIC16F616,它将以20MHz的高速晶体振荡器运行。我们有两种选择:
- 使用
Interrupt On Change
模块。 - 使用CCP模块的捕获模式。
第一种选择如下:
假设寄存器设置为:unsigned char _10_us = 0;
。该寄存器将保留时间。带有周期寄存器的TMR2模块被设置为每产生一个中断。发生中断时,它将增加寄存器并退出。这将使最大时间为2.55毫秒。如果需要更多的时间测量,则可以定义其他寄存器,并根据需要递增。_10_us
_1_ms
_10_us
_10_us
这个选择使我挠头。TMR2中断大约每50条指令发生一次。中断处理大约需要20条指令。我剩下30条指令来计算周期并将其保存到数组中。这种方法行得通吗?
第二种选择如下:
设置CCP模块的捕获模式,以便当CCP1引脚上发生事件(从高到低)时,它将产生中断。在中断程序中,它将设置一个标志,以便程序中的任务可以计算(如果需要)并保存CCPR1H(可能不需要)和CCPR1L的值。然后,我们将更改捕获模式的配置,以便在发生低到高沿时触发中断。然后它将等待下一个事件。由于从未使用过,因此无法估算此方法的性能。
另外的选择?
我们可以使用红外解调器IC,例如TSOP17xx系列。那将完全解决我们的问题。但是,有些问题浮现在脑海。
我们的阅读距离要求不高;1米(约3英尺)。如果我们选择一个,就是在38kHz的可正常工作的TSOP1738,如何以及将与36kHz和40kHz的信号,这项工作?
TSOP17xx系列数据表的第4页显示“响应频率相关性”图。据我们了解;
- 40kHz,即38kHz的〜1.053,将给出〜0.6的相对响应度。
- 36kHz,即38kHz的〜0.95,将给出〜0.65的相对响应度。
这些值是什么意思?我们可以使用TSOP1738罚款吗?