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.

MSP430FR5969: RTC_B usage without external 32KHz oscillator

Part Number: MSP430FR5969
Other Parts Discussed in Thread: MSP-TS430RGZ48C,

I am using the MSP-TS430RGZ48C development board without the 32KHz crystal oscillator installed.  I am trying to get the RTC_B operating, but the only time I get any interrupt from the RTC is if I enable the Oscilator fault interrupt, in which case I get a never-ending stream of oscillator fault interrupts.  The time never moves past my initial setting.  If I disable the oscillator fault interrupt, I never get any interrupt from the RTC.

Is is possible to run RTC_B from a source other than LFXT ??

Thank you.

Here is the relevant code:

WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
// Configure one FRAM waitstate as required by the device datasheet for MCLK
// operation beyond 8MHz _before_ configuring the clock system.
FRCTL0 = FRCTLPW | NWAITS_1;

// Clock System Setup to 16 MHz
CSCTL0_H = CSKEY >> 8; // Unlock CS registers

CSCTL1 = DCORSEL | DCOFSEL_4; // Set DCO to 16MHz
CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK; // Set SMCLK = MCLK = DCO, ACLK = VLOCLK
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers
CSCTL4 = HFXTOFF | LFXTOFF;

CSCTL0_H = 0; // Lock CS register

// Disable the GPIO power-on default high-impedance mode
PM5CTL0 &= ~LOCKLPM5;

//Configure RTC

// RTC enable, BCD mode, RTC hold; Enable RTC read ready, RTC Alarm, and RTC time event interrupts
RTCCTL01 = RTCTEVIE | RTCAIE | RTCRDYIE | RTCBCD | RTCHOLD;
RTCYEAR = 0x2020;
RTCMON = 0x11;
RTCDAY = 0x22;
RTCDOW = 0x00; // Day of week; 0x00 = Sunday
RTCHOUR = 0x11; // Hour (hex)
RTCMIN = 0x03; // Minute (hex)
RTCSEC = 0x45; // Seconds (hex)

RTCPS0CTL = RT0IP__4 | RT0PSIE_L;
RTCCTL01 &= ~(RTCHOLD); // Start RTC

__bis_SR_register(LPM3_bits | GIE); // Enter LPM3 mode w/ interrupts enabled

#pragma vector=RTC_VECTOR
__interrupt void RTC_ISR(void)
{
switch(__even_in_range(RTCIV, RTCIV_RTCOFIFG))
{
case RTCIV_NONE: break;
case RTCIV_RTCOFIFG: break;
case RTCIV_RTCRDYIFG:
dateTime.hexYear = RTCYEAR;
dateTime.hexMonth = RTCMON;
dateTime.hexDay = RTCDAY;
dateTime.dayOfWeek = RTCDOW;
dateTime.hexHour = RTCHOUR;
dateTime.hexMinute = RTCMIN;
dateTime.hexSecond = RTCSEC;
ready = 1;
break;
case RTCIV_RTCTEVIFG:
dateTime.hexYear = RTCYEAR;
dateTime.hexMonth = RTCMON;
dateTime.hexDay = RTCDAY;
dateTime.dayOfWeek = RTCDOW;
dateTime.hexHour = RTCHOUR;
dateTime.hexMinute = RTCMIN;
dateTime.hexSecond = RTCSEC;
__no_operation();
break;
case RTCIV_RTCAIFG:
dateTime.hexYear = RTCYEAR;
dateTime.hexMonth = RTCMON;
dateTime.hexDay = RTCDAY;
dateTime.dayOfWeek = RTCDOW;
dateTime.hexHour = RTCHOUR;
dateTime.hexMinute = RTCMIN;
dateTime.hexSecond = RTCSEC;
break;
case RTCIV_RT0PSIFG: break;
case RTCIV_RT1PSIFG: break;
default: break;
}

__bic_SR_register_on_exit(LPM3_bits); // Exit active CPU
}

**Attention** This is a public forum