SPI1CON1 = 0000 0101 0010 0000
SPI1CON2 = 0
SPI1STAT = 0x8000
SCK1OUT (el clock de salida)
SDO1 (salida, hacia la SDI del periférico)
SDI1 (entrada, del SDO del periférico)
un chip select
while(1){
PORTBbits.RB6 = 0; //el chip select
putcSPI1(0b0000000000000000); //poner el potenciómetro al mínimo
while(SPI1STATbits.SPITBF);
while(!DataRdySPI1());
x = ReadSPI1();
PORTBbits.RB6=1;
}
No veo errores en la configuración, siempre que la sintaxis de esto sea correcta y no tal y como está escrito: SPI1CON1 = 0000 0101 0010 0000
¿Cuál es el pote digital que intentas usar?, quizás requiera de más condiciones para funcionar.
Y por cierto, con el polímetro no verás ningún cambio en CLK; va muy rápido para que lo puedas ver.
void IOSPI1CommW( INT8U puerto, INT16U* dato, INT16U* dato_salida)
{
IOSPI1Mode16( ); /* Establece envio de 16bits */
IFS0bits.SPI1IF = 0; /* Borrar fin de TX/RX*/
SPI1STATbits.SPIROV = 0; /* Leer buffer para reset */
SPI1BUF = *dato; /* Comenzar transmision */
while( !IFS0bits.SPI1IF );
SPI1STATbits.SPIROV = 0; /* Leer dato */
*(dato_salida) = SPI1BUF;
IFS0bits.SPI1IF = 0; /* Borrar fin de TX/RX*/
}
unsigned int EscribirSPI(unsigned int data)
{
WriteSPI1(data);
while(!DataRdySPI1());
return ReadSPI1();
}