Board logo

标题: BDM在线仿真和单板运行之间的问题 [打印本页]

作者: vdakulav    时间: 2009-12-8 09:22     标题: BDM在线仿真和单板运行之间的问题

本人遇到一个问题,当程序利用BDM在线仿真时运行无误,可是只要去掉在线仿真,让其单板运行时就会出现问题,明显的运行结果就和BDM在线仿真不一致了(通过LED观察),不知道是什么原因,我分别测了前后两种情况的时钟,没有发现有什么不同,所以,请教各位大侠,这种情况一般是什么原因造成的?谢谢了
作者: vdakulav    时间: 2009-12-8 09:23

在线等啊
作者: huamao    时间: 2009-12-15 10:53

我也遇到了这样的问题,高手出来指点一下啊,谢谢
作者: guoshubiao    时间: 2010-1-14 12:53

同样的问题,请问版主或Freescale工程师,谢谢。
作者: toumingse    时间: 2010-2-6 22:07

板子对BDM供电,当你把PE拔掉后,你那个供电脚做什么用了,你看下你的BDM线路,应该是这方面的问题。
作者: shaoping_w    时间: 2010-4-27 21:02

同问,我也遇到和你相同的情况,感觉硬件应该问题,因为显示和语音在单板下都能正常工作,只是定时器开启后,比如输入捕捉和TC0操作时,BDM下一切正常,但单板下却出现问题。
作者: strongchen    时间: 2010-4-28 09:46

你用的什么芯片?
有些芯片的某些寄存器在调试状态下和正常运行状态下的读写特性不同,在调试状态下可以多次写入,而在正常运行状态下只能单次写入,可以在这方面检查一下。
作者: shaoping_w    时间: 2010-4-28 10:22

多谢斑竹的回答,芯片为S12DG128。
帮忙看下程序有问题吗,感觉在BDM模式下一切正常,但普通模式下就不能进入中断了,奇怪。
void Init_PT0_Capture()
  {
     TIOS=0x80;          //0通道输入捕捉
   TCTL4=0x01;        //通道0上升沿触发
   TSCR2=0X03;       //8分频,用来给TCNT作时间参考
   TSCR1=0x80;       //Timer Enable
     TIE=0X01;          //初始化定时器开启
  }
  
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 PT0_Capture(void)
{
  TFLG1=0x01;
  TSCR2_TCRE=1;//计数器复位允许
  count++;
  if(TFLG2==0x80) //定时器是否溢出
   {
      count=0;
      get_number=0;
   }
   else
   {
        get_number=(get_number<<1)|PTT_PTT1;
        if(count==16)
           {
              get_data=get_number;
              count=0;
            }
    }
   TFLG2=0X80;
   TSCR2_TCRE=0;
}
作者: strongchen    时间: 2010-4-29 09:35

如何知道在普通模式下没有进入中断呢?
另外,为何要在中断函数中对TCRE位进行操作呢?
作者: shaoping_w    时间: 2010-4-29 15:45

进过测试,发现中断能进去,在BDM模式下,读到的get_data值正确,但普通模式下读不到其值。
我要读17个脉冲数,其中第一个脉冲是同步帧,2ms同步信号结束后读16位数据,TCRE位操作时为了将TCNT复位,当第一个同步帧到来时,肯定会让定时器溢出,所以,我只要判断定时器是否溢出就能获得同步信号,这样程序比较方便,当然其他方法也有。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0