Hola a todos, antes de nada os comentaré la situación.
Estamos desarrollando un proyecto en el cual se van a comunicar diferentes PICs por un bus único, escogiendo como lenguaje el I2C y el compilador CCS.
La idea es que habrá un PIC que actuará de Maestro y gestionará la recopilación de datos de los otros microcontroladores. A este PIC lo llamaremos CEREBRO y será un PIC18F2550.
Así, que de forma ideal tendríamos un árbol en el que arriba del todo estaría CEREBRO y en las ramificaciones los diferentes PICs esclavos. Es por ello que toda comunicación debe pasar por CEREBRO.
Pues bien, existen una serie de microcontroladores que no pueden actuar como esclavos y únicamente pueden ser maestros, como el caso del módulo GSM y posiblemente WIFI (aún no se ha escogido el módulo definitivo y ambos no son de MICROCHIP).
El primer problema que se presenta es que se rompe con la filosofia que habia planteado, por lo que necesitaria implementar la función MULTI_MASTER en la cual en determinadas situaciones un PIC puede ser MAESTRO y en otras ESCLAVO.
Después de realizar numerosas pruebas simplificando el problema y comprobando que todas son exitosas (Comunicación entre un maestro y un esclavo; un maestro y dos esclavos) tanto en la lectura como en la escritura en un esclavo. Se ha procedido a la simplificación del problema.
- Para el primer caso se ha realizado la siguiente configuración:
GSM (MASTER) -> PIC ATMEL ARQUITECTURA ARM (identificador 0x51)
CEREBRO (MULTI_MASTER)-> PIC18f2550 (direccion esclava 0x20)