Autor Tema: Nueve bits desde el puerto COM del PC.  (Leído 2788 veces)

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

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Nueve bits desde el puerto COM del PC.
« en: 25 de Abril de 2016, 11:27:10 »
Saludos.

Tal vez sea una pregunta tonta, pero... ¿Hay manera de transmitir y recibir un byte más un noveno bit desde el puerto serial de una PC mediante algún software?

Gracias.

 :)
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #1 en: 25 de Abril de 2016, 12:09:24 »
En algun software agregarle paridad ?...

Con agregarle paridad y 1 bit de stop. Seria como enviar un 9no.
A no ser que vos quieras controlar exactamente ese bit extra. Y ahi no tengo idea.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #2 en: 25 de Abril de 2016, 12:19:59 »
En algun software agregarle paridad ?...

Con agregarle paridad y 1 bit de stop. Seria como enviar un 9no.
A no ser que vos quieras controlar exactamente ese bit extra. Y ahi no tengo idea.

Gracias por responder.

Claro esa es una solución, pero suponiendo que deseo transmitir una trama de n bytes, donde el primer byte tenga su noveno bit en 1L y el resto en cero.

Es decir que por cada byte se pueda decidir el valor del noveno byte. Esa la cuestión. :mrgreen:
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #3 en: 25 de Abril de 2016, 12:29:24 »
Me explico mas con el bit de paridad:

Podrias usar el bit de paridad, y segun el dato que envies setear la paridad para que ese primero sea un 1.

Y los demas datos sea si o si 0. Me refiero a calcular la paridad y setear el RS232 en la PC segun lo calculado, para que solo el 1ro sea un 1.

Ejemplo, si en la PC tenes que enviar 0110 1100 como el primer byte,
- calculas la paridad de ese byte,
- seteas como paridad impar,
- y envias.

Asi enviaria 0110 1100 1.

Luego el siguiente dato que es 0101 1010, necesitas que sea 0 a la salida, entonces nuevamente:

- calculas la paridad de ese byte,
- seteas como paridad par,
- y envias.

Asi enviaria 0101 1010 0.


El PIC deberia estar recibiendo siempre 9 bits (esto es para mayor facilidad). El cual ese 1 le va ser el indicador del comienzo de trama.

Es algo rebuscado, pero no creo que le importe a la PC hacerlo ( en tiempo ).
« Última modificación: 25 de Abril de 2016, 12:32:12 por KILLERJC »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #4 en: 25 de Abril de 2016, 12:32:23 »
Primero que te complicarias demasiado xD Tanto en el PIC, como en el PC.


¿Quién ha mencionado un PIC?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #5 en: 25 de Abril de 2016, 12:34:31 »
Primero que te complicarias demasiado xD Tanto en el PIC, como en el PC.


¿Quién ha mencionado un PIC?

Asumi que ibas a conectarlo a un microcontrolador/microprocesador ( sea cual sea), pero se aplica de la misma forma.

Ahora si usas una comunicacion PC-PC ahi no se como se comportara el hardware, si el mismo al estar seteado con una paridad en la recepcion. El dato se descarte directamente sin que tengas la posibilidad de un acuse de recibo o permitir ver que llego.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #6 en: 25 de Abril de 2016, 12:38:36 »
Me explico mas con el bit de paridad:

Podrias usar el bit de paridad, y segun el dato que envies setear la paridad para que ese primero sea un 1.

Y los demas datos sea si o si 0. Me refiero a calcular la paridad y setear el RS232 en la PC segun lo calculado, para que solo el 1ro sea un 1.

Ejemplo, si en la PC tenes que enviar 0110 1100 como el primer byte,
- calculas la paridad de ese byte,
- seteas como paridad impar,
- y envias.

Asi enviaria 0110 1100 1.

Luego el siguiente dato que es 0101 1010, necesitas que sea 0 a la salida, entonces nuevamente:

- calculas la paridad de ese byte,
- seteas como paridad par,
- y envias.

Asi enviaria 0101 1010 0.


El PIC deberia estar recibiendo siempre 9 bits (esto es para mayor facilidad). El cual ese 1 le va ser el indicador del comienzo de trama.

Es algo rebuscado, pero no creo que le importe a la PC hacerlo ( en tiempo ).

Si comprendo lo que quieres decir, el problema es que tu procedimiento es manual. Yo necesito enviar los n bytes inmediatamente. Es decir que una vez que el primer byte ha salido del puerto serial, el segundo byte es emitido, y así sucesivamente. Esto con la transición.
¿Y la recepción?

Una solución que se me está cruzando en la cabeza es crear mi propia aplicación donde al primer byte habilito el 9no bit y para el resto lo deshabilito.
 
Aunque seguramente alguien ya lo hizo.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #7 en: 25 de Abril de 2016, 12:41:42 »

Asumi que ibas a conectarlo a un microcontrolador/microprocesador ( sea cual sea), pero se aplica de la misma forma.

Ahora si usas una comunicacion PC-PC ahi no se como se comportara el hardware, si el mismo al estar seteado con una paridad en la recepcion. El dato se descarte directamente sin que tengas la posibilidad de un acuse de recibo o permitir ver que llego.


No es de interés como se comporta el 'otro hardware', por ahora es importante emitir y recibir tramas de n bytes (dónde n es una variable mayor que 1) con un noveno bit (1 para el primer byte y cero para el restante)
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #8 en: 25 de Abril de 2016, 13:54:43 »
Citar
Si comprendo lo que quieres decir, el problema es que tu procedimiento es manual. Yo necesito enviar los n bytes inmediatamente. Es decir que una vez que el primer byte ha salido del puerto serial, el segundo byte es emitido, y así sucesivamente. Esto con la transmisión.
¿Y la recepción?

En la transmision lo vas a lograr en una PC, la velocidad que tenes en el procesador y mas cuando seguro tenes bits de paridad dentro de los registro de estado va a ser mucho mayor que la de la transmision serial. Incluso si tenes que hacer XOR y desplazamientos va a ser mucho mas rapido.

Citar
No es de interés como se comporta el 'otro hardware',

Por supuesto que es de interes ( me referi a hardware como todo el conjunto del otro lado, tal ves fue un error mio ). No hay comunicacion sin transmision Y recepcion. Por eso decia que con un PIC todo genial por que vos sos el encargado de manejar que ocurre con ese 9no bit. En una PC lo va a controlar el OS. Y ahi es donde encontre esto en el foro de Microsoft a uno que hizo una pregunta parecida a la tuya ( queriendo usar el 9no bit para indicar dato/comando):

Citar
Unfortunately, Microsoft is so "clever" as to take 11 bit from the UART, use the 3 status bits - parity, framing error and break - to fire events and then throws these 3 bits away before the result is stored in a 16-bit stream, which could easily have contained all 11 bits. The result is that the vital synchronization between status bits and data is lost and cannot be regained. This makes it impossible to use 9th bit communication as you do and to separate telegrams by means of Break as it is done in for example DMX512, LIN and Max-i. I have discussed this several times with Microsoft over several years, but they don't care about the serial port and have no intention to do anything about it.

Ademas es muy importante lo que vas a tener del lado de la recepcion, no podes pensar que es lo mismo un PIC16, un PIC32, un Intel i5, En el que la sobrecarga de informacion pueda afectar o no.
Si es una PC el destinatario ¿por que no enviar bytes de mas? como para indicar el inicio de trama, por que no usar las señales de control de flujo asi saber cuando es que comienza realmente la trama?, ahora un microcontrolador tener que lidiar con mas datos/entradas es distinto, en la PC no tendrias ningun problema.

Pero si queres hacerlo de esa forma, con el 9no bit vas a tener hacerlo de forma "manual" como vos decis.
La otra forma es usar 8 bits + 1 paridad, en el cual la paridad impar indica inicio de trama y paridad par todos los demas datos. Y esto implicaria mucho menos sobrecarga sobre tu transmisor.

Y tu problema pasaria a ser:

- Es posible cambiar la paridad on-the-fly? O debo cerrar y abrir el puerto?
- En un microcontrolador como receptor implicaria calcular la paridad de todos los datos recibidos.

« Última modificación: 25 de Abril de 2016, 14:04:13 por KILLERJC »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #9 en: 25 de Abril de 2016, 14:03:57 »

