Also auf der Arbeit soll ich eine Box bauen mit folgenden Eigenschaften:
2x RS232 zum PC (main und aux)
3x Anschlüsse für Barcodescanner mit jeweils 2x RS232
ein paar Ein- u. Ausgänge für die Scanner
ich möchte das man einen von den 3 Barcode-Scannern auswählen kann der dann mit dem PC verbunden wird. Ich habe die schaltung schon mit kleinen Relais aufgebaut ist aber nicht so das wahre.
Jetzt meine Frage: ist es zu aufwändig es mit einen PIC zu machen?
hab jetzt kein schaltplan da, ich möchte im groben nur wissen ob man z.B. einen 1 zu 3 Umschalter für RS232 Verbindungen mit einem PIC verwirklichen kann, dass heißt an einem PIN gehen Daten vom Scanner rein und wahlweise aus Pin 2,3 oder 4 wieder raus zum PC.
Ich habe selber sowas noch nicht gemacht, aber theoretisch sollte es gehen, weil man ein Portpin an anderen kopieren kann. Das mussen quasi gleichzeitig zwei Pins RX und TX kopiert werden, das auch kein Problem ist. Wenn der PIC mit 4 MHz arbeiten würde, die Verzögerung wird im µs Bereich liegen und sollte nicht stören. Die Umschaltung kann man z.B. mit 3 Tasten oder einem Schiebeschalter (braucht man keine Entprellung) realisieren. Der Code scheint ganz simpel zu sein. Es werden MAX232 pro RS-232 also bei 3 auf 1 Umschalter 4 St. benötigt, weil ein PIC nur 5V Signale umschalten kann.
also ich hab jetzt mal ein bild angehängt,
kann mir vielleicht jemand sagen welche Befehle ich dafür benutzen muss/kann?
Pins kopieren hört sich leicht an aber wie könnte der Programmablauf sein?
Und wie macht man die Umschaltung mit 3 Taster?
ich hoffe auf antworten sonst komme ich hier nicht weiter.
mfg
Marco
(an die nicht beschalteten Pins der MAX232 kommen die Schnittstellen der Barcode Scanner)
die oberen 3 MAX232 sind für die Barcode Scanner, der untere MAX232 ist für die PC-Verbindung
Prinzipiell könntest du eine Art Schleife machen, die überprüft welcher Knopf gedrückt wurde und dann entsprechend zu ner anderen Schleife springt.
Also in der Art:
BTFSS PortA,0 ;also falls die Taster an PortA hängen
GOTO USE1
BTFSS PortA,1
GOTO USE2
BTFSS PortA,2
GOTO USE3
Und das eventuell in jede Schleife einbaun
Die Schleifen wären dann so aufgebaut:
USE1
MOVFW PortB ;gesamten PortB nach W
ANDLW B'11110000' ;wir wollen ja nur die Pins<4:7> z. B.
MOVWF TEMP ;zur Ausgabe müssen die Werte noch in den unteren Bereich
SWAPF TEMP ;daher einfach in nen Temp Register kopieren und die oberen 4 Bit mit den unteren 4 vertauschen
MOVFW TEMP ;wieder zurück
MOVWF PORTC ;Ausgabe an PortC
GOTO USE1 ;Und wieder von vorne
Die anderen würde ich ähnlich aufbauen
Wobei ich jetzt davon ausgegangen bin, daß IC3a ein Input und IC1a ein Output is. (Du hättest dann etwa eine Verzögerung von 17 µs)
Wenn die Daten auch in die andere Richtung müssen, müßte man vorher die Ports auf Out/Input entsprechend umschalten und das selbe Spiel in die andere Richtung durchführen.
Hallo Marco85,
wozu nimmst Du für eine einfache Umschaltung einen PIC ?
Wenn Du sowieso auf TTL-Pegel runter mußt (mit dem MAX232), kannst Du auch den Multiplexer CMOS 4052 mit 2 x 4 Kanälen nehmen, da ist keine Software für erforderlich.
Ich wollte einen PIC benutzen da ich noch andere Signale schalten möchte, und für die Auswahltaster (die jeweils einen Scanner aktivieren) wären auch wieder Bauteile nötig.
Außerdem muss ich jetzt in der Ausbildung eh PIC-Programmierung lernen.
Mir is noch was eingefallen...
Es gibt doch bei dem RS232 Zeugs genau definierte Ein- bzw. Ausgänge, oder?
Wenn darüber Daten übertragen werden, wäre es vielleicht sinnvoller die einzelnen Bits abzufragen und entsprechend zu setzen und dann halt auch nur auf der einen Seite als Input zu setzen und auf der anderen Seite aus Output bzw. umgekehrt bei ner Leitung in die andere Richtung.
Also in etwa so:
BTFSS PORTB,0
GOTO $+4 ;bin mir ned ganz sicher vllt auch $+6 oder so
BSF PORTC,0 ;das GOTO soll eben hinter diesen Befehl springen
GOTO $+4
BCF PORTC,0 ;bzw. hinter diesen
Ich hoff, daß dir das halbwegs hilft?
Ich bin mir da zum Teil selber nicht ganz sicher, ob das so funktioniert...
Lesezeichen