打印
[MCU]

如何实现软件检测18B20的复位是否正常?

[复制链接]
2595|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mfkyygt|  楼主 | 2014-9-20 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一直用18B20测温都好好的,某日不知为何18B20发烫厉害,程序跑飞复位后卡在18B20初始化上,以前没有特别注意这个环节,认为18B20初始化后就可以执行下面的代码了,现在遇到问题确实忽视了这点。查了datasheet,18B20复位正常后由于有10K电阻的上拉,空闲时间端口输出为高电平,那是否可以通过软件检测输出端口持续高电平的时间来判断18B20复位是否正常?不知其他朋友是如何判断检测的?
//---- DS18B20复位 ----
void DS18B20_reset()
{
        OUTPUT(DDRB,DQ);   //DQ设为输出
        CLR(PORTB,DQ);        //DQ拉低电平
        delay_us(680);           //延迟500us
        SET(PORTB,DQ);        //DQ置高电平
        delay_us(50);             //延迟40us
        INPUT(DDRB,DQ);      //DQ设为输入
        while(PINB&BIT(DQ));       //在这里加入检测长时间的高电平?
        while(!(PINB&BIT(DQ)));
}


相关帖子

沙发
mfkyygt|  楼主 | 2014-9-20 21:22 | 只看该作者
本帖最后由 mfkyygt 于 2014-9-21 07:40 编辑

试着改为上电后先复位一次18B20,然后查总线是否一直为高,是则判断为18B20未接好或损坏,显示err,问题初步解决

//----
OUTPUT(DDRB,DQ);   //DQ设为输出
CLR(PORTB,DQ);     //DQ拉低电平
delay_us(680);     //延迟500us
SET(PORTB,DQ);     //DQ置高电平
delay_us(50);      //延迟40us
INPUT(DDRB,DQ);    //DQ设为输入
while (PINB&BIT(DQ))
{
    L_aderr =1;
    show_led(22);
    SET(PORTB,BT);
  }
  L_aderr =0;
  delay_ms(100);
  //----
  while (1)      
  {
     DS18B20_reset();       //DS18B20复位
     DS18B20_write(0xCC);   //跳过ROM
     DS18B20_write(0x44);   //启动温度转换
     ……

使用特权

评论回复
板凳
ningling_21| | 2014-9-21 00:15 | 只看该作者
10K的上啦电阻有点大,一般取4.7K,电源3.3V也可以工作...

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
mfkyygt + 3 神马都是浮云
地板
ayb_ice| | 2014-9-21 10:17 | 只看该作者
通信过程都有应答的,中间出错应该知道的

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
mfkyygt + 3 神马都是浮云
5
mfkyygt|  楼主 | 2014-9-21 21:54 | 只看该作者
ayb_ice 发表于 2014-9-21 10:17
通信过程都有应答的,中间出错应该知道的

现在就是想知道应如何在测温过程中检测18B20是否连接或工作正常,请指教解决方法,谢谢。

使用特权

评论回复
6
ayb_ice| | 2014-9-22 07:13 | 只看该作者
没有应答就说明有问题了

使用特权

评论回复
7
ayb_ice| | 2014-9-22 07:13 | 只看该作者
没有应答就说明有问题了

使用特权

评论回复
8
ayb_ice| | 2014-9-22 09:06 | 只看该作者
//------------------------------------------------------
// check_reset_wire
//------------------------------------------------------
//
// 检查(复位)是否有总线存在(退出时总线应该为高)
// 返回: WIRE_TRUE=成功, WIRE_FALSE=失败, WIRE_NO=没有器件
//
#if CHECK_RESET_WIRE_EN > 0
#pragma WIRE_DISABLE
U8 check_reset_wire(void)
{
        U8 x;

        DQ = 0;
        wire_reset_delay();
        DQ = 1;
        _nopx(1);
        if(!DQ) return WIRE_FALSE;
        x = 0;
        while(DQ){
                if(++x > 250){
                        return WIRE_NO;                // 2008-12-13 18:31
                }                                                // 由return WIRE_FALSE;改为return WIRE_NO;
        }
        wire_reset_delay();
        if(!DQ) return WIRE_FALSE;
        return WIRE_TRUE;
}
#endif

使用特权

评论回复
9
mfkyygt|  楼主 | 2014-9-22 14:37 | 只看该作者
那实际也是轮询DQ位是否一直为高电平了

谢谢关注

使用特权

评论回复
10
cdf1214| | 2015-3-28 16:31 | 只看该作者
                 北京长实拓展电子有限公司
本公司主营TI. NXP. IR. ON. SiLicon                                                                                                       等著名世界品牌产品。
MSP430F一系列TI储存芯片 微控处理器
MSP430F149IPMR MSP430F5438AIPZR MSP430F5438IPZR等。
C8051F 一系列SILICON 单片机 微控处理器
C8051F020 C8051F120 C8051F340 C8051F040等
LPC一系列NXP单片机  
LPC2132FBD64 LPC2134FBD64 LPC2214FBD144  
LPC2378FBD144 LPC2292FBD144等一系列供应
专营:低压差 基准源 三 五 七端稳压 二三极管 场效应 快恢复 肖特基二极管 可控硅 达林顿 整流桥 TVS管 光藕 MAX AD 集成电路 
                   北京长实拓展电子销售:陈冬锋
                                     QQ:2850327057
                      电话:15711002528,13641144498

使用特权

评论回复
11
cdf961214| | 2015-4-2 15:29 | 只看该作者
                 北京长实拓展电子有限公司
        本公司主营TI. NXP. IR. ON. SILIABS
                                               
18B20温度传感器特价销售                                              等著名世界品牌产品。
MSP430F一系列TI储存芯片 微控处理器
MSP430F149 169 249 449 1611 5438 5438AIPZR  等。
C8051F 一系列SILICON 单片机 微控处理器
C8051F020 021 022 023 040 120 310 320 330 340 350等
LPC一系列NXP单片机  
LPC2132FBD64 LPC2134FBD64 LPC2214FBD144  
LPC2378FBD144 LPC2292FBD144等一系列供应
专营:低压差 基准源 三 五 七端稳压 二三极管 场效应 快恢复 肖特基二极管 可控硅 达林顿 整流桥 TVS管 光藕 MAX AD 集成电路 
                   北京长实拓展电子销售:陈冬锋
                                     QQ:2850327057
                      电话:15711002528,13641144498

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

65

帖子

0

粉丝