Ram Prasadh
Member level 2
Hi
I am Interfacing two PIC16F72 with SPI.I have programmed in PIC,but this is the first time I have tried SPI.I am attaching the code for both slave and the master. Please guide me with what mistake am doing. In the master mode I am just incrementing a count and am sending it to the port B in the slave mode.I checked with a multimeter in the slave ic. I am not getting any change there.
Help me Please......HELP ME FIND MY MISTAKE.
/*_ _ _ _ SPI MASTER MODULE_ _ _ _*/
#include<htc.h>
#define SS PORTAbits.RA5 //SLAVE SELECT IN PORTA 5
typedef unsigned int word;
word __at 0x2007 CONFIG = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_ON;
void initialize();
void sspmodule();
void delay();
void main(void)
{
while(1)
{
unsigned char count,a,b;
initialize();
sspmodule();
delay();
}
}
void initialize()
{
SSPCON=0X31; //SYNCHRONOUS SERIAL PORT CONTROL REGISTER
SSPSTAT=0XC0;//SYNCHRONOUS SERIAL PORT STATUS REGISTER
SSPBUF=0X00; //SYNCHRONOUS SERIAL PORT BUFFER REGISTER
TRISC=0X10; //SDO OUTPUT,SCK OUTPUT,SDI INPUT
TRISA=0X00;
ADCON1=0X06;
INTCON=0XC0;
PIE1=0X09;
count=0;
count=count+1;
}
void sspmodule()
{
SS=0;
SSPBUF=count;
delay();
}
void delay()
{
for(a=0;a<100;a++)
for(b=0;b<255;b++)
}
/*_ _ _ _ SLAVE MODULE_ _ _ _*/
#include<htc.h>
#define SS PORTAbits.RA5 //slave select bit is assigned to porta 5th pin
typedef unsigned int word;
word __at 0x2007 CONFIG = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_ON;
void main(void)
{
while(1)
{
unsigned char a,b;
initialize();
recieve();
//display();
delay();
}
}
void initialize()
{
SSPCON=0X34;
SSPSTAT=0X40;
TRISC=0X18;
TRISA=0X00;
ADCON1=0X06;
SS=1;
TRISB=0X00;
}
void recieve()
{
while(SSPSTATbits.BF==0);
a=SSPBUF;
PORTB=a;
delay();
}
void delay()
{
unsigned char a,b;
for(a=0;a<100;a++)
for(b=0;b<200;b++)
}
I am Interfacing two PIC16F72 with SPI.I have programmed in PIC,but this is the first time I have tried SPI.I am attaching the code for both slave and the master. Please guide me with what mistake am doing. In the master mode I am just incrementing a count and am sending it to the port B in the slave mode.I checked with a multimeter in the slave ic. I am not getting any change there.
Help me Please......HELP ME FIND MY MISTAKE.
/*_ _ _ _ SPI MASTER MODULE_ _ _ _*/
#include<htc.h>
#define SS PORTAbits.RA5 //SLAVE SELECT IN PORTA 5
typedef unsigned int word;
word __at 0x2007 CONFIG = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_ON;
void initialize();
void sspmodule();
void delay();
void main(void)
{
while(1)
{
unsigned char count,a,b;
initialize();
sspmodule();
delay();
}
}
void initialize()
{
SSPCON=0X31; //SYNCHRONOUS SERIAL PORT CONTROL REGISTER
SSPSTAT=0XC0;//SYNCHRONOUS SERIAL PORT STATUS REGISTER
SSPBUF=0X00; //SYNCHRONOUS SERIAL PORT BUFFER REGISTER
TRISC=0X10; //SDO OUTPUT,SCK OUTPUT,SDI INPUT
TRISA=0X00;
ADCON1=0X06;
INTCON=0XC0;
PIE1=0X09;
count=0;
count=count+1;
}
void sspmodule()
{
SS=0;
SSPBUF=count;
delay();
}
void delay()
{
for(a=0;a<100;a++)
for(b=0;b<255;b++)
}
/*_ _ _ _ SLAVE MODULE_ _ _ _*/
#include<htc.h>
#define SS PORTAbits.RA5 //slave select bit is assigned to porta 5th pin
typedef unsigned int word;
word __at 0x2007 CONFIG = _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _BODEN_ON;
void main(void)
{
while(1)
{
unsigned char a,b;
initialize();
recieve();
//display();
delay();
}
}
void initialize()
{
SSPCON=0X34;
SSPSTAT=0X40;
TRISC=0X18;
TRISA=0X00;
ADCON1=0X06;
SS=1;
TRISB=0X00;
}
void recieve()
{
while(SSPSTATbits.BF==0);
a=SSPBUF;
PORTB=a;
delay();
}
void delay()
{
unsigned char a,b;
for(a=0;a<100;a++)
for(b=0;b<200;b++)
}