otto richter
13.06.2010, 09:15
Hallo da draußen,
ich habe ein Board mit einem ATMega1284 unter BASCOM...9.9. Es funktioniert soweit auch alles.
Jetzt habe ich einen SoftUart #5 ist mit
Open "comd.4:9600,8,N,1" For Input As #5
initialisiert.
Wenn ich im Hauptprogramm eine Abfrage der Seriellen Schnittstelle mit inkey(#5) mache, funktioniert diese nur manchmal.
Baudrate, RS232-Treiber-IC, Terminal-Einstellungen etc. sind in Ordnung, es geht ja auch, aber eben nur manchmal.
Der Code in der Do - Loop - Haupt-Schleife:
Do
If Inkey(#5) <> 0 Then ' Zeichen da ?
Print #6 , "Zeichen da!"
Else
Print #6 , ".";
End If
waitms 10
loop
Wenn ich Daten über das Terminal an #5 schicke werden diese nur manchmal erkannt (="Zeichen da!"). Meist wird jedoch der Tastendruck ignoriert und das Programm sendet ein ".".
Je häufiger bzw. schneller ich die inkey()-Abfrage mache, durch verkleinern der wait-Zeit, desto höher die "Trefferrate".
Dem Handbuch nach ist inkey() die einzige Möglichkeit bei einm Soft-Uart 'rauzubekommen, ob ein Zeichen angekommen ist. Input #5 kann ich nicht machen, da das Programm dann an der Abfrage wartet.
Das Daten-Eingangsregister des Soft-Uarts scheint von irgend jemandem überschrieben zu werden, oder gibt es so etwas wie ein "Receiver-Ready-Flag"
Hat jemand eine Erklärung?
Vielen Dank
Otto Richter
ich habe ein Board mit einem ATMega1284 unter BASCOM...9.9. Es funktioniert soweit auch alles.
Jetzt habe ich einen SoftUart #5 ist mit
Open "comd.4:9600,8,N,1" For Input As #5
initialisiert.
Wenn ich im Hauptprogramm eine Abfrage der Seriellen Schnittstelle mit inkey(#5) mache, funktioniert diese nur manchmal.
Baudrate, RS232-Treiber-IC, Terminal-Einstellungen etc. sind in Ordnung, es geht ja auch, aber eben nur manchmal.
Der Code in der Do - Loop - Haupt-Schleife:
Do
If Inkey(#5) <> 0 Then ' Zeichen da ?
Print #6 , "Zeichen da!"
Else
Print #6 , ".";
End If
waitms 10
loop
Wenn ich Daten über das Terminal an #5 schicke werden diese nur manchmal erkannt (="Zeichen da!"). Meist wird jedoch der Tastendruck ignoriert und das Programm sendet ein ".".
Je häufiger bzw. schneller ich die inkey()-Abfrage mache, durch verkleinern der wait-Zeit, desto höher die "Trefferrate".
Dem Handbuch nach ist inkey() die einzige Möglichkeit bei einm Soft-Uart 'rauzubekommen, ob ein Zeichen angekommen ist. Input #5 kann ich nicht machen, da das Programm dann an der Abfrage wartet.
Das Daten-Eingangsregister des Soft-Uarts scheint von irgend jemandem überschrieben zu werden, oder gibt es so etwas wie ein "Receiver-Ready-Flag"
Hat jemand eine Erklärung?
Vielen Dank
Otto Richter