[an error occurred while processing this directive] [an error occurred while processing this directive]
Кто хотел завесить MSP430?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено vmp 18 мая 2002 г. 17:43

Похоже, я нашел такой способ для MSP430F149. :(

Грабли лежат в главе 7.4.5 описания на f1xx - Synchronization of Clock Signals. При переключении тактирования MCLK или SMCLK с одного источника на другой модуль синхронизации производить ожидание переднего фронта сначала старого сигнала, а затем нового, чтобы не получилось слишком короткого периода. Если же один из тактовых сигналов отсутствует, то это ожидание никогда не кончится.

Вариант с MCLK я внимательно не рассматривал, поскольку сначала споткнулся об SMCLK. Ситуация следующая: сначала MCLK и SMCLK тактируются от DCO. На XT2IN подается внешняя частота, которая может отсутствовать. Я хочу узнать частоту работы DCO (для калибровки), опираясь на известное значение XT2CLK. Для этого я переключаю SMCLK с DCOCLK на XT2CLK, затем таймером A (счетчиком) измеряю, сколько циклов SMCLK пройдет за определенное число циклов MCLK (программная задержка). Если входная частота присутствует, то все работает.

Проблемы начинаются, если на XT2IN постоянный уровень. Даже после переключения SMCLK назад на DCOCLK частота на SMCLK не вырабатывается и все периферийные модули стоят.

Пока приходится программно детектировать подобную ситуацию и самому вырабатывать сброс для процессора (через watchdog) - после этого все запускается.



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru