3554|15

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430F149 初始化DS18B20失败! [复制链接]

为什么在初始化DS18B20的时候回失败呢!

这是初始化DS18B20的时序图,下边是程序,麻烦大神们帮看一下,哪里有问题,谢谢!
unsigned char Init_18B20(void)
{
    unsigned char Error;
    DQ_out;                //设置P1.6为输出
    DQ0;                    //P1.6输出0
    DelayNus(600);     //延时600us
    DQ1;                   //P1.6输出1
    DelayNus(55);      //延时55us
    DQ_in;                //设置P1.6为输入
    DelayNus(100);    //延时100us
    if((P1IN & BIT6))
    {
        Error = 1;        //初始化失败
    }
    else
    {
        Error = 0;        //初始化成功
    }
    DQ_out;              //设置P1.6为输出
    DQ1;                  //P1.6输出为1
    DelayNus(400);   //延时400us
}


我现在唯一能做的就是改变他的延时时间,因为我实在找不到哪里出了问题,所以还请帮忙看下,谢谢!

最新回复

你试了没有啊,我那样的说法,初始化成功了吗?如果有结果的话,还请告知下哈。  详情 回复 发表于 2016-4-11 09:57
 
点赞 关注

回复
举报

23

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
DS18B20 初始化时序图

QQ截图20160408122043.png (59.07 KB, 下载次数: 5)

QQ截图20160408122043.png
 
 

回复

6040

帖子

195

TA的资源

版主

板凳
 
电路图呢,加上拉电阻了吗?
 
 
 

回复

6040

帖子

195

TA的资源

版主

4
 
由于430没有开漏输出,只能输出高或者低
因此通常的做法就是靠上拉输出,输出低时,设置输出0,输出高是,设置成输入,此时是输出高,也是输入状态。
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

5
 
lcofjp 发表于 2016-4-8 13:02
由于430没有开漏输出,只能输出高或者低
因此通常的做法就是靠上拉输出,输出低时,设置输出0,输出高是, ...


 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

6
 
DS18B20 电路图

QQ截图20160408133525.png (11.86 KB, 下载次数: 3)

QQ截图20160408133525.png

点评

手册上说上拉电阻要多大? 还有就是你的延时函数是否准确,因为18B20的时序好像比较严格。  详情 回复 发表于 2016-4-8 13:40
 
 
 

回复

6040

帖子

195

TA的资源

版主

7
 

手册上说上拉电阻要多大?
还有就是你的延时函数是否准确,因为18B20的时序好像比较严格。
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

8
 
lcofjp 发表于 2016-4-8 13:40
手册上说上拉电阻要多大?
还有就是你的延时函数是否准确,因为18B20的时序好像比较严格。

哦,知道了,谢谢!我在试!
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

9
 
你的延时函数呢,猜测有问题。。。
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

10
 
数码小叶 发表于 2016-4-8 14:00
你的延时函数呢,猜测有问题。。。

void DelayNus(unsigned int n)
{
    TACTL |= TASSEL1 + ID_3;
    TACTL |= MC_1;
    CCR0 = n;
    while(!(TACTL & BIT0));
    TACTL &= ~MC_1;
    TACTL &= ~BIT0;
}

点评

找了很久的文档,最后去官网下了,然后发现我就理解不了你这延时思路  详情 回复 发表于 2016-4-8 14:42
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

11
 
梦想时刻 发表于 2016-4-8 14:05
void DelayNus(unsigned int n)
{
    TACTL |= TASSEL1 + ID_3;
    TACTL |= MC_1;
    CCR0 = n;
...

找了很久的文档,最后去官网下了,然后发现我就理解不了你这延时思路

点评

我用的是8M晶振,进行了8分频之后,所以n每加一就是1us,然后开中断去判断中断溢出标志位,如果有中断溢出就结束while循环。  详情 回复 发表于 2016-4-8 16:17
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

12
 
数码小叶 发表于 2016-4-8 14:42
找了很久的文档,最后去官网下了,然后发现我就理解不了你这延时思路

我用的是8M晶振,进行了8分频之后,所以n每加一就是1us,然后开中断去判断中断溢出标志位,如果有中断溢出就结束while循环。

点评

也没分析出问题出在哪,算了下,延时也符合时序啊  详情 回复 发表于 2016-4-8 17:56
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

13
 
梦想时刻 发表于 2016-4-8 16:17
我用的是8M晶振,进行了8分频之后,所以n每加一就是1us,然后开中断去判断中断溢出标志位,如果有中断溢出 ...

也没分析出问题出在哪,算了下,延时也符合时序啊
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

14
 
unsigned char Error;
    DQ_out;                //设置P1.6为输出
    _DINT();              // 关闭全局中断


加入这个_DINT() 这个函数试试哦。

点评

恩,好的。谢谢!  详情 回复 发表于 2016-4-11 09:47
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

15
 
huaiqiao 发表于 2016-4-8 21:54
unsigned char Error;
    DQ_out;                //设置P1.6为输出
    _DINT();              // 关闭 ...

恩,好的。谢谢!

点评

你试了没有啊,我那样的说法,初始化成功了吗?如果有结果的话,还请告知下哈。  详情 回复 发表于 2016-4-11 09:57
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

16
 

你试了没有啊,我那样的说法,初始化成功了吗?如果有结果的话,还请告知下哈。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表