-
        

Ergebnis 1 bis 3 von 3

Thema: Aus Udr-Buffer Zeichen auslesen

  1. #1

    Aus Udr-Buffer Zeichen auslesen

    Anzeige

    Hallo Zusammen,

    ich habe ein kleines Problem. Ich möchte mit einem Interrupt Zeichen über die Serielle empfangen. Das klappt soweit auch ganz gut. Doch habe ich irgendwie Probleme mit dem Puffer, soviel weiss ich schon.

    Denn wenn ich 255, 2, 100 sende, dann bekomme ich als Ausgabe "B:255-2" anstatt "B:2-100". Mein Atmel nimmt immer ein Zeichen vorher rein, nicht das gerade gesendete. So als ob eine Schlange im Buffer ensteht.
    Die 255 sende ich immer am Anfang um zu wissen, dass nun ein neuer Befehl kommt.
    Udr ist ja ein Puffer. Wie funktioniert denn der? Wird der nicht leer wenn ich den auslese bzw. wie kann ich sicher meine Werte auslesen.

    Danke für Hilfe

    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 2400
    
    'Serial Datenempfang
    Dim S As String * 2 At &H60
    Dim B(3) As Byte At &H60 Overlay
    Dim N As Byte
    S = ""
    N = 0
    
    On Urxc Onrxd
    
    Enable Urxc
    Enable Interrupts
    
    Do
       If N = 2 Then                                            'Übernahme 
          If B(1) > 0 And B(2) > 0 Then
    'Übernahme wert für Servos
             B(1) = 0
             B(2) = 0
          End If
       End If
    
    Loop
    
    
    Onrxd:
       If Udr = 255 Then
          Udr = 0
          N = 0
          B(1) = 0
          B(2) = 0
       Else
          Incr N
          If N = 3 Then N = 2
          B(n) = Udr
          Print  " B:" ; B(1) ; "-" ; B(2)
       End If
    Return
    
    End

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    UDR ist eigentlich nur ein byte groß, dh ein neu reinkommendes zeichen überschreibt das vorherige...

    irgendwie versteh ich noch nicht so 100pro was du vorhast und wo genau dein problem lliegt...


    was ich mal so spontan versuchen würde wäre UDR einmal am anfang des interrupts in eine variable zu packen und dann damit weiterzurechnen...

  3. #3
    Gast
    Super danke das war der Casus Knacktus...

Berechtigungen

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