- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 4 von 4

Thema: Daten aus UART verwerfen, wenn unvollständig

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    06.04.2006
    Beiträge
    48

    Daten aus UART verwerfen, wenn unvollständig

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich habe mal wieder ein Problem.

    Ich habe eine kleine Steuerung gebaut, nichts aufregendes. Ich benutze einen Tiny2313, der nach empfangen eines 3 Byte langen Protokolls Port B schalten soll. Hier mal der wichtigste Teil des Codes
    Code:
    Config Watchdog = 200
    
    On Urxc Onrxd
    Enable Urxc
    
    Dim c as byte, v as byte, x as byte 'c = Kommando, v = Wert, X = Xor Checksumme
    
    Config Portb = Output
    Portb = 0
    Start Watchdog
    Enable Interrupts
    
    Do
     Reset Watchdog
    Loop
    
    Onrxd:
     inputbin C,V,X
     if c = $01 then
      Portb = V
     end if
    Return
    end
    Der Code ist noch länger aber um diesen Teil geht es mir.

    Im Grunde funktioniert das (fast) so wie ich möchte. Wenn der Befehls-Frame nicht komplett oder in 200ms gesendet wird, wird durch den Reset der Frame verworfen und auf einen neuen gewartet.

    Jetzt das Problem: Ich möchte das dabei der Zustand des Portb erhalten bleibt. Hat jemand einen Tip wie ich das umsetzen kann?

    Wäre schön wenn jemand helfen kann.

    Gruß Frank

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    44
    Beiträge
    689
    In der Watchdog-Schleife das Recive-Complete Bit abfragen. Wenn das 1 ist in die 3Byte Empfangsrotine Springen und nen Timer starten der nach 200ms nen Interrupt bring. Wenn die 3 Bytes richtig da sind Timer stoppen und gut wenn nicht kommt der Interrupt und da kannst Du ja sagen das er wieder zurüch zur Watchdog-Schleife soll.

    MfG

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Du mußt ja ohnehin den Empfang checken (Prüfsumme?), dann brauchst du ja ggf. die Daten nur zu ignorieren.
    Mit Watchdog hast du halt jedesmal einen Reset.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    06.04.2006
    Beiträge
    48
    PicNick:
    Ja, ich überprüfe die Daten ja auch. Aber wenn nicht alle Bytes beim µC ankommen komme ich nie an diese Stelle, weil der Watchdog den Controller zurücksetzt.

    Rofo88
    Ehrlich gesagt verstehe ich nicht was du meinst. Wenn ich in der Empfangs-ISR ein Flag setzte, springt er doch auch erst aus der Routine, wenn ich die 3 Bytes Empfangen habe, oder?
    Oder habe ich das ganz falsch verstanden?

    Gruß Frank

Berechtigungen

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

LiFePO4 Speicher Test