Hola como estan despues de tiempo, estoy teniendo problemas en comunicar dos dsPIC30F4011. Me funciona bien cuando el maestro envia un dato y el esclavo responde, pero cuando envio otro comando adicional y espero respuesta el esclavo me envia otro numero. Asi es como funciona:
el maestro:
// esto ocurre cada 2mseg
dsPIC1_CS=0;
while (_SPITBF==1);
SPI1BUF=1; // envia comando 1
while (_SPIRBF==0);
AIN1=SPI1BUF; // recibo el numero 10
dsPIC1_CS=1;
el esclavo:
while (1)
{ while (_SPIRBF==0);
data=SPI1BUF;
if (data==1)
{ while (_SPITBF==1);
SPI1BUF=10;
}
if (data==2)
{ while (_SPITBF==1);
SPI1BUF=11;
}
}
Esto el lo que no me funciona:
maestro:
// ocurre cada 2mseg
dsPIC1_CS=0;
while (_SPITBF==1);
SPI1BUF=1;
while (_SPIRBF==0);
AIN1=SPI1BUF;
while (_SPITBF==1);
SPI1BUF=2;
while (_SPIRBF==0);
AIN2=SPI1BUF;
dsPIC1_CS=1;
El esclavo tiene el mismo codigo. Cuando leo AIN1 aveces recibo 10 otras no y cuando leo AIN2 no recibo nunca el numero 11
Acaso estoy aplicando mal los conceptos de transmision SPI?
saludos