1
如何使用8位PIC测量IR信号的脉冲宽度?
我和我的朋友想设计一个通用的学习型遥控器,像这样,用于学习。我们基本上要做的是存储和重放红外脉冲。 我们要检测36kHz,38kHz和40kHz信号。40kHz信号的周期为25。μμ\mu 我们想使用一个8位PIC单片机,现在我们选择了PIC16F616,它将以20MHz的高速晶体振荡器运行。我们有两种选择: 使用Interrupt On Change模块。 使用CCP模块的捕获模式。 第一种选择如下: 假设寄存器设置为:unsigned char _10_us = 0;。该寄存器将保留时间。带有周期寄存器的TMR2模块被设置为每产生一个中断。发生中断时,它将增加寄存器并退出。这将使最大时间为2.55毫秒。如果需要更多的时间测量,则可以定义其他寄存器,并根据需要递增。μμ\mu_10_us_1_ms _10_us_10_usμμ\mu 这个选择使我挠头。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罚款吗?