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

 
 
 
Reply to this topicStart new topic
> DCO 1MHz и состояние регистров DCOCTL, BCSCTL1,2,3 после сброса, DCO 1MHz как установить с низким потреблением?
Make_Pic
сообщение Jul 24 2018, 04:13
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828



Вопросы спецам по 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 для низкого потребления. Как лучше это реализовать?
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Jul 25 2018, 08:38
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



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

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

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

Цитата(Make_Pic @ Jul 24 2018, 07:13) *
2) И здесь же: необходимо периодически включать внешний кварц на 8МГц для формирования синуса PWM и потом опять включать DCO 1МГц - Как это правильно сделать?

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

Цитата(Make_Pic @ Jul 24 2018, 07:13) *
3) И последнее: необходимо в режиме тактирования от внешнего кварца 8МГц по прерываниям таймера 5-10мс выходить из LPM3 опрашивать состояние портов и обратно возвращаться в LPM3 для низкого потребления. Как лучше это реализовать?

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

Сообщение отредактировал controller_m30 - Jul 25 2018, 08:14
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Jul 25 2018, 10:18
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



PS. Если что, примеры настроек DCO есть в даташите на странице 26.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 26 2018, 18:45
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Make_Pic @ Jul 24 2018, 07:13) *
. . .Пытаюсь получить такой же ток установкой регистров - то ~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 по аппаратным прерываниям.

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th April 2024 - 10:08
Рейтинг@Mail.ru


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