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

 
 
 
Reply to this topicStart new topic
> Не стартует MSP430F2481 от XT2CLK
Vladimir_T
сообщение Sep 17 2008, 07:28
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Здравствуйте, уважаемые, коллеги, столкнулся с такой проблемой. Есть отлаженное устройство на базе MSP430F149, понадобилось быстродействие и вместо него на одну из плат установлен MSP430F2481. ИАР 4.10 его поддерживает и отладка работает, но процессор не желает переходить на тактирование от XT2CLK. Уже прочел всю доступную документацию и Errata и не нашел каких-либо различий между этими процессорами в данном аспекте. Тест-программа с сайта Texas. Процессор бесконечно ожидает флаг OFIFG, т.е. генератор не желает запускаться. Перепробовал все: и кварцы менял, и емкости, а толку - нет. Если кто встречался с этой штукой, подскажите.
Код
#include  <msp430x24x.h>

volatile unsigned int i;

int main( void )
{  
// Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  BCSCTL1 &= ~XT2OFF;                       // Activate XT2 high freq xtal
  BCSCTL3 |= XT2S_2;                         // 3 – 16MHz crystal or resonator

  do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
  }
  while (IFG1 & OFIFG);                     // OSCFault flag still set?

  BCSCTL2 |= SELM_2;                        // MCLK = XT2 HF XTAL (safe)    
  P2DIR |= 0xff;
while (1)
{
  P2OUT ^= 0xff;
}  
}
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 17 2008, 09:06
Сообщение #2


Гуру
******

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



Я все время не перестаю удивляться, кто вас учит, что при начальной инициализации регистров можно полагаться на дефолтные установки регистров? Зачем флаги накладывать? Инициализируйте все регистры явно заданными значениями!
Кроме того, у вас вектор NMI_VECTOR не задан. Если кварц запускается неустойчиво, то в этом прерывании должна быть обработка этого случая и переход последовательно XT2->DCO->XT2.
И еще доп.уточнение. Кварц на какую частоту используете и с какими доп. конденсаторами?
Гы smile.gif При втором заходе увидел явную ошибку, являющуюся причиной.
BCSCTL3 |= XT2S_3;
Ответ из юзергайда.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Sep 17 2008, 09:25
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Кварцы пробовал 16 мГц + 20 пФ, 8 мГц + 16 пФ.
Режимы запуска BCSCTL3 |= XT2S_2; пробовал.
Сейчас с прерываниями попытаюсь....
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Sep 24 2008, 06:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Хочу доложить вот о чем. Любой процессор MSP430F248 на плате MSP-TS430PM64 (на фирменной платке с ZIF-сокетом) стартует на Xt2. И оказалось, что XT2 не запускается, если на XT1 отсутствует какой-либо кварц. Почему система не запускается на XT2 в отсутствие XT1? Как рекомендуют в даташите неиспользуемый вход XT1 нужно подчлючать к питанию, также не дает запуститься XT2. Причем всегда, даже когда процессор не стартует с XT2, генерация на кварце XT2 F= 16мГц и с хорошей амплитудой. Вот и пришлось на платки подпаивать часовые кварцы только для старта. В последствии переделаем платы для работы процессора с XT1. Но вопрос остается открытым: почему процессор MSP430F248 не запускается на XT2 в отсутствие XT1? Нигде в Errata не нашел упоминаний на подобную ситуацию.
Go to the top of the page
 
+Quote Post
АДИКМ
сообщение Sep 24 2008, 07:43
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294



Цитата(Vladimir_T @ Sep 24 2008, 09:03) *
Хочу доложить вот о чем. Любой процессор MSP430F248 на плате MSP-TS430PM64 (на фирменной платке с ZIF-сокетом) стартует на Xt2. И оказалось, что XT2 не запускается, если на XT1 отсутствует какой-либо кварц. Почему система не запускается на XT2 в отсутствие XT1? Как рекомендуют в даташите неиспользуемый вход XT1 нужно подчлючать к питанию, также не дает запуститься XT2. Причем всегда, даже когда процессор не стартует с XT2, генерация на кварце XT2 F= 16мГц и с хорошей амплитудой. Вот и пришлось на платки подпаивать часовые кварцы только для старта. В последствии переделаем платы для работы процессора с XT1. Но вопрос остается открытым: почему процессор MSP430F248 не запускается на XT2 в отсутствие XT1? Нигде в Errata не нашел упоминаний на подобную ситуацию.


