So, anbei die beiden entsprechenden Dateien (fürs erste).
In der Interruptroutine wäre die einzige Möglichkeit, wo schreiben auf diese variablen zugegriffen wird.
Diese Variable ist am Anfang mit 101 gesetzt
Wenn ich das Programm neu lade und die Variablen direkt über I2C Bus abfrage, haben sie den Wert 101.Code:extern unsigned char m_TargetSpeedLeft; // Speed to drive for the left wheel extern unsigned char m_TargetSpeedRight; // Speed to drive for the right wheel
Nachdem ich das Gerät ausgeschaltet habe und nochmals einschalte, stehen in diesen Variablen wieder 100.
Mit diesen Variablen habe ich einen ähnlichen Fehler. Hier sind die Positionsangaben plötzlich falsch, obwohl diese nur am Programmstart gesetzt werden. Werte von 10 springen plötzlich auf 314...Code:typedef struct _Coordiante { unsigned int x,y; // Coordinate position } Coordiante; extern volatile Coordiante m_StartPosition; extern volatile Coordiante m_EndPosition; extern volatile Coordiante m_ActualPosition;
Ich habe nochmals alle Vergleiche geprüft, ob ich den "klassischen Fehler" "=" statt "==" verwendet habe, konnte aber keinen Fehler finden.
Die einzige Routine, wo ich mit Pointer arbeite ist in der Interruptroutine des TWI Slaves.
Da ich die Variable ja über TWI einlese, könnte der Fehler hier sein, nur kann ich dort keinen Fehler sehen (nicht mehr sehen).
Gruss R.







Zitieren

Lesezeichen