Go Down

Topic: Ribaltare (not) comunicazione seriale (Read 808 times) previous topic - next topic

Deltoz

E' possibile ribaltare a livello software la trasmissione seriale?
Cioe' fare a livello software ciò che farebbe un porta logica NOT? quindi parlo di tutto il treno..
Nel caso affermativo, si puo' distinguere anche per singola direzione (solo TX oppure solo RX)?

gpb01

Quale è il tuo problema ??? Cosa devi esattamente fare ???

Guglielmo
Search is Your friend ... or I am Your enemy !

Deltoz

La domanda e' generica, volevo sapere se a livello software esiste un comando per ribaltare la situazione, per vari utilizzi a prescindere dal problema attuale.
Al momento il problema specifico e' che devo interfacciarmi in seriale con un' elettronica che lavora a 12V i cui terminali devono essere messi in PullUP, quindi dovrei utilizzare due transistor, uno per adattare il livello logico e l' altro per ribaltare il segnale che e' stato ribaltato dal primo transistor.

gpb01

Ok, allora, per negare i vari bit esiste l'operatore not (~) ma ... non puoi applicarlo al "protocollo seriale" bensì solo alle variabili.

Ho idea che se devi adattare una trasmissione seriale, e vuoi usare la Serial, ... la cosa più semplice sia quella di aggiungere dell'HW esterno ... oppure ...
... devi scriverti la tua Serial con le specifiche che ti occorrono ... :smiley-roll:

Guglielmo
Search is Your friend ... or I am Your enemy !

Deltoz

si si so che posso ribaltare il dato, la mia intenzione era di ribaltare tutto il protocollo.
con l' hardware non ho dfficolta' a farlo, ma mi era venuta questa curiosita'....per snellire il tutto (che poi e' solo 1 transistor + resistenza a canale).

uwefed

Strana la seriale a 12V. Sei sicuro che non é una RS232?

Ciao Uwe

Deltoz


Strana la seriale a 12V. Sei sicuro che non é una RS232?

Ciao Uwe

si e' una seriale a 12V. E' una centralina auto di vecchia generazione, su linea KL a 12V in NRZ.

gpb01

@ Deltoz : Quello che potresti probabilmente fare, a parte ovviamente adattare i livelli, è partire dalla SoftwareSerial (... implementazione via software di una porta seriale) modificandone il codice e facendone una tua che effettua le dovute conversioni dei bit ...

Guglielmo
Search is Your friend ... or I am Your enemy !

Deltoz

Grazie per il consiglio Guglielmo.
Ma preferisco usare la UART Hardware e ci aggiungo un transistor per rinvertire il segnale, mi e' piu' comodo dell' uso della softwareserial.
L' ideale sarebbe stato avere questa possibilita' sulla UART Hardware, ma pazienza... :)

Janos

UWE, che io sappia la seriale ha valori di tensione +-12V, ed infatti ci sono quando utilizzi i convertitori di livello ci sono i condensatori per accumulare la tensione generata dalle pompe di carica dei convertitori stessi.

Tornando al problema, in genere è più semplice cambiare una scocchezza software che non aggiungere transistor qua e la... La funzione che ti serve è la Bitwise NOT, vedi tu dove ti conviene metterla.

Secondo me ti conviene semplicemente negare la variabile tutte le volte che devi trasmettere in quanto ci sono un sacco di overload delle funzioni della seriale.

gpb01

@Janos : Janos, se leggi tutta la discussione, vedi che il problema non è quello di invertire una variabile (... si è già parlato dell'operatore di "not") ma ... di cambiare il verso segnali elettrici della seriale che, se ho ben capito, lui deve interfacciare con un qualche cosa simile al NRZ ... o giù di li ... ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Deltoz


@Janos : Janos, se leggi tutta la discussione, vedi che il problema non è quello di invertire una variabile (... si è già parlato dell'operatore di "not") ma ... di cambiare il verso segnali elettrici della seriale che, se ho ben capito, lui deve interfacciare con un qualche cosa simile al NRZ ... o giù di li ... ;)

Guglielmo

Infatti! io devo comunicare con questa centralina che ha una seriale con protocollo NRZ a logica positiva che lavora a 12V.
E' open collector e devo metterle in PullUP.
L'hardware lo sto facendo io ed e' in via di prototipazione quindi non ho problemi ad aggiungere un transistor e una resistenza o un integrato invertente (ma se era evitabile era meglio).
la mia MCU lavora a 3V3, la sua uscita TX la mando ad un fotoaccoppiatore , per adattare il livello a 12V e isolare galvanicamente, che pero' mi ribalta tutto il protocollo (visto che lavoro in pullUp), quindi devo usare un altro transistor e resistenza per ribaltare nuovamente tutto il protocollo.
E ovviamente il tutto anche sulla linea RX.

Deltoz

mmmmm.....forse ho trovato, inverto l' ingresso sul fotoaccoppiatore, in questo modo inverto la sua funzione.
Anziché comandare l' anodo vado a comandare il catodo del diodo led!
provo e vi faccio sapere :)

Janos

@Guglielmo
Hai ragione, non c'avevo capito una mazza...  ;)

@Deltoz
Non sono sicuro di aver capito bene: i segnali tx e rx con i quali devi interfacciarti sono open-collector npn?

PaoloP

#14
Jan 27, 2014, 09:42 pm Last Edit: Jan 27, 2014, 09:45 pm by PaoloP Reason: 1
Ma vuoi realizzare una cosa del genere?

--> http://www.andreadalessandro.it/obd/

Grazie ai fotoaccopiatori la seriale può avere i livelli TTL.
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Go Up