Estoy intentando configurar el puerto SPI1 en mi micro PIC24HJ206GP256. He configurado el registro de control SPI1CON1 con 0x0020, el registro de control SPI1STAT con 0x8000 (es decir, encender el SPIEN) y SPI1CON2 = 0.
En este momento, una simple escritura en SPI1BUF se implementa así:
void writeSPI1(char data){
_SPI1IF = 0; //set interrupt flag to zero
SPI1BUF = data; //write data to SPI1BUF
while( _SPI1IF == 0); //wait to flag to go high
}
Cuando se escriben los datos, el SPI1IF debe ir alto, pero nunca llega a este punto, por lo que el programa simplemente permanece en el bucle para siempre. Por lo tanto, parece que nunca se registrarán datos del puerto SPI a través de MOSI.
He intentado que funcione configurando TRISF = 0x0000, aunque he leído que el puerto SPI debería encargarse de la configuración del pin SPI.
Estoy usando una ventana de visualización para ver el contenido de SPI1BUF.
He intentado con diferentes configuraciones dentro de los registros de control pero no he tenido suerte. También he intentado habilitar SPI1IF (IEC0: Registro de control de habilitación de interrupción 0) y el problema persiste.
¿He olvidado alguna configuración adicional, como alguna funcionalidad extraña de PORTF que tiene prioridad sobre el puerto SPI?