Hola amigos estoy teniendo problemas para configurar el SPI en modo master del dspic30f4011, no puedo ver que se ponga a 1 el bit SPITBF cuando escribo en el SPI1BUF, tampoco veo que el flag de interrupcion SPI1IF se ponga a 1; este es mi simple codigo parece que lo he hecho bien no se en que pueda estar fallando.
void configSPI();
void __attribute__((interrupt, no_auto_psv)) _SPI1Interrupt(void);
/**************************************************************/
void __attribute__((interrupt, no_auto_psv)) _SPI1Interrupt(void)
{
IFS0bits.SPI1IF = 0;
}
void configSPI()
{
IEC0bits.SPI1IE=1;
IFS0bits.SPI1IF=0;
IPC2bits.SPI1IP=1;
// config SPI1STAT
SPI1STATbits.SPIEN=0; // configura serial port pins SDI, SDO, SCK, SS
SPI1STATbits.SPISIDL=0; // continua operacion en IDLE module
SPI1STATbits.SPIROV=0; // flag bit de sobreflujo (1=no se leyo el dato previo)
//SPI1STATbits.SPITBF=0; // read, 0= SPI1TXB vacio
//SPI1STATbits.SPIRBF=0; // read, 0= SP1RXB leido y vacio
// config SPI1CON
SPI1CONbits.FRMEN=0;
SPI1CONbits.SPIFSD=0;
SPI1CONbits.DISSDO=0; // SDO controlado por el modulo
SPI1CONbits.MODE16=1; // comunicacion es word/byte (16 bits)
SPI1CONbits.SMP=0;
SPI1CONbits.CKE=0;
SPI1CONbits.SSEN=0; // SS controlado por el puerto
SPI1CONbits.CKP=0; // estado activo en high level
SPI1CONbits.MSTEN=1; // modo MASTER
SPI1CONbits.SPRE=7; // Prescaler secundario = 1
SPI1CONbits.PPRE=2; // Prescaler primario = 4
SPI1STATbits.SPIEN=1; // configura serial port pins SDI, SDO, SCK, SS
}
int main (void)
{
configSPI();
while (1)
{
SPI1BUF=10;
}
}
ayuda porfavor
gracias