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 power-up/switch-on.

Greetings.

There has been a problem with some of my processor boards whereby the reset switch doesn't restart the processor.

When it occurs even shorting the DVCC pin to ground fails to restart it.

It is a rare occurrence, and I can't reproduce the problem at will.

I don't reprogram the RESET NMI pin, but leave it at the default setting. (WDTCTL = WDT_ARST_1000)

I attach a schematic showing the processor and supply circuit.

Capacitor C17 with Q11 provide an independent supply of about 2V for the processor while the voltage regulator U6 is switched off.

C17 is a double layer capacitor of 0.5F. If fully discharged it takes about 1 minute to charge up to 1.8V whereupon the processor starts.

Is there anything I am overlooking which might prevent the processor starting?

Is there some condition which would prevent the processor starting even after DVCC has been shorted to ground?

main{

  init_io ( VCC_off );
  switch_on_5V ( void );

  run program...

}










int switch_on_5V ( void ){ /* Check voltage on reservoir capacitor and switch on when it reaches 1.9V */

int i;

  while(1){  // Check voltage on reservoir cap.
    SVSCTL = VLD_1_90V; /* Set SVS with 1.9V threshold */

    if (!(SVSCTL & SVSOP)) /* bit SVSOP goes low when voltage exceeds threshold */
      break;

    SVSCTL = SVS_off;  // Turn off SVS.
    _BIS_SR(LPM3_bits + GIE);	/* Enter LPM3 */
  }

  SVSCTL = SVS_off;

  P2OUT |=  PWR5V0_ON; // Switch on the processor voltage regulator.

  return SUCCESS;

}








void init_io ( int VCC_state ){
   
  if ( VCC_state == VCC_off ){

    P1SEL = 0x00; 
    P1REN = 0xFF; // Activate pulldown resistors.
    P1OUT = 0x06; // Set pullup resistors on inputs 1 and 2.
    P1DIR = 0x00; 

    P3OUT = 0x00; // Set resistors to pulldown.
    P3REN = 0xF7; // Activate pulldown resistors, except comparator.
    P3DIR = 0x00; // Set as inputs.
    P3SEL = PWR_MON; // Disconnect USART Activate PWR_MON input.
 
    P4SEL = 0x00;
    P4OUT = 0x00; // Set resistors to pulldown.
    P4REN = 0xFF; // Activate pulldown resistors.
    P4DIR = 0x00; // Set as inputs.
 
    P5SEL = 0x00; // Disconnect SPI.    
    P5OUT = 0x00; // Set resistors to pulldown.
    P5REN = 0xFF; // Activate pulldown resistors.
    P5DIR = 0x00; // Set as inputs.
    
    P6SEL = 0x00; // Didable ADC.    
    P6OUT = 0x00; // Set resistors to pulldown.
    P6DIR = 0x00; // Set as inputs.    
    P5REN = 0xFF; // Activate pulldown resistors.
      
    P2OUT = 0x00; // This line for board 3.4
    P2REN = 0xF7; // P2.3 is battery monitor comparitor.
    P2DIR = 0x00; // Set as inputs.
 
    UCA0CTL1 |= UCSWRST; // Turn off USART0
    UCA1CTL1 |= UCSWRST; // Turn off USART0
    UCB1CTL1 |= UCSWRST; // Turn off SPI

  }
} 









void RtcSetup(void)
{
     elapsed = (unsigned long *) malloc(sizeof(unsigned long));
    BCSCTL3 = XCAP_3;                     // Set 12.5 pf capacitors for Xtal
    TBCTL = TBSSEL_1 + TBCLR;             // ACLK, clear TBR
    TBCCTL0 = CCIE;                       // TRCCR0 interrupt enabled
    TBCCR0 = 32767;                       //
    TBCTL = TBSSEL_1 + MC_1;              // ACLK, upmode
    _EINT();	
}








#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void){

  (*elapsed)++;			/* increment the real time clock */

  TimeOut--;

  P5OUT ^= LED; // Toggle LED

  WDTCTL = WDT_ARST_1000;  /* Clear watchdog and set to 1 sec timeout. Resetting watchdog 
                             here and just before setting LPM3 again in main() function
			     ensures that watchdog doesn't timeout during sleep mode. */

  /* wake up processor once per second to check for wakeup conditions;
   * LPM3 bits set again in main() loop */
  _BIC_SR_IRQ(LPM3_bits);      /* Clear LPM3 bits from 0(SR) */


}
  • Hi Joseph,

    First, I do not see an attachment for a schematic.  It may not have been included in the original post, or may have been removed if it was marked "confidential" or similar (as this is a public forum).  If you don't wish to share your schematic publicly, but are willing to send it to me directly, my email is pridgen(at)ti.com.

    Next, are you sure the device is not restarting?  If you short VCC and GND, this should cause the device to reset, unless there is a cap (such as your 0.5F cap you mention in the post)between the short and the device that is big enough to hold power to the device for the duration of the short.  Typically, I do not recommend shorting VCC and GND while the board is powered, as that could stress your voltage regulator/converter, causing other issues.

    Also, by default the reset pin should be in reset mode, so driving it low then releasing it high afterwards should force a reset.  How are you confirming this is not causing a reset?

    Thanks,

    Mike

  • Hello Mike.

    Thank you for reply.
    My schematic didn't attach properly first time. I shall attach it now. It is not confidential. It is a mature design.

    You seem sure that a cold start will give consistent results. It may be a loop in my program, but I want to rule out any well known pitfalls with initialization.


    I have been on the phone a few times with clients who are using reset button and shorting DVCC to no avail.

    Joe.

  • During Power-Up you need to provide a Reset signal to the MCU. I don’t see any kind of this circuit connected to the MCU-RST pin in your schematic.

    Normally a single resistor and capacitance are adequate to accomplish this, but in your case with a 'slow' charging 'super-cap’ is a longer reset time is needed, and to at least Vcc exceeds 1.2V. This can be best realized with a "Supply Voltage Supervisor".
  • I can see the need for a definite reset signal upon power up.

    I presume the timing is not critical. Am I correct in saying that any time (even 1-2 seconds) after voltage exceeds 2V would be valid?

    The user reports that the reset button SW1 fails to restart it. However I wasn't there, so I couldn't test vcc etc.
  • Searching for a Reset button (SW1) I found a Reset circuitry.

     

    The switch has a Pull-up resistor of 100 KOhm, recommended (typical) is a (max) 35 KOhm.

     

    The Power-up reset will probably not work because there is a diode in series with the capacitor. The voltage-drop over the diode can be too high to pull the RST below his threshold level.

     

    The reset time isn’t critical but must be at least 2uS and is effective at any Vcc above 1.2V.

  • Thank you Mike and Leo.

**Attention** This is a public forum