xjjiang 发表于 2010-5-6 16:56:58

硬件操作正在进行时,时间片中断会不会影响

有一问题请教各位:OS的中断20mS的话,如果操作I2C总线发生在刚发生时间片中断到来时,那岂不出问题,是否需要在操作硬件时序的时候关闭OS的时间片中断呢?谢谢

xjjiang 发表于 2010-5-10 10:36:25

回复【楼主位】xjjiang
-----------------------------------------------------------------------

自己顶一下,上述的情况还没有出现,只是怕出现我就头就大了,在关键的地方我都有关OS心脏,完了再开,但这个疑问在心中一段时间还没有找到原因

John_Lee 发表于 2010-5-28 23:36:59

如果是有硬件I2C单元,完全不用担心,但如果是模拟时序(bit banging),从理论上说,是肯定要出问题的,只是概率大小而已。

huayuliang 发表于 2010-5-28 23:58:02

楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。

所以俺只会在定时器中断里安排耗时极少的代码。

lishutong 发表于 2010-5-29 01:04:54

如果是软件模拟I2C的话,还是建立关掉中断,操作完了再开中断的好

虽然被打断可能性很好,不过一旦出现打断的情况,那问题就大了

使用优先级控制,不太可行。硬件中断总是比任务的优先级要高

jrcsh 发表于 2010-5-29 03:02:33

回复【3楼】huayuliang 花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。

-----------------------------------------------------------------------

技巧吧~~~~~~我有时 在定时器理~~放一堆代码 或者只放个 标记的东西在回来主程序这 检查标记

god-father 发表于 2010-5-29 11:30:46

在模拟I2C时序时,关闭系统中断 操作完毕 马上开中断,这样可以保证I2C的操作可靠性

huayuliang 发表于 2010-5-29 14:10:57

回复【5楼】jrcsh邪恶的小会会
回复【3楼】huayuliang 花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。
-----------------------------------------------------------------------
技巧吧~~~~~~我有时 在定时器理~~放一堆代码 或者只放个 标记的东西在回来主程序这 检查标记
-----------------------------------------------------------------------

对,就是这么处理。这样基本上就不会耽误系统时钟了。。尤其是有看门狗的时候。

xjjiang 发表于 2010-6-1 19:40:37

回复【3楼】huayuliang花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。

-----------------------------------------------------------------------

uCOS中用的,任务是独立的,时间片只是做任务的裁决.定时器中断中是OS的操作代码是很少的,谢谢!

xjjiang 发表于 2010-6-1 19:41:56

回复【3楼】huayuliang花生
楼主既然用了时间片,那么请问你的任务是在 main 里呢??还是在这个时间片的定时器中断里?
如果是前者,可以在优先级上控制下(先执行哪一个);
如果是后者,某些开发环境可能会直到中断结束之后才能跳出来。
所以俺只会在定时器中断里安排耗时极少的代码。

-----------------------------------------------------------------------

另外不知道3楼你是用什么OS做内核实现一个开发平台?

huayuliang 发表于 2010-6-1 21:36:15

没有具体的。只是在使用这种思想。
尝试过的倒是不少,可这方面还不如你呢。

正打算用 QP。这个东西已经开源了。

dr2001 发表于 2010-6-1 21:41:36

如果硬件操作指硬件外设独立操作,比如IIC主机读取什么数据,那么一般不会有影响。如果是硬件外设的从机,比如MCU当IIC从机,那么需要注意,可能导致失败。

软件模拟时序,主机的话,看能不能Hold,IIC,SPI主机是可以Hold的,这些就没事儿。模拟UART这样的时序敏感,那就不合适。当从机需要分析时序。

总之,具体问题具体分析。

xjjiang 发表于 2010-6-2 11:31:08

回复【11楼】dr2001
如果硬件操作指硬件外设独立操作,比如iic主机读取什么数据,那么一般不会有影响。如果是硬件外设的从机,比如mcu当iic从机,那么需要注意,可能导致失败。
软件模拟时序,主机的话,看能不能hold,iic,spi主机是可以hold的,这些就没事儿。模拟uart这样的时序敏感,那就不合适。当从机需要分析时序。
总之,具体问题具体分析。
-----------------------------------------------------------------------

请教:Hold什么意思?

xjjiang 发表于 2010-6-2 11:33:25

回复【10楼】huayuliang花生
没有具体的。只是在使用这种思想。
尝试过的倒是不少,可这方面还不如你呢。
正打算用 qp。这个东西已经开源了。
-----------------------------------------------------------------------

QP没用过,我现是是操作IIC时关内核,但郁闷的事是接收无线433MHz,OOK调制的,会影响接收灵敏度,呵呵!

stepby 发表于 2010-11-2 17:27:16

MARK

huanggua 发表于 2010-11-7 18:25:34

i2c spi主机被中断暂停时没影响的。
本身这两种总线就是通过clk读取数据的。

yixin1851 发表于 2010-11-7 20:06:50

MARK

liubo1234 发表于 2011-1-12 16:46:01

同步通信,影响通信效率
页: [1]
查看完整版本: 硬件操作正在进行时,时间片中断会不会影响