Me he topado con la necesidad de implementar el protocolo SPI por software ya que el 16F616 no cuenta con el modulo MSSP y como lo quiero solo para recibir datos decidió hacerlo por software y para probar que esta bueno he usado un 18F con SPI en modo hardware para enviarle datos en la simulación de proteus si funciona pero cuando lo armo no funciona, unicamente si hago el envio también por software si funciona, talvez me puedan echar una manita aquí esta el código del esclavo
ESCLAVO a 8 Mhz oscilador interno:
ESCLAVO a 8 Mhz oscilador interno:
Código:
#bit PORTA1 = 05.1
#bit PORTA2 = 05.2
#bit PORTA3 = 05.3
#bit PORTA4 = 05.4
#bit PORTA5 = 05.5
int xbit=0;
int recibido=0;
#int_ext
void interrupcion(){
if( !PORTA4 ){ //ENABLE
if( PORTA3 ){ //Data IN
bit_set(recibido,7-xbit);
}
xbit++;
}
}
En la rutina principal
ext_int_edge(0,L_TO_H);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(1){
if( xbit >= 8 ){
//dato leido bla bla bla...
xbit = 0;
recibido = 0;
}
}
El codigo del Maestro pues simple un par de lineas
#use spi(MASTER,BITS=8,MODE=0,FORCE_HW) //ya probe con mode 1 ..2 ..3 y tampoco
para enviar:
spi_xfer(123);