访问DS18时关断全局中断,读完再开即可 |
l6931639 发表于 2019-9-9 18:25 你好,你的意思是把计时相关的放中断去处理吗?之前我也是想过,但实际操作发现程序写起来不顺手。。。比如:1820需要延迟120us,中断10us一次,那么在中断中只做减减,当12次中断后时间为零,这时在其他函数做判断处理,当时间为0则进行之后程序并重新时间赋值,这样延迟做到了,也没有傻傻的delay。对吗? |
使用定时器中断非阻塞程序设计就可以随便移植,基本不用每次重新调试。 |
join22life 发表于 2019-9-5 20:07 我解决1820的办法是使用定时器中断做定时120us把程序写在中断里,使用非阻塞程序设计。 |
谢谢各位的帮助,已经实现了。也谢谢51hei这个平台一直能有网友帮助和学习机会。 |
wulin 发表于 2019-9-6 09:02 确实是时序问题,是中断引起的。多谢! |
fox_hk 发表于 2019-9-5 20:37 你是正确的,后来我在电源网上看到说中断会影响,关闭之后就可以正常显示温度了。这个问题真是耗费了我很多精力和时间,要是能早点看到你的回复就好了,也多谢回复! |
楼主调不成功主要还是时序问题,给你一个1T单片机的示例程序,是在郭天祥的12T程序基础上改的,经过实物验证无误。
|
这东西 很扣时序。在读这个时 中断都最好关掉 |
没有你 发表于 2019-9-5 09:28 水平也不行,所以调试这个真是太费时间了,你的建议我会试试但估计看不懂 |
l6931639 发表于 2019-9-5 17:17 我之前用12T时也只调试温度,可以显示但温度比实际低个10度左右,现在正和时钟就改1T,但真是崩溃 |
你先把单片机其他功能都去掉单独调好1820再放到一起 |
DS18B20对时序要求比较严格,估计是时序问题 |
DS18B20对时序要求比较严格,估计是时序问题 |
用逻辑分析仪器看一下单片机和DS18B20的通信过程,看看DS18B20能否正常回应数据。DS18B20对时序要求很严格的。 |
防尘 |
温度一直一个数值,难道是转换部分有问题? |