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
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
Wenn ich das Programm neu lade und die Variablen direkt über I2C Bus abfrage, haben sie den Wert 101.
Nachdem ich das Gerät ausgeschaltet habe und nochmals einschalte, stehen in diesen Variablen wieder 100.
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;
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...
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.
Lesezeichen