I need to configure REFON, REF2_5V(for DAC) and all ADC12 bits.
Initialization procedure:
#define BIT10 0x400
#define BIT11 0x800
#define BIT12 0x1000
#define BIT13 0x2000
#define BIT14 0x4000
#define BIT15 0x8000
void init_ADC(void)
{
ADC12CTL0&=~ENC;
ADC12IE=0x0;
if((ADC12CTL0&ENC)==1)
{
ADC12CTL0&=~ADC12ON;
ADC12CTL0|=REF2_5V;
ADC12CTL0|=REFON;
ADC12CTL0&=~BIT7;
ADC12CTL1&=~ADC12BUSY;
if((ADC12CTL1&(!ADC12BUSY))==1)
{
ADC12CTL1&=~BIT7;
ADC12CTL1&=~BIT6;
ADC12CTL1&=~BIT5;
ADC12CTL1&=~BIT11;
ADC12CTL1&=~BIT10;
ADC12CTL1&=~BIT8;
ADC12CTL1&=~BIT9;
ADC12CTL1&=~BIT15;
ADC12CTL1&=~BIT14;
ADC12CTL1&=~BIT13;
ADC12CTL1&=~BIT12;
ADC12CTL1&=~BIT2;
ADC12CTL1&=~BIT1;
}
ADC12MCTL0&=~BIT6;
ADC12MCTL0&=~BIT5;
ADC12MCTL0|=BIT4;
ADC12MCTL0&=~BIT3;
ADC12MCTL0&=~BIT2;
ADC12MCTL0&=~BIT1;
ADC12MCTL0&=~BIT0;
ADC12MCTL0|=BIT7;
P6SEL|=0x01;
ADC12CTL0 = ADC12ON;
}
}
Sampling function:
unsigned int sampling_ADC(void)
{
ADC12CTL0 |= ADC12SC+ ENC; // Sampling open
ADC12CTL0 &= ~ADC12SC; // Sampling closed, start conversion
while ((ADC12CTL1 & ADC12BUSY) == 1); // ADC12BUSY?
return(ADC12MEM0); // return the value read from ADC P6.7
}
Then I call it in main:
while( 1 ) {
int o= sampling_ADC();
}
ADC12BUS always 1. Whats wrong ?