Перейти к содержанию
    

Не стартует MSP430F2481 от XT2CLK

Здравствуйте, уважаемые, коллеги, столкнулся с такой проблемой. Есть отлаженное устройство на базе 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;
}  
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я все время не перестаю удивляться, кто вас учит, что при начальной инициализации регистров можно полагаться на дефолтные установки регистров? Зачем флаги накладывать? Инициализируйте все регистры явно заданными значениями!

Кроме того, у вас вектор NMI_VECTOR не задан. Если кварц запускается неустойчиво, то в этом прерывании должна быть обработка этого случая и переход последовательно XT2->DCO->XT2.

И еще доп.уточнение. Кварц на какую частоту используете и с какими доп. конденсаторами?

Гы :) При втором заходе увидел явную ошибку, являющуюся причиной.

BCSCTL3 |= XT2S_3;

Ответ из юзергайда.

post-3882-1221642710_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кварцы пробовал 16 мГц + 20 пФ, 8 мГц + 16 пФ.

Режимы запуска BCSCTL3 |= XT2S_2; пробовал.

Сейчас с прерываниями попытаюсь....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процессор стартeет на DCO и возвращается к тактированию от него же в случае сбоя при работе XT1 или XT2, но тут другое: почему XT1 так влияет на XT2?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процессор стартует на DCO и возвращается к тактированию от него же в случае сбоя при работе XT1 или XT2, но тут другое: почему XT1 так влияет на XT2?
Давайте по порядку.

1)Что в вашем понятии "не стартует"? В моем понимании это означает "не выполняет программу вообще, как будто подан сигнал Reset". В вашем случае это, по-видимому, не так - программу он выполняет, но она циклится на сбросе OFIFG. Так?

2)Программа ваша до сих пор выглядит как в первом сообщении? Вы не воспользовались советом rezidentа и не заменили накладывание масок в начале программы на запись начального значения?

3)Если ваша программа циклится на сбросе флага, то надо внимательно читать документацию именно про этот флаг. Наверняка там будет сказано, в каких случаях XT1 влияет на этот флаг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему система не запускается на XT2 в отсутствие XT1? Как рекомендуют в даташите неиспользуемый вход XT1 нужно подчлючать к питанию, также не дает запуститься XT2.

Но вопрос остается открытым: почему процессор 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" по-умолчанию.

post-3882-1222270610_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо огромное за школу. Все было именно так, как вы и написали: по умолчанию процессор должен тактироваться от часового кварца. С масками теперь дружить буду очень осторожно. А вот с этими строчками инициализации все сразу заработало.

  BCSCTL1 = 0x00;                  // Activate XT2 high freq xtal
  BCSCTL2 = 0x88;                  // MCLK = XT2CLK
  BCSCTL3 = 0xA0;                  // 3 – 16MHz crystal or resonator, VLOCLK

Но моя беспечность и доверие к примерам от Texas Instruments подвели, ведь примерчик взят с сайта. А примерчики обычно всегда рабочие и хорошо прокоментированы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...