如何让18B20温度传感器的工作的同时让中断跑起来

2020-02-01 16:34发布

关于18B20测温,网上有很多的资料,我所见的资料几乎无一例外是说使用18B20时要关中断,可是有很多情况是温度要测,还要保证实时性,中断又不能关,否则会失去很多便利。是不是18B20使用了就一定不能用中断呢,答案是否定的,不过如何用确是有一点点小窍门的:
    1)为啥许多资料说使用18B20的同时不能开中断,我实际试过,如果是使用89S52单片机+11.0592M晶振,开了定时中断后,18B20读取的数据频频出错,根本无法忍收,而Mega128+8M晶振情况就好多了,但无法保证数据不出错,看来18B20使用时开中断是有风险的;
    2)分析18B20时序,发现18B20工作时有一些脉冲对持续时间误差要求很高,据此可以得到一些思路;
    3)思路一: 使用较长时间的定时中断,如1秒左右的中断时间,在中断后0.9秒内允许18B20读数据,剩余的0.1秒时间禁止18B20读数据,因为18B20读取数据的时间大约为30毫秒左右,因此可保证18B20读数据时不来中断干扰;
    4)思路二: 使用较短时间的定时中断,严格控制中断处理时间,如小于10-20微妙,此时中断不会导致18B20读数据失败;
    5)思路三: 思路一和思路二受限制的时候或者为了进一步提高可靠性,可对18B20读取的数据进行CRC校验,并确认其厂商保留位为缺省值。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
38条回答
coleyao
1楼-- · 2020-02-03 21:50
看来高手不少,翻以前的贴子怎么没看到这些观点呢?不会是都忙着潜水吧!  我再丢个问题出来,这次不给答案了: 通常控温都是用pid方法,也就是频域内的分析法,那有没有时域内的控温方法,公式更简洁,控温效果更好呢,知道的高手不妨丢出来给大家见识一下!
xcm0215
2楼-- · 2020-02-04 01:37
只要在读写时间片的时候关闭中断就行了,它是PCM调制的。
hjjft
3楼-- · 2020-02-04 01:45
回复【14楼】bluefeel 郁闷感觉
ds18b20不能开中断?低电平时候不能开中断,拉高时候随便,可以等待任意长时间,低电平时间占不了多少。


(原文件名:1.jpg)
引用图片
-----------------------------------------------------------------------

使用串口来模拟单线总线时序的话,由于低电平都是由硬件产生的,因此宽度只跟设置的波特率相关,而完全不用担心被中断影响。
mcu5i51
4楼-- · 2020-02-04 02:57
偶也是只在位操作时关中断,在程序中实时响应影响小于100uS
xinjie1023
5楼-- · 2020-02-04 03:56
 精彩回答 2  元偷偷看……
dingliming
6楼-- · 2020-02-04 07:40
收藏

一周热门 更多>