Ага, правильно. Но...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Сергей Борщ 25 августа 2004 г. 10:58
В ответ на: Не совсем корректный код ИМХО. отправлено rezident 25 августа 2004 г. 10:49

Если кварц сбойнет после выполнения цикла - снова переключится на 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