Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

MAXQ3180 communication has a problem.help me to solve it please....

Status
Not open for further replies.

Ram Prasadh

Member level 2
Joined
Feb 16, 2011
Messages
51
Helped
2
Reputation
4
Reaction score
2
Trophy points
1,288
Activity points
1,725
Hi ,

I am presently trying out an SPI between MAXQ3180 and a pic16F72. I have written a code for just reading a register in MAXQ3180.But I am not able to get it in the master,PIC16F72.I am attaching the schematic which I have made and also the code which I have written for the communication. If anyone has worked with max,Please let me know if there is any mistake with the schematic or the program.


here goes the code



#include <htc.h>
#define IRQ RB0
#define buffer BF
#define SS RA5 //slave select pin ,active low
#define SCLK RC3
/*_ _ _ _ CONFIGURATIONS _ _ _ _ */



typedef unsigned int word;
word __at 0x2007 CONFIG = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_ON;
void MAX_MODULE();
void delay();
void check();
void check1();
void get_data_byte();
void switch_case();
void main(void)

{
ADCON1=0X06;
TRISC=0B00010010;
TRISA=0XFF;
TRISB=0X00;
PORTB=0X00;
SSPBUF=0;
SSPCON=0X32; //register used for initializing spi
SSPSTAT=0XC0;
MAX_MODULE();
SS=1;
delay();
for(;;);
}

void MAX_MODULE(void)

{
SS=0;
SSPBUF=0X00;
delay();
delay();
while(buffer==0);
buffer=0;
check();
SSPBUF=0X04;
delay();
delay();
while(buffer==0);
buffer=0;
check1();
get_data_byte();

}

void get_data_byte(void)
{
unsigned int a,b;

SSPBUF=0X00;
delay();
delay();
while(buffer==0);
buffer=0;
delay();
switch_case();
while(buffer==0);
buffer=0;
delay();
a=SSPBUF;
delay();
SSPBUF=0X00;
delay();
delay();
while(buffer==0);
buffer=0;
delay();
b=SSPBUF;
}

void switch_case(void)
{
unsigned int a;
a=SSPBUF;
switch(a)
{
case 0X4E:
delay();
SSPBUF=0X00;
delay();
while(buffer==0);
buffer=0;
delay();
switch_case();
break;
case 0X41:
delay();
SSPBUF=0X00;
delay();
break;

}
}
void check(void)
{
unsigned int a;
a=SSPBUF;
if(a==0XC1)
{

}
else
{
delay();
delay();
SSPBUF=0X00;
delay();
delay();
while(buffer==0);
buffer=0;
check()
}
}

void check1(void)
{
unsigned int d;
d=SSPBUF;
if(d==0XC2)
{
PORTB=d;
}
else
{
delay();
delay();
SSPBUF=0X00;
delay();
delay();
while(buffer==0);
buffer=0;
check1()
}
}


void delay(void)
{
unsigned int i,j,k;
for(i=0;i<255;i++)
for(j=0;j<255;j++)
for(k=0;k<20;k++);
}
 

Attachments

  • SCHEMATIC1 _ PAGE1.pdf
    13.4 KB · Views: 57

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top