EmbeddedRelated.com
Forums
Memfault Beyond the Launch

ADC question.

Started by hragsarkissian April 7, 2009
Hi,

I am trying this sample code.
//******************************************************************************
// MSP430F21x2 Demo - ADC10, Sample A0, AVcc Ref, Set P1.0 if A0 > 0.5*AVcc
//
// Description: A single sample is made on A0 with reference to AVcc.
// Software sets ADC10SC to start sample and conversion - ADC10SC
// automatically cleared at EOC. ADC10 internal oscillator times sample (16x)
// and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC10
// conversion complete, ADC10_ISR will force exit from LPM0 in Mainloop on
// reti. If A0 > 0.5*AVcc, P1.0 set, else reset.
//
// MSP430F21x2
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// >---|P2.0/A0 P1.0|-->LED
//
// A. Dannenberg
// Texas Instruments Inc.
// December 2007
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
//******************************************************************************
#include "msp430x21x2.h"

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
ADC10AE0 |= 0x01; // P2.0 ADC option select

P1DIR |= 0x01; // Set P1.0 to output direction

for (;;)
{
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
if (ADC10MEM < 0x1FF)
P1OUT &= ~0x01; // Clear P1.0 LED off
else
P1OUT |= 0x01; // Set P1.0 LED on
}

I would like to change the voltage threshold which im assuming is 0x1FF. However, Im having trouble understanding how these hex values work.
Could someone please explain what 0x1FF means and what it could be changed to.

Beginning Microcontrollers with the MSP430

I wonder what do this line mean?

// ... If A0 > 0.5*AVcc, P1.0 set, else reset.

-- OCY

--- In m..., "hragsarkissian" wrote:
>
> Hi,
>
> I am trying this sample code.
> //******************************************************************************
> // MSP430F21x2 Demo - ADC10, Sample A0, AVcc Ref, Set P1.0 if A0 > 0.5*AVcc
> //
> // Description: A single sample is made on A0 with reference to AVcc.
> // Software sets ADC10SC to start sample and conversion - ADC10SC
> // automatically cleared at EOC. ADC10 internal oscillator times sample (16x)
> // and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC10
> // conversion complete, ADC10_ISR will force exit from LPM0 in Mainloop on
> // reti. If A0 > 0.5*AVcc, P1.0 set, else reset.
> //
> // MSP430F21x2
> // -----------------
> // /|\| XIN|-
> // | | |
> // --|RST XOUT|-
> // | |
> // >---|P2.0/A0 P1.0|-->LED
> //
> // A. Dannenberg
> // Texas Instruments Inc.
> // December 2007
> // Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
> //******************************************************************************
> #include "msp430x21x2.h"
>
> void main(void)
> {
> WDTCTL = WDTPW + WDTHOLD; // Stop WDT
> ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
> ADC10AE0 |= 0x01; // P2.0 ADC option select
>
> P1DIR |= 0x01; // Set P1.0 to output direction
>
> for (;;)
> {
> ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
> __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
> if (ADC10MEM < 0x1FF)
> P1OUT &= ~0x01; // Clear P1.0 LED off
> else
> P1OUT |= 0x01; // Set P1.0 LED on
> }
>
> I would like to change the voltage threshold which im assuming is 0x1FF. However, Im having trouble understanding how these hex values work.
> Could someone please explain what 0x1FF means and what it could be changed to.
>


Memfault Beyond the Launch