Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не стартует MSP430F2481 от XT2CLK
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Vladimir_T
Здравствуйте, уважаемые, коллеги, столкнулся с такой проблемой. Есть отлаженное устройство на базе 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;
}  
}
rezident
Я все время не перестаю удивляться, кто вас учит, что при начальной инициализации регистров можно полагаться на дефолтные установки регистров? Зачем флаги накладывать? Инициализируйте все регистры явно заданными значениями!
Кроме того, у вас вектор NMI_VECTOR не задан. Если кварц запускается неустойчиво, то в этом прерывании должна быть обработка этого случая и переход последовательно XT2->DCO->XT2.
И еще доп.уточнение. Кварц на какую частоту используете и с какими доп. конденсаторами?
Гы smile.gif При втором заходе увидел явную ошибку, являющуюся причиной.
BCSCTL3 |= XT2S_3;
Ответ из юзергайда.
Vladimir_T
Кварцы пробовал 16 мГц + 20 пФ, 8 мГц + 16 пФ.
Режимы запуска BCSCTL3 |= XT2S_2; пробовал.
Сейчас с прерываниями попытаюсь....
Vladimir_T
Хочу доложить вот о чем. Любой процессор MSP430F248 на плате MSP-TS430PM64 (на фирменной платке с ZIF-сокетом) стартует на Xt2. И оказалось, что XT2 не запускается, если на XT1 отсутствует какой-либо кварц. Почему система не запускается на XT2 в отсутствие XT1? Как рекомендуют в даташите неиспользуемый вход XT1 нужно подчлючать к питанию, также не дает запуститься XT2. Причем всегда, даже когда процессор не стартует с XT2, генерация на кварце XT2 F= 16мГц и с хорошей амплитудой. Вот и пришлось на платки подпаивать часовые кварцы только для старта. В последствии переделаем платы для работы процессора с XT1. Но вопрос остается открытым: почему процессор MSP430F248 не запускается на XT2 в отсутствие XT1? Нигде в Errata не нашел упоминаний на подобную ситуацию.
АДИКМ
Цитата(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.
Vladimir_T
Процессор стартeет на DCO и возвращается к тактированию от него же в случае сбоя при работе XT1 или XT2, но тут другое: почему XT1 так влияет на XT2?
Сергей Борщ
Цитата(Vladimir_T @ Sep 24 2008, 11:37) *
Процессор стартует на DCO и возвращается к тактированию от него же в случае сбоя при работе XT1 или XT2, но тут другое: почему XT1 так влияет на XT2?
Давайте по порядку.
1)Что в вашем понятии "не стартует"? В моем понимании это означает "не выполняет программу вообще, как будто подан сигнал Reset". В вашем случае это, по-видимому, не так - программу он выполняет, но она циклится на сбросе OFIFG. Так?
2)Программа ваша до сих пор выглядит как в первом сообщении? Вы не воспользовались советом rezidentа и не заменили накладывание масок в начале программы на запись начального значения?
3)Если ваша программа циклится на сбросе флага, то надо внимательно читать документацию именно про этот флаг. Наверняка там будет сказано, в каких случаях XT1 влияет на этот флаг.
rezident
Цитата(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" по-умолчанию.
Vladimir_T
Спасибо огромное за школу. Все было именно так, как вы и написали: по умолчанию процессор должен тактироваться от часового кварца. С масками теперь дружить буду очень осторожно. А вот с этими строчками инициализации все сразу заработало.
Код
  BCSCTL1 = 0x00;                  // Activate XT2 high freq xtal
  BCSCTL2 = 0x88;                  // MCLK = XT2CLK
  BCSCTL3 = 0xA0;                  // 3 – 16MHz crystal or resonator, VLOCLK

Но моя беспечность и доверие к примерам от Texas Instruments подвели, ведь примерчик взят с сайта. А примерчики обычно всегда рабочие и хорошо прокоментированы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.