Ademas es muy importante lo que vas a tener del lado de la recepcion, no podes pensar que es lo mismo un PIC16, un PIC32, un Intel i5, En el que la sobrecarga de informacion pueda afectar o no.
Si es una PC el destinatario ¿por que no enviar bytes de mas? como para indicar el inicio de trama, por que no usar las señales de control de flujo asi saber cuando es que comienza realmente la trama?, ahora un microcontrolador tener que lidiar con mas datos/entradas es distinto, en la PC no tendrias ningun problema.

Pero si queres hacerlo de esa forma, con el 9no bit vas a tener hacerlo de forma "manual" como vos decis.

No entiendo porque debo dar más detalles de lo que puede pasar o no pasar con el ‘otro hardware’ y preocuparme por eso, no viene al asunto y sí fuera así, debería abrir otro hilo para explicar el posible problema.
Míralo de esta manera:
Imagina que soy un estudiante cuya tarea que debe presentar a su profesor el envío y recepción de bytes más un noveno bit desde el puerto COM de una PC. (Por lo menos el envío)
Para evaluar que funciona correctamente dicha tarea, se utilizará un analizador lógico u osciloscopio para determinar si el puerto serial envía 8 bits más un noveno bit. El Primer bit enviado debe tener su noveno bit en 1 y los siguientes en 0.
Eso es todo, no debemos preguntarnos qué va a pasar con el otro hardware, sólo eso deseamos conseguir, nada más.
« Última modificación: 25 de Abril de 2016, 14:09:02 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #10 en: 25 de Abril de 2016, 14:19:34 »
Vos no entendes por que tenes que dar mas detalles, y yo no entiendo como es que queres hacer una comunicacion solo pensando en el transmisor y no si el receptor puede o no recibirlo.
Nadie te pidio detalles de nada de lo que queres hacer, solo cubri las posibilidades a la que te podes enfrentar que seria lo mas sensato.

Transmision: Lo vas a poder hacer. Por que nada evita que mandes cualquier basura que se te ocurra y como a vos mas te guste, y con los tiempos que te guste.
Recepcion: Tambien!, con ciertas precauciones y que van a estar ligadas a la transmision.

Pero no seguido como vos queres. Ya que no creo que te permita cambiar el modo de un puerto en el acto, sino que imagino que deberias cerrarlo, configurarlo de nuevo y abrirlo.
Que tal ves sean microsegundos/nanosegundos (+ cambio de tareas en el OS que no tenes idea cuando van a ocurrir), pero que si el transmisor lo realiza y comienza a enviar antes que el receptor quede configurado puede que tengas problemas. Por eso opino que no debe ser posible asi seguido como vos queres sino que debe existir una pequeña pausa del lado del transmisor entre el byte de comienzo y los restantes.

Y listo ahi tenes tu envio con 9 bits en el primer byte. Solo un problema mas, no sabes cuando termina! a no ser que envies ademas en el primer dato la cantidad n de bytes. Y ademas tengas un timeout en caso de ruptura de la comunicacion.

Ahora... ¿es lo mas practico? NO. Pero no vas a eso, vos vas a si es posible o no. Ya ves que es posible. Pero tal ves no de la forma que queres.

Ya no se que mas decirte.
« Última modificación: 25 de Abril de 2016, 14:22:21 por KILLERJC »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #11 en: 25 de Abril de 2016, 14:25:25 »
Vos no entendes por que tenes que dar mas detalles, y yo no entiendo como es que queres hacer una comunicacion solo pensando en el transmisor y no si el receptor puede o no recibirlo.
Nadie te pidio detalles de nada de lo que queres hacer, solo cubri las posibilidades a la que te podes enfrentar que seria lo mas sensato.

Transmision: Lo vas a poder hacer. Por que nada evita que mandes cualquier basura que se te ocurra y como a vos mas te guste, y con los tiempos que te guste.
Recepcion: Tambien!, con ciertas precauciones y que van a estar ligadas a la transmision.

Pero no seguido como vos queres. Ya que no creo que te permita cambiar el modo de un puerto en el acto, sino que imagino que deberias cerrarlo, configurarlo de nuevo y abrirlo.
Que tal ves sean microsegundos/nanosegundos (+ cambio de tareas en el OS que no tenes idea cuando van a ocurrir), pero que si el transmisor lo realiza y comienza a enviar antes que el receptor quede configurado puede que tengas problemas. Por eso opino que no debe ser posible asi seguido como vos queres sino que debe existir una pequeña pausa del lado del transmisor entre el byte de comienzo y los restantes.

