Hola , saludos a todos , estoy tratando de comunicar dos pic18f por SPI .
Para hacer un test le envió al esclavo el valor de un contador, que voy incrementando cada x segundos , el caso es que el ESCLAVO me recibe el mismo dato dos veces( o lee en el buferr SSP1BUF el mismo dato) .
Los datos enviados por el MASTER los estoy viendo en el osciloscopio.
pero al recibirlos el SLAVE en SSP1BUF veo que recibe el mismo datos dos veces ( lo veo con el ICD3)
O sea envió : 1
2
3
4
y el esclavo recibe : 1,1,2,2 ,y asi sucesivamente.
Alguna pista de podría estar mal?
Este es el código en main:
MASTER
DelayMs(3000);
a++;
WriteSPI(a); // Send a byte
while(!DataRdySPI()); // wait for a data to arrive
temp = ReadSPI();
SLAVE
WriteSPI(0xFF);
while(!DataRdySPI());// wait for a data to arrive
temp = SPI_Read();
unsigned char ReadSPI( void )
{
unsigned char TempVar;
TempVar = SSP1BUF; // Clear BF
PIR1bits.SSP1IF = 0; // Clear interrupt flag
SSP1BUF = 0x00; // initiate bus cycle
while(!PIR1bits.SSP1IF); // wait until cycle complete
PIR1bits.SSP1IF = 0; // clear SSP1IF
return ( SSP1BUF );
}
void WriteSPI(unsigned char dat) //Write data to SPI bus
{
SSP1BUF = dat;
}
unsigned char DataRdySPI( void )
{
if ( SSP1STATbits.BF )
return 1 ; // data in SSPBUF register
else
return 0 ;
}