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

 
 
> почему так много ест?, G2553, LPM3
khomin
сообщение Jan 25 2015, 08:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 14-06-14
Пользователь №: 81 950



Здравствуйте.
Осваиваю 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;
}

Схема:



Сообщение отредактировал khomin - Jan 25 2015, 08:26
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 16:15
Рейтинг@Mail.ru


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