Hola, aqui dejo el codigo para ver si alguien ve algo mal, ya que me sigue sin funcionar.
El codigo del master, el pic24, funciona a 32MHz con PLL (crystal=4MHz), es
#include <main.h>
#pin_select SDI1 = PIN_B7
#pin_select SDO1 = PIN_B8
#pin_select SCK1OUT = PIN_B9
void main()
{
int8 enviar=4;
on(led);
setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_8 | SPI_XMIT_L_TO_H | SPI_MODE_8B );//16MHz
while(1)
{
off(SS);
cambio(led);
spi_write(enviar);
on(SS);
enviar++;
delay_ms(500);
}
}
El slave, el dspic, funciona a 80MHz con PLL, crystal=4MHz y el codigo es
#include <DSP_SPI_f.h>
#include <flex_lcd.c>
#pin_select SDI1 = PIN_B7
#pin_select SDO1 = PIN_B8
#pin_select SCK1IN = PIN_B9
#pin_select SS1IN = PIN_B10
void main()
{
int8 recibido;
lcd_init();
on(led2);
setup_spi(SPI_SLAVE | SPI_L_TO_H | SPI_CLK_DIV_20 |SPI_XMIT_L_TO_H | SPI_MODE_8B);
on(led1);
printf(lcd_putc,"\fEsperando...");
while(true)
{
if(spi_data_is_in())
{
recibido=spi_read();
printf(lcd_putc,"\fValor SPI=%u",recibido);
cambia(led1);
}
}
He pensado que el problema puede estar en usar PLL, pues consigo hacer andar el master (utilice el pic24 o el dspic para ello) pero el slave nunca me lee. No sé que podrá ser.
Gracias y saludos!!