Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user

Code as shown below,. I am unable to get the 16 bit-bit data.
Can Can someone help me identify my mistake?

byte spiTransfer(volatile byte data) {
    SPDR = data;
 
    while (!(SPSR & _BV(SPIF)));
 
    return SPDR;
}




 
#define DOUT      (50) 
#define DIN       (51)
#define SCLK      (52)
#define CS_AD7705 (53)
#define DRDY (4) 

void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);
 
   pinMode(DOUT, OUTPUT);
   pinM ode(DIN, INPUT);
   pinMode(SCLK,OUTPUT);
   pinMode(CS_AD7705,OUTPUT);
   pinMode(DRDY,INPUT);
   SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL) | _BV(CPHA) | _BV(SPI2X) | _BV(SPR1) | _BV(SPR0);
   delay(10);
   digitalWrite(CS_AD7705, LOW);   
   spiTransfer(00010000); //setupregister
setup register
  spiTransfer(01100110);
   spiTransfer(00100000); //clock register
   spiTransfer(00001000);
   digitalWrite(CS_AD7705, HIGH);
}

 

 void loop() {
   // put your main code here, to run repeatedly:
  unsigned int data=0;
  digitalWrite(CS_AD7705,LOW);  // enable device
  while( !digitalRead(DRDY) );
  data = spiTransfer(00111000);  // select ch1 and setup read 16bit16-bit data                                                                                                             ---------register
 
   data = spiTransfer(0)<<8; 
           // Get the most significant 8 bits
   Serial.println("data : "+data);
   data |= spiTransfer(0);  // Get the least significant 8 bits
 
   digitalWrite(CS_AD7705, HIGH);  // release device
   delay(1000);
    Serial.println(data, HEX);

 
      }

Code as shown below, I am unable to get the 16 bit data.
Can someone help me identify my mistake?

byte spiTransfer(volatile byte data) {
    SPDR = data;
 
    while (!(SPSR & _BV(SPIF)));
 
    return SPDR;
}




 
#define DOUT      (50) 
#define DIN       (51)
#define SCLK      (52)
#define CS_AD7705 (53)
#define DRDY (4)
void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);
 
   pinMode(DOUT, OUTPUT);
   pinM ode(DIN, INPUT);
   pinMode(SCLK,OUTPUT);
   pinMode(CS_AD7705,OUTPUT);
   pinMode(DRDY,INPUT);
   SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL) | _BV(CPHA) | _BV(SPI2X) | _BV(SPR1) | _BV(SPR0);
   delay(10);
   digitalWrite(CS_AD7705, LOW);   
   spiTransfer(00010000);//setupregister
   spiTransfer(01100110);
   spiTransfer(00100000);//clock register
   spiTransfer(00001000);
   digitalWrite(CS_AD7705,HIGH);
}

 

 void loop() {
   // put your main code here, to run repeatedly:
  unsigned int data=0;
  digitalWrite(CS_AD7705,LOW);  // enable device
  while( !digitalRead(DRDY) );
  data = spiTransfer(00111000);  // select ch1 and setup read 16bit data                                                                                                             ---------register
 
   data = spiTransfer(0)<<8; 
           // Get the most significant 8 bits
   Serial.println("data : "+data);
   data |= spiTransfer(0);  // Get the least significant 8 bits
 
   digitalWrite(CS_AD7705,HIGH);  // release device
   delay(1000);
    Serial.println(data,HEX);

 
      }

Code as shown below. I am unable to get the 16-bit data. Can someone help me identify my mistake?

byte spiTransfer(volatile byte data) {
  SPDR = data;
  while (!(SPSR & _BV(SPIF)));
  return SPDR;
}
#define DOUT      (50) 
#define DIN       (51)
#define SCLK      (52)
#define CS_AD7705 (53)
#define DRDY (4) 

void setup() {
  Serial.begin(9600);
  pinMode(DOUT, OUTPUT);
  pinM ode(DIN, INPUT);
  pinMode(SCLK,OUTPUT);
  pinMode(CS_AD7705,OUTPUT);
  pinMode(DRDY,INPUT);
  SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL) | _BV(CPHA) | _BV(SPI2X) | _BV(SPR1) | _BV(SPR0);
  delay(10);
  digitalWrite(CS_AD7705, LOW);
  spiTransfer(00010000); //setup register
  spiTransfer(01100110);
  spiTransfer(00100000); //clock register
  spiTransfer(00001000);
  digitalWrite(CS_AD7705, HIGH);
}

void loop() {
  unsigned int data=0;
  digitalWrite(CS_AD7705,LOW); // enable device
  while(!digitalRead(DRDY));
  data = spiTransfer(00111000);  // select ch1 and setup read 16-bit data register
  data = spiTransfer(0)<<8;
  // Get the most significant 8 bits
  Serial.println("data : "+data);
  data |= spiTransfer(0); // Get the least significant 8 bits
  digitalWrite(CS_AD7705, HIGH); // release device
  delay(1000);
  Serial.println(data, HEX);
}
Bumped by Community user
Bumped by Community user
Bumped by Community user
improved formatting and made the introductory sentance a little bit more readable
Link
jfpoilpret
  • 9.2k
  • 7
  • 38
  • 54

unable Unable to interface AD7705 (SPI) with arudinoArduino

improved formatting and made the introductory sentance a little bit more readable
Source Link

i have codedCode as shown below i, I am unable to get the 16 bit data.can some one
Can someone help me to debug theidentify my mistake i have done?

    byte spiTransfer(volatile byte data) {
    SPDR = data;

    while (!(SPSR & _BV(SPIF)));

    return SPDR;
}





   #define DOUT      (50) 
   #define DIN       (51)
   #define SCLK      (52)
   #define CS_AD7705 (53)
   #define DRDY (4)
   void setup() {
     // put your setup code here, to run once:
     Serial.begin(9600);

   pinMode(DOUT, OUTPUT);
   pinM ode(DIN, INPUT);
   pinMode(SCLK,OUTPUT);
   pinMode(CS_AD7705,OUTPUT);
   pinMode(DRDY,INPUT);
   SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL) | _BV(CPHA) | _BV(SPI2X) |      _BV(SPR1) | _BV(SPR0);
   delay(10);
   digitalWrite(CS_AD7705, LOW);   
   spiTransfer(00010000);//setupregister
   spiTransfer(01100110);
   spiTransfer(00100000);//clock register
   spiTransfer(00001000);
   digitalWrite(CS_AD7705,HIGH);
 }



 void loop() {
   // put your main code here, to run repeatedly:
  unsigned int data=0;
  digitalWrite(CS_AD7705,LOW);  // enable device
  while( !digitalRead(DRDY) );
  data = spiTransfer(00111000);  // select ch1 and setup read 16bit data                                                                                                             ---------register

   data = spiTransfer(0)<<8; 
           // Get the most significant 8 bits
   Serial.println("data : "+data);
   data |= spiTransfer(0);  // Get the least significant 8 bits

   digitalWrite(CS_AD7705,HIGH);  // release device
   delay(1000);
    Serial.println(data,HEX);


      }

i have coded as shown below i am unable to get the 16 bit data.can some one help me to debug the mistake i have done

    byte spiTransfer(volatile byte data) {
    SPDR = data;

    while (!(SPSR & _BV(SPIF)));

    return SPDR;
}





   #define DOUT      (50) 
   #define DIN       (51)
   #define SCLK      (52)
   #define CS_AD7705 (53)
   #define DRDY (4)
   void setup() {
     // put your setup code here, to run once:
     Serial.begin(9600);

   pinMode(DOUT, OUTPUT);
   pinM ode(DIN, INPUT);
   pinMode(SCLK,OUTPUT);
   pinMode(CS_AD7705,OUTPUT);
   pinMode(DRDY,INPUT);
   SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL) | _BV(CPHA) | _BV(SPI2X) |      _BV(SPR1) | _BV(SPR0);
 delay(10);
digitalWrite(CS_AD7705, LOW);   
spiTransfer(00010000);//setupregister
spiTransfer(01100110);
spiTransfer(00100000);//clock register
spiTransfer(00001000);
digitalWrite(CS_AD7705,HIGH);
 }



 void loop() {
   // put your main code here, to run repeatedly:
  unsigned int data=0;
  digitalWrite(CS_AD7705,LOW);  // enable device
  while( !digitalRead(DRDY) );
  data = spiTransfer(00111000);  // select ch1 and setup read 16bit data                                                                                                             ---------register

   data = spiTransfer(0)<<8; 
           // Get the most significant 8 bits
   Serial.println("data : "+data);
   data |= spiTransfer(0);  // Get the least significant 8 bits

   digitalWrite(CS_AD7705,HIGH);  // release device
   delay(1000);
    Serial.println(data,HEX);


      }

Code as shown below, I am unable to get the 16 bit data.
Can someone help me identify my mistake?

byte spiTransfer(volatile byte data) {
    SPDR = data;

    while (!(SPSR & _BV(SPIF)));

    return SPDR;
}





#define DOUT      (50) 
#define DIN       (51)
#define SCLK      (52)
#define CS_AD7705 (53)
#define DRDY (4)
void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);

   pinMode(DOUT, OUTPUT);
   pinM ode(DIN, INPUT);
   pinMode(SCLK,OUTPUT);
   pinMode(CS_AD7705,OUTPUT);
   pinMode(DRDY,INPUT);
   SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL) | _BV(CPHA) | _BV(SPI2X) | _BV(SPR1) | _BV(SPR0);
   delay(10);
   digitalWrite(CS_AD7705, LOW);   
   spiTransfer(00010000);//setupregister
   spiTransfer(01100110);
   spiTransfer(00100000);//clock register
   spiTransfer(00001000);
   digitalWrite(CS_AD7705,HIGH);
}



 void loop() {
   // put your main code here, to run repeatedly:
  unsigned int data=0;
  digitalWrite(CS_AD7705,LOW);  // enable device
  while( !digitalRead(DRDY) );
  data = spiTransfer(00111000);  // select ch1 and setup read 16bit data                                                                                                             ---------register

   data = spiTransfer(0)<<8; 
           // Get the most significant 8 bits
   Serial.println("data : "+data);
   data |= spiTransfer(0);  // Get the least significant 8 bits

   digitalWrite(CS_AD7705,HIGH);  // release device
   delay(1000);
    Serial.println(data,HEX);


      }
Source Link
Loading