Hola a todos,
Os escribo porque necesito ayuda desesperadamente.
Estoy intentando conectar 2 PIC18F27J53 mediante SPI.
Estoy utilizando CCS y Proteus para la simulación.
Mi idea es conectarlos mediante SPI hardware.
El problema es que al simularlo no se transmite nada. ¿Alguien sabe por qué?
Os adjunto los códigos:
MASTER
#include <18F27J53.h>
#fuses INTRC_PLL_IO, PLL2, PLLEN, NOCPUDIV, NOWDT
#use delay(internal=48MHZ)
#use spi(FORCE_SW,DI=PIN_B5, DO=PIN_C7, CLK=PIN_B4, BITS=16,MASTER,SPI1)
void main(){
setup_oscillator(OSC_8MHZ | OSC_PLL_ON);
setup_adc_ports(NO_ANALOGS);
// setup_spi(spi_master | spi_l_to_h |SPI_XMIT_L_TO_H | spi_clk_div_16 |SPI_SAMPLE_AT_END);
set_tris_A(0x00);
set_tris_B(0x04);
set_tris_C(0x00);
// port_b_pullups(TRUE);
// OUTPUT_LOW(PIN_A5); //pull the slave select line low to select the slave
while(1){
OUTPUT_HIGH(PIN_C0);
delay_us(10);
spi_read(0x00);
delay_us(10);
OUTPUT_LOW(PIN_C0);
}
}
SLAVE
#include <18F27J53.h>
#fuses INTRC_PLL_IO, PLL2, PLLEN, NOCPUDIV, NOWDT
#use delay(internal=48MHZ)
#use spi(FORCE_HW,DI=PIN_B5, DO=PIN_C7, CLK=PIN_B4, BITS=16,SLAVE,SPI1)//, LSB_FIRST, SAMPLE_RISE, stream = RFID )
void main(){
setup_oscillator(OSC_8MHZ | OSC_PLL_ON);
setup_adc_ports(NO_ANALOGS);
// setup_spi(spi_slave | spi_l_to_h |SPI_XMIT_L_TO_H | spi_clk_div_16 |SPI_SAMPLE_AT_END);
set_tris_A(0b00000100);
set_tris_B(0b00001100);
set_tris_C(0b00000000);
while (1){
spi_write(0x0F);
delay_ms(1000);
spi_write(0x03);
delay_ms(3000);
}
}
Al simularlo en Proteus aparece un parpadeo gris-azul en la patilla CLK de SPI y el resto siempre en Azul.
Espero que podais ayudarme,
Muchas Gracias!