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

DCO 1MHz и состояние регистров DCOCTL, BCSCTL1,2,3 после сброса

Вопросы спецам по MSP430 (сильно не пинайте, с MSP430 раньше не работал, доки читаю):

1) После сброса MSP430F2274 потребляет ток ~150мкА. - Какие биты установлены в DCOCTL, BCSCTL1,2,3 после сброса?

Пытаюсь получить такой же ток установкой регистров - то ~600мкА.

Как правильно запрограммировать эти регистры для 1МГц MCLK с минимальным потреблением?

 

void SetLowPowerMode()
{
  BCSCTL1 |= XT2OFF | DIVA_3;               // ACLK =8/8 =1МГц
//  BCSCTL1 &= ~XTS;                        // LFXT1 = LF XTAL 
  BCSCTL2 |= DCOR;                          // Rosc   
  BCSCTL1 &= ~(RSEL1 + RSEL0);              // RSEL = 4  
}

 

2) И здесь же: необходимо периодически включать внешний кварц на 8МГц для формирования синуса PWM и потом опять включать DCO 1МГц - Как это правильно сделать?

3) И последнее: необходимо в режиме тактирования от внешнего кварца 8МГц по прерываниям таймера 5-10мс выходить из LPM3 опрашивать состояние портов и обратно возвращаться в LPM3 для низкого потребления. Как лучше это реализовать?

 

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


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

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

Если нет отладчика - просто в первых строках программы считать значение DCO и вывести его на какое-то устройство вывода, которым располагаете (LCD, последовательный порт подключенный к ПК, и т.п.)

 

Именно MSP430F2274 я не программировал, но насколько помню, в младших (F2013, G2xxx) и старших сериях (F5xxx) - DCO был сразу настроен на 1МГц, и как-то ещё его настраивать не было нужды.

Сравните частоту процессора тактируемого от DCO и от XT1=8МГц. Например какую-нить мигалку светодиодом запустите. Если частота мигания отличается в 8 раз - значит всё нормально, DCO настроен на 1МГц.

 

Повышенный ток потребления может ещё возникнуть от оставленных не подключенными PIN-ов, которые настроены на ввод. Нужно все неиспользуемые PIN-ы настраивать на вывод, и в этом случае ток потребления может упасть до тех значений что указаны в даташите.

 

2) И здесь же: необходимо периодически включать внешний кварц на 8МГц для формирования синуса PWM и потом опять включать DCO 1МГц - Как это правильно сделать?

2. И DCO и XT1 быстро отключаются и включаются в регистре статуса процессора SR.

Для переключения между ними, нужно чтобы оба были активны. Убеждаемся, что сигнал на который будем переключаться - стабилизировался, и переключаем MCLK на него. А тот сигнал что больше не нужен - выключаем в регистре статуса процессора.

Внизу картинка, где приведены биты, которые быстро выключают DCO, XT1, CPU и SMCLK. Выключаются только те источники сигнала, которые не тактируют MCLK или SMCLK.

 

3) И последнее: необходимо в режиме тактирования от внешнего кварца 8МГц по прерываниям таймера 5-10мс выходить из LPM3 опрашивать состояние портов и обратно возвращаться в LPM3 для низкого потребления. Как лучше это реализовать?

Просто настроить прерывание от таймера, и включить режим LPM3.

По прерыванию в стеке сохранятся настройки режима LPM3, произойдёт переключение в активный режим, и процессор отработает прерывание. При выходе из прерывания, из стека автоматически восстановятся настройки LPM3 и контроллер опять "уснёт". Никаких дополнительных действий по сохранению LPM3 после завершения прерывания, в обработчике делать не нужно.

post-45309-1532506203_thumb.png

Изменено пользователем controller_m30

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


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

. . .Пытаюсь получить такой же ток установкой регистров - то ~600мкА. . . .

Возможно Вы все нестройки делаете правильно. Для замера тока в режиме LPM программатор-отладчик должен быть отключен от контроллера.

Иначе замер может быть существенно завышен из-за перетока контроллер-JTAG (за SBW не скажу, но тоже возможно).

Частота по умолчанию для DCO у меня полчалась около 1.4 МГц.

В даташите на Ваш контроллер есть таблица, как настроить DCO на нужную частоту-дипазон.

Main DCO Characteristics SLAS504G Pg 35 ТУТ.

Кроме того, для установки DCO могут быть (или не быть для F2274) калибровочные константы, которые прописываются в флеш по определенным адресам.

Они прописаны с завода. Если их затереть, то будут проблемы - надо будет запускать спец. утилиту-пример для калибровки и записи их "обратно".

Для контроля, на какой реально частоте работает контроллер, можно DCO подключить на SMCLK, а его вывести на порт-ногу контроллера

(настроить в начале программы порт как выход и альтернативную ф-ю выдачи SMCLK, для F2274 это P2.1 и P1.4). Смотреть осцилографом.

При этом будет хорошо виден уход в LPM с отключением DCO по командам LPM, и включение DCO по аппаратным прерываниям.

 

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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