Autor Tema: PROBLEMAS SERIALES  (Leído 2354 veces)

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

Desconectado kengsm

  • PIC10
  • *
  • Mensajes: 6
PROBLEMAS SERIALES
« en: 14 de Septiembre de 2005, 15:26:00 »
Buenas ante todo
Llevo mas de 3 dias con una comunicacion entre 8 pic usando solo la linea de transmision.
Es una comunicacion unidireccional, los 8 pic mandan continuamente uno detras de otro unos caracteres seriales.
Para el control de flujo he usado un 74ls30 para saber si la linea esta ocupada o no.
Pero a pesar de todo eso me colisionan los paquetes.
Alguna ayuda??????????"

Pongo el codigo fuente
....................................................................
DEFINE OSC 20
T9600 CON 2
TRAFICO VAR PORTC.5
FLUJO VAR PORTC.4
SERIALINPUT VAR PORTC.7
SERIALOUTPUT VAR PORTC.6
FLUJO=1

INICIO:


IF TRAFICO=0 THEN
    FLUJO=0
    SEROUT SERIALOUTPUT,T9600,["S1111"]
    PAUSE 10
    FLUJO=1
ENDIF


GOTO INICIO  
...........................................................

Lo unico que cambia de la programacion de uno a otro son los caracteres que envian.

Estoy monitoreando con el hiperterminal.
Muchas gracias por adelantado.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
RE: PROBLEMAS SERIALES
« Respuesta #1 en: 15 de Septiembre de 2005, 09:11:00 »
Que tal mi pana!

Vamos a ver si te entiendo tu le estan enviando simultaneamente informacion desde 8 pic al hyperterminal?

Si es asi no creo que esto te vaya a funcionar deberias programar los micros para que solo uno a la vez se comunique con el hyper y no todos a la vez, sino habria que multiplexar los micros para que el que sea seleccionado envie la informacion y los demas no.

Saludos

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
RE: PROBLEMAS SERIALES
« Respuesta #2 en: 15 de Septiembre de 2005, 09:41:00 »
tienes los 8 pic en la misma placa?
los 8 comparten el mismo driver rs232?
los 8 tx estan en paralelo?
Saludos desde Granada, España.

Desconectado kengsm

  • PIC10
  • *
  • Mensajes: 6
RE: PROBLEMAS SERIALES
« Respuesta #3 en: 15 de Septiembre de 2005, 14:49:00 »
Muchisimas gracias por contestarme.

Bueno voy a aclara mas el proyecto para que lo entendais.
Son 8 pic conectados entre si por la linea de TX.
que deben de estar mandando 4 caracteres continuamente uno detras e otro.
Esa linea de Tx esta conectada ahora mismo al RX de de un max232 conectado al puerto serie para monitorear lo que estan emitiendo.
Posteriormente esto lo recibira otro pic.

Cada pic tiene una patilla de entrada y salida de señal de transmision.
Es decir cuando se le activa dicho pin, comprueba si la linea esta libre y si lo esta envia, y despues activa la patilla de salida que es a su vez la de entrada del 2 y asi hasta el octavo.

el primero recibe la señal, transmite, el primero da la señal al segundo, transmite, .......... asi hasta que llega al 8.

Solo empiezan a enviar cuando se le pide al primero.

La comprobacion de flujo de datos la hago con un 74ls30
una octuple puerta NAND, tiene que tener todas las entradas a 1 para que la salida sea 0.
Es decir cuando se les pide que envien, comprueban que la linea este libre.

Pero a pesar de todo eso no consigo a traves del hiperterminal ver las 8 cadenas de caracteres seguidas sino que salen caracteres raros, mientras que si los pongo uno a uno van perfectos.

Muchas gracias por vuestro interes

Desde la ciudad de la Alhambra un saludo.

Desconectado elreypic

  • PIC12
  • **
  • Mensajes: 79
RE: PROBLEMAS SERIALES
« Respuesta #4 en: 16 de Septiembre de 2005, 16:11:00 »
Que tal, espero poder ayudarte.

No entiendo exactamente como estas haciendo tu conexionado, ojala pudieras poner un esquema para poder ayudarte mejor.

Te comento que yo alguna vez hice algo similar, pero lo que yo hacia era monitorear el bus de transmision, lo que hacia era medir el estado inactivo (idle state) del bus, esto se logra midiendo que el bus este en nivel alto mas tiempo de lo que pudiera medir un byte completo (start bit, 8 bits de datos y stop bit) por lo general el doble. El timer para eso debe ser incializado cada vez que se detecte un flanco de bajada o bien un nivel bajo en el bus.
Desafortunadamente no tengo esos codigos ya que lo hice hace mucho tiempo, pero recuerdo que asi fue como lo hice.

Ojala esto te sirva y te de un punto de inicio.

Saludos.

El ReyPic

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
RE: PROBLEMAS SERIALES
« Respuesta #5 en: 16 de Septiembre de 2005, 19:02:00 »
No lo puedo asegurar, pero creo que el problema esta en que no respetas el protocolo de bajo nivel, es decir como dice el compañero, de alguna forma estas distorsionando la cabecera de los bytes y por lo tanto el receptor no logra encontrar el bit de arranque que pasa de 1 a 0, y por eso obtienes basura, para estar seguros seria interesante ver el esquema… creo que tendrías que multiplexar tambien los tx.
Saludos desde Granada, España.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: PROBLEMAS SERIALES
« Respuesta #6 en: 19 de Septiembre de 2005, 05:11:00 »
Hola,
 Una comunicacion RS232 siempre se ha pensado para que sea punto a punto y no multipunto como la que tu deseas. Para eso hay otro tipo de interfaces hardware como el CAN bus y el RS485 o mismamente el USB. Una transmisión serie RS323 no está preparada para connectarse a varios puntos. El problema es que estás obligando a ocho salidas a tener valores difrentes de 0 y 1 y éstas no son triestado.

Creo que deberías usar otro tipo de interfaz o hacer una adaptación hardware que permita esto que quieres hacer.

Saludos,
Ricky

Desconectado mendop

  • PIC10
  • *
  • Mensajes: 15
RE: PROBLEMAS SERIALES
« Respuesta #7 en: 07 de Octubre de 2005, 10:51:00 »
Podrias solucionarlo si directamente interrogas a cada uno de los transmisores, de esta manera te aseguras que solo uno transmite