Pues principalmente lo que necesito es una orientación sobre cuál protocolo es el mejor y más fácil de implementar para poder empezar mi código ya que he buscado en varias partes y en unas aconsejan i2c y entras comunicacion serial rs232 y en la mayoría de los casos los ejemplos son en assembler (que no manejo) y los que están en C son para otros pics. Agradezco cualquier ayuda.
Como te decia, lamentablmente tenes esos micros, tuvieras cualquier otro, incluso su "reemplazo" mas viejo, el PIC16F88 tendrias un modulo por hardware para comunicarte, hoy en dia hay muchos mejores a menos precio y mismos pines que ambos PIC nombrados. Si tenes las posibilidad de cambiar el PIC por que no lo has comprado hacelo.
Creo que nadie programaria un PIC16F84 en C por que posee muy poca memoria, entonces no podrias hacer MUCHO a mi parecer con el.
Volviendo al tema de que si ya tenes los PIC16F84 entonces, creo que el "mejor" protocolo seria el de un SPI. Ya que no es muy complejo, tendrias 2 salidas, en una el dato y el otro el CLK. Y seria algo asi enviarlo.
for(x=0;x<8;x++)
{
if (dato & (1 << x)) output_high(PIN_DATO);
else output_low(PIN_DATO);
output_high(PIN_CLK);
output_low(PIN_CLK);
}
Aunque te vuelvo a repetir, estoy con que CCS provee a traves del #USE SPI, algo asi como MASTER, y le agregas el SLAVE para tu receptor. Luego creo que no se pueden usar las funciones spi_write() y spi_read(), sino que se debe usar spi_xfer() al ser por software
#use spi(DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2, ENABLE=PIN_B4,BITS=16)
Una cosa que tenes que tener en cuenta, es que esto es muy lento, ademas puede llegar a detener el programa de cada PIC y no se como se comportara cuando le llegue un dato y este haciendo otra cosa. Mientras que si hubieras tenido un modulo podrias haberlo realizado con interrupciones
Por que no una UART o un I2C ? Por que el protocolo es muy complejo. UART al ser asnicrono te permite utilizar una sola salida y nada mas para una comunicacion en un sentido. Pero al no llevar señal de clock requiere mas trabajo mandar un 0, o un 1 y ademas por cada byte que envias, son 11 bits que se envian.
I2C es aun peor. tiene el formato del SPI, pero tiene mas cosas ya que soporta muchos dispositivos, entonces tenes una direccion, en señal de stop, start, ACK, NACK, etc. En fin. SPI mejor. Si usas CCS proba lo que dije, cualquier ejemplo de SPI te serviria, cuando CCS se da cuenta que no existe un modulo lo hace por software.