[an error occurred while processing this directive]
Потому что это защита от сбоя кварца. Описана в даташите в разделе Basic Clock Module Fail-Safe Operation.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Сергей Борщ 17 декабря 2004 г. 22:23
В ответ на: rezident здесь? Вопрос на предыдущей странице. пусть и с необработанным прерыванием по ошибке тактирования, источник этого самого тактирования должен был переключиться на XT2 ? Почему происходит возврат на DCO ? отправлено RainMan 17 декабря 2004 г. 22:12

Еще есть аппнота (кривая) на сайте. Пока кварц не разгонится, тактирование принудительно переключается на DCO. Надо либо как в аппноте показано включить кварц, выждать долго, и только тогда переключиться на него, либо в цикле сбрасывать OFIFG и проверять - если перестал выставляться после сброса - занчит колебания устаканились и можно на него переключаться, либо этот цикл делать в прерывании по OFIFG, что позволит вернуть тактирование на XT2 даже в случае сбоя в колебаниях во время выполнения основной части программы.
Например:


int __low_level_init(void) {
...
BCSCTL1 = 0; // Turn on XT2
BCSCTL2 = SELM1 | SELS; // Select XT as MCLK & SMCLK source
IE1 |= OFIE; // Cause OFIFG interrupt
....
}

#pragma vector = NMI_VECTOR
__root __interrupt void OSCFault (void) {
BCSCTL2 &= ~SELM1; //MCLK=DCO
do
IFG1 &= ~OFIFG;
while (IFG1 & OFIFG);
BCSCTL2 |= SELM1; //MCLK=XT2;
IE1 |= OFIE;
}



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru