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);
}