Tabla de contenido:

Conectar dos OOBoards juntos usando I2C: 4 pasos
Conectar dos OOBoards juntos usando I2C: 4 pasos

Video: Conectar dos OOBoards juntos usando I2C: 4 pasos

Video: Conectar dos OOBoards juntos usando I2C: 4 pasos
Video: ✅ Conectar varios Arduinos con solo dos cables, Maestro y Esclavos, aprenderemos el protocolo I2C 2024, Mes de julio
Anonim
Conexión de dos tarjetas OOB juntas mediante I2C
Conexión de dos tarjetas OOB juntas mediante I2C

Este instructivo cubre cómo conectar dos OOBoards usando I2C.

Paso 1: Conexión al bus de red I2C

Conexión al bus de red I2C
Conexión al bus de red I2C
Conexión al bus de red I2C
Conexión al bus de red I2C

Hay dos buses I2C en los OOBoards, un bus local y un bus de red.

El código OOPIC es esencialmente un lenguaje interpretado, es decir, el "código" se almacena en EEPROM y el microprocesador lo lee / interpreta en tiempo real. La EEPROM usa el bus I2C LOCAL para comunicarse con el microcontrolador. Si mirase este bus local en el osciloscopio, vería un parloteo constante. En las placas OOBoards, el bus local es lo que está conectado al conector I2C, esto no es necesariamente lo que queremos. El bus NETWORK suele ser el bus que se utiliza para comunicarse con otros dispositivos / oopics, en los OOBoards este bus no tiene conector. Para acceder a este bus, debe soldar cables a los pines 42 y 37 del microcontrolador (marcados como N_SDA, N_SCL en el esquema respectivamente).

Paso 2: agregue las resistencias de pullup

Una vez que se realizan las conexiones SDA y SCL en cada procesador, las dos placas pueden

conectarse entre sí conectando SDA a SDA, SCL a SCL y conectando un cable de tierra común entre las placas. También necesitará una resistencia pull-up en cada línea (usé 12k, pero eso es lo que tenía por ahí). Tenga en cuenta que solo necesita una resistencia pullup por línea para un total de dos resistencias (no 4).

Paso 3: Programe el esclavo

Ahora que las conexiones físicas están ahí, necesitará programar el microcontrolador esclavo. Agregué un código a continuación que debería ayudarlo a comenzar.

Atenúe SLAVE como nuevo oDELinkDim LED como nuevo oDIO1Sub Main () y establezca nuestra dirección I2C en 2 (tenga en cuenta que esto debe coincidir con la & aposaddress remota que configuramos en el código maestro) ooPIC. Node = 2 & aposconfigure un LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, vincule la salida de nuestro objeto DDELink a & aposthe LED, y enciéndalo … ahora automáticamente, el LED parpadeará SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Paso 4: Programe el Máster

Finalmente, programe el microcontrolador maestro. Preste mucha atención a las líneas que establecen la propiedad. Location de DDELink: a menos que se establezca correctamente, ¡NO funcionará!

Dim Master como nuevo oDELinkDim wire como nuevo oWireDim hz1 como nuevo oBitSub Main () & aposlink el temporizador de 1 segundo al bit al que podemos acceder & aposthis bit ahora alternará una vez por segundo wire. Input. Link (ooPIC. Hz1) wire. Output. Link (hz1) wire. Operate = cvTrue & aposthis establece la dirección I2C de nuestro microcontrolador local y aposthe La interfaz I2C no está activa hasta que se establece una dirección ooPIC. Node = 1 & aposnow we setup nuestro objeto DDELink, nuestra entrada es el bit hz1 & aposnote que el El objeto también tiene una propiedad. Output que se usa & apos cuando estamos en modo de recepción Master. Input. Link (hz1) & aposthis es la dirección I2C del microcontrolador remoto, tenga en cuenta que & aposin el código esclavo, le decimos que tenga una dirección de 2 Master. Node = 2 & aposugh… esta es la parte de mierda, esta es la "dirección" del DDELink & aposobject en el espacio de memoria del esclavo & aposs. Para averiguar este número, & apos tenemos que abrir y compilar el código esclavo, luego ir a Ver-> Código compilado. & aposbusque algo como: & aposL *. Construct. Begin; Dim as new oDDELink & apos donde * es cualquier número, y es el nombre de su objeto DDELink & apos en su código esclavo. La línea inmediatamente debajo debería leer algo como: & aposC0020: 041; Esta … dirección & aposte número a la derecha del & apos: & apos es la dirección del objeto esclavo DDELink Master. Location = 41 & aposthis le dice al objeto que estaremos enviando datos (es decir, copie datos de nuestra propiedad. Input y aposto la propiedad.output de los esclavos (tenga en cuenta que si configura esto para recibir, es lo contrario) Master. Direction = cv Enviar y apostar, pero todavía no sucede nada … Master. Operate = cvTrue Do & aposcheck para ver si estamos transmitiendo datos actualmente If Master. Transmitting = cvFalse Entonces & aposfigurar este valor en 1 hará que el maestro envíe el valor al esclavo & aposnote, esto se restablece automáticamente a 0 una vez completada la transmisión Master. Sync = 1 Fin Si LoopEnd Sub

Recomendado: