Autor Tema: Cambiar pines de comunicación I2C  (Leído 2164 veces)

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

Desconectado LuisGonzalez17

  • PIC10
  • *
  • Mensajes: 5
Cambiar pines de comunicación I2C
« en: 23 de Octubre de 2020, 23:53:13 »
Buenas a todos, espero y me puedan ayudar a solucionar este problema  :oops:

Estoy realizando un proyecto con el microcontrolador 18F2550 y el RTC3231. Como saben el RTC se comunica por medio de I2C con el PIC. Ya logre hacer la comunicación entre los 2  ((:-)) pero ahora necesito utilizar la interrupción interna INT0 y el PIC 18F2550 ocupa el mismo pin B0 para la interrupción y para el SDA de la comunicación I2C. Investigando por internet y por Foros, encontré que se pueden cambiar los pines de comunicación I2C utilizando el FORCE_SW. El problema es que ya cambie los pines y no funciona.  :shock:
Código: C
  1. #use I2C(MASTER, SDA=PIN_C4, SCL=PIN_C5, FAST=100000, FORCE_SW)

Buscando por el foro, encontré a una persona que tiene el mismo problema: http://www.todopic.com.ar/foros/index.php?topic=37373.0 pero tampoco encontró solución, y se salieron del tema  :(.

Espero y me puedan ayudar  :)

Muchas gracias por leer y disculpen las molestias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Cambiar pines de comunicación I2C
« Respuesta #1 en: 24 de Octubre de 2020, 09:34:32 »
El problema seguramente esta que una interrupcion es debido a que el modulo lo realiza. Y al "cambiar de pines" en realidad lo que estas haciendo es crear un I2C por software y no usando el modulo.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Cambiar pines de comunicación I2C
« Respuesta #2 en: 25 de Octubre de 2020, 05:32:13 »
Ambos pines que uses los tienes que poner como entradas mediante TRIS. Para que pasen a alta impedancia y sus líneas queden a nivel alto mediante las pullup.

  Pero en tu caso hay un problema más grave. Los pines C4 y C5 cuando trabajan como puerto digital solo pueden ser entradas. Nunca salidas. Por el párrafo anterior puede parecer que valen, pero no es así ya que la función de directiva i2c por software tiene que  andar cambiando la dirección de ambos puertos para generar el clock y los datos en modo Open Drain así como recibirlos luego del slave. 

  Solución:

   Usa otros puertos, por ejemplo:  el C6 y el C7 .

 Saludos.
« Última modificación: 25 de Octubre de 2020, 05:34:33 por remi04 »

Desconectado LuisGonzalez17

  • PIC10
  • *
  • Mensajes: 5
Re:Cambiar pines de comunicación I2C
« Respuesta #3 en: 26 de Octubre de 2020, 22:58:50 »
Ambos pines que uses los tienes que poner como entradas mediante TRIS. Para que pasen a alta impedancia y sus líneas queden a nivel alto mediante las pullup.

  Pero en tu caso hay un problema más grave. Los pines C4 y C5 cuando trabajan como puerto digital solo pueden ser entradas. Nunca salidas. Por el párrafo anterior puede parecer que valen, pero no es así ya que la función de directiva i2c por software tiene que  andar cambiando la dirección de ambos puertos para generar el clock y los datos en modo Open Drain así como recibirlos luego del slave. 

  Solución:

   Usa otros puertos, por ejemplo:  el C6 y el C7 .

 Saludos.

Hola, muy buenas noches.

Esta es la solución, Muchas gracias por responder. Tengo que ser mas observador, no me di cuenta que los pines C4 y C5 del PIC 18F2550 son solo salidas y no entradas, es por eso que no funcionaba. MUCHAS MUCHAS GRACIAS.