Autor Tema: Comunicar PIC con 2 dispositivos seriales  (Leído 4047 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Comunicar PIC con 2 dispositivos seriales
« en: 19 de Agosto de 2010, 02:10:44 »
Saludos a todos:

Tengo un circuito en el que un PIC16F628A se comunica con un módulo sim340 via RS232, para ello uso el USART del PIC así el PIC se concentra en otras tareas y el USART se encarga de la recepción y transmisión de los bits seriales, pero ahora tengo ue conectar el PIC tambien con una PC, ue ideas pueden sugerirme en este caso ya ue el PIC ahora debe estar atento a lo ue dos dispositivos le transmitan al PIC.

La recepción serial del módulo lo hago en el RSI (por interrupción), leo el flag que me indica que un nuevo byte ha llegado al buffer de recepción del Usart y listo leo el byte, no me ocupo de si los bits llegaron con los tiempos de bit bien definidos o no, simplemente espero interrupción y leo el byte RCREG, de hecho con la PC tendria que usar un pin por interrupción y comenzar a leer bit a bit, analizar tiempos de bits, leer bit de start, de stop, etc, se hace muy laborioso, que otro procedimiento creen que podria optar?

Javicho.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #1 en: 19 de Agosto de 2010, 10:45:22 »
Hola Javicho, yo lo que hago en estos casos en configurar 2 puertos seriales

#use rs232(baud=4800, xmit=pin_c6,rcv=pin_c7,stream=PC)
#use rs232(baud=4800, xmit=pin_b1,rcv=pin_b0,stream=mando)

Para PC utilizo el módulo USART con interrupción de recepción, para estar atento en la otra comunicación configuro interrupción externa con flanco de bajada en RB0, de este modo me ha funcionado bien.

Código: [Seleccionar]
#int_rda //Vector de interrupcion de la recepcion de datos
void interrupcion_rx() //por el usart
{
dato_recibido = getc(PC); //Se lee el dato recibido
}

#int_ext
void recibir_mando()
{
dato_recibido = getc(mando);
}

fputc(0b11000000,mando);

fputc(0b11000000,PC);

saludos.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #2 en: 19 de Agosto de 2010, 11:53:14 »
Que tal Javicho,

Como bien mencionas ese micro solo contiene 1 USART asi que para implementar un segundo tienes dos opciones
1) Por software, que es como lo explicas, haciendo el analisis bit a bit que no es nada complicado.
2) POr hardware, es decir agregando un USART con interface SPI como el MAX3100, o el MAX3107 que ya contiene el oscilador interno y con sinterface SPI e I2C. Tamvien puede ser el MAX3110E o el MAX3111E que ya contienen el driver para niveles RS-232.
Mas informaciond e estos IC en www.maxim-ic.com

Espero que esto te ayude.

Elreypic

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #3 en: 19 de Agosto de 2010, 12:17:46 »
Puedes implementar un timer que interrumpa con el periodo de la comunicación utilizada con la computadora, por ejemplo para 9600 baud interrumpir cada 104us. Entonces de esa manera puedes determinar el dato recibido desde la PC sin descuidar otros procesos. Esta forma de trabajarlo lo ha publicado Nocturno en un ejemplo, pero no he sido capaz de encontrarlo  :?


También tienes la posibilidad de conectar el pin de recepción al pin que genera una interrupción externa por flanco descendente, de esa manera generas una interrupción al comenzar a recibir un dato.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado xp8100

  • PIC12
  • **
  • Mensajes: 71
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #4 en: 19 de Agosto de 2010, 16:12:33 »
Al hilo de esto que estais comentando, ¿alguien a usado desde CCS un MCU que tenga 2 UART, como por ejemplo PIC18F25J11 o similar?.

Revisando el DataSheet del chip, veo TX1 y RX1 (correspondiente a los clásicos RC6 y RC7, pero no veo por ningún sitio TX2 y RX2.

Tambien tengo dudas si el compiladorpermite #int_rda  y #int_rda1 (p. ejemplo).

Gracias anticipadas.

Jc

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #5 en: 19 de Agosto de 2010, 16:21:20 »
Al hilo de esto que estais comentando, ¿alguien a usado desde CCS un MCU que tenga 2 UART, como por ejemplo PIC18F25J11 o similar?.

Revisando el DataSheet del chip, veo TX1 y RX1 (correspondiente a los clásicos RC6 y RC7, pero no veo por ningún sitio TX2 y RX2.

Tambien tengo dudas si el compiladorpermite #int_rda  y #int_rda1 (p. ejemplo).

Gracias anticipadas.

Jc

Según el *.h del dispositivo acepta como parámetros INT_RDA e INT_RDA2. Luego en la ayuda de CCS (F12), colocando #USE RS232 salen los parámetros de configuración, allí encuentras:

Citar
UART1
 Sets the XMIT= and RCV= to the chips first hardware UART.
 
UART2
 Sets the XMIT= and RCV= to the chips second hardware UART.

La ayuda del compilador, es como el datasheet para el microcontrolador  :mrgreen:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado xp8100

  • PIC12
  • **
  • Mensajes: 71
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #6 en: 19 de Agosto de 2010, 16:27:01 »
Gracias SUKY. :P

Eficiente como siempre.

Solo una pregunta, ¿que versión de compilador estás usando?.

Gracias

Jc

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #7 en: 19 de Agosto de 2010, 17:10:46 »
Gracias por sus aportes, no me queda otra que implementarlo por interrupción y a mano ya que uso asembler, no hay problema, gracias a todos.

Javicho.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicar PIC con 2 dispositivos seriales
« Respuesta #8 en: 19 de Agosto de 2010, 18:30:59 »
Gracias SUKY. :P

Eficiente como siempre.

Solo una pregunta, ¿que versión de compilador estás usando?.

Gracias

Jc

4.108

Saludos!
No contesto mensajes privados, las consultas en el foro