Pages: [1] 2   Go Down
Author Topic: Ribaltare (not) comunicazione seriale  (Read 657 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)?
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 113
Posts: 5945
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Guglielmo
Logged

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

Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 113
Posts: 5945
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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

Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 258
Posts: 21488
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ciao Uwe
Logged

Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 113
Posts: 5945
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@ 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
Logged

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

Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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... smiley
Logged

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 113
Posts: 5945
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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 ... smiley-wink

Guglielmo
Logged

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

Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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 ... smiley-wink

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.
Logged

Offline Offline
Full Member
***
Karma: 4
Posts: 248
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Guglielmo
Hai ragione, non c'avevo capito una mazza...  smiley-wink

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

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7079
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma vuoi realizzare una cosa del genere?

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

Grazie ai fotoaccopiatori la seriale può avere i livelli TTL.
« Last Edit: January 27, 2014, 03:45:58 pm by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1] 2   Go Up
Jump to: