在z-stack中添加ds18b20采集温度,始终显示为127.
首先谢谢各位大牛指点。 程序代码见附件。 谢谢! |
用示波器查看CC2530与DS18B20通信的波形,观察延时是否与DS18B20数据手册上要求的一致。
所有软件编写的时延都要用示波器观察才能知道在实际中是否准确。
你所指的只进行ds18b20测温或者只进行终端和协调器通信两项分离的任务中,进行ds18b20测温是在协议栈中进行的吗?
两项分离的程序是可以完成的。但是就是将ds18b20的程序添加进协议栈中进行测温发送数据,就出现不能正常测温了。一直显示的数据值为127.谢谢!我接下来尝试修改一下时序问题!
分离可以正常运行说明时序没有问题,那么主要的问题就出现在延时函数在运行时所产生的时延不正确,用示波器观察可以一目了然,与DS18B20数据手册上的时序图对照一下就知道延时是否达到要求了,一般的DS18B20结果异常就是因为延时不正确所导致的。
主要是没有示波器现在,我尝试计算进行修改时序!希望可以!谢谢。
由于我没有修改过时序的经验,您说的根据数据手册修改,是修改初始化、读时序、写时序几个相应的延时时间吗?
你从ds18b20的数据手册中可以看到,MCU要向ds18b20写入指令,除了要从通讯口写入指令所对应的一串高低电平外,每个写入的电平的持续时间也是有严格定义的,否则将会导致操作ds18b20失败,而所写入的电平的持续时间就是通过MCU的延时来实现的,假设数据手册上标明写入一个高电平后需要持续大于60us然后写入一个低电平持续大于2us才能再写入一个高电平,则对应的代码为:iodata = 1; delay60us(); iodata = 0; delay2us(); iodata = 1; ...... 你需要检查的就是这些延时函数所产生的延时时间是否正确,这些延时时间不正确将会导致电平的持续时间不足或过大,就极有可能造成写入指令失败。
你好,请问还在么?我也遇到了你同样的问题。调试了好久还是么有结果,请问你当时怎么做出来?谢谢
你好,请问你的问题解决了吗?
我现在也是遇到了这个情况,第一次读的温度是85,以后就是127了,请问您解决了吗?问题出在了哪里?
您好,请问您解决了吗?