主题中讨论的其他器件:CC2650STK
工具/软件:TI-RTOS
背景-尝试从 IR 传感器收集硬件中断脉冲。 我正在根据 IR 主机协议接收正确数量的脉冲、但计时已关闭。
数据基于脉冲持续时间、类似于:基本脉冲长度+ 90us * n、其中 N 是0-F (半字节)之间的数字、因此我所需的最小精度小于90us。
问题-我看到的时间戳不够准确。 我通过存储之前的节拍来收集时序-"Clock_getTicks"、 然后在收集到足够的脉冲后、我禁用 IR 处理程序并通知主任务进行处理、在完成处理后、只需重新启用特定数据引脚的中断。
IR 处理程序示例:
空 IR_Interrupt_Handler (空)
{
uint32 tick_now = Clock_getTicks();
//存储脉冲: tick_now - IR_data.LAST_ACTIVE_TICKs (我稍后将这些值多路复用为"Clock_tickPeriod"以使它们进入我们的时间(微秒)。
IF (接收到所需的脉冲数)
{
//1. 禁用中断
//2. 通知主任务以处理数据(完成后、将重置接收缓冲区并启用中断以启动更多 IR 数据的接收
}
IR_DATA.LAST_ACTIVE_TICKs = tick_now;
}
注意:我尝试在 IR 处理程序内禁用此数据卡上的中断、然后在其末尾重新启用它、这不会改变我的结果、但是当我执行此操作时、它似乎会在一些迭代后锁定、大约200-300个周期的脉冲
是否有更好的方法为硬件中断设置时间戳?