打印

msp430f149在执行程序某段函数时竟然自动复位?没有看门狗程序

[复制链接]
1147|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
_cir_|  楼主 | 2014-11-19 12:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 _cir_ 于 2014-11-21 21:06 编辑

    我想请问各位工程狮,149在执行程序产生复位有哪些原因啊?我的程序是在执行某段继电器连接程序的if判断产生复位的(复位可能性很高)。 P6OUT  BIT3和BIT4控制继电器的。
另外,执行程序产生复位的原因有哪些啊?很可能是四楼大神所说的电压被瞬时拉低的情况,因为还出现了程序死机的情况!那请问大家有什么办法让电压稳定一点?


    if(PreTarget2 < ADCData2){
      while( (PreTarget2+PreTol2)< ADCData2){  //ADCData2是采样量,其他的都是全局变量
          Print(0x90,"变量数值减小中......");
            Adjdec++;
            Setdec_TimeInterval();
            P6OUT &= ~BIT3;
            P6OUT |= BIT5;
            delay_adjust(TimeInterval);
              P6OUT &= ~BIT3;
              P6OUT &= ~BIT5;
            
              write_LCD_command(0x9f);
                  delay_ms(5);
              write_LCD_data(dis1[Adjdec/10]);
                  delay_ms(5);
              write_LCD_data(dis1[Adjdec%10]);
              delay_ms(3000);
              
            Sample();//采样
            Show_result();
            
      }
    }

相关帖子

沙发
dirtwillfly| | 2014-11-19 22:06 | 只看该作者
产生复位的原因有很多。
常见的原因有三种:
1.WDT超时复位
最常见的是由于疏忽在代码没有及时喂狗或在程序一开始没有关闭看门狗,导致看门狗溢出复位。

莫名其妙的是由于初始化的东西太多,比如数组太长,变量太多,导致程序在进入main之前这段时间超时,导致WDT复位。


2.堆栈溢出复位
对写一个程序不太了解会使用多少堆栈的工程师,在程序编译完成后应该生成一个map,查看当前堆栈使用情况,了解自己写的程序是否有堆栈溢出的风险。另外,开启堆栈使用量报警。毕竟编译器比你更清楚使用了多少堆栈。


3.电压问题导致复位
很多时候我们之间使用430的JTAG对开发板提供电源,而忘忘记接外部电。而当程序运行到某些地方,开启某些设备的时候,JTAG供电不足,就会导致复位。怕自己忘记的方法就是,对于板子上有大电流的,烧录接口一律改为Target供电。另外,供电电源的异常掉压,会引起BOR产生复位。

使用特权

评论回复
板凳
mark301600| | 2014-11-20 22:17 | 只看该作者
dirtwillfly 发表于 2014-11-19 22:06
产生复位的原因有很多。
常见的原因有三种:
1.WDT超时复位

赞一个

使用特权

评论回复
地板
泰山特曲123| | 2014-11-21 19:54 | 只看该作者
楼主的情况,很可能是单片机电压突然降低导致复位

使用特权

评论回复
5
_cir_|  楼主 | 2014-11-21 20:32 | 只看该作者
本帖最后由 _cir_ 于 2014-11-21 21:04 编辑
泰山特曲123 发表于 2014-11-21 19:54
楼主的情况,很可能是单片机电压突然降低导致复位

加一个大点的电容稳压行吗?还出现了程序死机的情况!

使用特权

评论回复
6
DENG_LI_JUN| | 2014-11-22 17:27 | 只看该作者
继电器属于感性元件,在断开时由于电磁振荡,会产生快速瞬变脉冲群干扰,这种干扰的频谱很宽,而大电容是低频有效。建议加合适的TVS管,或者压敏电阻,必要时可以套上铁氧体磁环。这种情况一般处理要硬件为主,软件为辅。你试试看有没效果。

使用特权

评论回复
7
vivilzb1985| | 2014-11-22 23:42 | 只看该作者
这个需要好好检查下你的看门狗的启用没。。

使用特权

评论回复
8
vivilzb1985| | 2014-11-23 12:08 | 只看该作者
dirtwillfly 发表于 2014-11-19 22:06
产生复位的原因有很多。
常见的原因有三种:
1.WDT超时复位

学习啦,谢谢分享。

使用特权

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

本版积分规则

6

主题

17

帖子

0

粉丝