This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F2618 进入LPM3后,通过定时中断退出低功耗模式时,会复位的问题?

Other Parts Discussed in Thread: MSP430F2618

      CPU使用MSP430F2618,程序初始化时,关闭watchdog,     在while(1)循环里面,执行完任务程序,就进入LPM3, 使用定时中断,定时计数到5秒,就退出LPM3低功耗模式( LPM3_EXIT),   程序运行,会不定期的CPU自复位, 我通过示波器监视/RST脚,复位时,该引脚电平还是高电平,  是什么原因造成CPU自复位的呢?

      还有一种情况就是,程序不进入LPM3模式,通过串口监视,程序运行时不会复位。

  • 看样子是进入LPM3模式导致复位, 5s时间挺长,Timer时钟源是多少?

  • 同意Andy的问题,能否描述一下你是如何实现5S定时的?Timer寄存器的配置是怎样的?如果能够排除/RST引脚的问题,排除电源的问题,那么复位很有可能是由于你的软件导致。

  • TimerA 的时钟源是ACLK, 定时中断周期是10ms,

    初始化函数如下:void TimerA_init(void)
    {
     CCR0 = (uint16)8192/100;         //ACLK =32768, 8192/100=81.9, 定时10ms。
     TACTL = TASSEL_1 + TAIE + TACLR + MC_1 + ID_2;        //ACLK, clear TAR, up mode, enable TAIFG, 4 分频。
         
    }

      定义一个变量,在定时中断函数里累加到5秒,然后退出LPM3模式,

    定时中断函数如下:

    __interrupt void Timer_A (void)      // msp430f2618 timer interrupt
    {
     switch( TAIV )
     {
      case  2: break ;                        // CCR1 not used
      case  4: break;                        // CCR2 not used
      case 10:  
                           {                        
                             if(tt++>500)
                             {
                               tt = 0;         
                               LPM3_EXIT;   
                             }  

                          }

              }

    }

       我的复位电路是阻容复位,测/rs引脚电平时,只有2.1V左右,电源是3.3V, 为什么不是3.3V呢?

     

     

  • 看你的初始化和中断处理,其实LPM3_EXIT; 这句话是可以不要的,在中断里会自动退出低功耗模式,case 10后建议加一个break;,其它没发现什么问题。

    复位电压2.1v是不正常的,能否说说你的复位电路参数是怎样的?这个现象是普遍现象吗?能否换块板子试试看

  •   不好意思,后来发现2.1V电压,是因为接了仿真器,仿真器另一头没有接PC机,把仿真器拔掉,电压恢复到3.3V。

    我的程序里面是加了break语句,不明白不加LPM3_EXIT, 为什么会自动退出低功耗模式呢?

     我的主程序,使用了一个while(1)循环,如下: 

    while(1){             
                
                  LPM3;        //进入LP3低功耗模式
                 PT100_temp();                //PT100温度检测               
                 Therm_tempsample();          
                  AD7795_PowerDown();   //AD7795进入掉电模式 
                  task_sendFrame();
            }

    我把LPM3屏蔽掉,不进入低功耗模式时,程序运行时,就不会复位,这个现象有点奇怪。

  • 你好,请问你解决了这个问题了吗。我在使用CC430(MSP430F5系列+一个射频),出现了类似的问题。在主函数while中进入LPM3,然后在中断中退出LPM3,出现了复位的现象。    而当执行LPM3时,不会自动复位?