打印
[AVR单片机]

关于ds18b20初始化程序

[复制链接]
1282|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bufubaoni|  楼主 | 2014-8-16 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
时序很简单,就是卡在了检测循环中,始终读不出DS18b20的应答信号。
不知何解,延时用的是库中函数,设置没问题,不知问题出在哪里。仿真也不出信号。
void Init_18b20(void)
{
        DDRC |= BIT(7);//设置为输出
        PORTC |= BIT(7);//拉高总线

//        _delay_us(5);//5us
        PORTC &= ~BIT(7);
//        uart_write(PINC);
        _delay_us(500);
        PORTC |= BIT(7);//拉高
        DDRC &= ~BIT(7);
        _delay_us(30);
//        uart_write(PINC);
        while(PINC & (1 << PC7));
       
        DDRC |= BIT(7);
        PORTC |= BIT(7);//释放总线
        _delay_us(140);       

}

相关帖子

沙发
bufubaoni|  楼主 | 2014-8-16 11:02 | 只看该作者
中断服务程序占用时间,然后造成延时不准确,一直读不出应答信号,特此提醒。

使用特权

评论回复
板凳
ningling_21| | 2014-8-17 14:51 | 只看该作者
用示波器看波形,_delay_us(500);  这段时间是多长?

使用特权

评论回复
地板
bufubaoni|  楼主 | 2014-8-18 09:02 | 只看该作者
ningling_21 发表于 2014-8-17 14:51
用示波器看波形,_delay_us(500);  这段时间是多长?

已经解决了,直接调用库文件,延时十分准确。因为中断影响延时

使用特权

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

本版积分规则

5

主题

24

帖子

0

粉丝