📄 test44x_ca03.c
字号:
//******************************************************************************
// MSP430-tesr44x Demo - Comp_A Used For Simple 2.2V Low Battery Detect
//
// Description; Two comparator_A reference generators 0.25*Vcc and ~ 0.55V
// are compared for a simple battery check of 2.2V. In the subroutine
// Batt_Check a small capacitor that must be added to P1.6 is first charged
// to 0.25*Vcc and then compared to ~ 0.55V. If Vcc, assumed to be the battery
// level is above ~0.55V, P5.1 is toggled, else set. Batt_Check is called
// constantly in an endless loop - in an actual application, Batt_Check
// should be called very infrequent to save power.
// ACLK = n/a, MCLK = SMCLK = default DCO ~ 800k
//
// There is a tolerence of the Comp_A reference generator and in the
// device specific datasheet. In most applications, the tolerence of the
// reference generator is more than adequate to detect Low Battery.
//
// MSP430F449
// -----------------
// /|\ | XIN|-
// | | |
// ---|RST XOUT|-
// | |
// +-----|P1.6 P5.1|-->LED
// | | |
// ===.1uf| |
// | | |
// +-----|VSS
//
void Batt_Check(void);
unsigned int i;
//
// Yang Rui
// Lierda, Inc
// MAY 2004
// Built with IAR Embedded Workbench Version: 1.26B
//******************************************************************************
#include "msp430x44x.h"
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P5DIR |= 0x02; // P5.1 output
CACTL2 = P2CA0; // P1.6 = CA0
while (1) // Mainloop
{
Batt_Check();
}
}
void Batt_Check(void) {
CACTL1 = CAREF_1 + CAON; // 0.25*Vcc on P2.3, Comp. on
i = 16384; // delay
while(i>0) {
i--;
}
CACTL1 = CARSEL + CAREF_2 + CAREF_1 + CAON; // 0.55V on -, Comp. on
if ((CACTL2 & CAOUT) > 0)
P5OUT ^= 0x02; // P1.0 toggle
else P5OUT |= 0x02; // P1.0 set
CACTL1 = 0x00; // Disable Comp_A, save power
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -