|
|
View previous topic :: View next topic |
Author |
Message |
kansusid
Joined: 12 Jun 2006 Posts: 9 Location: INDIA
|
problem with ad7715 adc |
Posted: Mon Jun 19, 2006 6:13 am |
|
|
well i am using an ad7715-3 with a pic16f877a ic the code used is similar to the one posted in the driver of ccs compiler
li'l abt ad7715
the code is
#include <16f877A.h>
#device 16f877*=16 ADC=8 //8 bit resolution
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=6000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,stream=,bits=8)
#define ADC_CS PIN_C7
#define ADC_RESET PIN_C6
#define ADC_DRDY PIN_C2
#define ADC_DI PIN_C4
#define ADC_DO PIN_C5
#define ADC_CLK PIN_C3
void write_adc_byte(BYTE data);
void adc_init()
{
output_low(ADC_RESET);
output_high(ADC_CLK);
output_high(ADC_CS); //Set low to AD7715 chip select low pin
output_high(ADC_RESET); //Set high to AD7715 reset low pin
delay_ms(3000);
write_adc_byte( 0x12 ); //Communications Register
write_adc_byte( 0x74 ); //Setup Register info here
return;
}
void write_adc_byte(BYTE data) {
BYTE i;
output_low(ADC_CS);
for(i=1;i<=8;++i) {
output_low(ADC_CLK);
output_bit(ADC_DI, shift_left(&data,1,0));
output_high(ADC_CLK);
}
output_high(ADC_CS);
return;
}
long int read_adc_word() {
BYTE i;
long int data;
output_low(ADC_CS);
for(i=1;i<=16;++i) {
output_low(ADC_CLK);
output_high(ADC_CLK);
shift_left(&data,2,input(ADC_DO));
}
output_high(ADC_CS);
return data;
}
long int read_adc_value() {
long int value;
while ( input(ADC_DRDY) );
while ( !input(ADC_DRDY) );
while ( input(ADC_DRDY) );
write_adc_byte(0x3a);
value=read_adc_word();
return value;
}
void main()
{
long int val=0;
set_TRIS_C(0x24);
//set_TRIS_B(0x01);
//output_high(PIN_C1); ///SCLCK HIGH
adc_init();//writei(0x10); //write into comm. register to write into setup reg in next cycle
//delay_ms(1000); //1 sec delay
//writei(0x74); //self calibration
//printf("before while");
//write_adc_byte(0x1a);
val=read_adc_value();
printf("\nfirst data is %4x",val);
//while(input(PIN_B0));
//printf("\nfinished while");
//writei(0x38);//into comm
//read();
while(1)
{
val=read_adc_value();
printf("\n data is %4x",val);
printf("\nend");
delay_ms(1000); //delay of 1sec
}
printf("\nend");
}
the problem: i am getting almost the same values for 3.3V and gnd
and the values for some of the voltages say voltage across a resistor are not accurate but surprisingly consistent the high i have give is 3.3V for both DVdd and AVdd <both from same voltage source> i have used a 2.4576MHz oscillator everything is according to the circuit shown in ad7715 datasheet
so pl help in finding what is wrong!! |
|
|
kansusid1 Guest
|
problem with ad7715 adc |
Posted: Mon Jun 19, 2006 11:11 pm |
|
|
pl help me .pl do reply don't get baffled looking at the length my question major part of the question is the program which is quite similar to the driver present in the ccs compiler
I REALLY NEED HELP PLEASE HELP ME |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Tue Jun 20, 2006 10:53 am |
|
|
Quote: | #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,stream=,bits=8)
#define ADC_CS PIN_C7
#define ADC_RESET PIN_C6
#define ADC_DRDY PIN_C2
#define ADC_DI PIN_C4
#define ADC_DO PIN_C5
#define ADC_CLK PIN_C3 |
You have the AD7715 pins connected to the same pins as the RS232
serial port. It won't work. Choose some different pins for the ADC_CS
and ADC_RESET signals. |
|
|
kansusid
Joined: 12 Jun 2006 Posts: 9 Location: INDIA
|
|
Posted: Wed Jun 21, 2006 9:34 pm |
|
|
Thank you very much. It Works now!!! _________________ kansusid |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|