初用LaunchPad,求解。
官方例程一:上电P1.1管脚3.6V,我觉得程序的意思是接着输出0.25*Vcc,0.5*Vcc,最后输出0.55V。但是前两个都是3V以上,原本0.55V的是输出1V多。是我理解错了吗?
// MSP430G2x13/G2x53 Demo - Comp_A, Output Reference Voltages on P1.1
//
// Description: Output Comparator_A reference levels on P1.1. Program will
// cycle through the on-chip comparator_A reference voltages with output on
// P1.1. Normal mode is LPM0, TA0_ISR will interrupt LPM0.
// ACLK = n/a, MCLK = SMCLK = default DCO
//
// MSP430G2x13/G2x53
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.1/CA1|--> Vref
// | |
//
// D. Dang
// Texas Instruments Inc.
// December 2010
// Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include <msp430.h>
void delay(void); // Software delay
int main (void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
CACTL2 = P2CA4; // CA1/P1.1 = +comp
CCTL0 = CCIE; // CCR0 interrupt enabled
TACTL = TASSEL_2 + ID_3 + MC_2; // SMCLK/8, cont-mode
_EINT(); // enable interrupts
while (1) // Loop
{
CACTL1 = 0x00; // No reference voltage
_BIS_SR(LPM0_bits); // Enter LPM0
CACTL1 = CAREF0 + CAON; // 0.25*Vcc, Comp. on
_BIS_SR(LPM0_bits); // Enter LPM0
CACTL1 = CAREF1 + CAON; // 0.5*Vcc, Comp. on
_BIS_SR(LPM0_bits); // Enter LPM0
CACTL1 = CAREF1 + CAREF0 + CAON; // 0.55V, Comp. on
_BIS_SR(LPM0_bits); // Enter LPM0
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
_BIC_SR_IRQ(LPM0_bits); // Clear LPM0 bits from 0(SR)
}
还有第三个例程:“P2.3 and Vss is first charged to 0.25*Vcc”中是不是该改成“P1.1”
// 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 between P2.3 and Vss is first charged // to 0.25*Vcc and then compared to ~0.55V. If 0.25*Vcc, // is above ~0.55V, P1.0 is toggled, else set. Batt_Check is called // constantly in an endless loop - in an actual application, Batt_Check // should be called infrequently to save power. // ACLK = n/a, MCLK = SMCLK = default DCO // // There is a tolerance 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. // // MSP430G2x13/G2x53 // ----------------- // /|\ | XIN|- // | | | // ---|RST XOUT|- // | | // +-----|P1.1/CA1 P1.0|-->LED // | | | // ===.1uf| | // | | | // +-----|Vss // void Batt_Check(void); unsigned int i; // // D. Dang // Texas Instruments Inc. // December 2010 // Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include <msp430.h> int main (void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x01; // P1.0 output CACTL2 = P2CA4; // P1.1 = CA1 while (1) // Mainloop { Batt_Check(); } } void Batt_Check(void) { CACTL1 = CAREF_1 + CAON; // 0.25*Vcc on P1.1, Comp. on i = 16384; // delay while(i>0) { i--; } CACTL1 = CARSEL + CAREF_2 + CAREF_1 + CAON; // 0.55V on -, Comp. on if (CACTL2 & CAOUT) P1OUT ^= 0x01; // P1.0 toggle else P1OUT |= 0x01; // P1.0 set CACTL1 = 0x00; // Disable Comp_A, save power } |