|
Если кварц сбойнет после выполнения цикла - снова переключится на DCO.
Поэтому грамотнее это все делать в прерывании по OFIFG:
....
BCSCTL1 = _XT2ON|_XT1Lo|ACLKdiv8|InternalR7;
BCSCTL2 = SMCLKdiv1|MCLKdiv1|_Rint|_SMXT2|MCLK_XT2;
IE1 |= OFIE;
.....
#pragma vector = NMI_VECTOR
#pragma type_attribute = __interrupt
void OSCFault (void) {
BCSCTL2 &= ~MCLK_XT2; //MCLK=DCO;
do
IFG1 &= ~OFIFG;
while (IFG1 & OFIFG);
BCSCTL2 |= MCLK_XT2; //MCLK=XT;
IE1 |= OFIE;
}
E-mail: info@telesys.ru