Hola el_greg, te recomiendo que veas la datasheet del microcontrolador que elejiste dentro de la linea microchip (estimo porque pusiste SSPCON ), ahi se explican los pasos para configurar al periferico en el modo deseado.
Te paso un ejemplo de configuracion que use para comunicar una memoria MMC en modo SPI:
Definicion de puertos Cdigo GeSHi (c): //Definicion de patas de SPI #define R_MMC_SPI_SDO_IO TRISC5 #define R_MMC_SPI_SDI_IO TRISC4 #define R_MMC_SPI_SCK_IO TRISC3 #define R_MMC_SPI_CS_IO TRISC2 #define R_MMC_SPI_CS RC2
Created by GeSHI 1.0.7.20
Inicializacion de dispositivo Cdigo GeSHi (c): void init(void) { SSPCON1=0B00000000;//SPI Master mode, clock = FOSC/4 //SSPCON1=0B00000001;//SPI Master mode, clock = FOSC/16 //SSPCON1=0B00000010;//SPI Master mode, clock = FOSC/64 SMP = CKE = 1;//O los 0 o los dos 1 CKP=1; SSPEN=1; SSPIF=0; SSPIE=1; //Configuracion de los puertos R_MMC_SPI_SDI_IO=1; R_MMC_SPI_SDO_IO=R_MMC_SPI_SCK_IO=0; R_MMC_SPI_CS_IO=0;R_MMC_SPI_CS=1; }
Created by GeSHI 1.0.7.20
Atencion de interrupciones (ejemplo simple) Cdigo GeSHi (c): define SPI_INT()\ {\ if (SSPIE && SSPIF)\ {\ SSPIF=0;\ valueIn = SSPBUF;\//Recibo el valor enviado por el esclavo SSPBUF = ValueOut;\//Envio valor al dispositivo esclavo }\ }