通过大家的通之以情晓之以理,现在稍微有些明亮了,大概说下我的理解,请各位评判下看看
串口中断我一直认为必需是最高级的,就像所长教程那样理解的样,串口分为了中断和信息处理2个过程,只有中断过程才是要求实时,而且中断处理时间很短,缓冲就让这2个过程得以有效执行
以前的问题主要在处理红外解码和串口中断的冲突上,因为红外发送器来的编码在时间上有9ms,4.5ms,2.25ms,1.125ms,0.562ms这些种类的高低电平保持时间,如所长上面的教的那样,只有0.562的那个中断是实时的 因为以前有个误区,以为整个红外解码都在中断中处理,才会发生我所谓的红外中断大致36ms处理过程中串口中断的保证问题,现在从大家的分析看来36ms是整个解码的时间,而中断如串口一样只有很短的时间,所以一个中断只是检测一个电平 (脉宽为0.56ms、间隔 0.565ms、周期为1.125ms 的组合表示二进制的“0”; 用脉宽为 0.56ms、间隔1.69ms、周期为2.25ms 的组合表示二进制的“1”)这样的随机的01序列会随机出现在引脚上
现在打算用外部中断和定时器结合来判断,不知道这个想法合理不?这样的话就不会出现什么中断冲突了,只可能出现解码不正确(设计好了正确虑应该不会低)。先实验,请各位不吝赐教!
这样解决的话就是类似事件触发的操作系统了,刚开始一直看那个老外的时间触发系统的书,现在终于有点知道该怎么做了,如果哪位看过那个书或者知道怎么用完全的时间触发系统通过多级任务多状态任务来解决这个问题,希望教育教育我哈,飞吻~~
|