Domanda

In tutta onestà, penso che la risposta sia " no; " tuttavia, voglio ottenere un secondo parere. Fondamentalmente, ho bisogno di un dispositivo micro-controller per inviare un segnale costante a un altro, ma la comunicazione tra loro sta usando RS232. Quindi penso di dover creare / aggiornare i messaggi di comunicazione per farlo fare quello che voglio.

Cosa ne pensi?

È stato utile?

Soluzione

Dovresti essere in grado di impostare qualcosa come DTR (Data Terminal Ready), pin 20 o DSR (Data Set Ready), pin 6, alto e tenerlo lì come segnale di stato stazionario. Questo è il modo in cui modem / terminali rilevano l'esistenza di un dispositivo all'altro capo pronto per comunicare. Tutto dipende dal livello di accesso all'hardware tramite il driver.

[EDIT] Questo non comporta l'invio di dati, anche se puoi ancora farlo usando TX / RX, pin 2 & amp; 3.

Riferimento RS-232 su wikipedia

Altri suggerimenti

Intendi una tensione fissa? Non un'onda quadra? (la lettera U) Che ne dici di un comando break (se vuoi chiamarlo un comando)?

Certamente puoi usare una delle linee di controllo se questo ti aiuta ... O stai cercando specificamente qualcosa fuori dal TX?

Se la domanda è "posso modificare lo stato DC della linea Tx", allora la risposta è che a molti uart (compresi quelli nei PC) può essere chiesto di creare una condizione di "rottura", che è l'opposto alle normali condizioni di inattività della linea.

Quindi puoi attivare e disattivare 'break' e attivare / disattivare la linea in questo modo.

Potrebbe essere possibile fare qualcosa del genere, a condizione che non ti dispiaccia un'interfaccia simile a un burst. Un micro potrebbe trasmettere un byte e l'altro potrebbe fare qualcosa a quel byte e rispedirlo come risposta.

Se riesci a controllare entrambe le estremità della linea, potresti essere in grado di trasformare le linee rs-232 tx e rx in linee logiche regolari per fornire tali informazioni.

Nella maggior parte dei casi, tuttavia, ogni estremità invia periodicamente un byte di informazioni sullo stato che contiene 8 possibili valori digitali - fornisce molte più informazioni sullo stato.

Un timer all'estremità di ricezione viene ripristinato ogni volta che viene ricevuto un messaggio e se il timer scade, il messaggio ha impiegato troppo tempo e si può agire sul messaggio di stato mancante.

Come altri hanno sottolineato, se si utilizza il controllo del flusso hardware, sono disponibili anche alcune righe di stato, sebbene in molti casi tali righe non siano implementate, pertanto potrebbe non essere un'opzione.

-Adam

Segnale costante potrebbe significare:

  • costante esplosione di caratteri: mantenere pieno il buffer di invio
  • linea mantenuta alta o bassa: non inviare nulla o inviare interruzioni continue

Penso che dipenda in larga misura dall'UART che stai utilizzando, ad es. testo del link e il livello di accesso che hai ad esso con il software. Se controlli la scheda tecnica, ci sono spesso modi per controllare la maggior parte dei pin direttamente a scopo di test, ma dovrai passare da un livello piuttosto basso.

A un livello superiore, la risposta di tvanfosson è praticamente il modo in cui lo farei.

Sebbene la prima risposta sia corretta, potrebbe non essere possibile utilizzare questa tecnica (utilizzando DTR o DSR) su molti micro controller poiché potrebbero non avere quei segnali (molti micro controller potrebbero avere solo le linee RX / TX di base e tu sarebbe spesso necessario utilizzare altre porte I / O se si desideravano linee di controllo / stato aggiuntive. Tuttavia, non tutto è perduto, molti controller RS232 consentono di impostare la linea TX su 'mark' o 'space' (ovvero impostare la linea TX logico alto o basso). Ciò consentirebbe di ottenere il segnale di stato stazionario. La linea RX sul ricevitore può essere controllata per vedere se è a livello di segno o di spazio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top