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