[AVR单片机] 24c02存储器

[复制链接]
 楼主| willym 发表于 2011-5-13 22:42 | 显示全部楼层 |阅读模式
uchar   Start()
{
      TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
      while(!(TWCR&(1<<TWINT)));
      if(TWSR&0xF8 != 0X08)
            return error();
}
这是ATMEGA16数据手册上给的代码,24c02发送START信号,为什么我程序一直在while语句处循环,出不来,不能往下执行?
chenczy 发表于 2011-5-14 11:41 | 显示全部楼层
初始设置是不是少了点什么东西?
chenczy 发表于 2011-5-14 11:42 | 显示全部楼层
我用的是铁电,工作完全正常
airwill 发表于 2011-5-14 12:06 | 显示全部楼层
情况有
1. 24c02 是坏的, 或者供电不良, 或者和单片机连线有问题.
2. ATMEGA16 的 I2C 初始化操作有问题(包括 IO 端口初始化).
3. 24c02 内部锁死了, 详细看 24c02 的手册的 MEMORY RESET 和解决办法
 楼主| willym 发表于 2011-5-14 14:26 | 显示全部楼层
4# airwill

24C02应该没问题,我用51能顺利地读写,用AVR模拟IIC时序也能顺利读写,用两线串行接口TWI就顺利执行了。
void TWI_init()
{
    PORTC = 0x00;
    DDRC = 0xFF;
    TWBR = 20;
    TWSR = 0x00;
    TWAR = 0x00;
    TWCR = 0x44;
}

初始化有问题吗?
chenczy 发表于 2011-5-16 15:44 | 显示全部楼层
初始化没问题,我的也是这样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

1

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

0

主题

7

帖子

1

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