[8/16-bit MCU] 9S12开看门狗依然死机

[复制链接]
2469|10
 楼主| 964938881 发表于 2015-11-27 15:42 | 显示全部楼层 |阅读模式
今天测试了一段代码,在主程序中开启看门狗,蜂鸣器快速报警几声之后,进入while循环,在大循环中不断喂狗,定时器中开启关断蜂鸣器,蜂鸣器较之前变慢。上电后,运行正常。但加入较强的电磁干扰后,程序出现死机,一直未复位。我用的单片机是飞思卡尔的MC9S12XHY128,程序如下:

  1. void main(void)
  2. {
  3.   unsigned int cnt=0,i=0;
  4.   CPMU_PEE_32MHz();
  5.   
  6.   COPCTL_WCOP=0;     // 开启看门狗
  7.   COPCTL_RSBCK=0;
  8.   COPCTL_CR=7;

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

  10.   BUZZ=1;
  11.   Delay(50000);
  12.    BUZZ=0;
  13.   Delay(50000);
  14.    BUZZ=1;
  15.   Delay(50000);
  16.    BUZZ=0;
  17.   Delay(50000);
  18.    BUZZ=1;
  19.   Delay(50000);
  20.    BUZZ=0;
  21.   Delay(50000);
  22.   
  23.   Time_Config();
  24.   EnableInterrupts;

  25.   for(;;)
  26.   {       
  27.        
  28.     _FEED_COP();      //喂狗指令
  29.    
  30.   }

  31. }



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

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


  38. if(CNT>=15)     // 750ms 定时到
  39. {
  40.   BUZZ=!BUZZ;
  41.   CNT=0;

  42. }
  43.   
  44. }
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启动文件无法运行,如下:
  1. #ifndef __ONLY_INIT_SP
  2.    /*lint -e{522} , MISRA 14.2 REQ, function Init() contains HLI only */
  3.    Init(); /* zero out, copy down, call constructors */
  4. #endif

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

  9.    /* call main() */
  10.    main();


于是我定义了 _DO_ENABLE_COP_ 为1,之后测试成功
 楼主| 964938881 发表于 2015-11-27 17:22 | 显示全部楼层
第一次接触这么强的电磁干扰,干扰源为汽车上的氙气大灯,采用两个稳压电源,一个给大灯供电,另一个给我的单片机系统供电,两者相隔1米多,频繁开灯后我的单片机系统就死掉了,感觉不是电源带的干扰,而是空间电磁干扰。
FSL_TICS_ZJJ 发表于 2015-11-27 17:25 | 显示全部楼层
964938881 发表于 2015-11-27 17:16
多谢提醒,我用USBDM跟踪了下,发现每次死机时,程序总是定位在Start12.s启动文件无法运行,如下:

看来你之前的狗并没有启动起来。
 楼主| 964938881 发表于 2015-11-27 17:28 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-11-27 17:25
看来你之前的狗并没有启动起来。

应该是吧
Messi1999 发表于 2015-11-27 22:05 | 显示全部楼层
可以跟踪看看程序到底死在什么地方了吗
bin726 发表于 2015-11-28 15:17 | 显示全部楼层
兄弟,能留个联系方式吗?我也遇到了一样的问题。能交流一下吗?我的QQ93401862
FSL_TICS_ZJJ 发表于 2015-11-30 10:14 | 显示全部楼层

一般情况下,启动之后会关掉看门狗,可能你之前的程序关掉之后没有开启。
如果你问题解决了,还请帮我们及时结贴哦。
bccuje 发表于 2018-3-9 15:22 | 显示全部楼层
请问下,怎么解决的,现在开发汽车仪表,同样出现死机现象
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部