打印

单步调试与全速调试 求解

[复制链接]
1631|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qQ191727779|  楼主 | 2012-10-8 21:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void IICRead(unsigned int i ) // read data  by my understanding   
{
  IICInit();
  rIICDS = 0xA1;
  rIICSTAT = 0xB0;
  while( rIICSTAT & 0x1 );  //wait ACK

  ClearInt();
  buf[i] = rIICDS;
  Uart_Printf("buf[");
  Uart_Printf("%d",i);
  Uart_Printf("]: %X\n",buf[i]);
  rIICCON = 0xE0; //resume iic,generate ACK
  while( rIICSTAT & 0x1 );  //wait ACK
      buf[i] = rIICDS;//单步调试这里就出数据了
  Uart_Printf("buf[");
  Uart_Printf("%d",i);
  Uart_Printf("]: %X\n",buf[i]);
  ClearInt();
  rIICSTAT = 0x90;
  rIICCON = 0x60;     //resume iic, no ACK
  while( ! (rIICSTAT & 0x1 ) );  //wait NO-ACK
    buf[i] = rIICDS;////全速调试这里才出数据了
  Uart_Printf("buf[");
  Uart_Printf("%d",i);
  Uart_Printf("]: %X\n",buf[i]);
  //while( (rIICSTAT >> 5) & 1); //wait stop

  IICRest();
}

IIC读个EPPROM(at24c02)
是不是全速跑的时候,时序就乱了?或者说,单步调试的时候,硬件准备的时间足够???

相关帖子

沙发
阿南| | 2012-10-8 22:08 | 只看该作者
IIC一般要全速跑进行调试,如果有些时间不够,可以加一些延时。

使用特权

评论回复
板凳
qQ191727779|  楼主 | 2012-10-9 11:32 | 只看该作者
那怎么知道哪里要加延迟?(iic读的时候) 2# 阿南

使用特权

评论回复
地板
阿南| | 2012-10-9 11:48 | 只看该作者
不知你这个是使用处理器硬件的IIC还是IO模拟。
如果普通IO模拟,那在时钟和数据的上升或下降沿后加些适当的延时

使用特权

评论回复
5
qQ191727779|  楼主 | 2012-10-9 18:42 | 只看该作者
2440的开发板,应该是iic硬件的,说明书上没提到模拟,还有,我想问一下,A.说明书上没提到哪里要加延时,芯片手册(at24c02)写入数据的时序上才有暗示延时,读数据就根本没有,要不要延时,怎么知道????B.为什么全速跑和单步跑,会产生读数据差别的情况???? 4# 阿南

使用特权

评论回复
6
阿南| | 2012-10-9 19:51 | 只看该作者
全速跑时读的是正常的,是双方的一个过程。慢速跑时,有一部分只是当方面的过程。

使用特权

评论回复
7
qQ191727779|  楼主 | 2012-10-9 22:05 | 只看该作者
好似明白点点,谢谢 6# 阿南

使用特权

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

本版积分规则

4

主题

49

帖子

0

粉丝