потому что если нет кварца он тактируется от DCO. это сделано по одной простой причине - в случае аварии (кварц разбили) процессор переключается на DCO.


--------------------
летаю на пепелаце...
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Sep 24 2008, 08:37
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Процессор стартeет на DCO и возвращается к тактированию от него же в случае сбоя при работе XT1 или XT2, но тут другое: почему XT1 так влияет на XT2?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 24 2008, 09:19
Сообщение #7


Гуру
******

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



Цитата(Vladimir_T @ Sep 24 2008, 11:37) *
Процессор стартует на DCO и возвращается к тактированию от него же в случае сбоя при работе XT1 или XT2, но тут другое: почему XT1 так влияет на XT2?
Давайте по порядку.
1)Что в вашем понятии "не стартует"? В моем понимании это означает "не выполняет программу вообще, как будто подан сигнал Reset". В вашем случае это, по-видимому, не так - программу он выполняет, но она циклится на сбросе OFIFG. Так?
2)Программа ваша до сих пор выглядит как в первом сообщении? Вы не воспользовались советом rezidentа и не заменили накладывание масок в начале программы на запись начального значения?
3)Если ваша программа циклится на сбросе флага, то надо внимательно читать документацию именно про этот флаг. Наверняка там будет сказано, в каких случаях XT1 влияет на этот флаг.


--------------------
На любой вопрос даю любой ответ
"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
сообщение Sep 24 2008, 15:46
Сообщение #8


Гуру
******

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



Цитата(Vladimir_T @ Sep 24 2008, 12:03) *
Почему система не запускается на XT2 в отсутствие XT1? Как рекомендуют в даташите неиспользуемый вход XT1 нужно подчлючать к питанию, также не дает запуститься XT2.

Цитата(Vladimir_T @ Sep 24 2008, 12:03) *
Но вопрос остается открытым: почему процессор MSP430F248 не запускается на XT2 в отсутствие XT1? Нигде в Errata не нашел упоминаний на подобную ситуацию.
Причин по-моему две.
1. Так работает логика установки флага OFIFG. См. рисунок из User's Guideв аттаче.
2. Вы видимо пренебрегли моим советом и накладываете маски вместо того, чтобы инициализировать регистры модуля тактирования явными значениями. В результате в регистре BCSCTL1 сброшен бит XTS, а в регистре BCSCTL3 сброшены биты LFXT1Sx. Это сочетание соответствует наличию часового кварца на выводах XIN/XOUT и работе этого генератора в LF режиме. Но поскольку кварца нет, то постоянно получается состояние LF_OscFault, устанавливается бит LFXT1OF и OFIFG Flag. В результата ваша процедура перехода на тактирование от XT2 циклится при попытке сброса OFIFG и программа "не работает".
Раз у вас на XT1 нет кварца, то инциализируйте биты LFXT1Sx явно так, чтобы, например, был выбран источник тактирования "VLOCLK", вместо "32768 Hz Crystal on LFXT1" по-умолчанию.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Oct 1 2008, 04:41
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Спасибо огромное за школу. Все было именно так, как вы и написали: по умолчанию процессор должен тактироваться от часового кварца. С масками теперь дружить буду очень осторожно. А вот с этими строчками инициализации все сразу заработало.
Код
  BCSCTL1 = 0x00;                  // Activate XT2 high freq xtal
  BCSCTL2 = 0x88;                  // MCLK = XT2CLK
  BCSCTL3 = 0xA0;                  // 3 – 16MHz crystal or resonator, VLOCLK

Но моя беспечность и доверие к примерам от Texas Instruments подвели, ведь примерчик взят с сайта. А примерчики обычно всегда рабочие и хорошо прокоментированы.
Go to the top of the page
 
+Quote Post

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

 


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


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