Pregunta

Con toda honestidad, creo que la respuesta es "no"; Sin embargo, quiero obtener una segunda opinión. Básicamente, necesito un dispositivo de microcontrolador para enviar una señal constante a otro, pero la comunicación entre ellos está utilizando RS232. Así que creo que tengo que crear / actualizar los mensajes de comunicación para que haga lo que quiero.

¿Qué opinas?

¿Fue útil?

Solución

Debería poder configurar algo como DTR (Data Terminal Ready), pin 20 o DSR (Data Set Ready), pin 6, alto y mantenerlo allí como su señal de estado estable. Así es como los módems / terminales detectan que hay un dispositivo en el otro extremo que está listo para comunicarse. Todo depende del nivel de acceso que tenga al hardware a través de su controlador.

[EDITAR] Esto no implica el envío de datos, aunque aún puede hacerlo utilizando TX / RX, pines 2 y amp; 3.

Referencia RS-232 en wikipedia

Otros consejos

¿Quieres decir una tensión fija? ¿No es una onda cuadrada? (la letra U) ¿Qué pasa con un comando de ruptura (si desea llamarlo un comando)?

Ciertamente puede usar una de las líneas de control si eso ayuda ... ¿O está buscando específicamente algo fuera de la TX?

Si la pregunta es "¿puedo alterar el estado DC de la línea Tx?", entonces la respuesta es que se puede pedir a muchos uarts (incluidos los de las PC) que creen una condición de "interrupción", que es lo contrario a la condición de inactividad normal de la línea.

Por lo tanto, puedes activar y desactivar 'break' y cambiar la línea de esa forma.

Podría ser posible hacer algo así, siempre que no te importe una interfaz similar a una ráfaga. Una micro puede transmitir un byte y la otra puede hacer algo en ese byte y enviarlo de vuelta como respuesta.

Si puede controlar ambos extremos de la línea, puede convertir las líneas rs-232 tx y rx en líneas lógicas regulares para proporcionar esa información.

Sin embargo, en la mayoría de las situaciones, cada extremo envía periódicamente un byte de información de estado que contiene 8 valores digitales posibles, lo que proporciona mucha más información de estado.

Un temporizador en el extremo de recepción se restablece cada vez que se recibe un mensaje, y si el temporizador se agota, el mensaje ha tardado demasiado y puede actuar en caso de que falte un mensaje de estado.

Como han señalado otros, si está utilizando el control de flujo de hardware, también tiene algunas líneas de estado disponibles, aunque en muchos casos esas líneas no se implementan, por lo que puede que no sea una opción.

-Adam

La señal constante podría significar:

  • ráfaga constante de caracteres: mantener el búfer de envío lleno
  • línea alta o baja: no envíe nada o envíe pausas continuas

Creo que depende en gran medida del UART que esté utilizando, p. texto del enlace y el nivel de acceso que tiene bajo el software. Si revisa la hoja de datos, a menudo hay formas de controlar la mayoría de los pines directamente con fines de prueba, pero tendrá que hacerlo desde un nivel bastante bajo.

En un nivel superior, la respuesta de tvanfosson es prácticamente la forma en que lo haría.

Si bien la primera respuesta es correcta, puede que no sea posible utilizar esta técnica (utilizando DTR o DSR) en muchos microcontroladores, ya que es posible que no tengan esas señales (muchos microcontroladores pueden tener las líneas básicas RX / TX y A menudo, tendría que usar otros puertos de E / S si quisiera más control / líneas de estado. Sin embargo, no todo está perdido, muchos controladores RS232 le permiten configurar la línea de TX en 'marca' o 'espacio' (es decir, configurar la línea de TX a lógica alta o baja). Esto le permitiría obtener su señal de estado estable. La línea RX en el receptor se puede verificar para ver si está en el nivel de marca o espacio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top