This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

P89v51rd2 spi not working-help

Hi,

I am trying to interface ADC-cs5463 with P89v51rd2 micro controller using "bit banging SPI" code but not getting any result.

I am using below code if any one can see the code and if i am making some mistake or doing wrong than reply me.

Please help me to find the problem.

#include "p89v51rx2.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

//-----------------------------------ADC CS5463------------------
sbit nreset = P3^3; //RESET PIN OF CS5463
sbit cs = P3^4; //CHIP SELECT OF CS5463
sbit sclk = P3^7; //SERIAL CLOCK
sbit sdo = P3^6; //SERIAL DATA OUT
sbit sdi = P3^5; //SERIAL DATA IN

unsigned char sec_cnt=0;
unsigned long longVar=0;

unsigned char mdatahigh;
unsigned char mdatamid;
unsigned char mdatalow;

//--------------------- Functions Related to CS5463 ---------------------------------
void init_cs5463(void);

void main(void)
{

init_cs5463();//initiallises the cs to function as per our requirements

}

void init_cs5463(void)
{

write_to_reg(0x40,PCB,0x80,0x61); //write to config register(0x40)

cs=0;

transfer_byte(0xe8); // start continuous conversions..

cs=1;

//Here is my while loop and try to read the CS5463 register and disply it,but not able //to get any response from the it.

longVar = 0;

while(1)

{

read_a_reg(0x40,(unsigned char *)&longVar);

float2str(longVar,&disp_buffer[4],0);

float2str(mdatahigh,&disp_buffer[16],0);

float2str(mdatamid,&disp_buffer[19],0);

float2str(mdatalow,&disp_buffer[22],0);

}

}

void transfer_byte(unsigned char datum)
{

unsigned char count,tempbyte;

sclk=0;

tempbyte=0x80;

for(count=0;count<8;count++) {

if(datum & tempbyte) {

sdi=1;

}

else {

sdi=0;

}

sclk=1;

sclk=0;

tempbyte=tempbyte>>1;

}

sdi=1;

delay(10);

}

unsigned char receive_byte(void)
{

unsigned char count,tempbyte,datal;

sdi=1;

datal=0x80;

tempbyte=0;

sdo=1;

for(count=0;count<8;count++) {

if(sdo) {

tempbyte|=datal;

} sclk=1;

sclk=0;

datal=datal>>1;

}

return(tempbyte);

}

void read_a_reg(unsigned char command,unsigned char * ptr)
{

cs=0;

transfer_byte(command);

mdatahigh=receive_byte();

mdatamid=receive_byte();

mdatalow=receive_byte();

cs=1;

*ptr=mdatalow;

ptr++;

*ptr=mdatamid;

ptr++;

*ptr=mdatahigh;

}

void write_to_reg(unsigned char command,unsigned char high,unsigned char mid,unsigned char low)
{

cs=0;

transfer_byte(command);

transfer_byte(high);

transfer_byte(mid);

transfer_byte(low);

cs=1;

}

Parents
  • Why you all people experts-authors are passing time on comment to other thing...why not think or write solution of my problem??

    I didn't find any single person who had see my code and give any comment on it...i got comment on align meant...!!! hey you all why not focus on problem and try to solve it....right??

    I know it had on chip module of spi...but i didn't have any reference code of it...right??

    people talk about on chip spi but no body give reference code or any link which guide me....right??

    I think this forum is useless....there is no focus on solving the problem...but here people like to only discuss it.

Reply
  • Why you all people experts-authors are passing time on comment to other thing...why not think or write solution of my problem??

    I didn't find any single person who had see my code and give any comment on it...i got comment on align meant...!!! hey you all why not focus on problem and try to solve it....right??

    I know it had on chip module of spi...but i didn't have any reference code of it...right??

    people talk about on chip spi but no body give reference code or any link which guide me....right??

    I think this forum is useless....there is no focus on solving the problem...but here people like to only discuss it.

Children