OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3585|回复: 5

求助,UCOS-II+DS18B20,需要修改OS_CPU_SystickInit(),和delay_us兼容

[复制链接]

2

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-20
在线时间
1 小时
发表于 2018-5-23 00:54:53 | 显示全部楼层 |阅读模式
我用裸奔的DS18B20跑,可以,用UCOS-II跑不行,读出来一直是零,在网上查,说要修改OS_CPU_Systicklnit(void)与delay_ms兼容,应该改哪里

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2018-5-23 15:02:16 | 显示全部楼层

回帖奖励 +1 金钱

DS18B20 只有单总线通信,单总线设备不适合在RTOS里用,尤其是多任务的程序,因为没有时钟线来同步信号,所以任务切换的时候会干扰通信的时序。
强行使用的办法1:放在最高优先级的任务里,并在通信的时候屏蔽中断;办法2:通信的时候屏蔽任务调度和中断。
不管怎么弄都会影响其他的任务和中断,DS18B20的延时很长,对别的任务影响很严重,任务多点就基本没法用了,你就是这一次改Systickl搞定了,以后也没有用到的地方。

建议要么继续裸奔,能用DS18B20的场合,程序不会复杂到非要上系统不可,要么换一种带时钟线的接口(比如iic,spi)的传感器
回复 支持 1 反对 0

使用道具 举报

2

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-20
在线时间
1 小时
 楼主| 发表于 2018-5-24 10:23:52 | 显示全部楼层
分析得很有道理啊
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-5-21
在线时间
1 小时
发表于 2018-6-4 15:52:15 | 显示全部楼层
xianshasaman 发表于 2018-5-23 15:02
DS18B20 只有单总线通信,单总线设备不适合在RTOS里用,尤其是多任务的程序,因为没有时钟线来同步信号,所 ...

你好,我用的ucos3,也是不能用,看来只能用裸机了。。
裸机可以实现两个任务同时进行吗?一遍边进行温度检测,一边点击转动,
回复 支持 反对

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2018-6-5 14:09:07 | 显示全部楼层
zhf847720362 发表于 2018-6-4 15:52
你好,我用的ucos3,也是不能用,看来只能用裸机了。。
裸机可以实现两个任务同时进行吗?一遍边进行温 ...

这个要看你功能是怎么设计的。要是随便测测显示一下,stm32内部就有集成到adc的测温功能。要是非要用ds18b20,不上系统也可以用,如果是步进电机,用定时器的pwm控制应该不会有冲突。也可以换个器件,STS30就不错,iic协议,测温范围大,精度也高;SHT30也可以,温湿度都能测。要是需要高速的温度测量,就需要用热电偶或者ntc热敏电阻。

如果是学习的目的,你既然都用ucos了,肯定是换掉ds18b20。
回复 支持 反对

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
发表于 2018-6-5 14:28:10 | 显示全部楼层
用到ds18b20的时候,时序控制的时候进行临界区代码保护,这段时序就会完整的运行,不会被打断了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 22:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表