attempting to talk to a analogue to digital conver


i attempting talk analogue digital converter spi port looked @ examples , reading 0's registers. ads1256 24 bit adc , open source.

quote


#include "ads1256.h"
#include "extera.h"

//define pin names 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 clear registers bit trash bin.
byte x=0;
//*************************setup spi ad
void spi_to_ad_setup(){
 spcr=0;//clear control register
 clr=spcr; //coppy spi control register clr print out or clear similar clearing status register
 spsr=0;
 clr=spsr;

 /*spcr
  | 7    | 6    | 5    | 4    | 3    | 2    | 1    | 0    |
  | spie | spe  | dord | mstr | cpol | cpha | spr1 | spr0 |
 
  spie - enables spi interrupt when 1 set 0
  spe - enables spi when 1 set 1
  dord - sends data least significant bit first when 1, significant bit first when 0 set 0
  mstr - sets arduino in master mode when 1, slave mode when 0 set 1
  cpol - sets data clock idle when high if set 1, idle when low if set 0 set 0
  cpha - samples data on falling edge of data clock when 1, rising edge when 0 set 0
  spr1 , spr0 - sets spi speed, 00 fastest (4mhz) 11 slowest (250khz) set 11
 
  spsr=0;//makeing shure spi not going 2x speed.
  ex.01010011
  */
 spcr = (1<<spe)|(1<<mstr)|(1<<spr1)|(1<<spr0);
 //after setting our control register read spi status register (spsr) , data register (spdr) in junk clr variable
 //to clear out spurious data past runs:
 delay(10);
} //end of initilise spi
//simple spi transfer function char in char out
char spi_transfer(volatile char data)
{
 spdr = data;                    // start transmission
 while (!(spsr & (1<<spif)))     // wait end of transmission
 {
 };
 return spdr;                    // return received byte
}

void setup()  {

 // initialize 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 ready low
 pinmode(sync,output);  //sync active low powerdown
 serial.println("done seting pins data direction");

 serial.println("initilise pins 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 state
 serial.println("initiliseed pins 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);

 //reset chip
 serial.println("reset chip reset pin");  
 digitalwrite(neg_reset,low); //disable device reset self calibration performed
 delaymicroseconds(33);
 digitalwrite(neg_reset,high); //enable device
}//end of setup

void loop()  {
 val= digitalread(drdy);
 if (val==low){
   x=spi_transfer(cmd_rreg);
   serial.println(x, bin);
   x=spi_transfer(11);
   serial.println(x, bin);    
   delaymicroseconds(8);

   x=spi_transfer(0xff);
   serial.println(x, bin);

   x=spi_transfer(0xff);
   serial.println(x, bin);

   x=spi_transfer(0);
   serial.println(x, bin);

   x=spi_transfer(0);
   serial.println(x, bin);
 }
 if (val==high){
   serial.println("high data not ready?");
 }
}//end of loop


updated post:
24 bit analogue digital converter chip , arduino help.
i using ads1256 adc , arduino , arduino ide known wiring think.

it shows reset causing data ready signal updating , going high after reset try read , write registers 0's results. please help.

results:

serial port initilised.

set pins data direction

done seting pins data direction

initilise pins defalt states

initiliseed pins defalt states

setup spi port.

spi port setup...

spcr: 1010101

spsr: 0

reset chip reset pin

write register 0-4, data=1

read registers 0-4 print them out

0

0

0

0

0


code :
quote


//ads1256 initilisation , read , write registers in arduino wiring.
#include "ads1256.h"
#include "extera.h"

//define pin names 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 clear registers bit trash bin.
int r0=0;//register containers adc
int r1=0;
int r2=0;
int r3=0;
int r4=0;

//*************************setup spi ad
void spi_to_ad_setup(){
 spcr=0;//clear control register
 clr=spcr; //coppy spi control register clr print out or clear similar clearing status register
 spsr=0;//clear control register
 clr=spsr;//coppy spi status register clr print out or clear similar clearing status register
 clr=spdr;//coppy spi data register clr print out or clear similar clearing status register

 /*spcr
  spie  spi interrupt disabled set 0
  spe - enables spi set 1
  dord - significant bit first when set 0
  mstr - sets arduino in master mode set 1
  cpol - sets data clock idle when low set 0
  cpha - samples data on falling edge of data clock set 1
  spr1 , spr0 - sets spi speed, 00 fastest (4mhz) 11 slowest (250khz) set 01
  spsr=0;//makeing shure spi 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 transmission
 while (!(spsr & (1<<spif)))     // wait end of transmission
 {
 };
 return spdr;                    // return received byte
}

void setup()  {

 // initialize 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 ready low
 pinmode(sync,output);  //sync active low powerdown
 serial.println("done seting pins data direction");

 serial.println("initilise pins 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 state
 serial.println("initiliseed pins 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 reset pin");  
 digitalwrite(neg_reset,low); //disable device reset self calibration performed
 delaymicroseconds(33);
 digitalwrite(neg_reset,high); //enable device
 while((drdy==0)) //wait chip ready acsept opcodes
 {  
   serial.println("waiting");
 }
 serial.println("write register 0-4, data=1");
 spi_transfer(cmd_wreg);//write register opcode
 spi_transfer(6);//6-1 number of registers write to
 spi_transfer(1);
 spi_transfer(1);
 spi_transfer(1);
 spi_transfer(1);
 spi_transfer(1);
 while((drdy==0)) //wait chip ready acsept opcodes
 {  
   serial.println("waiting");
 }
 delaymicroseconds(10);//t6 in datasheet wait before reading.
 serial.println("read registers 0-4 print them out");
 spi_transfer(cmd_rreg);//read register command.
 spi_transfer(6);//number of registers write -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);//without specification nothing prints... maby 0 or nul = nothing?
 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 ready?");
 }
 if (val==high){
   serial.println("high data not ready?");
 }
}//end of loop




Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > attempting to talk to a analogue to digital conver


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums