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.