24 bit analogue to digital converter chip and arduino help

24 bit analogue to digital converter chip and arduino help.

I am using a ads1256 adc and a arduino and the arduino IDE also known as wiring I think.

It shows the reset causing the data ready signal updating and going high after a reset then I try to read and write to registers with 0’s as results. Please help.

results:

Serial Port Initilised.

set pins data direction

Done seting pins data direction

Initilise pins to defalt states

Initiliseed pins to defalt states

setup spi port.

spi port setup…

SPCR: 1010101

SPSR: 0

Reset chip by reset pin

write to register 0-4, DATA=1

Read registers 0-4 then print them out

0

0

0

0

0

code :

//ads1256 initilisation and read and write to registers in arduino wiring.

#include “ads1256.h”

#include “extera.h”

//define pin names for pin #

#define CS 10 //Chip Select active low on pin 10

#define NEG_RESET 9 //RESET PIN active low on pin 9 on uc

#define DRDY 2 //DATA READY

#define SYNC 8 //syncronisation power down active low

#define DATAOUT 12//MOSI

#define DATAIN 11//MISO

#define SPICLOCK 13//sck

// global variables

int val=0; //a counter

byte clr=0;//used to clear registers to bit trash bin.

int r0=0;//REGISTER CONTAINERS FOR ADC

int r1=0;

int r2=0;

int r3=0;

int r4=0;

//*************************setup for spi to ad

void spi_to_AD_setup(){

SPCR=0;//clear control register

clr=SPCR; //coppy spi control register to clr to print out or clear it similar to clearing a status register

SPSR=0;//clear control register

clr=SPSR;//coppy spi status register to clr to print out or clear it similar to clearing a status register

clr=SPDR;//coppy spi data register to clr to print out or clear it similar to clearing a status register

/*SPCR

SPIE SPI interrupt disabled set to 0

SPE - Enables the SPI set to 1

DORD - most Significant Bit first when set to 0

MSTR - Sets the Arduino in master mode set to 1

CPOL - Sets the data clock to be idle when low set to 0

CPHA - Samples data on the falling edge of the data clock set to 1

SPR1 and SPR0 - Sets the SPI speed, 00 is fastest (4MHz) 11 is slowest (250KHz) set to 01

SPSR=0;//makeing shure SPI is not going 2x speed.

result = 01010011*/

SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<SPR0);

delay(10);

} //end of initilise spi

//simple spi transfer function char in char out

char spi_transfer(volatile char data)

{

SPDR = data; // Start the transmission

while (!(SPSR & (1<<SPIF))) // Wait the end of the transmission

{

};

return SPDR; // return the received byte

}

void setup() {

// initialize the communication port

Serial.begin(9600);

Serial.println(“Serial Port Initilised.”);

Serial.println(“set pins data direction”);

pinMode(CS,OUTPUT);//10 //Chip Select active low on pin 10

pinMode(NEG_RESET,OUTPUT); //RESET PIN active low on pin 11

pinMode(DATAOUT,OUTPUT);// MOSI

pinMode(DATAIN,INPUT);//DATAIN MISO

pinMode(SPICLOCK,OUTPUT);// sck

pinMode(DRDY,INPUT);//Data is ready low

pinMode(SYNC,OUTPUT); //sync active low powerdown

Serial.println(“Done seting pins data direction”);

Serial.println(“Initilise pins to defalt states”);

digitalWrite(CS,LOW); //enable device

digitalWrite(SPICLOCK,LOW);//defalt CLOCK NO-RESET state

digitalWrite(NEG_RESET,HIGH);//defalt reset state

digitalWrite(SYNC,HIGH);//defalt POWER UP state

Serial.println(“Initiliseed pins to defalt states”);

Serial.println(“setup spi port.”);

spi_to_AD_setup();

Serial.println(“spi port setup…”);

Serial.print("SPCR: ");

Serial.println(SPCR, BIN);

Serial.print("SPSR: ");

Serial.println(SPSR, BIN);

Serial.println(“Reset chip by reset pin”);

digitalWrite(NEG_RESET,LOW); //disable device reset self calibration is performed

delayMicroseconds(33);

digitalWrite(NEG_RESET,HIGH); //enable device

while((DRDY==0)) //wait for chip to be ready to acsept opcodes

{

Serial.println(“waiting”);

}

Serial.println(“write to register 0-4, DATA=1”);

spi_transfer(CMD_WREG);//write to register opcode

spi_transfer(6);//6-1 number of registers to write to

spi_transfer(1);

spi_transfer(1);

spi_transfer(1);

spi_transfer(1);

spi_transfer(1);

while((DRDY==0)) //wait for chip to be ready to acsept opcodes

{

Serial.println(“waiting”);

}

delayMicroseconds(10);//t6 in datasheet wait before reading.

Serial.println(“Read registers 0-4 then print them out”);

spi_transfer(CMD_RREG);//read register command.

spi_transfer(6);//number of registers to write to -1

delayMicroseconds(10);//t6 in datasheet wait before reading.

r0=spi_transfer(0xFF);

r1=spi_transfer(0XFF);

r2=spi_transfer(0XFF);

r3=spi_transfer(0XFF);

r4=spi_transfer(0XFF);

Serial.println(r0, DEC);

Serial.println(r1, DEC);

Serial.println(r2, DEC);

Serial.println(r3, DEC);

Serial.println(r4, DEC);

}//END OF SETUP

void loop() {

val= digitalRead(DRDY);

if (val==LOW){

Serial.println(“LOW data is ready?”);

}

if (val==HIGH){

Serial.println(“HIGH data is not ready?”);

}

}//END OF LOOP