Ich habe gerade mal an einer Funktion versucht einige Fehler auszuschließen, aber iwo seh ich gerade den Wald vor lauter Bäumen nicht.
Ich sende einen Befehl zB
Code: Alles auswählen
$<5#L1C1D0DUD2#>$<5#L1C2D0DUD2#>$<5#L1C3D0DUD2#>$<5#L1C4D0DUD2#>$<5#L1C5D0DUD2#>$<5#L1C6D0DUD2#>$<5#L1C7D0DUD2#>$<5#L1C8D0DUD2#>Wenn ich dies jedoch auf den Interrupt USART__RX laufen lasse, herhalte ich folgende Ausgabe.
Code: Alles auswählen
<5#L1C1DbDUDb#16>
<n#L1C1DbDUDb#16>
<T<SL1C4D2D�D#
<S>SL1C4D2D�D#
<S>SL1C4D2D�D#
<S>SL1C4D2D�D#
<S>SL1C4D2D�D#Ab der Zweiten Rückgabe scheint er Iwo die Daten zu verändern.
Das erste Zeichen nach der < sollte die 5 enthalten.
und wenn wir uns die Rücknahme mal anschauen, zieht sich der Fehler immer weiter.
Code: Alles auswählen
var
  RX                         : array [0..19] of char;
procedure USART__RX; public Name 'USART__RX_ISR'; interrupt;
var
  i                          : uint16;
begin
  asm cli end;
  i                          := 0;
// Read Data from Master
  if (UARTReadChar = WakeUp) then begin
    repeat
      RX[i]                  := UARTReadChar;
      inc(i);
      until (i = 19) or (RX[i-1] = '>');
  end;
// Send Data to Terminal as controll
  UARTSendChar(RX[0]);
  UARTSendByte(byte(RX[1]) + 48);                                               // Datenbyte in Lesbaren Text umwandeln (Overload-Funktion)
  UARTSendChar(RX[2]);
  UARTSendChar(RX[3]);
  UARTSendByte(byte(RX[4]) + 48);
  UARTSendChar(RX[5]);
  UARTSendByte(byte(RX[6]) + 48);
  UARTSendChar(RX[7]);
  UARTSendByte(byte(RX[8]) + 48);
  UARTSendChar(RX[9]);
  UARTSendChar(RX[10]);                                                         // Zahl bedarf hier keine umwandlung, da im Teststring größer 48dec
  UARTSendChar(RX[11]);
  UARTSendByte(byte(RX[12]) + 48);
  UARTSendChar(RX[13]);
  case byte(RX[14]) of                                                           // Umwandlung der länge in Lesbaren Wert.
       12: begin UARTSendString('12'); end;
       13: begin UARTSendString('13'); end;
       14: begin UARTSendString('14'); end;
       15: begin UARTSendString('15'); end;
       16: begin UARTSendString('16'); end;
       17: begin UARTSendString('17'); end;
       end;
  UARTSendChar(RX[15]);
  UARTSendChar(#10);
  UARTSendChar(#13);
  asm sei end;
end;
begin
  asm cli end;
  Set_IO;
  UARTInit(true);
  for a := 0 to 19 do RX[a]  := char($00);
  asm sei end;
  repeat
        until 1 = 0;
end.Ich Wünsche euch einen angenehmen Restsonntag und bleibt Gesund.


 gehandhabt habe?
  gehandhabt habe?
 
  
  
  Verein
Verein 
 Links
Links Suche
Suche