共2条
1/1 1 跳转至页
uc,os 读传感器数据,不用uc/os正常,用了读数错误,原因在哪里?真切求助
问
自己写了程序,运行正常.移植到消息循环下,读数错误,这到底该从哪里下手解决呢?
答 1:
详细点说明
答 2:
问题是这样的用1-wire的传感器做测量,不用uc/os系统调试程序很正常.后来为了用多任务,使用uc/os-ii的消息循环机制,发现从传感器上读到的数据有错误,这是怎么回事呢?请指教.
答 3:
!读数据之前加OS_ENTER_CRITICAL(),读数据之后加OS_EXIT_CRITICAL()试试!
答 4:
好的,我试试,行不行给大家一个结果我这就试试,谢谢hexenzhou
答 5:
不行啊加上OS_ENTER_CRITICAL和OS_EXIT_CRITICAL()这样也不行啊
答 6:
一线协议对时间有很高的要求分短时序和长时序,读写过程必须严格保证时序时间长度,如果采用关中断,长的关中断,需要好几个毫秒,如果不关中断,有可能时间长度不符合要求
答 7:
那有什么解决的办法呢?在不加载系统时,工作正常,说明时序是对的。放在uC/OS-II下,现在考虑的确是应该开/关中断的,不过使用了OS_ENTER_CRITICAL和OS_EXIT_CRITICAL()也不行,这又是怎么回事呢?不明白pubstar的意思,代码在OS_ENTER_CRITICAL和OS_EXIT_CRITICAL()之间执行,也要分开/关中断需时的长短么?请各位指教。
答 8:
想也是时序方面的问题。把其他任务停掉try一try此外,把这个任务的代码贴出来看看与你说的消息有没有关系?
答 9:
不如将几种时间单独,重复产生,用示波器看一下时序
答 10:
在多任务下很难测时序的pubstar,很难测的。greatbin,用你的方法试试,10个数据中有1个错的,一用多任务就没一个对的了。怎么办?
答 11:
可能的话,代码贴出来看看
答 12:
greatbin,我换了I2C的片子不过还有一个问题,怎么测量任务的运行时间呢?
答 13:
请看UCOS-II关于OSStat部分
答 14:
我也遇到过用1-wire的产品在uC/OS下出错的不过是有对有错,没有全错,即使放在临界代码段也不行,问题也没搞清楚;(,1-wire的东西对时序要求太严格了。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |