Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: почему так много ест?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
khomin
Здравствуйте.
Осваиваю MSP430, развел и спаял простенькую платку под MSP430G2553.
Пробую режимы пониженного потребления.
Все очень странно.
Написал тест, тактирование таймера от ACLK (внешний кварц 32768), после прерывания зажигается светодиод, гаснет и снова уход в LPM).
Но потребление при это остается очень высоким (~40 мкА). Причем на плате уже ничего лишнего нет, все распаял, флюс отмыл.
Если выводы настроить на вход с подтяжкой к плюсу, потребление снижается, это совершенно не понятно, так как выводы висят не подключенные.
Заметил, что от прикосновения пальцем - так же сильно плывет потребление, иногда может опустится до 2мка (только если выводы подтянуты в верх, хз), и тут же начать "плыть" куда угодно, если палец убрать.
С STM32L152 таких проблем не было, тестер показывал стабильные 2 мка.
В общем я сильно расстроен, возможно руки не оттуда, может еще чего ...
упс, на схеме нет резистора 47кОм на RST, его так же припаял
CODE

int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
ClockInit();
PeriphInit();
status = 1;
TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt

while (1)
{
if(status!=0)
{
LEDS_PxOUT &=~ LED1_PxBIT;
Delay(500);
LEDS_PxOUT |= LED1_PxBIT;
//WATER_PxREN &=~ (WATER1_PxBIT | WATER2_PxBIT);
Delay(1);
//WATER_PxREN |= (WATER1_PxBIT | WATER2_PxBIT);
status = 0;
}
else
__bis_SR_register(LPM3_bits + GIE);
}
}

#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
switch( TA0IV )
{
case 2: break; // CCR1 not used
case 4: break; // CCR2 not used
case 10:
break;
}
status = 1;
__bic_SR_register_on_exit(LPM3_bits);
}

void PeriphInit(void)
{
// Leds
LED_PxDIR |= LED1_PxBIT;
LEDS_PxOUT &=~ LED1_PxBIT;
LED_PxDIR |= LED2_PxBIT;
LEDS_PxOUT &=~ LED2_PxBIT;
// SB1
SB1_PxDIR &=~ SB1_PxBIT;
SB1_PxOUT |= SB1_PxBIT;
// Tamper
TAMPER_PxDIR &=~ TAMPER_PxBIT;
TAMPER_PxOUT |= TAMPER_PxBIT;
// watert
WATER_PxREN |= (WATER1_PxBIT | WATER2_PxBIT);
}

void ClockInit(void)
{
DCOCTL = 0;
BCSCTL1 = XT2OFF;
DCOCTL = CALDCO_1MHZ;
BCSCTL1 |= DIVA_1; // ACLK, 32768
BCSCTL3 = XCAP_3;
}

Схема:

controller_m30
Я настраиваю неиспользуемые ножки как выход и задаю в них "0". Только в этом случае потребление в LPM режимах у меня соответствовало паспортному.

Как входы с подтягивающими резисторами делать не пробовал, потому ничего не могу сказать, насколько это работает. Хотя в даташите и такой вариант предлагается. Попробуйте подтягивать резистором не к "+", а к "-" (POUTx.x=0), может что-то другое получится. Ну или на выход настроить.

И попробуйте режимы LPM в "чистом" виде - без какой-либо включенной периферии. Просто настроить неиспользуемые ножки чтоб "не плавали", и перевести контроллер в режим LPM. Даже внешний кварц не включать.

Вот мой восторженный отзыв после испытаний режима LPM3 (аж целую тему создал biggrin.gif ): http://vrtp.ru/index.php?showtopic=18760
При использовании внешнего кварца идущего в комплекте с Ланчпадом и больше ничего - ток 20 мка. Если же тактировать от VLO - ток в LPM3 получался 0,5 мка.
jcxz
Цитата(khomin @ Jan 25 2015, 14:24) *
Осваиваю MSP430, развел и спаял простенькую платку под MSP430G2553.
Пробую режимы пониженного потребления.

Вы бы лучше сначала на готовой отладке попробовали. Возможно что-то в разводке/изготовлении накосячили.
У меня на отладке MSP430FR5739 вся схема в LPM3 == 7.5 мкА и не плывёт ничего, вроде. Тоже спит по таймеру от VLO.
khomin
Цитата(controller_m30 @ Jan 25 2015, 10:24) *
Я настраиваю неиспользуемые ножки как выход и задаю в них "0". Только в этом случае потребление в LPM режимах у меня соответствовало паспортному.

Как входы с подтягивающими резисторами делать не пробовал, потому ничего не могу сказать, насколько это работает. Хотя в даташите и такой вариант предлагается. Попробуйте подтягивать резистором не к "+", а к "-" (POUTx.x=0), может что-то другое получится. Ну или на выход настроить.

И попробуйте режимы LPM в "чистом" виде - без какой-либо включенной периферии. Просто настроить неиспользуемые ножки чтоб "не плавали", и перевести контроллер в режим LPM. Даже внешний кварц не включать.

Вот мой восторженный отзыв после испытаний режима LPM3 (аж целую тему создал biggrin.gif ): http://vrtp.ru/index.php?showtopic=18760
При использовании внешнего кварца идущего в комплекте с Ланчпадом и больше ничего - ток 20 мка. Если же тактировать от VLO - ток в LPM3 получался 0,5 мка.


Спасибо большое.
Вроде разобрался. Оказалось TMP112 работал в активном режиме. Отсюда ток "плавал".
Методом проб добился потребления всей схемы в 2 мка на VLO и ~3 мка на LFXT. Показалось странным, что потребление от внешнего 32768 выше внутреннего, но жить можно.
jcxz
Цитата(khomin @ Jan 28 2015, 04:16) *
Методом проб добился потребления всей схемы в 2 мка на VLO и ~3 мка на LFXT. Показалось странным, что потребление от внешнего 32768 выше внутреннего, но жить можно.

А что странного? VLO=8кГц, а внешний >32кГц (по-крайней мере на моём MSP430FR5739). Ясно, что будет больше.
sasa_c
Добавлю, что подтягивающие резисторы к +3,3V, уменьшают потребление. Прямое подключение вывода к +3,3V, находящегося в режиме ввода, также уменьшает потребление. Но в последнем случае, если на соседние порты выводиться ВЧ сигналы, потребление растёт примерно на 0,7 микроампер. Подтяжка к 0 также приводит к некоторому увеличению тока примерно на 0,2 микроамперы. Поэтому для энергосбережения лучший вариант, это установка лог.1 на портах ввода вывода или внешняя подтяжка к 3 вольтам. Измерения проводил на MSP430F417 вольтметром В7-82, в режиме накопления данных.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.