搜索
bottom↓
回复: 8

[请教]24c256为什么发送第2次就失败?

[复制链接]

出0入0汤圆

发表于 2008-7-7 13:29:35 | 显示全部楼层 |阅读模式
请教马老师  问题如下

在24C256的Start执行都没有问题

TWDR = 0xA0;
TWCR = (1 << TWINT) | (1 << TWEN);
while(!(TWCR & (1 << TWINT)));

执行到while时TWCR是0x04,所以while执行不过去,不过在另外一个块板子上就没有这个问题,执行到while时TWCR是0x84.

请问这是什么原因呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2008-7-7 16:16:38 | 显示全部楼层
没人回答自己顶一顶

出0入0汤圆

 楼主| 发表于 2008-7-7 16:28:38 | 显示全部楼层
执行while(!(TWCR & (1 << TWINT)));这句后TWCR为0x0C

TWWC为写冲突标志,当TWINT 为低时写数据寄存器TWDR 才会置位TWWC,但我在while语句前给TWINT置1了{TWCR = (1 << TWINT) | (1 <<

TWEN);}

为什么还会冲突呢?

出0入0汤圆

发表于 2008-7-7 17:28:01 | 显示全部楼层
I2C协议本身比较复杂(与USART比),所以很多人并不愿意真正仔细的去学习。

对于简单的I2C芯片,因为MCU肯定是主机,使用I/O模拟I2C也还简单。可是AVR的TWI接口是全功能的I2C硬件接口,它要面对主机、从机,以及总线仲裁等很多的情况,并要正确的给出相应的动作。因此,使用AVR硬件TWI,你必须对I2C协议(主从双方)非常的熟悉才行。

在我编写的教程的第十六章中,有对24CXXX操作的例子,有I/O模拟的,有使用TWI的。你可以买本书参考这些例子。

出0入0汤圆

 楼主| 发表于 2008-7-8 08:44:23 | 显示全部楼层
请问书名以及出版社?

出0入0汤圆

 楼主| 发表于 2008-7-8 09:05:36 | 显示全部楼层
请问马老师是不是这本书?

《AVR单片机嵌入式系统原理与应用实践》

我在论坛上下了1~9章  没有看到有关TWI的例子

出0入0汤圆

 楼主| 发表于 2008-7-8 20:52:13 | 显示全部楼层
谢谢马老师

问题已经解决了,是上拉电阻没有接到VCC上,应该是原理图生成PCB的时候疏忽了

5楼的问题保留,请马老师有空回答一下

出0入0汤圆

发表于 2008-7-8 23:34:46 | 显示全部楼层
5楼的问题早就说明过了。麻烦你自己查查吧。

出0入0汤圆

 楼主| 发表于 2008-7-9 10:01:00 | 显示全部楼层
明白了,谢谢马老师的耐心解答
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 18:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表