Hallo,
ich möchte an einem ATnega1284P, der in ein NETIO-Board eingebaut ist, beide serielle Schnittstellen (Hardware) in Betrieb nehmen.
Die erste Schnittstelle ist sowieso über einene MAX232 und eine 9pol-Dsub-Buchse herausgeführt, also kein Problem.
Die zweite serielle Schnittstelle liegt am Pin D2 (Ich brauche nur RxD, will also mit dem Prozessor Signale lesen, die ich vom PC schicke, diese lasse ich mir dann über die erste serielle Schnittstelle wieder ausgeben.)
Der Sourcecode ist eigentlich ganz unspektakulär, aber leider kommen nicht die richtigen Zeichen an.
Wenn Ich die Dsub-Stecker so verbinde, dass das Signal direkt in die Schnittstelle 1 eingespeist wird, kommen die richtigen Buchstaben zurück. (Im Programm muss dazu bei ischarwaiting und inkey das "#2" rausgenommen werden)
Wenn ich jedoch in die Schnittstelle 2 einspeise (elektrisch habe ich die Pegelwandlung sowohl mit einem Transistor als auch mit einem MAX232, wie hier beschrieben http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART versucht), werden in beiden elektischen Varianten die Buchstaben wie folgt (reproduzierbar) zerhächselt:
Ein gesendetes A wird zu 95 (statt 65), B -> 47, C -> 94, D -> 23, E->93, F-> 46, G-> 92
Ich glaube eigentlich nicht, dass es an der Schaltung liegt, weil beide Schaltungen denselben Fehler liefern. Habe nur ein Selbstbauoszi (Mikrofonoszi Laptop), die Signale schauen eigentlich brauchbar aus.
Mir gehen die Ideen aus, was ich falsch gemacht haben könnte oder wie ich weiter testen kann.
Bin für jeden Hinweis dankbar!
Thomas
ich möchte an einem ATnega1284P, der in ein NETIO-Board eingebaut ist, beide serielle Schnittstellen (Hardware) in Betrieb nehmen.
Die erste Schnittstelle ist sowieso über einene MAX232 und eine 9pol-Dsub-Buchse herausgeführt, also kein Problem.
Die zweite serielle Schnittstelle liegt am Pin D2 (Ich brauche nur RxD, will also mit dem Prozessor Signale lesen, die ich vom PC schicke, diese lasse ich mir dann über die erste serielle Schnittstelle wieder ausgeben.)
Der Sourcecode ist eigentlich ganz unspektakulär, aber leider kommen nicht die richtigen Zeichen an.
Code:
$regfile = "m1284pdef.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 9600
$baud1 = 9600
Dim B As Byte
Config Com2 = 9600 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Enable Interrupts
Config Serialin1 = Buffered , Size = 20
Open "COM2:" For Binary As #2
Print "Start"
Do
Print "Loop: test serial port 2"
If Ischarwaiting(#2) = 1 Then
B = Inkey(#2)
Print B ; "-" ; Chr(b) ; " from port 2"
End If
Waitms 500
Loop
End
Wenn Ich die Dsub-Stecker so verbinde, dass das Signal direkt in die Schnittstelle 1 eingespeist wird, kommen die richtigen Buchstaben zurück. (Im Programm muss dazu bei ischarwaiting und inkey das "#2" rausgenommen werden)
Wenn ich jedoch in die Schnittstelle 2 einspeise (elektrisch habe ich die Pegelwandlung sowohl mit einem Transistor als auch mit einem MAX232, wie hier beschrieben http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART versucht), werden in beiden elektischen Varianten die Buchstaben wie folgt (reproduzierbar) zerhächselt:
Ein gesendetes A wird zu 95 (statt 65), B -> 47, C -> 94, D -> 23, E->93, F-> 46, G-> 92
Ich glaube eigentlich nicht, dass es an der Schaltung liegt, weil beide Schaltungen denselben Fehler liefern. Habe nur ein Selbstbauoszi (Mikrofonoszi Laptop), die Signale schauen eigentlich brauchbar aus.
Mir gehen die Ideen aus, was ich falsch gemacht haben könnte oder wie ich weiter testen kann.
Bin für jeden Hinweis dankbar!
Thomas