Autor Tema: Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)  (Leído 936 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado SergioMAZ

  • PIC10
  • *
  • Mensajes: 42
Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« en: 20 de Febrero de 2023, 20:30:34 »
Buenas tardes alguno de ustedes ha intentado hacer o utilizar la comunicacion i2c entre un Arduino y un PIC , anteriormente he podido hacer la comunicacion entre dos Arduinos, y entre dos PICs pero al momento de que intento utilizar la comunicacion entre pic y Arduino simplemente no me funciona.

El codigo del pic:

Código: [Seleccionar]
#USE I2C(multi_master,Fast=100000, SDA=pin_B0, SCL=pin_B1, force_sw)
void envioI2C() // OK
{
   bit_set(leda,0);
   i2c_start();
   i2c_write(0x09);
   i2c_write(0);
   i2c_write(0x0F);
   i2c_stop();
   delay_us(50);
   bit_clear(leda,0);
}

y este es el codigo del arduino:

Código: [Seleccionar]
void setup(void) {
  Wire.begin(9);
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);
  u8g2.begin();
}
void receiveEvent(int num) {
  //Serial.println("entre");
  Serial.println("entre2");
  char c = Wire.read(); // lee el byte como caracter
  Serial.println(c);      // imprime el caracter
  datos = c;
  if (datos != "%"){
  cadena = cadena+c;
  }
  Serial.println(cadena);
  int x = Wire.read();    // lee el byte como un entero
  //Serial.println(x);      // imprime el entero
}

Ambos codigos me sirven si intento hacer la comunicacion ya sea PIC-PIC o Arduino-Arduino si alguno me puede ayudar a poder visualizar mi error mejor se los agradecería muchisimo
-No hay verdad absoluta, y eso es absolutamente cierto.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« Respuesta #1 en: 20 de Febrero de 2023, 22:13:48 »
Buenas tardes alguno de ustedes ha intentado hacer o utilizar la comunicacion i2c entre un Arduino y un PIC , anteriormente he podido hacer la comunicacion entre dos Arduinos, y entre dos PICs pero al momento de que intento utilizar la comunicacion entre pic y Arduino simplemente no me funciona.

El codigo del pic:

Código: [Seleccionar]
#USE I2C(multi_master,Fast=100000, SDA=pin_B0, SCL=pin_B1, force_sw)
void envioI2C() // OK
{
   bit_set(leda,0);
   i2c_start();
   i2c_write(0x09);
   i2c_write(0);
   i2c_write(0x0F);
   i2c_stop();
   delay_us(50);
   bit_clear(leda,0);
}

y este es el codigo del arduino:

Código: [Seleccionar]
void setup(void) {
  Wire.begin(9);
  Wire.onReceive(receiveEvent);
  Serial.begin(9600);
  u8g2.begin();
}
void receiveEvent(int num) {
  //Serial.println("entre");
  Serial.println("entre2");
  char c = Wire.read(); // lee el byte como caracter
  Serial.println(c);      // imprime el caracter
  datos = c;
  if (datos != "%"){
  cadena = cadena+c;
  }
  Serial.println(cadena);
  int x = Wire.read();    // lee el byte como un entero
  //Serial.println(x);      // imprime el entero
}

Ambos codigos me sirven si intento hacer la comunicacion ya sea PIC-PIC o Arduino-Arduino si alguno me puede ayudar a poder visualizar mi error mejor se los agradecería muchisimo

Tal vez deberías compartir el esquemático.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
Re:Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« Respuesta #2 en: 20 de Febrero de 2023, 22:39:08 »
Veo q uno es serial 9600 y otro I2C a 100k  :-)
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado SergioMAZ

  • PIC10
  • *
  • Mensajes: 42
Re:Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« Respuesta #3 en: 21 de Febrero de 2023, 12:23:28 »
Conecto SDA (B0) Y SCL (B1) a A4 Y A5 del arduino con las resistencias de 10k puenteadas al voltaje y puenteo las tierras. Siento que no es tanto de esquemático si no de algo de programacion
La comunicacion Serial que ves ahi es debido a que mando lo que se supone que me deberia llegar por I2C al puerto Serial del pic para monitorear
-No hay verdad absoluta, y eso es absolutamente cierto.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« Respuesta #4 en: 21 de Febrero de 2023, 12:32:09 »
Conecto SDA (B0) Y SCL (B1) a A4 Y A5 del arduino con las resistencias de 10k puenteadas al voltaje y puenteo las tierras. Siento que no es tanto de esquemático si no de algo de programacion
La comunicacion Serial que ves ahi es debido a que mando lo que se supone que me deberia llegar por I2C al puerto Serial del pic para monitorear

10k parece un valor muy alto para las de pull-up, prueba con 1k.

Si tienes un osciloscopio , o mucho mejor un analizador lógico, podrías ver que está sucediendo realmente.

También es posible que sea una incorrecta sincronización (Diferentes velocidades de comunicación).

La distancia también entre dispositivos debe  ser lo más corta posible.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado SergioMAZ

  • PIC10
  • *
  • Mensajes: 42
Re:Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« Respuesta #5 en: 21 de Febrero de 2023, 12:36:10 »
Si he pensado en las velocidades, igual mañana o pasado mañana tengo ya un osciloscopio para comparar y ver lo que realmente se esta enviando, cualquier resolucion que tenga la compartire
-No hay verdad absoluta, y eso es absolutamente cierto.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problema con comunicacion I2C entre PIC (MASTER) - ARDUINO (SLAVE)
« Respuesta #6 en: 21 de Febrero de 2023, 13:41:30 »
Si he pensado en las velocidades, igual mañana o pasado mañana tengo ya un osciloscopio para comparar y ver lo que realmente se esta enviando, cualquier resolucion que tenga la compartire

Si puedes, también adquiere un analizado lógico, yo tengo uno de estos para proyectos caseros:



http://dangerousprototypes.com/docs/File:Ols-cover.jpg


Siempre tengo problemas con la comunicación I2c o SPI, y el analizador es una buena herramienta, ya que no solo captura las formas de onda, también te indica los componentes de la trama, algo similar a esto:

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32