-         

Ergebnis 1 bis 2 von 2

Thema: Inkey(#5)-Abfrage bei SW-Uart funktioniert nur manchmal

  1. #1

    Inkey(#5)-Abfrage bei SW-Uart funktioniert nur manchmal

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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

    Code:
    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:

    Code:
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    26
    Beiträge
    601
    Hi,

    das Problem ist so weit ich das beurteilen kann, dass er das Zeichen
    nicht erkennen kann, wenn er in der waitms ist. Umgehen könntest du das
    Eingangssignal auf nen Interruptport setzt, und er dann in eine ISR springt,
    in der er das Zeichen ausließt. Da der Softuart eine reine Softwarelösung
    ist, gibt es auch keine Receiver-Ready-Flags oder Dateninputregeister. Der
    Controller wartet an der Stelle Inkey() warscheinlich genau 1 Byte ab,
    wenn in der Zeit grade zufällig keins gesendet wird, kommt auch keins an.
    Grüße Furtion

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •