Осваиваю 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;
}
Схема: