Sí. Realmente por eso empecé a utilizar el 16F877
De todos los proyectos que traté, vi que era el que tenía mayor número de pines, pero a llegado un momento que no es suficiente.
Parece que la solución es aprender a tratar con varios micros a la vez.
Esto soluciona, tanto el desbordamiento, cómo la limitación de pines.
Es lo que he empezado a hacer.
Ahora tengo este problema:
Funciona, pero el problema es que tiene que ser al instante, de hecho hay más arrays y variables que el "slave" debe saber del "master".
Si quito delays no sincronizan cada LCD de su respectivo micro, muestran algo distinto.
No es fiable con delays-cortos (y a mi me convienen que ni siquiera existan)
El spi_i_data_is_in() no es suficiente o no sé utilizarlo.
He pensado utilizar un par de pines de cada micro, tipo -enviar-recibido para sincronizar bien al instante.
Pero antes buscaré y haré lo que menos me gusta, leer sobre éste protocolo.
Quizás pueda ahorrarme algo.
De todos los proyectos que traté, vi que era el que tenía mayor número de pines, pero a llegado un momento que no es suficiente.
Parece que la solución es aprender a tratar con varios micros a la vez.
Esto soluciona, tanto el desbordamiento, cómo la limitación de pines.
Es lo que he empezado a hacer.
Ahora tengo este problema:
Código:
///////////////////////MASTER///////////////////////
........................
set_tris_c(16); // 0001 0110 // Configuración del puerto C para trabajar el spi
setup_spi(spi_master | spi_l_to_h | spi_clk_div_16);
............................
lcd_putc("\f"); cu=1;
for (co=0;5>co;co++){
spi_write(fclee[co]); delay_ms(2000);
lcd_gotoxy(cu,1); lcd_gotoxy(cu,1); printf(lcd_putc,"fl[%d]=%d ",co,fclee[co]); cu+=8;
}
delay_ms(1000);
...................
///////////////////////ESCLAVO/////////////////////////
......................................
set_tris_c(223);///1101 1111 B3_E B4_E B5_S
setup_spi(spi_slave | spi_l_to_h | spi_clk_div_16| SPI_XMIT_L_TO_H); //);// | SPI_XMIT_L_TO_H);
...................................................
if(spi_data_is_in()){
lcd_putc("\f"); cu=1;
for (co=0;5>co;co++){//for
fclee[co]=spi_read();
lcd_gotoxy(cu,1); printf(lcd_putc,"fl[%d]=%d ",co,fclee[co]); cu+=8;
}//for
delay_ms(1000);
}
Si quito delays no sincronizan cada LCD de su respectivo micro, muestran algo distinto.
No es fiable con delays-cortos (y a mi me convienen que ni siquiera existan)
El spi_i_data_is_in() no es suficiente o no sé utilizarlo.
He pensado utilizar un par de pines de cada micro, tipo -enviar-recibido para sincronizar bien al instante.
Pero antes buscaré y haré lo que menos me gusta, leer sobre éste protocolo.
Quizás pueda ahorrarme algo.
Última edición por un moderador: