使用ATMega16的IIC接口控制从设备,从设备不能正确应答!求解决办法?

2019-03-24 21:07发布

执行程序如下:
  TWBR=0x12;//TWI比特率寄存器的值设为18
  TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//发送开始信号
        while(!(TWCR & (1<<TWINT)));  //等待TWINT置位,置位表示START信号发出
        if((TWSR & 0xF8)!= START)  //检查状态寄存器,不是START转出错处理
        ERROR();
       
        TWDR=SLA_W  ;   //装入SLA_W
        TWCR=(1<<TWINT)|(1<<TWEN); //TWINT清零,启动发送数据
        while(!(TWCR & (1<<TWINT)));//等待数据发送发出
        if((TWSR & 0xF8)!= MT_SLA_ACK ) //检查状态寄存器,不是MT_SLA_ACK转出错处理
        ERROR();

按照ATMega16用户手册上的步骤,在主机发送模式下,先发送开始信号,然后装载SLA_W。
但是在装入SLA_W(根据从机的用户手册,为25H)后,状态寄存器TWSR总是0x48,而不是手册上的0x18,
从而程序转入了出错处理而不能继续执行,请问这个问题高如何解决?

硬件连接以用万用表检查无误。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
zhangle0922
1楼-- · 2019-03-25 03:46
ATMega16 IIC  没人用过吗