最近做了一个ATMEGA128的DS2431的读写,不知道为什么我读到的数全是1,而且我检查出来 是复位时没有检测到拉低信号,我是按照DATASHEET上的时序写的,时间长度我也用示波器勾过了,在它的时序范围内。请大神帮忙检查一下哪里出了问题。
复位程序:
//1-Wire器件复位,并检查应答;有应答返回0,无应答返回1
unsigned char Reset(void)
{
DS_DQ_OUT; //设置端口为输出
DS_DQ1;
NOP();
DS_DQ0; //复位低脉冲保持
delay1_nus(600); //延时 530us
DS_DQ1; //释放总线
delay1_nus(70); //延时64us后读应答
DS_DQ_IN; //设置端口为输入
if(DS_DQ) //判断wire状态
{
return(1);
}
else
{ beep(); //设置蜂鸣器检查程序是否运行到这里,结果蜂鸣器并没有响
delay1_nus(500); //延时450us
return(0);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
调试时可以在proteus中仿真,效果和实际基本一样,对调试效率很有帮助。
另外确认一下没有买到假芯片。
http://bbs.eeworld.com.cn/thread-506278-1-1.html
加了关中断依然不好使 还是读回来的全是1
一周热门 更多>