打印
[8/16-bit MCU]

9S12开看门狗依然死机

[复制链接]
2158|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
964938881|  楼主 | 2015-11-27 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天测试了一段代码,在主程序中开启看门狗,蜂鸣器快速报警几声之后,进入while循环,在大循环中不断喂狗,定时器中开启关断蜂鸣器,蜂鸣器较之前变慢。上电后,运行正常。但加入较强的电磁干扰后,程序出现死机,一直未复位。我用的单片机是飞思卡尔的MC9S12XHY128,程序如下:

void main(void) 
{
  unsigned int cnt=0,i=0;
  CPMU_PEE_32MHz();
  
  COPCTL_WCOP=0;     // 开启看门狗
  COPCTL_RSBCK=0;
  COPCTL_CR=7;

  DDRP_DDRP0=1; //蜂鸣器IO口设为输出模式

  BUZZ=1;
  Delay(50000);
   BUZZ=0;
  Delay(50000);
   BUZZ=1;
  Delay(50000);
   BUZZ=0;
  Delay(50000);
   BUZZ=1;
  Delay(50000);
   BUZZ=0;
  Delay(50000);
  
  Time_Config();
  EnableInterrupts;

  for(;;)
  {       
       
    _FEED_COP();      //喂狗指令
   
  }

}



interrupt 42 void timer1_2_ISR(void)     // 50ms 中断
{
word Counter_Value;
static char CNT=0;

TIM1_T标志寄存器1_C2F=1; //Clear channel 2 flag
TIM1_TC2 = (word)(Counter_Value + 50000);   


if(CNT>=15)     // 750ms 定时到
{
  BUZZ=!BUZZ;
  CNT=0;

}
  
}

相关帖子

沙发
FSL_TICS_A| | 2015-11-27 15:47 | 只看该作者
你能跟踪下,程序死机死在什么地方吗?

使用特权

评论回复
板凳
ecoren| | 2015-11-27 16:08 | 只看该作者
是不是狗也死啦,用硬狗,用外狗,狗要放在大门口,放在屋里不好,

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
964938881 + 1 赞一个!
地板
964938881|  楼主 | 2015-11-27 17:16 | 只看该作者
FSL_TICS_A 发表于 2015-11-27 15:47
你能跟踪下,程序死机死在什么地方吗?

多谢提醒,我用USBDM跟踪了下,发现每次死机时,程序总是定位在Start12.s启动文件无法运行,如下:
#ifndef __ONLY_INIT_SP
   /*lint -e{522} , MISRA 14.2 REQ, function Init() contains HLI only */
   Init(); /* zero out, copy down, call constructors */
#endif

   /* Here user defined code could be inserted, all global variables are initilized */
#if defined(_DO_ENABLE_COP_)
   _ENABLE_COP(7);      // 此处使能看门狗
#endif

   /* call main() */
   main();


于是我定义了 _DO_ENABLE_COP_ 为1,之后测试成功

使用特权

评论回复
5
964938881|  楼主 | 2015-11-27 17:22 | 只看该作者
第一次接触这么强的电磁干扰,干扰源为汽车上的氙气大灯,采用两个稳压电源,一个给大灯供电,另一个给我的单片机系统供电,两者相隔1米多,频繁开灯后我的单片机系统就死掉了,感觉不是电源带的干扰,而是空间电磁干扰。

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2015-11-27 17:25 | 只看该作者
964938881 发表于 2015-11-27 17:16
多谢提醒,我用USBDM跟踪了下,发现每次死机时,程序总是定位在Start12.s启动文件无法运行,如下:

看来你之前的狗并没有启动起来。

使用特权

评论回复
7
964938881|  楼主 | 2015-11-27 17:28 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-11-27 17:25
看来你之前的狗并没有启动起来。

应该是吧

使用特权

评论回复
8
Messi1999| | 2015-11-27 22:05 | 只看该作者
可以跟踪看看程序到底死在什么地方了吗

使用特权

评论回复
9
bin726| | 2015-11-28 15:17 | 只看该作者
兄弟,能留个联系方式吗?我也遇到了一样的问题。能交流一下吗?我的QQ93401862

使用特权

评论回复
10
FSL_TICS_ZJJ| | 2015-11-30 10:14 | 只看该作者

一般情况下,启动之后会关掉看门狗,可能你之前的程序关掉之后没有开启。
如果你问题解决了,还请帮我们及时结贴哦。

使用特权

评论回复
11
bccuje| | 2018-3-9 15:22 | 只看该作者
请问下,怎么解决的,现在开发汽车仪表,同样出现死机现象

使用特权

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

本版积分规则

3

主题

16

帖子

0

粉丝