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.

MSP430F6779A SVM interrupt only happens once

Other Parts Discussed in Thread: MSP430F6779A

I setup the SVM on the MSP430F6779A to give an interrupt if the supply voltage drops below 2.9V. as shown below:

//unlock PMM
  PMMCTL0_H=PMMPW_H;
  //check voltage level
  switch(PMMCTL0&PMMCOREV_3){
    //settings for highest core voltage settings
    case PMMCOREV_3:
      //setup high side supervisor and monitor
      SVSMHCTL=SVMHE|SVSHE|SVSHRVL_3|SVSMHRRL_7;
    break;
  }
  //clear interrupt flags
  PMMIFG&=~(SVMLIFG|SVMHIFG|SVMHVLRIFG|SVMLVLRIFG);
  //setup interrupts
  PMMRIE|=SVMLIE|SVMHIE|SVMHVLRIE|SVMLVLRIE;
  //lock PMM
  PMMCTL0_H=0;

In the SYSNMI_VECTOR I set a flag for software if I see the low voltage interrupts from the SVM when the voltage comes back up I clear the flags from the module:

//================[System NMI Interrupt]=========================
void SYS_NMI(void)__ctl_interrupt[SYSNMI_VECTOR]{
  switch(SYSSNIV){
    //core supply voltage monitor interrupt
    case SYSSNIV_SVMLIFG:
      //event to report error
      //set flag
    break;
    //input supply voltage monitor interrupt
    case SYSSNIV_SVMHIFG:
      //event to report error
      //set flag
    break;
    //core supply voltage monitor delay interrupt
    case SYSSNIV_DLYLIFG:
    break;
    //interrupt supply voltage monitor delay interrupt
    case SYSSNIV_DLYHIFG:
    break;
    //Vacant memory access interrupt
    case SYSSNIV_VMAIFG:
    break;
    //JTAG mailbox in interrupt
    case SYSSNIV_JMBINIFG:
    break;
    //JTAG mailbox out interrupt
    case SYSSNIV_JMBOUTIFG:
    break;
    //SVMLVLRIFGSVMHVLRIFG
    case SYSSNIV_VLRLIFG:
      //clear interrupt flag bits
      //unlock PMM
      PMMCTL0_H=PMMPW_H;
      //clear interrupt flags
      PMMIFG&=~(SVMLIFG|SVMLVLRIFG);
      //lock PMM
      PMMCTL0_H=0;
    break;
    //SVMHVLRIFGSVMHVLRIFG
    case SYSSNIV_VLRHIFG:
      //clear interrupt flag bits
      //unlock PMM
      PMMCTL0_H=PMMPW_H;
      //clear interrupt flags
      PMMIFG&=~(SVMHIFG|SVMHVLRIFG);
      //lock PMM
      PMMCTL0_H=0;
    break;
  }
}

