Hi all,
running just simple demo on MSP430FR2355 to test XTAL (20MHz) configuration finishes in NMI.
Could someone give a hint... why it would go to NMI?
Sample code:
void SETUP_EXTERNAL_XTAL(){
bool status;
//Initializes the XT1 and XT2 crystal frequencies being used
CS_setExternalClockSource(CS_XT1_CRYSTAL_FREQUENCY);
//Initialize XT1. Returns STATUS_SUCCESS if initializes successfully
status = CS_turnOnXT1HFWithTimeout(CS_XT1_DRIVE_0, CS_XT1_HFFREQ_16MHZ_24MHZ,CS_XT1_TIMEOUT);
//Select XT1 as ACLK source
//CS_initClockSignal(CS_ACLK,CS_XT1CLK_SELECT,CS_CLOCK_DIVIDER_4);
//Select XT1 as SMCLK source
CS_initClockSignal(CS_SMCLK,CS_XT1CLK_SELECT,CS_CLOCK_DIVIDER_1);
//clear all OSC fault flag
CS_clearAllOscFlagsWithTimeout(10000); // 1000
//Enable oscillator fault interrupt
SFR_enableInterrupt(SFR_OSCILLATOR_FAULT_INTERRUPT);
}
void main(void)
{
//Stop Watchdog Timer
WDT_A_hold(WDT_A_BASE);
SETUP_PIN__EXTERNAL_XTAL();
//ACLK set out to pins
GPIO_setAsPeripheralModuleFunctionOutputPin(
GPIO_PORT_P1,
GPIO_PIN1,
GPIO_SECONDARY_MODULE_FUNCTION
);
//SMCLK set out to pins
GPIO_setAsPeripheralModuleFunctionOutputPin(
GPIO_PORT_P3,
GPIO_PIN4,
GPIO_PRIMARY_MODULE_FUNCTION
);
//MCLK set out to pins
GPIO_setAsPeripheralModuleFunctionOutputPin(
GPIO_PORT_P3,
GPIO_PIN0,
GPIO_PRIMARY_MODULE_FUNCTION
);
PMM_unlockLPM5();
SETUP_EXTERNAL_XTAL();
// Enable global interrupt
__bis_SR_register(GIE);
while(1){
// Do nothing
}
}
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=UNMI_VECTOR
__interrupt
#elif defined(__GNUC__)
__attribute__((interrupt(UNMI_VECTOR)))
#endif
void NMI_ISR(void)
{
uint16_t status;
do {
// If it still can't clear the oscillator fault flags after the timeout,
// trap and wait here.
status = CS_clearAllOscFlagsWithTimeout(1000);
} while(status != 0);
}