你好我请教个问题,是这样的 我在协议栈1.3 工程量 添加一个捕获功能 和一个定时器 定时器的中断周期400us 定时器是来发送编码电平给其他设备的,捕获口是用来捕捉 其他设备的IO 电平信息来解码的, 现在有个一个问题就是 当缩短 desired_min_interval 的时间后 这个捕获口就是丢失码元 而且定时器发送的编码也会被中断 如果加大6 desired_min_interval 时间后 这个问题能得到改善 但是有时候在刚链接成功那一会而 也会出现捕获信息不准 发送信息也不准的情况。 当链接出现 捕获信息正确后 和发送脉冲不被中断后 ,这种情况会一直保持到 蓝牙被断开为止都不会出现其中过程的任何捕获信息不准的情况。 在这里我请问一下 协议栈里是不是把 6 desired_min_interval 间隔作为系统的最高优先级中断, 如果捕获信息遇到这个6 desired_min_interval 事件后 就被打断呢? 我改如何有效避免这个问题? 系统我必须要实时的捕获到外部的信息 和有效的发送脉冲给外部设备 谢谢
Fred Wang:
使用其他的timer来处理信号数据,不要与osal挣timer,LL层优先级是最高的。可以参考红外信号处理的方法。
thinkcore wu:
回复 Fred Wang:
你好fred wang ,你所说的time 是程序的时间 还是定时器呢? 我用的是time1 的捕获 time3 的定时器中断400US
LL 层 有用到这两个定时器吗? 还是RF中断 最高优先级呢?
我地捕获信息是需要实时处理的,如果捕获被打断一下 这个捕获过程也就无效了, 还有我的发送用的定时器间隔发送 这样就避开了 发送占用CPU 时间过长 而导致链接断开,但是这样还是一遭到未知打断。 能有什么方法更好解决吗? 你所说的红外信号处理方法 是怎样的呢?谢谢
Fred Wang:
回复 thinkcore wu:
timer1捕获中断只进行缓存数据,可以考虑使用DMA功能,使用osal的task event来定时扫描缓冲区、发送数据(单包20字节,一个周期可以发4个包,timeout设成0就可以了),要自己对数据缓冲区进行控制,与串口透传类似,Delay系统不要超过15ms,否则会断开链接。