Dernière mise à jour :
05/06/2011
Montage
en cours de développement, volontairement non référencé dans les
sommaires du site.
Présentation
Ce mergeur RS232 / MIDI permet de "mélanger" de façon intelligente les
données
provenant de deux sources de type RS232 ou MIDI (liaison série
dans les deux cas), avant
de les envoyer vers une unique sortie RS232. Relier de façon "brutale"
deux sorties RS232 ne se fait pas vraiment, et les relier avec un "OU"
à diodes (après conversion au niveau TTL) ne peut être satisfaisant que
si les deux sources de données n'émettent pas des données au même
moment. Dès
l'instant où des données sont émises simultanément par les deux
sources, on est obligé de mettre en oeuvre des mémoires tampon
(buffer) dont la taille dépend de la quantité de données reçues
simultanement depuis
les deux sources. Le montage présenté ici permet de bloquer
temporairement le
transfert des données reçues sur une des entrées, si l'autre
entrée en reçoit déjà. Les données en attente sont transmises sur la
sortie dès que les données de l'autre voie sont toutes passées, et sont
stockées dans une mémoire temporaire pendant ce temps-là. Afin de
garantir un bon fonctionnement même avec des données soutenues, deux
PIC sont mis en oeuvre, un par entrée de données, et la taille du
buffer d'entrée est fixé de façon arbitraire à 128 octets pour chacun
d'eux.
Schéma
Le schéma qui suit montre l'ensemble des composants requis pour les
fonctions désirées.
Remarque :
le schéma actuel
représente deux quartz - un par PIC - mais il y aura en fait un seul
oscillateur pour les deux composants, qui seront ainsi synchrones.
Vitesses de transmission autorisées
Le
traitement des données reçues par chaque PIC impose une vitesse de
transmission parfaitement connue. On ne peux pas traiter (mettre en
attente et envoyer) des données à la vitesse de 19200 bauds si les PICs
s'attendent à recevoir des données à un autre rythme. C'est pourquoi il
faut pour chaque PIC spécifier la vitesse des données qui lui arrivent
dessus. Cette configuration s'effectue grâce aux micro-interrupteurs
(micro-switches) DSW1 (premier PIC) et DSW2 (deuxième PIC), selon la
table de correspondance suivante.
Vitesse |
DSWx-0
(RA0) |
DSWx-1
(RA1) |
DSWx-2
(RA2) |
1200 |
0 |
0 |
0 |
2400 |
0 |
0 |
1 |
4800 |
0 |
1 |
0 |
9600 |
0 |
1 |
1 |
19200 |
1 |
0 |
0 |
31250 (MIDI) |
1 |
0 |
1 |
38400 |
1 |
1 |
0 |
Non défini |
1 |
1 |
1 |
Remarques :
-
En théorie la vitesse spécifiée peut être différente pour les
deux
PIC, un des deux pouvant très bien traiter des données à 9600 bauds
pendant que l'autre traite des données à 19200 bauds. Mais la sortie
unique délivrerait dans ce cas des trames opérant à des vitesses
différentes et à ma connaissance il n'existe pas beaucoup de circuits
récepteurs capables de traiter des données à des vitesses
différentes sans reconfiguration logicielle ou matérielle. Dans la
pratique donc les vitesses spécifiées pour les deux PIC seront
identiques.
- La position des switches de configuration de la
vitesse n'est lue qu'au moment de la mise sous tension du système et
n'est donc pas prise en compte si elle est changée alors que le système
est déjà sous tension.
- Pour une application en merger MIDI ou pour
une application RS232 où vous savez d'avance que la vitesse des données
sera toujours la même, inutile d'installer les switches, que vous
pouvez remplacer par des ponts de soudures (straps) permanents.
Logiciel du PIC
Sera disponible quand ça fonctionnera.
Circuit imprimé
Non réalisé.