Hola de nuevo. He estado investigando un poco el manejo de i2C Debugger y he conseguido sacar en claro lo siguiente:
- El i2C Debugger (i2cd a partir de ahora) puede trabajar en modo esclavo o en modo maestro. El modo por defecto es el maestro. Para que pase a trabajar como esclavo es necesario asignarle una dirección (doble clic sobre el i2cd para desplegar sus propiedades y a continuación en address1 -y quizás también en address2- introducir la dirección asignada a este esclavo).
- Se pueden insertar más de un i2cd en el esquema para realizar simulaciones. Esto es muy útil para la investigación, ya que permite usar uno como maestro y el otro como esclavo y ver como interactúan.
- Haciendo lo anterior, arrancamos la simulación en modo pausa. Tras esto introducimos secuencias para ser enviadas en el monitor del maestro (escribimos la secuencia en el cuadro de texto y pulsamos el botón add)
- Procedemos de igual manera en el monitor del dispositivo esclavo. Es aconsejable empezar por una simple condición de reconocimiento, ack, representada por una A. Tras esto, la 'A' se habrá añadido en la ventana de la derecha del monitor. La seleccionamos con un clic y pulsamos el botón queu varias veces. Cada pulsación sobre el botón añade la secuancia 'A' una vez a la cola. Cada secuencia añadida a la cola permanecerá en ella a la espera del momento oportuno para ser enviada al bus.
- Corremos la simulación. En el monitor del maestro seleccionamos con un clic la secuencia introducida inicialmente. A continuación, cada pilsación sobre el botón queu hará que el maestro envíe esa secuencia al bus... y el esclavo responderá con ack en el momento oportuno de forma automática. Todo el intercambio de información queda reflejado en las ventanas de ambos monitores, el del maestro y el del esclavo.
NOTAS:
- No peder de vista los mensajes que se van produciendo en la ventana de mensajes. Pueden ser muy útiles para detectar y solucionar posibles problemas.
- He tenido problemas con la dirección del esclavo. Al final conseguí que funcionase el sistema usando la dirección 60. Por cierto, parece que la entiende como hexadecimal. Sin embargo, si intentamos poner una dirección tal como 6A no se la traga y da error.
- Secuencia aconsejada para el maestro: S 0x60 P. Esta secuencia no es otra cosa que una condición de inicio(S) seguida por la dirección del esclavo(0x60). Por último se manda una condición de parada(P).
Bueno, a ver si alguno puede llegar a solucionar el problema de la dirección del esclavo. Yo necesito que sea C0 (192 en decimal) y no hay forma, ya que si introduzco C0 me da error, y si introduzco 192 lo toma como hexadecimal.