Autor Tema: COMUNICAR 2 PICS Y SIM 900 ¿por USART o I2C?  (Leído 2003 veces)

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

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
COMUNICAR 2 PICS Y SIM 900 ¿por USART o I2C?
« en: 22 de Diciembre de 2015, 19:49:22 »
Amigos quisiera que me ayuden; tengo un proyecto donde comunico un SIM900 con un PIC18F2550 todo esta funcionando perfectamente, ahora me veo en la necesidad de comunicar un segundo PIC al sistema, este nuevo PIC solo conectara el Pin de TX al RX del 1er PIC, es decir que el 1er PIC por el pin de RX debe recibir lo que transmita el SIM900 y el nuevo PIC.
¿que etapa o interface previa tengo que añadirle?
el sim900 se alimenta de 4V y los PIC de 5V, estoy usando el diagrama adjunto que funciona de maravilla, pero no se como acoplarlo.
ahora el SIM900 y este nuevo PIC no van a transmitir al mismo tiempo (bueno siempre hay la probabilidad, pero es muy baja), o me recomiendan comunicarlo por I2C?
ahora el sistema actual ya tiene un BUS I2C implementado con una memoria I2C (24LC256), pero la verdad nunca he probado comunicar 2 pics por i2c, si tuvieran algún ejemplo se los agradecería.
En caso de implementarlo con i2c, mi idea principal seria que el 2do pic tenga una linea a modo de Interrupcion que vaya conectado al INT2 del PIC18f2550 y de alli pueda empezar la comunicacion, solo me bastara que el 2do pic me envie 4 bytes.
Cual de los 2 métodos recomiendan; ventajas y desventajas y si alguien se apiada que me lanze algun ejemplo sobre comunicacion de 2 pics por I2C con interrupción.
Por ultimo el I2C quiero implementarlo con oscilador interno de 4Mhz (PIC12F675) es recomendable o le pongo un xtal?
Muchisimas gracias.



quiero construir un "Condensador de flujos"

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:COMUNICAR 2 PICS Y SIM 900 ¿por USART o I2C?
« Respuesta #1 en: 22 de Diciembre de 2015, 20:56:33 »
Citar
(bueno siempre hay la probabilidad, pero es muy baja),

Pero lo hay, y se debe evitar, La unica forma de utilizar una sola UART que se me ocurre es la de poner un multiplexor digital y elegir el canal a recibir ( SIM900 o PIC2 ) con uno o 2 pines mas. Esto va a evitar una colision, PERO va a permitir que se pueda perder datos. incluso cortar cadenas a la mitad mientras se esta recibiendo.

La otra que se me ocurren son:

- UART por software, complicado este por que tu programa deberia esperar para poder recibir lo que llega, si tu programa tarda demasiado puede que pierda el inicio de una trama, etc. Lo unico que podria ser viable es que el PIC1 le avise al PIC2 para enviar y asi el PIC2 envia justo en ese momento lo mas rapido posible. Y podrias usar cualquier pin que te guste, dejando la UART solo para modulo.
- Buscar un PIC que posea 2 UART
- Utilizar el I2C, de la misma forma que estas haciendo con tu memoria nomas que ahora usas otra direccion que es la direccion que va a tener tu PIC2, No necesitarias tener un cristal en el PIC12 creo, ya que el clock lo envia el maestro ( PIC1 ).

Con respecto a INT2 para saber cuando llega a I2C es una perdida de tiempo e incremento de problemas, ya tenes la interrupcion del I2C no necesitas mas.

Codigo no poseo, pero tambien seria bueno que digas que compilador usas de esa forma las personas que entran si poseen un codigo o un link a una pagina te lo pueden acercar, ya que no es lo mismo hacer una UART por soft en XC8 que CCS

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re:COMUNICAR 2 PICS Y SIM 900 ¿por USART o I2C?
« Respuesta #2 en: 22 de Diciembre de 2015, 21:22:15 »
Gracias por los datos; me olvide decir que uso CCS.
Lo que no me queda claro, quizas no me explique adecuadamente es lo siguiente:
el 2dp PIC se encargara de gestionar la deteccion de 2 parametros, cuando tenga esa informacion, por medio de un pin, le avisa al 1er pic que tiene un dato listo para ser leido, por eso se me ocurrio usar la INT2, luego cuando el 1er pic le envia una peticion de dato y el 2do pic le responde con 4 bytes y se acabo el problema.
En el pic esclavo (2do) no tendria problema porque siempre haria un polling para ver si recibo el dato, no podria usar INT_SSP ya que usare un PIC12F675 (No tiene I2C en HW) en cuanto al master la unica forma de saber hay un dato listo es por esa INT2, ahora si me indicas que tambien puedo hacerlo con la INT_SSP (ya que el PIC18F2550 si tiene I2C en HW) me libero de un pin.
estoy armando el programa en el pic esclavo 12F675 pero me lanza error al llamar a  i2c_poll (no la reconoce)
Que libreria tendria que usar?
Muchas Gracias
quiero construir un "Condensador de flujos"

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re:COMUNICAR 2 PICS Y SIM 900 ¿por USART o I2C?
« Respuesta #3 en: 04 de Enero de 2016, 19:55:48 »
Bueno por cuestion de tiempo al final opte por usar dos puertos seriales en el PIC, uno por hardware y otro por software (con interrupcion en INT2) ambos funcionaron sin problemas; ya para mas adelante investigare mas sobre el I2C en un PIC12F.
Gracias por sus sugerencias
quiero construir un "Condensador de flujos"

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:COMUNICAR 2 PICS Y SIM 900 ¿por USART o I2C?
« Respuesta #4 en: 07 de Enero de 2016, 14:33:28 »
Amigos quisiera que me ayuden; tengo un proyecto donde comunico un SIM900 con un PIC18F2550 todo esta funcionando perfectamente, ahora me veo en la necesidad de comunicar un segundo PIC al sistema, este nuevo PIC solo conectara el Pin de TX al RX del 1er PIC, es decir que el 1er PIC por el pin de RX debe recibir lo que transmita el SIM900 y el nuevo PIC.
¿que etapa o interface previa tengo que añadirle?
el sim900 se alimenta de 4V y los PIC de 5V, estoy usando el diagrama adjunto que funciona de maravilla, pero no se como acoplarlo.
ahora el SIM900 y este nuevo PIC no van a transmitir al mismo tiempo (bueno siempre hay la probabilidad, pero es muy baja), o me recomiendan comunicarlo por I2C?
ahora el sistema actual ya tiene un BUS I2C implementado con una memoria I2C (24LC256), pero la verdad nunca he probado comunicar 2 pics por i2c, si tuvieran algún ejemplo se los agradecería.
En caso de implementarlo con i2c, mi idea principal seria que el 2do pic tenga una linea a modo de Interrupcion que vaya conectado al INT2 del PIC18f2550 y de alli pueda empezar la comunicacion, solo me bastara que el 2do pic me envie 4 bytes.
Cual de los 2 métodos recomiendan; ventajas y desventajas y si alguien se apiada que me lanze algun ejemplo sobre comunicacion de 2 pics por I2C con interrupción.
Por ultimo el I2C quiero implementarlo con oscilador interno de 4Mhz (PIC12F675) es recomendable o le pongo un xtal?
Muchisimas gracias.





¿Qué tal RS485?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32