El protocolo RS485 que tuve que hacer formará parte de mi trabajo de diploma de la universidad, verás que la identificación (o sea la dirección) de los esclavos es por hardware, esto es necesario porque todos los PIC Slaves tendrán el mismo Software, ellas serán las encargadas de recoger información de sensores que tendrán conectadas por la otra UART del PIC. Por eso fue que escogí este PIC porque tiene dos UART por HW y por SW es un dolor de cabeza la simulación de UART que hace el CCS.
El Master también en un momento determinado se conectará via serie con una PC para recibir toda la configuración necesaria para el funcionamiento.
Y toda la información que le vaya pidiendo a los esclavos la procesará y almacenará en una MMC.
Entonces el protocolo como tal:
-El Master envía en un byte la dirección del esclavo con el que quiere comunicarse y en el bit LSB de este mismo byte con 0 informa que va a escribir y con 1 que va a leer (tipo I2C)
-El esclavo con esa ID envía su propia ID hacia el Master como respuesta de que está recibiendo la información (o sea: ACK).
-Y en caso que el Master vaya a escribir en el Esclavo envía ahora la Cant. de bytes que va a transferir al Esclavo.
- El esclavo espera esta cantidad y la envía de nuevo al Master como Ack, y así se comprueba que llegó bien la información.
-Después el Master comienza la transferencia de los bytes.
Si el Master quiere leer al Esclavo, entonces despues de enviar la ID lo que hace es esperar del Esclavo la cantidad de bytes que este vaya a transferirle y como Ack el Master envía dicha cantidad de nuevo al esclavo.
-Después el Esclavo comienza la transferencia.
-Cualquiera de los dos que esté transfiriendo, nada más termine el otro envía el byte 0xFF para que el otro conozca que ya fue recibido el paquete.
En caso que en la espera de algún Ack se desbordara la INT TIMER0 que se activa cuando se espera el ACK se retorna ERROR en la escritura o lectura porque han pasado 1.6 segundos y creo que es suficiente como para considerar un problema, de todas formas podemos varias este tiempo.
Saludos Cryn.