i have modified my GET_ADC_DATA function now iam getting value for single channel , channel zero ,how to read adc value for second channel, Please help here is my code
1)I have enabled TAG bit ,i never get TAG BIT=1 , I always get TAGBIT=0;
2)I configure cfr with bit pattern but when i read CFR register it not gives same pattern as write. ,I always get D0=0 system reset .
3)my adc data for CH0 is not proportional to the input applied .
I AM ATTACHING SCOPE SCREENS IN DIFFERENT POST BECAUSE IAM ANBLE TO ATTACH IN SAME POST.
CFR DATA WRITE AND READ
WRITE CFR | BITS AFTER | ||||||
BITS | READ CFR | ||||||
D15 | COMMAND3 | 1 | 0 | ||||
D14 | COMMAND2 | 1 | 0 | ||||
D13 | COMMAND1 | 1 | 0 | ||||
D12 | COMMAND0 | 0 | 1 | ||||
D11 | Channel mode | AUTO | 1 | 0 | MANNUAL | ||
D10 | CONVERSION CLK | SCLK INTERNAL | 0 | 0 | INTERNAL | ||
D9 | TRIGGER SELECT | AUTO | 0 | 0 | AUTO | ||
D8 | DON’T CARE | 0 | 0 | 1 | 1 | ||
D7 | EOC/INT POLARITY | ACTIVE LOW | 1 | 1 | ACTIVE LOW | ||
D6 | EOC/IN SELECT | EOC | 1 | 1 | EOC | ||
D5 | CHAIN MODE | DISABLE | 1 | 1 | DISABLE | ||
D4 | AUTO NAP | DISABLE | 1 | 1 | DISABLE | ||
D3 | NAP PWR DOWN | DISABLE | 1 | 1 | DISABLE | ||
D2 | DEEP PWR DOWN | DISABLE | 1 | 1 | ENABLE | ||
D1 | TAG BIT | ENABLE | 1 | 1 | ENABLE | ||
D0 | RESET | NORMAL | 1 | 0 | SYSTEM RESET | ||
0XE8FF | 0X11FE | ||||||
my code
void ads8328_ini(void) //CONFIGURE CFR
{
seventeenth_clk=0 ;
GPIO_WriteBit(SPI_CLK_PORT, SPI_CLK_PIN,(BitAction)0);
GPIO_WriteBit(ADC_STRT_PORT,ADC_STRT_PIN,(BitAction) 0);
GPIO_WriteBit(SPI_NSS_PORT,SPI_NSS_PIN,(BitAction) 0);
ADC_CONFIG =0xE8FF ;
WRITE_ADC8328(ADC_CONFIG) ; //WRITE CFR
SPI1_Buffer_Rx[4]=GET_DATA_INT ;
GPIO_WriteBit(SPI_NSS_PORT,SPI_NSS_PIN,(BitAction) 1) ;
/////////////////////////////////////////////////////////////////////////////////////
delay_us(10);
GPIO_WriteBit(SPI_NSS_PORT,SPI_NSS_PIN,(BitAction) 0) ;
WRITE_ADC8328(READ_CFR) ; //READ CFR
SPI1_Buffer_Rx[5]=GET_DATA_INT ;
GPIO_WriteBit(SPI_NSS_PORT,SPI_NSS_PIN,(BitAction) 1) ;
delay_us(10);
// select_ch0();
}
//////////////////////////////////////////////////////////////////////////////
void adc_read_ch_auto(void)
{
seventeenth_clk=1 ;
GPIO_WriteBit(ADC_STRT_PORT,ADC_STRT_PIN,(BitAction) 1) ; //start 1
GPIO_WriteBit(SPI_NSS_PORT,SPI_NSS_PIN,(BitAction) 1) ; //nss1
temp_bit=1 ;
//while(temp_bit==1) //check EOC pin status
temp_bit = GPIO_ReadInputDataBit(ADC_EOC_PORT, ADC_EOC_PIN) ;
delay_us(1);//20ns
GPIO_WriteBit(SPI_NSS_PORT,SPI_NSS_PIN,(BitAction) 0) ; //nss0
WRITE_ADC8328(READ_DATA) ; //READ CH0 DATA
if(TAG_BIT == 0) //TAG BIT=0 ;
{
SPI1_Buffer_Rx[0] = GET_DATA_INT ;
}
else if(TAG_BIT == 1) //TAG BIT=1 ; //READ CH1 DATA
{
SPI1_Buffer_Rx[1] = GET_DATA_INT ;
}