[AVR单片机] 关于ds18b20初始化程序

[复制链接]
1538|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

粉丝
快速回复 在线客服 返回列表 返回顶部