- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Timeout für SUART ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2006
    Beiträge
    10

    Timeout für SUART ?

    Anzeige

    Powerstation Test
    Ich habe ein Problem mit dem SUART.

    Ich sende alle 100ms zwei Zeichen zu einem Meßgerät. Das funktioniert ja auch noch. Jetzt kommt mein Problem.
    Die Antwort vom Meßgerät kann zwischen 0 und 10 Zeichen lang sein.
    Wenn ich nun den Input Befehl verwende, hängt sich das Programm auf.
    Gibt es eine Möglichkeit, die Schleife zu verlassen, wenn innerhalb von 5ms kein Zeichen mehr ankommt? Die Zeichenkette hat kein CR oder LF.
    Vieleicht gibt es ja auch eine andere Möglichkeit. Ich habe mir schon fast die Finger wund getippt aber noch keine dauerhaft funktionierende Lösung gefunden.
    Vieleicht hat ja jemand einen Beispielcode oder einen guten Tipp ?

    Vielen Dank im voraus

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    guck' mal in der Hilfe beim Befehl "Timeout"
    Wenn eine einstellbare Zeit lang nix kommt, verläßt er die Input Routine.
    Hab's selber noch nicht ausprobiert..


    Gruß
    Christopher

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2006
    Beiträge
    10
    Ist nett gemeint, aber der Befehl ist nur für den HW-UART gedacht.

    Danke für deine Mühe

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    sorry. habe ich falsch verstanden, ich dachte du hättest dich verschrieben:
    SUART = USART

    Gruß
    Christopher

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2006
    Beiträge
    10
    Danke für den Hinweis.
    Ich habe aber noch einen Fehler gemacht.
    Ich sende und empfange nicht Zeichen sonder Bytes.
    Deshalb kann ich auch nicht Inkey() verwenden.
    Es könnte ja eine Null gesendet werden.

    Danke für den Hinweis

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    du könntest in einem Timer eine Variable hochzählen lassen, die du bei jedem empfangenen Zeichen nullst.
    Erreicht die Variable einen bestimmten Wert (kein Zeichen mehr) , kannst du darauf reagieren.... Ach so, ja, BYTES , nicht Zeichen
    Du startest einfach direkt nach dem Input den Timer und wartest bis er den Wert erreicht hat.

    Gruß
    Christopher

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2006
    Beiträge
    10
    Habe ich schon probiert.
    Ich bekomme einen Interrupt und springe in die entsprechende Routine.
    Wenn ivh dann wieder zurück springe hänge ich wieder fest.

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    Wie sieht es mit ischarwaiting aus und dann mit inkey holen ?
    Das geht auch mit "0" und dem SW- UART.

    Gruß
    Christopher

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2006
    Beiträge
    10
    Das werde ich auf jeden Fall ausprobieren.

    Danke

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    So einfach ist das nicht.
    Ischarwaiting(#2) = 1
    Ruft den Fehler hervor: Error : 328 Not valid for SW UART

    Ich habe die Lösung für die Software UART ohne WAITKEY vor kurzem gepostet:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=17444

    Kurzfassung: Du musst RX mit INTx verbinden und INT auf eine fallende Flanke auslösen und GIFR beachten.
    Code:
    Int0_int:                                                   'Interrupt Handler For Int0
       S = Inkey(#2)                                          'get it from Soft UART
       Printbin S                                               'send to Hard UART
       Set End_flag                                             'Flag für Soft_Ischarwaiting()
       Gifr = Gifr Or &H40                                 'clear Flag Int0 !!!!!
    Return

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress