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

 
 
 
Reply to this topicStart new topic
> Вопрос по тактовому генератору
Allregia
сообщение Jul 23 2009, 10:38
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Привет премудрый ALL.

169-й чип, два кварца - часовой и 8мгц.
стартую с DCO, потом по одному включаю кварцевые генаторы. хочетьяс знать включились ли они (или может кварц забыли впаять).
Для XT2 сделал такую фунцкию:
Код
bool XT2Control(bool s){  // 0 - off, 1 - on, return true if ON was successful
  int i;
  if (!s){
    BCSCTL1 |= XT2OFF;
    return true;
  }
    BCSCTL1 &= ~XT2OFF;
  i=100;
  do{
          IFG1 &= ~OFIFG;  //clear OFIFG
          FLAG10MS=0; while (!FLAG10MS); i--;
        } while((i>0)&&((IFG1  & OFIFG)!=0));
  return (OFIFG==0);


Но она всегда возвращает false!

FLAG10MS - устанавливается в преревании от WDT.

P.S. С часовым кварцем, как я понял по описанию, вообще нельзя определить работает он или нет ?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jul 23 2009, 11:30
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



запитайте таймер от часового кварца и анализируйте тикает он или нет
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 23 2009, 11:37
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Allregia @ Jul 23 2009, 13:38) *
Но она всегда возвращает false!
Естественно. Всмотритесь внимательно в строчку return (OFIFG==0); и сравните со строчкой &&((IFG1 & OFIFG)!=0)


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jul 23 2009, 11:38
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(jorikdima @ Jul 23 2009, 14:30) *
запитайте таймер от часового кварца и анализируйте тикает он или нет


А он не переключится на тактирование от DCO ?


И почему не работает вышеприведенный код для XT2 ?
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jul 23 2009, 12:01
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Дык,
Цитата
Note: No Oscillator Fault Detection for LFXT1 in LF Mode
Oscillator fault detection is only applicable for LFXT1 in HF mode and XT2.
There is no oscillator fault detection for LFXT1 in LF mode.

Если сильно хочется можно анализировать наличие ACLK.
Например, выдать его наружу через P5.6 (P5SEL.6=1) и анализировать P5IN.6


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 23 2009, 13:36
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Allregia @ Jul 23 2009, 14:38) *
И почему не работает вышеприведенный код для XT2 ?
Ну неужели это надо разжевывать? OFIFG - константа, равная (1<<n), n не помню. Она никогда не будет равна нулю, что вам и сообщет функция.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 23 2009, 14:29
Сообщение #7


Гуру
******

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



Цитата(Allregia @ Jul 23 2009, 16:38) *
P.S. С часовым кварцем, как я понял по описанию, вообще нельзя определить работает он или нет ?
Можно. Для этого используйте внутреннее соединение ACLK и входа CCI2B TimerA, который работает в режиме захвата с тактированием от SMCLK, который в свою очередь имеет источником DCO. И учтите, что для включения генератора с часовым кварцем требуется время в несколько сотен миллисекунд. Таково время старта часового генератора.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jul 26 2009, 04:42
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(Сергей Борщ @ Jul 23 2009, 16:36) *
Ну неужели это надо разжевывать? OFIFG - константа, равная (1<<n), n не помню. Она никогда не будет равна нулю, что вам и сообщет функция.


Блин! Слоня-то я и не приметил sad.gif
Конечно надо писать return ((IFG1 & OFIFG)==0)
Go to the top of the page
 
+Quote Post

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

 


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


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