Newsgroup: it.hobby.elettronica.digitale
Titolo: Convertitore RS232 to RS485: timing

Salve.
Devo realizzare per uso interno un convertitore RS232 to RS485 con possibilità di lavorare con due doppini (full-duplex) od uno solo (half-duplex).
A dire il vero dispongo già del full-duplex (autocostruito) ma ora ho bisogno del secondo e visto che bastano piccole modifiche ho deciso di passare all'azione.
Domandona: quale è il tempo di disconnessione del Tx (linea che passa in 3state) dopo che l'ultimo carattere è stato completamente trasmesso (stop bit compresi)?
Dipende dalla baud-rate o è fisso?
Visto che piloterei un monostabile per la disconnessione sul toggle dei dati, corro il rischio di avere un tempo variabile.
 
Grazie.
 
Piccio.

dati, corro il rischio di avere un tempo variabile.
Col monostabile ne ho incontrati solo dentro un multiplexer ottico e ci 
hanno dato un sacco di problemi. Ha ponticelli per fissare il ritardo e per 
renderlo retriggerabile o no, ma il tempo di abilitazione, come osservi 
anche tu, e' sempre variabile secondo il dato trasmesso.
 
Ciao,
-- RoV - IW3IPD
http://digilander.libero.it/rvise
 
 

 Dipende dalla baud-rate o è fisso?
Il tempo minimo è quello programmato come stop (1, 1.5 o 2 Tbit).
Ovviamente dipende dal bit rate programmato.
 
Se usi un micro con supporto RS485, la direzione viene cambiata
in automatico al termine della trasmissione
Se invece fai tutto tu, devi cambiare la direzione nell' interrupt
quando lo shift register di trasmissione è vuoto: *attenzione* che
se hai una uart con buffer in tx devi controllare di potere avere
un interrupt o lo stato dello shift register vuoto, non del buffer
di tx, perche' puoi rischiare di cambiare direzione mentre si sta'
trasmettendo il carattere nello shift register!
AA:
 
 
 

 trasmettendo il carattere nello shift register!
 
Sono consapevole di ciò ma si tratta di un convertitore privo di micro collegato alla seriale di un PC in DOS.
Sto riparando delle schede con la '485 e tutto filava liscio finchè erano full-duplex ma poi sono arrivate le loro sorelle più recenti ed hanno unito Tx con Rx per un solo doppino...
In realtà tali schede prevedono una zona morta di 100ms tra Tx ed Rx, abbondantemente sufficienti per l'utilizzo del monostabile retriggerato sul fronte (leggi: CD4538) ma già che c'ero volevo poter realizzare qualcosa di più universale.
Infatti mi fai venir voglia di mettere un micro al posto del monostabile non fosse che sarebbe vincolato ad una Pippo-Baud-Rate fissa.
Il software sarebbe piuttosto semplice: ricevere con la propria UART il flusso proveniente dalla RS232 (linea Tx) ed alla ricezione di un CHR far partire un timer con t=1/2 bit.
In questo tempo si campiona la linea e se non si rileva uno "0" (start-bit) allora si cambia direzione ai buffer 485.
Naturalmente vanno gestiti gli errori di frame ed altro e bisogna poter impostare la la baud-rate.
Altro evento da considerare: campionare la linea 485 e non prendere possesso del bus se è in atto una trasmissione.
In questo caso quanto tempo si dovrebbe aspettare prima di passare in Tx?: 1/2 bit o un chr dall'ultimo fronte?
 
Componenti impiegati: MAX232, SN75176, ATtiny2313 + quarzo, alimentatore cinese 5V o furto di tensione da USB.
 
Piccio.

 Componenti impiegati: MAX232, SN75176, ATtiny2313 + quarzo, alimentatore cinese 5V o furto di tensione da USB.
 
Se hai un collegamento punto-punto o con pochi devices e la velocita'
non e' esagerata, ti basta mettere un pull-up su A e un pull-down su B
e usi lo stato ALTO del TX per fare andare il driver in Three-state e 
aabilitare la ricezione :
SN75176.3.DE
= 
SN75176.2.RE
 = NOT(SN75176.4.D)[TX].
L' uscita grazie al pu/pd sara' a livello ALTO(1) quando TX è spento
e la linea è sempre ALTA, e quando trasmetti, lo stato 1 è assicurato
dai pu/pu.
La ricezione (
SN75176.2.RE
=LOW) viene abitata quando il bit di TX e' alto
 
AA.