主题中讨论的其他器件:ENERGYTRACE、 ADS1220、
您好!
我正在使用计时器生成延迟函数、我遇到了以下情况:
在不调用 delay 函数的情况下、LPM3中的电流消耗为10uA。
调用任何延迟函数后、LPM3中的功耗电流均为+/- 150uA。
下面是一个代码片段和配置附件。
对我的设置有什么建议吗?
//////////////////////////////////////////////////////////////////////////////// // Rotina para Gerar Atrasos para Leituras dos Sensores de Pressões // //////////////////////////////////////////////////////////////////////////////// void Delay_PRESS(void) { TA4CCTL0 |= CCIE_1; // Habilita a Interrupção do TIMER4_A0 TA4CTL = TASSEL_1 + MC_1 + TACLR; // Configura o TIMER4_A0 (ACLK, UP Mode) TA4CCR0 = 1966; // Periodo de Tempo da Leitura dos Sensores de Pressão de Entrada e Saída __bis_SR_register(LPM3_bits + GIE); // Entra em LPM3 (Modo de Baixo Co } //////////////////////////////////////////////////////////////////////////////// // Rotina para Gerar Atrasos para Acionamentos das Válvulas Solenóides // //////////////////////////////////////////////////////////////////////////////// void Delay_SOLENOIDE(void) { TA3CCTL0 |= CCIE_1; // Habilita a Interrupção do TIMER3_A0 TA3CTL = TASSEL_1 + MC_1 + TACLR; // Configura o TIMER3_A0 (ACLK, UP Mode) TA3CCR0 = 327; // Periodo de Tempo de Acionamento das Válvulas Solenóides de Controle __bis_SR_register(LPM3_bits + GIE); // Entra em LPM3 (Modo de Baixo Consumo) } //////////////////////////////////////////////////////////////////////////////// // Rotina Principal do Smart Logger VRP Controller // //////////////////////////////////////////////////////////////////////////////// void main(void) { WDTCTL = WDTPW + WDTHOLD; // Desabilita o WDT // Disable the GPIO power-on default high-impedance mode to activate // previously configured port settings PM5CTL0 &= ~LOCKLPM5; // Rotinas para Inicialização das Portas e Pinos do MSP430FR5994 initPORTS(); // Inicializa os Ports // Rotinas para Inicialização do Clock e Oscilador do MSP430FR5994 //initClockTo1MHz(); // Seleciona o Clock para 1MHz //initClockTo8MHz(); // Seleciona o Clock para 8MHz initClockTo16MHz(); // Seleciona o Clock para 16MHz // TimerA3 configuration TA3CTL = 0; // Desabilita o TimerA3 // TimerA4 configuration TA4CTL = 0; // Desabilita o TimerA4 // Habilita os Periféricos RTC e BT RTCCTL13 &= ~RTCHOLD; // Habilita o RTC // Rotina Principal do Loop do { __bis_SR_register(LPM3_bits + GIE); // Entra em LPM3 (Modo de Baixo Consumo) __no_operation (); // Não Faz Nada } while (1); // Enquanto While Igual a 1, Garante o LPM3 } //////////////////////////////////////////////////////////////////////////////// // Rotina de Tratamento da Interrupção do Timer3_A0 de Ciclos Periódicos // //////////////////////////////////////////////////////////////////////////////// // Timer3_A0 interrupt service routine #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=TIMER3_A0_VECTOR __interrupt void TIMER3_A0_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(TIMER3_A0_VECTOR))) TIMER3_A0_ISR (void) #else #error Compiler not supported! #endif { __bic_SR_register_on_exit(LPM3_bits); // Sai do Modo de Baixo Consumo TA3CCTL0 |= CCIE_0; // Desabilita a Interrupção do TIMER3_A0 TA3CTL = 0; // Desabilita o TIMER3_A0 } //////////////////////////////////////////////////////////////////////////////// // Rotina de Tratamento da Interrupção do Timer4_A0 de Ciclos Periódicos // //////////////////////////////////////////////////////////////////////////////// // Timer4_A0 interrupt service routine #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=TIMER4_A0_VECTOR __interrupt void TIMER4_A0_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(TIMER4_A0_VECTOR))) TIMER4_A0_ISR (void) #else #error Compiler not supported! #endif { __bic_SR_register_on_exit(LPM3_bits); // Sai do Modo de Baixo Consumo TA4CCTL0 |= CCIE_0; // Desabilita a Interrupção do TIMER4_A0 TA4CTL = 0; // Desabilita o TIMER4_A0 }