Interfaccia MIDI e USB, come connetterle insieme?

Salve a tutti!

sono un po' di giorni che penso a come connettere insieme sullo stesso circuito (UART) sia il classico FT232RL per comunicazione USB che una interfaccia per MIDI... Nello specifico mi basterebbe che potessero funzionare una per volta (ad esempio che quando viene inserita l'USB viene escluso il MIDI) ma vorrei vi fosse appunto la possibilità di scegliere quale connettere. il circuito allo stato attuale è questo (molto comune e testato personalmente, funziona ;D):

http://img526.imageshack.us/img526/9440/midischematic.png

ora però vorrei mettere insieme i due terminali RX per mandarli alla porta UART dell'Arduino e ovviamente in maniera che uno non bruci l'altro ;D Inutile dire che vorrei aggiungere davvero il numero minimo di componenti in maniera da non stravolgere il già quasi terminato progetto. Avevo pensato a mettere in serie a RX MIDI una resistenza da 1k e di attaccare brutalmente il pin RX del FT232.. ora questo POTREBBE funzionare se, tolta l'alimentazione a quest'ultimo chip, esso presenti un'alta impedenza sul pin RXD.. cosa che non posso dare per scontato.. (qualcuno può confermare?)

Altrimenti esiste un modo per creare una sorta di buffer tristate con componenti discreti? potrei metterlo al posto della res da 1k..

qualcuno può darmi una mano? Se non sono stato abbastanza chiaro vi prego di chiedermi spiegazioni, sarò prontissimo nelle risposte!

ciao!

ciao davidefender
Non puoi; la connessione seriale é point to point (punto a punto) e non stella o bus.
Per avere 2 seriali devi usare :

  • un arduino mega che ne ha implementato 4 nel hardware del processore UART
  • oppure usare la libreria per avere una seconda seriale emulata via software. http://arduino.cc/en/Reference/SoftwareSerial
    Naturalmente puoi anche interronpere la pista che collega il FT232 al ATmega328 sul arduino e fare un intruttore per segliere se il segnale viene dal FT232Rl o dalla midi.

Ciao Uwe

Ciao uwefed!

hai in effetti confermato le mie "paure" ;) Ed era proprio per questo che l'idea era di implementare una sorta di multiplexer discreto: http://news.emcelettronica.com/2-1-multiplexer-discrete-components

che poi è un po' quello che succede sulla board arduino (in effetti se ci pensi, se attacchi qualcosa ai pin rx e tx della board arduino, vai ad escludere la comunicazione seriale.. proprio grazie ad un paio di resistenze da 1k: http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf ).. ora, la res da 1k potrei metterla sull'RX del MIDI, ma il mio dubbio era se, effettivamente, scollegando l'alimentazione (= presa USB) del FT232, questo sul pin RXD presentasse un'alta impedenza... in maniera da realizzare quello che nel link è il buffer 3-state con il controllo S.

Oppure potrei mettere in serie a RXD del FT232 un transistor in maniera che quando è alimentato, presenta resistenza quasi nulla, e al contrario quando non c'è tensione, una resistenza altissima? avete qualche configurazione da suggerirmi?

grazie! :D

Ciao davidefender

Pensi troppo complicato, un piccolo interuttore basta;

Ma le emulazioni midi sono tutte messe sul pine RX? non si puó usare un altro pin? su http://www.arduino.cc/playground/Main/InterfacingWithHardware#Communication non trovi niente che ti libera dal pin RX ? ciao Uwe

...le emulazioni possono sfruttare qualsiasi PIN, il problema è che ovviamente si perde il funzionamento di interrupt (dunque una chiamata READ diventa bloccante) che non può essere accettabile per il mio progetto.... ci avevo pensato ad un piccolo relé, diciamo che me lo volevo tenere come ultima spiaggia...

La cosa migliore sarebbe realizzare tipo un pass transistor: http://corsiadistanza.polito.it/corsi/pdf/05ATNCM/03%20transmission%20gate.pdf

forse che mi basti un semplice FET a canale N? qualcuno ha mai fatto una cosa del genere?

Grazie mille per l'aiuto uwefed! ;)