查看: 3031|回复: 7

[其他] 用xep100和24lc256(存储芯片)通信有很多问题(已解决)

[复制链接]

该用户从未签到

5

主题

12

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2014-7-21 11:34:00 | 显示全部楼层 |阅读模式
问题比较难表述,大概是这样的:可以读也可以写,貌似只能读一个地址和(或)写一个地址,数据也正确,但是不停地读和(或)写或者连续读或写几个数据就不行了;单步执行时可以执行过去的地方,全速运行就过不去了;单步执行时,部分程序语句会被跳过;试过随机读写也试过连续读写,都有问题;调试时,无论把读写放到for循环还是定时中断都有问题;只执行一次多个读写时,也是只有第一个数据能读写正确。由于改了很多次,程序已经比较乱了,粘一段简单的语句吧。希望大家帮忙找一下问题所在。下面是目前改的程序的主要部分,程序没有语法上的错误,可以正常执行。很多屏蔽的部分表示在不断的改程序过程中!
void main( )                                                                       

  int i,j;
  a=0;
  b=0;
  c=0;
  d=0;
  /*****************************各种初始化设置 *******************************/
  SetBusCLK_M(16);
  InitBMSGpio();  
  /*IIC初始化*/
  IIC0_IBFD=0X14;// 设置时钟为总线频率3584分频
  IIC0_IBCR_IBEN=1;//使能IIC 
  IIC0_IBSR_IBIF=1;  
  PITInit() ;
  EnableInterrupts;
  for(;;)
 {   
  }            
}
 
 
#pragma CODE_SEG NON_BANKED 
#pragma TRAP_PROC
void interrupt 66 PIT0_ISR(void)
{  
  a0=rand();
  b0=rand();
  c0=rand();
  d0=rand();
  /*写入读地址1*/
  while(IIC0_IBSR_IBB);
  IIC0_IBCR_TX_RX=1;
  IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
  IIC0_IBCR_MS_SL=1;//IIC开始
  IIC0_IBDR=Memory_Wr_address;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  IIC0_IBDR=1;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  IIC0_IBDR=1;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  //IIC0_IBCR_MS_SL=0;////////或许这句可以屏蔽!!!!!!!!
  /*读出数据1*/
  //while(IIC0_IBSR_IBB);
  IIC0_IBCR_TX_RX=1;
  IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
  IIC0_IBCR_MS_SL=1;//IIC开始
  IIC0_IBDR=Memory_Rd_address;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  
  IIC0_IBCR_TX_RX=0;    //接收
  
  IIC0_IBDR;            //空读启动发送
  while(!IIC0_IBSR_IBIF);
  r_data0=IIC0_IBDR;
  a=r_data0;
  a1=a;
  IIC0_IBCR_TXAK=0;//IIC0_IBCR_TXAK=1;//IIC0_NoAck(); 
  //IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
/*写入读地址2*/
  //while(IIC0_IBSR_IBB);
  //IIC0_IBCR_TX_RX=1;
  //IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
  //IIC0_IBCR_MS_SL=1;//IIC开始
  //IIC0_IBDR=Memory_Wr_address;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  //IIC0_IBDR=1;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  //IIC0_IBDR=2;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  //IIC0_IBCR_MS_SL=0; ////////或许这句可以屏蔽!!!!!!!!
  /*读出数据2*/
  //while(IIC0_IBSR_IBB);
  //IIC0_IBCR_TX_RX=1;
  //IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
  //IIC0_IBCR_MS_SL=1;//IIC开始
  //IIC0_IBDR=Memory_Rd_address;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  
  //IIC0_IBCR_TX_RX=0;    //接收
  IIC0_IBDR;            //空读启动发送
  while(!IIC0_IBSR_IBIF);
  r_data0=IIC0_IBDR;
  b=r_data0;
  b1=b;
  IIC0_IBCR_TXAK=1;//IIC0_IBCR_TXAK=1;//IIC0_NoAck(); 
  IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
  
 
     /*写入数据1*/
  while(IIC0_IBSR_IBB);
  IIC0_IBCR_TX_RX=1;
  IIC0_IBCR_MS_SL=0;;//IIC0_stop();           //停止
  IIC0_IBCR_MS_SL=1;//IIC开始
  IIC0_IBDR=Memory_Wr_address;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  IIC0_IBDR=1;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  IIC0_IBDR=1;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  IIC0_IBDR=a0;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志 
  //IIC0_IBCR_MS_SL=0;  
   /*写入数据2*/
  //while(IIC0_IBSR_IBB);
  //IIC0_IBCR_TX_RX=1;
  //IIC0_IBCR_MS_SL=1;//IIC开始
  //IIC0_IBDR=Memory_Wr_address;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  //IIC0_IBDR=1;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  //IIC0_IBDR=2;
  //while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志
  IIC0_IBDR=b0;
  while(IIC0_IBSR_RXAK);//while(!IIC0_IBSR_IBIF); 
  //IIC0_IBSR_IBIF=1;  // //清发送完成标志 
  IIC0_IBCR_MS_SL=0;                                                  
  
 PORTA_PA0=~PORTA_PA0; //闪灯
 PITTF = 0x01;        //清定时中断
}
我知道答案 目前已有6人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-7-21 11:46:47 | 显示全部楼层

RE:用xep100和24lc256(存储芯片)通信有很多问题

你好,楼主!
已在你的另外一贴回答啊!
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

273

帖子

0

高级会员

Rank: 4

积分
718
最后登录
1970-1-1
发表于 2014-7-21 13:30:18 | 显示全部楼层

回复:用xep100和24lc256(存储芯片)通信有很多问题

楼主,还是把问题描述的更详细一点吧,没有人会帮你看代码吗,大家只是根据你的问题提出建议!
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

12

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
 楼主| 发表于 2014-7-21 14:38:31 | 显示全部楼层

回复:用xep100和24lc256(存储芯片)通信有很多问题

回复第 2 楼 于2014-07-21 11:46:47发表:
你好,楼主!
已在你的另外一贴回答啊!
好的,我拿示波器看一看
 
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

12

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
 楼主| 发表于 2014-7-21 14:40:09 | 显示全部楼层

回复:用xep100和24lc256(存储芯片)通信有很多问题

回复第 3 楼 于2014-07-21 13:30:18发表:
楼主,还是把问题描述的更详细一点吧,没有人会帮你看代码吗,大家只是根据你的问题提出建议!
问题不太好表述,我再试试找找原因
 
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-7-21 15:33:33 | 显示全部楼层

    RE:用xep100和24lc256(存储芯片)通信有很多问题

    不要在中断中写,这样肯定会出问题的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    802

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1763
    最后登录
    1970-1-1
    发表于 2014-7-23 15:36:37 | 显示全部楼层

    RE:用xep100和24lc256(存储芯片)通信有很多问题

    写适合中断用的代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    25

    帖子

    0

    注册会员

    Rank: 2

    积分
    58
    最后登录
    1970-1-1
    发表于 2014-7-23 18:08:12 | 显示全部楼层

    RE:用xep100和24lc256(存储芯片)通信有很多问题

    写完一次数据得等待数据写入到eeprom里,才能继续操作芯片
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-26 12:21 , Processed in 0.099739 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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