Autor Tema: Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685  (Leído 3773 veces)

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

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« en: 11 de Febrero de 2016, 19:08:48 »
Hola a todos, les cuento........ estoy tratando de utilizar el PCA9685 quien basicamente es un dispositivo capas de generar 16 señales PWM. Mi idea es utilizar mi computadora, el pic12f629 y el PCA9685 para mover servos.
Bueno lo que he hecho hasta ahora es comunicarme mediante RS232 con el pic12f629 (estoy me funciona bien ya que hecho unas aplicaciones en java para accionar led y funcionan ok  8))......ademas leyendo el datasheet del PCA9586 pude controlarlo (osea puede generar señale PWM sin problemas, ya que hice un pequeño programa para mover un servo a 0° y 180° sin problemas).
Ahora mi problema surge cuando quiero unir todo.......osea lo que quiero es controlar el giro de un servo mediante mi pc de escritorio (utilizando una aplicación en JAVA).....como dije anteriormente, la comunicación RS232 con el pic funciona bien y ademas el programa con el cual controlo el PCA9685 me funciona ok.

Yo creo que debe haber algún problema en la comunicación Rs232 y la I2C (el PCA9685 se comunica con ese protocolo),  por que funcionan bien por separado :(.
Tengo todo montado en un Protoboard.
Utilizo la misma fuente para alimentar el pic, el max232 y las resistencias pull-up para la comunicacion I2C para el PCA9685.
el pic lo configure con el oscilador interno y con todos sus puertos digitales.

Cualquier ayuda me sera de utilidad.
Saludos!!  :-/

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #1 en: 11 de Febrero de 2016, 19:39:52 »
Si funcionan bien por separado significa 2 cosas:

- Programaste mal cada uno por separado, lo cual no son lo "suficientemente" independientes uno de otro, o realmente esta mal programado
- O son independientes uno de otro pero le erraste al momento de juntarlos.

Por lo que decis, lo mas seguro es que sea el primero. Esta de mas decirte que tanto lo de I2C como lo de la UART deberian ir por interrupcion ambos ( o en especial la UART si es la unica de recepcion ). y tu programa principal solamente seria verificar si realmente llego algo (mediante una bandera) y enviar el dato correspondiente a el I2C.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #2 en: 11 de Febrero de 2016, 19:53:31 »
Gracias por comentar.

Las comunicaciones las hice por software (no utilice los modulos UART ya que el pic que utilizo no tiene....y en assembler la programación).
Lo ideal para mi seria simular esto pero no tengo el componente PCA9685 en proteus.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #3 en: 11 de Febrero de 2016, 20:01:08 »
Gracias por comentar.

Las comunicaciones las hice por software (no utilice los modulos UART ya que el pic que utilizo no tiene....y en assembler la programación).
Lo ideal para mi seria simular esto pero no tengo el componente PCA9685 en proteus.

Es todo un problema entonces... Especialmente con los delays y que puedas llegar a perder algun dato proveniente de la UART. A no ser que te quedes esperando por la UART recibas y actues en consecuencia con el I2C. Mientras la PC no deberia enviar nada hasta que finalize todo el tema del I2C. Es la unica solucion que le veo. Si eso se cumple entonces deberias poder hacerlo funcionar sin ningun problema. Tal ves agregando un led para indicar cuando es que esta listo para recibir otro dato seria muy bueno.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #4 en: 11 de Febrero de 2016, 20:18:11 »
KILLERJC, ¿Existe alguna forma de dejar solo algunos pines del pic como alta impedancia??.......Mi idea es que para la recepción de datos del PC solo estén habilitados los pines rx y tx , y para cuando requiera hacer la comunicación I2C habilite solo los pines de esa comunicación.
El pic12f629 solo tiene un puerto, el GPIO0, y hasta ahora leyendo el datasheet no he encontrado nada para desabilitara o habilitar uno de los pines del puerto.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #5 en: 11 de Febrero de 2016, 23:42:36 »
Pasarlos a alta impedancia, es lo mismo que ponerlos "entrada".

Una cosa que tenes que tener MUCHO cuidado, es que el I2C las salidas deben ser open colector, colector abierto, o para decirlo burdamente, la salida no debe proporcionar tension, la tension es obtenida a traves de la resistencia de pull-up externa. Entonces tu salida, lo unico que hace es ponerla a 0 o quedar en alta impedancia, pero jamas jamas ponerlo a 1. Por que el esclavo, en este caso el PCA9685 puede poner la linea a 0V (para avisar un ACK , o NO ACK ) y si tu salida esta en 1 es un hermoso cortocircuito. Asi que tenelo en cuenta a eso.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #6 en: 12 de Febrero de 2016, 00:22:05 »
para los pines rx y tx no hay problema de dejarlos como entrada los dos (para dejarlos en alta impedancia)?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con comunicación RS232 e I2C con PIC12f629 y PCA9685
« Respuesta #7 en: 12 de Febrero de 2016, 00:35:15 »
El unico que te podria importar es el rx. pero esta en alta impedancia al ser entrada... Respecto al TX creo que va a depender de cual es el estado de reposo de la señal, o si el integrado que convierte la UART en RS232 tiene algun pin para alta impedancia y listo.