OpenEdv-开源电子网

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

多个DS18B20单总线通信问题

[复制链接]

16

主题

84

帖子

0

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2016-4-7
在线时间
151 小时
发表于 2016-5-16 21:11:08 | 显示全部楼层 |阅读模式
10金钱
我暂时用3个DS18B20使用单总线通信,基本上是没有问题的,但程序和运行了一会儿偶尔(时间长短不一定)就有一个或者两个温度出现状况,我验证了一下,发现问题出在了ROM匹配上,复位一下,就OK了,想请问一下大神,求指点一二。
[mw_shl_code=applescript,true]        while(1)
        {
                Match_ROM(ID1);
                LcdDisplay(Read_Temp(ID1),1);
                delayms(200);
                Match_ROM(ID2);
                LcdDisplay(Read_Temp(ID2),2);
                delayms(200);
                Match_ROM(ID3);
                LcdDisplay(Read_Temp(ID3),3);
                delayms(200);
                if(flag)
                {
                        Uart_flag = 1;
                        flag = 0;
                        ES = 1;
                }
        }
}

void Match_ROM(unsigned char *tab)
{
        unsigned char i;
        Ds18b20Init();
        delayms(2);
        Ds18b20WriteByte(0x55);                        //match ROM
        for(i=0;i<8;i++)
        {
                Ds18b20WriteByte(tab);
                delayms(2);
        }
        Ds18b20WriteByte(0x44);            //convert temp
        delayms(2);
}[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

我发现了一个问题,好像是我串口通信使用了中断方式,可能是在匹配ROM时发生了中断请求,等恢复现场时就出现了错误,会不会是这样,大神们,求指点
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

84

帖子

0

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2016-4-7
在线时间
151 小时
 楼主| 发表于 2016-5-16 21:11:09 | 显示全部楼层
我发现了一个问题,好像是我串口通信使用了中断方式,可能是在匹配ROM时发生了中断请求,等恢复现场时就出现了错误,会不会是这样,大神们,求指点
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 15:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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