реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Странная работа с флагом OFIFG
Dog Pawlowa
сообщение Dec 1 2006, 13:46
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Помогите люди добрые ...

Кварц только на XT2.
Задача - если кварц не работает, зависнуть с морганием светодиода.
Контроллер работает всегда от DCO.
В этом тексте, если раскомментарить обнулениe флага, то контроллер сбрасывается по непонятной причине. sad.gif
Если не раскомментарить - то сведодиод моргает бесконечно smile.gif

Код
void ClockConfiguration(void)
{    unsigned int i;
  __disable_interrupt();
  
    DCOCTL= 0x56;            //   without changes
    BCSCTL1=0x07;            //   START XT2, DCO faster
    BCSCTL2=SELS;            //    select SMCLK=XT2CLK
    ResetWDT;
    OnWorkRed;
    do
    {    //IFG1 &= ~OFIFG;            
        for (i = 0x3FFF; i > 0; i--)
               ResetWDT;            
          ToggleWorkRed;  
      }
    while (IFG1 & OFIFG);     // if OSCFault flag set => repeat(error)
}


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Dec 1 2006, 14:16
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



На первый взгляд все правильно и должно бы работать... Не совсем понимаю, впрочем, зачем сразу включать
Код
BCSCTL2=SELS;

до запуска XT2?
Кстати, насколько я помню, прерывание OF не маскируется по __disable_interrupt(), надо сбросить OFIE. Хотя тоже не должно мешать.
Проверьте куда направлен вектор этого прерывания.

Сообщение отредактировал HARMHARM - Dec 1 2006, 14:21
Go to the top of the page
 
+Quote Post
chopik
сообщение Dec 1 2006, 15:17
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 14-09-06
Пользователь №: 20 384



Опять присоединяюсь к предыдущему оратору: усё логично.
Цитата из агитброшюрки:
The OFIFG oscillator-fault interrupt flag is set and latched at POR or when an
oscillator fault (LFOF, XT1OF, XT2OF, or DCOF set) is detected. When OFIFG
is set, MCLK is sourced from the DCO, and if OFIE is set, the OFIFG requests
an NMI interrupt. When the interrupt is granted, the OFIE is reset
automatically. !!!The OFIFG flag must be cleared by software!!!. The source of the
fault can be identified by checking the individual fault bits.

Т.е. флаг OFIFG надо в любом случае сбрасывать программно.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 1 2006, 15:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(HARMHARM @ Dec 1 2006, 14:16) *
Проверьте куда направлен вектор этого прерывания.

Угу, похоже, что игры с OFIFG - это далекие отзвуки бубна, зарытого в прерываниях. angry.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 1 2006, 16:20
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Dog Pawlowa, RTFM! И в особенности раздел 4.2. http://www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh/4_2.htm
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 2 2006, 11:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



sad.gif
Это было, как у Лема ("Насморк", кажется, называется роман) - сочетание внешне никак не связанных обстоятельств. Ошибки на плате, ошибки в программе, поэтому долго не мог въехать.
Спасибо за помощь. Закорачиваю кварц - моргает! blink.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 23:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016