Y listo ahi tenes tu envio con 9 bits en el primer byte. Solo un problema mas, no sabes cuando termina! a no ser que envies ademas en el primer dato la cantidad n de bytes. Y ademas tengas un timeout en caso de ruptura de la comunicacion.

Ahora... ¿es lo mas practico? NO. Pero no vas a eso, vos vas a si es posible o no. Ya ves que es posible. Pero tal ves no de la forma que queres.

Ya no se que mas decirte.

Si estoy de acuerdo que puede haber detalles, problemas, limitaciones, etc. Y lo más sensato es desarrollar una aplicación. Lo único que yo deseaba es conocer si alguien ya conocía dicha aplicación y ahorrarme el trabajo de desarrollarla. Eso es todo.

Espero que no haya mal entendidos culturales  :-/
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #12 en: 25 de Abril de 2016, 16:16:52 »
Primero que te complicarias demasiado xD Tanto en el PIC, como en el PC.
¿Quién ha mencionado un PIC?

Puso una pregunta en el sub foro "todo en microntroladores PIC" por lo que todos asumimos que en algún punto hay un PIC o que equivocó el lugar donde hacer la pregunta. Por otra parte un post respondiendo de esa forma a la unica persona que esta tratando de ayudarlo, es un poco descortes.

No es de interés como se comporta el 'otro hardware', por ahora es importante emitir y recibir tramas de n bytes (dónde n es una variable mayor que 1) con un noveno bit (1 para el primer byte y cero para el restante)

En su primer mensaje solicitó ayuda para
...¿Hay manera de transmitir y recibir ....

por lo que si lo que quiere es transmitir Y recibir esta pidiendo ayuda para las dos partes.

Si en el camino hacia la solucion descubre que ha equivocado el lugar y/o la forma en la que solicita ayuda, lo mas cortes es aclararlo para que el que esta tratando de ayudarlo pueda re encaminar la posible solucion. Sino se convierte en usted refutando cada intension de ayuda x q no cumple con los requisitos que usted fue cambiando en el camino.

Saludos
-
Leonardo Garberoglio

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #13 en: 25 de Abril de 2016, 17:05:02 »
Primero que te complicarias demasiado xD Tanto en el PIC, como en el PC.
¿Quién ha mencionado un PIC?

Puso una pregunta en el sub foro "todo en microntroladores PIC" por lo que todos asumimos que en algún punto hay un PIC o que equivocó el lugar donde hacer la pregunta. Por otra parte un post respondiendo de esa forma a la unica persona que esta tratando de ayudarlo, es un poco descortes.


La verdad no sabía en qué parte del foro realizar la consulta, he visto que cuando el tema está en una parte que no le corresponde, el moderador del foro lo reubica en otra parte y eso esperaba.

Siempre me he dado cuenta que la gente al leer un mensaje en un foro tiende a entender desde su punto de vista el estado de ánimo de quien escribe. En este caso usted lo vio como ‘descortés’, tal vez debería suavizar mis mensajes con caritas alegres para que no se mal interprete el mensaje.


 :mrgreen: :D :-) :lol: :)
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Nueve bits desde el puerto COM del PC.
« Respuesta #14 en: 25 de Abril de 2016, 17:06:19 »

Puso una pregunta en el sub foro "todo en microntroladores PIC" por lo que todos asumimos que en algún punto hay un PIC o que equivocó el lugar donde hacer la pregunta. Por otra parte un post respondiendo de esa forma a la unica persona que esta tratando de ayudarlo, es un poco descortes.

No es de interés como se comporta el 'otro hardware', por ahora es importante emitir y recibir tramas de n bytes (dónde n es una variable mayor que 1) con un noveno bit (1 para el primer byte y cero para el restante)



En su primer mensaje solicitó ayuda para
...¿Hay manera de transmitir y recibir ....

por lo que si lo que quiere es transmitir Y recibir esta pidiendo ayuda para las dos partes.

Si en el camino hacia la solucion descubre que ha equivocado el lugar y/o la forma en la que solicita ayuda, lo mas cortes es aclararlo para que el que esta tratando de ayudarlo pueda re encaminar la posible solucion. Sino se convierte en usted refutando cada intension de ayuda x q no cumple con los requisitos que usted fue cambiando en el camino.

Saludos

No entendí esto, sorry  :oops:
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32