Hallo,
ich habe ein sehr merkwürdiges Problem. Es geht einfach darum, dass ich zu Debugzwecken einen Wert an den PC schicken möchte sobald sich dieser ändert. Eigentlich keine große Sache, wie man auch am Code sieht. Dummerweise ändert sich der ausgegebene Wert (input_diff) ohne mir ersichtlichen Grund auf absolut unrelaistische Werte, sobald ich den Vegleich auf Änderung mache. Kommentiere ich die IF-Zeile und die Klammern aus, bekomme ich zwar eine endlose Flut an Werten geschickt, es ist aber kein einziger dabei, der unplausibel ist.
Code:
volatile int input_diff;
volatile unsigned char tempstring[10];
volatile int last = 0;
// Irgendwo in der Hauptschleife:
if (last != input_diff)
{
last = input_diff;
itoa( input_diff,tempstring,10);
USARTSendLine(tempstring);
}
Ich kann mir das absolut nicht erklären, woher dieser Nebeneffekt kommt. Die Variable input_diff wird nur in der Hauptschleife, also vor der Abfrage auf Änderung, gesetzt. Kann ein Interrupt während des Vergleichs soviel Choas anrichten, dass der Inhalt einer Variablen, die im Interrupt überhaupt nicht genutzt wird, geändert wird?
Lesezeichen