Hey,

ich stehe gerade mal wieder total auf dem Schlauch. Ich arbeite zur Zeit an der UART Empfangsroutine für meinen CAN-Knoten. Der Spaß soll über Interrupt laufen, damit das Hauptprogramm nicht gestört wird.
Der Einfachheit halber habe ich ein einzelnes Testprogramm geschrieben (und weil es viel zu lange dauert das CAN Programm dauernd neu zu flashen.....).
Das Testprogramm sieht so aus:

Code:
'Mikrocontroller
$regfile = "m32def.dat"
$crystal = 16000000


'Stacks
$hwstack = 250
$swstack = 250
$framesize = 500


'UART konfigurieren
$baud = 9600


Dim Zeichen As Byte
Dim Eingabe As String * 50
Dim Eingabe_overlay(50) As Byte At Eingabe Overlay
Dim Buffer_laenge As Byte




Declare Sub Auswertung


'Interrupts einstellen
Enable Interrupts                                           'Interrupts aktivieren                                        '                                                                                                                         'Sprungmarke für INT0
On Urxc Uart_recieved
Enable Urxc
Enable Int0




Do






Loop
End




Sub Auswertung


   Local Laenge As Byte
   Local Count As Byte


   Laenge = Len(eingabe)
   Print Eingabe;


   Select Case Eingabe
      Case "?" : Print "Fragezeichen"
      Case Else : Print "Falsch"
   End Select


   For Count = 0 To Laenge
      Eingabe_overlay(count) = 0
   Next


End Sub




Uart_recieved:


   Zeichen = Udr


   If Zeichen = 13 Then
      Eingabe = Eingabe + Chr(13)
      Incr Buffer_laenge
      Auswertung
   Elseif Zeichen > 13 Then
      Eingabe = Eingabe + Chr(zeichen)
      Incr Buffer_laenge


      If Buffer_laenge > 49 Then
         Auswertung
      End If


   End If


Return
Das Empfangen usw. klappt auch soweit ganz gut. Nur bei der Select-Case Abfrage macht das Programm nicht das was es soll.
Ich sende via Hexterminal ein 3F(?) und ein 0D(CR) und es wird mir auch mir durch den Print-Befehl auch zurück gegeben.
Allerdings gibt das Hexterminal auch 46 61 6C 73 63 68 0D 0A aus, was laut ASCII-Tabelle ein "Falsch" + CR + LF ist.
Aber wieso wird mir kein "Fragezeichen" zurück gegeben wenn ich ein 3F und 0D sende?
Hier ist nochmal der Screenshot vom Terminal:

Bild hier  


Weiß da jemand Rat?
Danke schon mal und einen schönen ersten Advent.