打印
[AVR单片机]

M88做为TWI从器件,休眠状态时TWI不能唤醒的问题。

[复制链接]
2666|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pantodd|  楼主 | 2007-1-19 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
M88做从机,在其休眠状态,标准的I2C操作会将其唤醒,但在标准的I2C操作前加一个START+STOP,这个I2C操作不会唤醒休眠.所以这次I2C操作不会响应.这什么原因造成的?其实,START+STOP这错误的I2C时序已完成.其后续的I2C操作是标准的,应该有响应呀? 

相关帖子

沙发
pantodd|  楼主 | 2007-1-19 15:40 | 只看该作者

补充一下。

上位机使用CVI编写的LPT模拟I2C。I2CBUS 只有一个M88。
2C_START(); //START
          
I2C_STOP(); //STOP
                
sta=I2C_SEQ_READ(0xa0, 0x05, 1, &temp); 
这样的I2C时序操作,读操作不会响应。
如果直接
sta=I2C_SEQ_READ(0xa0, 0x05, 1, &temp); 是正确的。

使用特权

评论回复
板凳
pantodd|  楼主 | 2007-1-20 10:10 | 只看该作者

没有解决。

在DATASHEET中说休眠模式中从机的地址匹配可将MCU唤醒,现在错误的I2C总线时序将其屏蔽了一样,不知道是不是MEGA系列的硬件BUG,还是我的FIRMWARE什么地方有问题。

使用特权

评论回复
地板
一级菜鸟| | 2007-1-20 14:59 | 只看该作者

就MEGA88而言

参见中文数据手册第188页:
发送主要由START 状态、SLA+R/W、至少一个数据包及STOP 状态组成。只有START与STOP 状态的空信息是非法的

不要在IIC通讯前发送START和STOP,虽然坛子里诸多人推荐这么做,不过俺很是不以为然。代码的健壮性就必须保证IIC操作结束后发送结束条件释放总线,以这样的方式做所谓“保险”,俺觉得象关灯后害怕关不上,再开关一次似的,很是滑稽。

使用特权

评论回复
5
pantodd|  楼主 | 2007-1-22 09:12 | 只看该作者

thanks. 一级菜鸟 兄。

我就是测试在各种情况下的从机的I2C总线会不会被LOCK或出错。我们的产品是从机,不能要求主机只能发什么时序的I2C信号。所以错误和无用的I2C时序我们都要考虑。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

80

帖子

0

粉丝