Hi, I'm using msp-exp430g2 development kit and through this kit I'm doing 10bit ADC. I programmed the code and debugged it through CCS v6. The problem that I'm facing is that when I run the code and when I checked the ADC10MEM register I found out that the value is coimg zero.I can't get it why is this happening so ? The analog input is actually heartbeat sound which I'm taking as input and is providing to the mcu. Since heartbeat sound is of low frequency signal so I preferred to use ACLK. I assigned the sampling rate as 100Hz.
I tried single stepping but all in vain. I couldn't exactly point out where the mistake is? Kindly please help me identify the mistake or any suggestion for my problem.
#include<msp430g2553.h>
void configure_adc(void);
void configure_timer(void);
int datain;
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; // stop WDT
BCSCTL3 |= LFXT1S_2; //ACLK set to operate in VLO mode i.e near 12khz since bcoz of low freq operation mode required
configure_adc();
while(1)
{
//__delay_cycles(1000); // Wait for ADC Ref to settle
ADC10CTL0 |= ENC + ADC10SC; // Start Conversion
__bis_SR_register(CPUOFF + GIE); // Low Power Mode 0 with interrupts enable
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer0_A0 (void) {
// while (ADC10CTL1 & ADC10BUSY); // check for ADC conversion is completed
datain = ADC10MEM;
__bic_SR_register_on_exit(CPUOFF); // Return to active mode
}
void configure_timer(void)
{
TA0CCTL0=CCIE; // Enable Timer A0 interrupts, bit 4=1
TACCR0=119; // Count limit is set so that 100Hz frequency is obtained
TA0CTL=TASSEL_1 + MC_1; // Timer A0 with ACLK, count UP
}
void configure_adc(void)
{
ADC10CTL0= SREF_0 + ADC10SHT_2 + ADC10ON + ADC10IE; // VCC=3V
ADC10CTL1= INCH_0 + SHS_2 + ADC10SSEL_0 + CONSEQ_2; // SHS=2 bcoz timer A output unit 0, ADC10OSC as ADC10CLK source, single channel repeated conv mode
ADC10AE0 |= BIT0; //analog input enable P1.0
configure_timer();
}
Thanks.