When the voltage is lowered below about 3V I see the flag from the interrupt. If I bring the voltage back up to 3.3V and then down again I do not get any more interrupts. If I take the voltage all the way down to 2V the MSP resets and doesn't come on until the voltage raises above 3V. Is there something I need to do to get multiple SVM interrupts or do I have to reset when this happens?

  • Hi Jesse,
    Can you take screen shots of the the SVSSNIV and PMMIFG registers' contents before and after the 1st, 2nd, and 3rd time you cross the SVMH thresholds?

    Best regards,
    Cameron
  • I dumped the registers from the SVS and PMM as shown below. I first paused after the registers were configured.

    PMM                                            
        PMMCTL0              0x9603                
            PMMCOREV         3                     
            PMMSWBOR         0                     
            PMMSWPOR         0                     
            PMMSREGOFF       0                     
            PMMHPMRE         0                     
            PMMKEY           0x96                  
        PMMCTL1              0x0000                
            PMMREFMD         0                     
            PMMREFACC        0                     
            PMMCMD           0x0                   
        SVSMHCTL             0x4707                
            SVSMHRRL         0x7                   
            SVSMHDLYST       0                     
            SVSHMD           0                     
            SVSMHEVM         0                     
            SVSMHACE         0                     
            SVSHRVL          0x3                   
            SVSHE            1                     
            SVSHFP           0                     
            SVMHOVPE         0                     
            SVMHE            1                     
            SVMHFP           0                     
        SVSMLCTL             0b0100011100000011    
            SVSMLRRL         0x3                   
            SVSMLDLYST       0                     
            SVSLMD           0                     
            SVSMLEVM         0                     
            SVSMLACE         0                     
            SVSLRVL          0x3                   
            SVSLE            1                     
            SVSLFP           0                     
            SVMLOVPE         0                     
            SVMLE            1                     
            SVMLFP           0                     
        SVSMIO               0x0020                
            SVSLEVE          0                     
            SVMLEVE          0                     
            SVMLOE           0                     
            SVMLVRLOE        0                     
            SVMOUTPOL        1                     
            SVSHEVE          0                     
            SVMHEVE          0                     
            SVMHOE           0                     
            SVMHVRLOE        0                     
        PMMIFG               0x0010                
            SVSMLDLYIFG      0                     
            SVMLIFG          0                     
            SVMLVLRIFG       0                     
            SVSMHDLYIFG      1                     
            SVMHIFG          0                     
            SVMHVLRIFG       0                     
            PMMBORIFG        0                     
            PMMRSTIFG        0                     
            PMMPORIFG        0                     
            SVSHIFG          0                     
            SVSLIFG          0                     
            PMMRSTLPM5IFG    0                     
        PMMRIE               0x1166                
            SVSMLDLYIE       0                     
            SVMLIE           1                     
            SVMLVLRIE        1                     
            SVSMHDLYIE       0                     
            SVMHIE           1                     
            SVMHVLRIE        1                     
            SVSLPE           1                     
            SVMLVLRPE        0                     
            SVSHPE           1                     
            SVMHVLRPE        0                     
        PM5CTL0              0x0000                
            LOCKLPM5         0                     
    SYS                                            
        SYSCTL               0x0000                
            SYSRIVECT        0                     
            SYSPMMPE         0                     
            SYSBSLIND        0                     
            SYSJTAGPIN       0                     
        SYSBSLC              0x8003                
            SYSBLSIZE        3                     
            SYSBSLR          0                     
            SYSBSLOFF        0                     
            SYSBSLPE         1                     
        SYSJMBC              0x000c                
            JMBIN0FG         0                     
            JMBIN1FG         0                     
            JMBOUT0FG        1                     
            JMBOUT1FG        1                     
            JMBMODE          0                     
            JMBCLR0OFF       0                     
            JMBCLR1OFF       0                     
        SYSJMBI0             0x0110                
        SYSJMBI1             0xffff                
        SYSJMBO0             0x0000                
        SYSJMBO1             0x0000                
        SYSBERRIV            0x0000                
        SYSUNIV              0x0000                
            SYSUNVEC         0                     
        SYSSNIV              0x0000                
            SYSNVEC          0                     
        SYSRSTIV             0x0000                
            SYSRSTVEC        0                     

    Then I lowered the voltage to about 2.99V until I got the interrupt from the PMM and dumped the registers again:

    PMM                                            
        PMMCTL0              0x9603                
            PMMCOREV         3                     
            PMMSWBOR         0                     
            PMMSWPOR         0                     
            PMMSREGOFF       0                     
            PMMHPMRE         0                     
            PMMKEY           0x96                  
        PMMCTL1              0x0000                
            PMMREFMD         0                     
            PMMREFACC        0                     
            PMMCMD           0x0                   
        SVSMHCTL             0x4707                
            SVSMHRRL         0x7                   
            SVSMHDLYST       0                     
            SVSHMD           0                     
            SVSMHEVM         0                     
            SVSMHACE         0                     
            SVSHRVL          0x3                   
            SVSHE            1                     
            SVSHFP           0                     
            SVMHOVPE         0                     
            SVMHE            1                     
            SVMHFP           0                     
        SVSMLCTL             0b0100011100000011    
            SVSMLRRL         0x3                   
            SVSMLDLYST       0                     
            SVSLMD           0                     
            SVSMLEVM         0                     
            SVSMLACE         0                     
            SVSLRVL          0x3                   
            SVSLE            1                     
            SVSLFP           0                     
            SVMLOVPE         0                     
            SVMLE            1                     
            SVMLFP           0                     
        SVSMIO               0x0020                
            SVSLEVE          0                     
            SVMLEVE          0                     
            SVMLOE           0                     
            SVMLVRLOE        0                     
            SVMOUTPOL        1                     
            SVSHEVE          0                     
            SVMHEVE          0                     
            SVMHOE           0                     
            SVMHVRLOE        0                     
        PMMIFG               0x0010                
            SVSMLDLYIFG      0                     
            SVMLIFG          0                     
            SVMLVLRIFG       0                     
            SVSMHDLYIFG      1                     
            SVMHIFG          0                     
            SVMHVLRIFG       0                     
            PMMBORIFG        0                     
            PMMRSTIFG        0                     
            PMMPORIFG        0                     
            SVSHIFG          0                     
            SVSLIFG          0                     
            PMMRSTLPM5IFG    0                     
        PMMRIE               0x1146                
            SVSMLDLYIE       0                     
            SVMLIE           1                     
            SVMLVLRIE        1                     
            SVSMHDLYIE       0                     
            SVMHIE           0                     
            SVMHVLRIE        1                     
            SVSLPE           1                     
            SVMLVLRPE        0                     
            SVSHPE           1                     
            SVMHVLRPE        0                     
        PM5CTL0              0x0000                
            LOCKLPM5         0                     
    SYS                                            
        SYSCTL               0x0000                
            SYSRIVECT        0                     
            SYSPMMPE         0                     
            SYSBSLIND        0                     
            SYSJTAGPIN       0                     
        SYSBSLC              0x8003                
            SYSBLSIZE        3                     
            SYSBSLR          0                     
            SYSBSLOFF        0                     
            SYSBSLPE         1                     
        SYSJMBC              0x000c                
            JMBIN0FG         0                     
            JMBIN1FG         0                     
            JMBOUT0FG        1                     
            JMBOUT1FG        1                     
            JMBMODE          0                     
            JMBCLR0OFF       0                     
            JMBCLR1OFF       0                     
        SYSJMBI0             0x0110                
        SYSJMBI1             0xffff                
        SYSJMBO0             0x0000                
        SYSJMBO1             0x0000                
        SYSBERRIV            0x0000                
        SYSUNIV              0x0000                
            SYSUNVEC         0                     
        SYSSNIV              0x0000                
            SYSNVEC          0                     
        SYSRSTIV             0x0000                
            SYSRSTVEC        0                     

    I then set the voltage back up to 3.3V and read the registers again:

    PMM                                            
        PMMCTL0              0x9603                
            PMMCOREV         3                     
            PMMSWBOR         0                     
            PMMSWPOR         0                     
            PMMSREGOFF       0                     
            PMMHPMRE         0                     
            PMMKEY           0x96                  
        PMMCTL1              0x0000                
            PMMREFMD         0                     
            PMMREFACC        0                     
            PMMCMD           0x0                   
        SVSMHCTL             0x4707                
            SVSMHRRL         0x7                   
            SVSMHDLYST       0                     
            SVSHMD           0                     
            SVSMHEVM         0                     
            SVSMHACE         0                     
            SVSHRVL          0x3                   
            SVSHE            1                     
            SVSHFP           0                     
            SVMHOVPE         0                     
            SVMHE            1                     
            SVMHFP           0                     
        SVSMLCTL             0b0100011100000011    
            SVSMLRRL         0x3                   
            SVSMLDLYST       0                     
            SVSLMD           0                     
            SVSMLEVM         0                     
            SVSMLACE         0                     
            SVSLRVL          0x3                   
            SVSLE            1                     
            SVSLFP           0                     
            SVMLOVPE         0                     
            SVMLE            1                     
            SVMLFP           0                     
        SVSMIO               0x0020                
            SVSLEVE          0                     
            SVMLEVE          0                     
            SVMLOE           0                     
            SVMLVRLOE        0                     
            SVMOUTPOL        1                     
            SVSHEVE          0                     
            SVMHEVE          0                     
            SVMHOE           0                     
            SVMHVRLOE        0                     
        PMMIFG               0x0030                
            SVSMLDLYIFG      0                     
            SVMLIFG          0                     
            SVMLVLRIFG       0                     
            SVSMHDLYIFG      1                     
            SVMHIFG          1                     
            SVMHVLRIFG       0                     
            PMMBORIFG        0                     
            PMMRSTIFG        0                     
            PMMPORIFG        0                     
            SVSHIFG          0                     
            SVSLIFG          0                     
            PMMRSTLPM5IFG    0                     
        PMMRIE               0x1146                
            SVSMLDLYIE       0                     
            SVMLIE           1                     
            SVMLVLRIE        1                     
            SVSMHDLYIE       0                     
            SVMHIE           0                     
            SVMHVLRIE        1                     
            SVSLPE           1                     
            SVMLVLRPE        0                     
            SVSHPE           1                     
            SVMHVLRPE        0                     
        PM5CTL0              0x0000                
            LOCKLPM5         0                     
    SYS                                            
        SYSCTL               0x0000                
            SYSRIVECT        0                     
            SYSPMMPE         0                     
            SYSBSLIND        0                     
            SYSJTAGPIN       0                     
        SYSBSLC              0x8003                
            SYSBLSIZE        3                     
            SYSBSLR          0                     
            SYSBSLOFF        0                     
            SYSBSLPE         1                     
        SYSJMBC              0x000c                
            JMBIN0FG         0                     
            JMBIN1FG         0                     
            JMBOUT0FG        1                     
            JMBOUT1FG        1                     
            JMBMODE          0                     
            JMBCLR0OFF       0                     
            JMBCLR1OFF       0                     
        SYSJMBI0             0x0110                
        SYSJMBI1             0xffff                
        SYSJMBO0             0x0000                
        SYSJMBO1             0x0000                
        SYSBERRIV            0x0000                
        SYSUNIV              0x0000                
            SYSUNVEC         0                     
        SYSSNIV              0x0000                
            SYSNVEC          0                     
        SYSRSTIV             0x0000                
            SYSRSTVEC        0                     

    I then lowered the voltage to around 2.5V and got no interrupt. Registers are below:

    PMM                                            
        PMMCTL0              0x9603                
            PMMCOREV         3                     
            PMMSWBOR         0                     
            PMMSWPOR         0                     
            PMMSREGOFF       0                     
            PMMHPMRE         0                     
            PMMKEY           0x96                  
        PMMCTL1              0x0000                
            PMMREFMD         0                     
            PMMREFACC        0                     
            PMMCMD           0x0                   
        SVSMHCTL             0x4707                
            SVSMHRRL         0x7                   
            SVSMHDLYST       0                     
            SVSHMD           0                     
            SVSMHEVM         0                     
            SVSMHACE         0                     
            SVSHRVL          0x3                   
            SVSHE            1                     
            SVSHFP           0                     
            SVMHOVPE         0                     
            SVMHE            1                     
            SVMHFP           0                     
        SVSMLCTL             0b0100011100000011    
            SVSMLRRL         0x3                   
            SVSMLDLYST       0                     
            SVSLMD           0                     
            SVSMLEVM         0                     
            SVSMLACE         0                     
            SVSLRVL          0x3                   
            SVSLE            1                     
            SVSLFP           0                     
            SVMLOVPE         0                     
            SVMLE            1                     
            SVMLFP           0                     
        SVSMIO               0x0020                
            SVSLEVE          0                     
            SVMLEVE          0                     
            SVMLOE           0                     
            SVMLVRLOE        0                     
            SVMOUTPOL        1                     
            SVSHEVE          0                     
            SVMHEVE          0                     
            SVMHOE           0                     
            SVMHVRLOE        0                     
        PMMIFG               0x0030                
            SVSMLDLYIFG      0                     
            SVMLIFG          0                     
            SVMLVLRIFG       0                     
            SVSMHDLYIFG      1                     
            SVMHIFG          1                     
            SVMHVLRIFG       0                     
            PMMBORIFG        0                     
            PMMRSTIFG        0                     
            PMMPORIFG        0                     
            SVSHIFG          0                     
            SVSLIFG          0                     
            PMMRSTLPM5IFG    0                     
        PMMRIE               0x1146                
            SVSMLDLYIE       0                     
            SVMLIE           1                     
            SVMLVLRIE        1                     
            SVSMHDLYIE       0                     
            SVMHIE           0                     
            SVMHVLRIE        1                     
            SVSLPE           1                     
            SVMLVLRPE        0                     
            SVSHPE           1                     
            SVMHVLRPE        0                     
        PM5CTL0              0x0000                
            LOCKLPM5         0                     
    SYS                                            
        SYSCTL               0x0000                
            SYSRIVECT        0                     
            SYSPMMPE         0                     
            SYSBSLIND        0                     
            SYSJTAGPIN       0                     
        SYSBSLC              0x8003                
            SYSBLSIZE        3                     
            SYSBSLR          0                     
            SYSBSLOFF        0                     
            SYSBSLPE         1                     
        SYSJMBC              0x000c                
            JMBIN0FG         0                     
            JMBIN1FG         0                     
            JMBOUT0FG        1                     
            JMBOUT1FG        1                     
            JMBMODE          0                     
            JMBCLR0OFF       0                     
            JMBCLR1OFF       0                     
        SYSJMBI0             0x0110                
        SYSJMBI1             0xffff                
        SYSJMBO0             0x0000                
        SYSJMBO1             0x0000                
        SYSBERRIV            0x0000                
        SYSUNIV              0x0000                
            SYSUNVEC         0                     
        SYSSNIV              0x0000                
            SYSNVEC          0                     
        SYSRSTIV             0x0000                
            SYSRSTVEC        0                     

    I then brought the voltage back up to 3.3V and captured the registers:

    PMM                                            
        PMMCTL0              0x9603                
            PMMCOREV         3                     
            PMMSWBOR         0                     
            PMMSWPOR         0                     
            PMMSREGOFF       0                     
            PMMHPMRE         0                     
            PMMKEY           0x96                  
        PMMCTL1              0x0000                
            PMMREFMD         0                     
            PMMREFACC        0                     
            PMMCMD           0x0                   
        SVSMHCTL             0x4707                
            SVSMHRRL         0x7                   
            SVSMHDLYST       0                     
            SVSHMD           0                     
            SVSMHEVM         0                     
            SVSMHACE         0                     
            SVSHRVL          0x3                   
            SVSHE            1                     
            SVSHFP           0                     
            SVMHOVPE         0                     
            SVMHE            1                     
            SVMHFP           0                     
        SVSMLCTL             0b0100011100000011    
            SVSMLRRL         0x3                   
            SVSMLDLYST       0                     
            SVSLMD           0                     
            SVSMLEVM         0                     
            SVSMLACE         0                     
            SVSLRVL          0x3                   
            SVSLE            1                     
            SVSLFP           0                     
            SVMLOVPE         0                     
            SVMLE            1                     
            SVMLFP           0                     
        SVSMIO               0x0020                
            SVSLEVE          0                     
            SVMLEVE          0                     
            SVMLOE           0                     
            SVMLVRLOE        0                     
            SVMOUTPOL        1                     
            SVSHEVE          0                     
            SVMHEVE          0                     
            SVMHOE           0                     
            SVMHVRLOE        0                     
        PMMIFG               0x0010                
            SVSMLDLYIFG      0                     
            SVMLIFG          0                     
            SVMLVLRIFG       0                     
            SVSMHDLYIFG      1                     
            SVMHIFG          0                     
            SVMHVLRIFG       0                     
            PMMBORIFG        0                     
            PMMRSTIFG        0                     
            PMMPORIFG        0                     
            SVSHIFG          0                     
            SVSLIFG          0                     
            PMMRSTLPM5IFG    0                     
        PMMRIE               0x1146                
            SVSMLDLYIE       0                     
            SVMLIE           1                     
            SVMLVLRIE        1                     
            SVSMHDLYIE       0                     
            SVMHIE           0                     
            SVMHVLRIE        1                     
            SVSLPE           1                     
            SVMLVLRPE        0                     
            SVSHPE           1                     
            SVMHVLRPE        0                     
        PM5CTL0              0x0000                
            LOCKLPM5         0                     
    SYS                                            
        SYSCTL               0x0000                
            SYSRIVECT        0                     
            SYSPMMPE         0                     
            SYSBSLIND        0                     
            SYSJTAGPIN       0                     
        SYSBSLC              0x8003                
            SYSBLSIZE        3                     
            SYSBSLR          0                     
            SYSBSLOFF        0                     
            SYSBSLPE         1                     
        SYSJMBC              0x000c                
            JMBIN0FG         0                     
            JMBIN1FG         0                     
            JMBOUT0FG        1                     
            JMBOUT1FG        1                     
            JMBMODE          0                     
            JMBCLR0OFF       0                     
            JMBCLR1OFF       0                     
        SYSJMBI0             0x0110                
        SYSJMBI1             0xffff                
        SYSJMBO0             0x0000                
        SYSJMBO1             0x0000                
        SYSBERRIV            0x0000                
        SYSUNIV              0x0000                
            SYSUNVEC         0                     
        SYSSNIV              0x0000                
            SYSNVEC          0                     
        SYSRSTIV             0x0000                
            SYSRSTVEC        0                     

  • You need to re-enable the interrupt.
    When the SVMHIE interrupt vector is read it clears SVMIE ( fyi, same goes for SVMLIE ). Try re-enabling it in the VLRHIFG ISR case, also do this for SVMLIE in VLRLIFG.

    Another thing I noticed as that SVMHIFG is set it in SVMHIFG-regs-2, and stays set until regs-4. This may need to be investigated.
  • Thanks, it works now.

**Attention** This is a public forum