硬件操作正在进行时,时间片中断会不会影响
有一问题请教各位:OS的中断20mS的话,如果操作I2C总线发生在刚发生时间片中断到来时,那岂不出问题,是否需要在操作硬件时序的时候关闭OS的时间片中断呢?谢谢 回复【楼主位】xjjiang-----------------------------------------------------------------------
自己顶一下,上述的情况还没有出现,只是怕出现我就头就大了,在关键的地方我都有关OS心脏,完了再开,但这个疑问在心中一段时间还没有找到原因 如果是有硬件I2C单元,完全不用担心,但如果是模拟时序(bit banging),从理论上说,是肯定要出问题的,只是概率大小而已。 楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。 如果是软件模拟I2C的话,还是建立关掉中断,操作完了再开中断的好
虽然被打断可能性很好,不过一旦出现打断的情况,那问题就大了
使用优先级控制,不太可行。硬件中断总是比任务的优先级要高 回复【3楼】huayuliang 花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。
-----------------------------------------------------------------------
技巧吧~~~~~~我有时 在定时器理~~放一堆代码 或者只放个 标记的东西在回来主程序这 检查标记 在模拟I2C时序时,关闭系统中断 操作完毕 马上开中断,这样可以保证I2C的操作可靠性 回复【5楼】jrcsh邪恶的小会会
回复【3楼】huayuliang 花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。
-----------------------------------------------------------------------
技巧吧~~~~~~我有时 在定时器理~~放一堆代码 或者只放个 标记的东西在回来主程序这 检查标记
-----------------------------------------------------------------------
对,就是这么处理。这样基本上就不会耽误系统时钟了。。尤其是有看门狗的时候。 回复【3楼】huayuliang花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。
-----------------------------------------------------------------------
uCOS中用的,任务是独立的,时间片只是做任务的裁决.定时器中断中是OS的操作代码是很少的,谢谢! 回复【3楼】huayuliang花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。
-----------------------------------------------------------------------
另外不知道3楼你是用什么OS做内核实现一个开发平台? 没有具体的。只是在使用这种思想。
尝试过的倒是不少,可这方面还不如你呢。
正打算用 QP。这个东西已经开源了。 如果硬件操作指硬件外设独立操作,比如IIC主机读取什么数据,那么一般不会有影响。如果是硬件外设的从机,比如MCU当IIC从机,那么需要注意,可能导致失败。
软件模拟时序,主机的话,看能不能Hold,IIC,SPI主机是可以Hold的,这些就没事儿。模拟UART这样的时序敏感,那就不合适。当从机需要分析时序。
总之,具体问题具体分析。 回复【11楼】dr2001
如果硬件操作指硬件外设独立操作,比如iic主机读取什么数据,那么一般不会有影响。如果是硬件外设的从机,比如mcu当iic从机,那么需要注意,可能导致失败。
软件模拟时序,主机的话,看能不能hold,iic,spi主机是可以hold的,这些就没事儿。模拟uart这样的时序敏感,那就不合适。当从机需要分析时序。
总之,具体问题具体分析。
-----------------------------------------------------------------------
请教:Hold什么意思? 回复【10楼】huayuliang花生
没有具体的。只是在使用这种思想。
尝试过的倒是不少,可这方面还不如你呢。
正打算用 qp。这个东西已经开源了。
-----------------------------------------------------------------------
QP没用过,我现是是操作IIC时关内核,但郁闷的事是接收无线433MHz,OOK调制的,会影响接收灵敏度,呵呵! MARK i2c spi主机被中断暂停时没影响的。
本身这两种总线就是通过clk读取数据的。 MARK 同步通信,影响通信效率
页:
[1]