共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| Chaos-nano:专为低资源单片机设计的轻量级协作式异步操作系统(ATMEGA328P轻量级操作系统)—— 详细介绍被打赏¥16元 | |
| FPGA配置被打赏¥10元 | |
| Chaos-nano协作式异步操作系统:赋能MicrochipAVR8位单片机的革新之路被打赏¥15元 | |
| 基于esp32开发时串口工具的注意点被打赏¥24元 | |
| 基于FireBeetle2ESP32-C5开发板的舵机控制被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板制作的电子相册被打赏¥32元 | |
| 基于FireBeetle2ESP32-C5开发板的超声波测距及显示被打赏¥21元 | |
| FireBeetle2ESP32-C5上RTC电子时钟的实现被打赏¥25元 | |
| 【分享开发笔记,赚取电动螺丝刀】MAX78000开发板读取SD卡被打赏¥23元 | |
| 【S32K3XX】Standby RAM 重启后数据异常问题调查被打赏¥38元 | |
我要赚赏金
