急!!GPIO模拟的IIC,电池驱动反复调用,会对系统有影响吗?
如题。wince5.0平台。我的电池驱动里用的GPIO模拟IIC的方式,通过读写IIC来得到电压值和当前电量值。而电池驱动是wince系统反复调用的,这样就相当于GPIO在反复调用。现在系统很慢很卡,鼠标晃动也很卡。会是因为这个GPIO模拟IIC的原因吗?
那要看你代码怎么写,出现这样的情况,只能说你的实现有问题。
引用: 引用楼主 jiayiting 的回复:
如题。wince5.0平台。我的电池驱动里用的GPIO模拟IIC的方式,通过读写IIC来得到电压值和当前电量值。而电池驱动是wince系统反复调用的,这样就相当于GPIO在反复调用。现在系统很慢很卡,鼠标晃动也很卡。会是因为这个GPIO模拟IIC的原因吗?
你要是很频繁的调用这个驱动,那系统还哪有时间做其他事?
中间加一些sleep()呢.
持续调用,还有打印等事情,使thread之间不能互相调用的话,会造成很卡如你所说的现象
是不是这个影响,吧这个驱动先屏蔽掉,然后再看不就清楚了?
电池驱动,应该是隔一段时间调用一次,来反馈电量信息吧
把此驱动先拿掉试试看,看看是不是这个问题导致
我们平台上也是GPIO模拟I2C,查询电池电量是周期性的查询,没有任何问题
引用: 引用 6 楼 hahagoodhaha 的回复:
把此驱动先拿掉试试看,看看是不是这个问题导致
我们平台上也是GPIO模拟I2C,查询电池电量是周期性的查询,没有任何问题
你是多长时间调一次电池驱动呀?所有的信息不是都是在BatteryPDDGetStatus这个函数里返回的吗,这样的话,比如说我1min查询一次,电池电耗光了,我需要立即充电,那岂不是1min以后,电池的标志才会变成充电的标志??
1. 我印象中,一般会设置1分钟左右查询一次吧,应该不会这个原因导致速度变慢
2. 另外,我没有测试过,如果“我需要立即充电,那岂不是1min以后,电池的标志才会变成充电的标志??”不知道检查速度会不会加快
要判断是否是这个原因导致的问题最简单的办法是让系统不加载这个驱动,或者是读取代码中无任何操作,也就是去掉通过IO口模拟IIC通信操作这部分内容,看看系统是否仍然卡,还卡的话就是其它地方的问题,如果不卡了就说明你写的代码问题,通常情况下IO口模拟IIC不会有什么问题的,有问题的话只能是代码写得不好,驱动中尽量不要使用while(..)之类的语句,除非你确定这个while瞬间就过去了,不影响整个系统,否则会让系统很卡。
我想问一下 所有的信息不是都是在BatteryPDDGetStatus这个函数里返回的吗,这样的话,比如说我1min查询一次,电池电耗光了,我需要立即充电,那岂不是1min以后,电池的标志才会变成充电的标志??
引用: 引用楼主 jiayiting 的回复:
如题。wince5.0平台。我的电池驱动里用的GPIO模拟IIC的方式,通过读写IIC来得到电压值和当前电量值。而电池驱动是wince系统反复调用的,这样就相当于GPIO在反复调用。现在系统很慢很卡,鼠标晃动也很卡。会是因为这个GPIO模拟IIC的原因吗?
测电池电压不用太快的。
引用: 引用 11 楼 gooogleman 的回复:
引用楼主 jiayiting 的回复:
如题。wince5.0平台。我的电池驱动里用的GPIO模拟IIC的方式,通过读写IIC来得到电压值和当前电量值。而电池驱动是wince系统反复调用的,这样就相当于GPIO在反复调用。现在系统很慢很卡,鼠标晃动也很卡。会是因为这个GPIO模拟IIC的原因吗?
测电池电压不用太快的。
所有的信息不是都是在BatteryPDDGetStatus这个函数里返回的吗,这样的话,比如说我1min查询一次,电池电耗光了,我需要立即充电,那岂不是1min以后,电池的标志才会变成充电的标志??
怎么都没人回答这个问题呀~~~
引用: 引用 12 楼 jiayiting 的回复:
引用 11 楼 gooogleman 的回复:
引用楼主 jiayiting 的回复:
如题。wince5.0平台。我的电池驱动里用的GPIO模拟IIC的方式,通过读写IIC来得到电压值和当前电量值。而电池驱动是wince系统反复调用的,这样就相当于GPIO在反复调用。现在系统很慢很卡,鼠标晃动也很卡。会是因为这个GPIO模拟IIC的原因吗?
测电池电压不用太快的。
所有的信息不是都是在BatteryPDDGetStatus这个函数里返回的吗,这样的话,比如说我1min查询一次,电池电耗光了,我需要立即充电,那岂不是1min以后,电池的标志才会变成充电的标志??
怎么都没人回答这个问题呀~~~
充电时难道没有INTTERUPPT产生吗?
我现在用控制寄存器的方式来操作IIC,但是系统竟然会运行一会,就死机,这会是什么原因呢???