hi,
I am communicating between a maxq3180 and a pic16f72. I have written a code for just reading a register in maxq3180 which uses spi for its communication. But I am not able to read the register in pic. I do not know where I make mistake. here is my code below
#include <htc.h>
#define buffer BF //BF IS A BIT IN SSPSTAT REGISTER IN PIC
#define SS RA5
void max_module();
void spi_read(int);
void get_data_byte();
void check_result();
void test_function();
void delay();
int send_data[3]={0X00,0X04,0x00};
void main(void)
{
ADCON1=0X06;
TRISA=0b00010000;
TRISB=0b00000001;
TRISC=0b00010001;
SSPBUF=0X00;
SSPCON=0X32; //register used for initializing spi
SSPSTAT=0XC0;
max_module();
// SS=1;
}
void max_module()
{
unsigned int i;
SS=0;
for(i=0;i<3;i++)
{
spi_read(send_data);
delay();
}
get_data_byte();
}
void spi_read(int a)
{
SSPBUF=a;
delay();
while(buffer==0);
buffer=0;
check_result();
}
void get_data_byte()
{
unsigned int c,d;
delay();
SSPBUF=0X00;
delay();
while(buffer==0);
buffer=0;
delay();
c=SSPBUF;
delay();
SSPBUF=0X00;
delay();
while(buffer==0);
buffer=0;
SS=1;
delay();
d=SSPBUF;
// PORTB=d;
delay();
}
void check_result()
{
unsigned int b;
b=SSPBUF;
if(b==0XC1)
{
PORTB=b;
delay();
}
else if(b==0XC2)
{
PORTB=b;
delay();
}
else if(b==0X4E)
{
PORTB=b;
delay();
SSPBUF=0X00;
delay();
while(buffer==0);
buffer=0;
b=SSPBUF;
check_result();
}
else if(b==0X41)
{
PORTB=b;
delay();
}
else
{
delay();
max_module();
}
}
void delay()
{
unsigned int l,j;
for(l=0;l<255;l++)
for(j=0;j<250;j++);
}
help me please....