Ne, bei mir klemmts, ich bin noch voll im Liniensuchwahn. Es soll selbstverständlich OdometrieData() heisen, alles andere hat hier keinen echten Sinn. Sowas passiert, wenn man den Code ungetestet auf die Reise schickt...
Also ich habe bei meinen Odo-Spielereien unter anderem festgestellt, dass wenn man die BackLEDs anhat und dann mehrfach den Odo-Wert ausliest, sich bei der ersten Lesung Fehler ergeben. Ich weis nicht, ob das Licht der LED oder das automatische Umschalten der BackLEDs auf die ODO-LEDs den Effekt verursacht. Der Sleep() wartet bis die LED richtig brennt bzw. aus ist. Hier nun der bearbeitete Code:
Code:
#include "../inc/asuro.h"
#include "../inc/asuro.c"
int main(void) {
unsigned int data1[2], data2[2], data3[2];
Init();
do{
BackLED(OFF,OFF);
Sleep(200);
OdometrieData(data1);
OdometrieData(data2);
SerWrite("\n\n\rBackLEDs(OFF,OFF)",20);
SerWrite("\n\rErste Messung: ",18);
PrintInt(data1[0]);
SerWrite(" - ",3);
PrintInt(data1[1]);
SerWrite("\n\rZweite Messung: ",18);
PrintInt(data2[0]);
SerWrite(" - ",3);
PrintInt(data2[1]);
BackLED(ON,ON);
Sleep(200);
OdometrieData(data1);
OdometrieData(data2);
OdometrieData(data3);
SerWrite("\n\rBackLEDs(ON,ON)",17);
SerWrite("\n\rErste Messung: ",18);
PrintInt(data1[0]);
SerWrite(" - ",3);
PrintInt(data1[1]);
SerWrite("\n\rZweite Messung: ",18);
PrintInt(data2[0]);
SerWrite(" - ",3);
PrintInt(data2[1]);
SerWrite("\n\rDritte Messung: ",18);
PrintInt(data3[0]);
SerWrite(" - ",3);
PrintInt(data3[1]);
}while (1);
return 0;
}
Entschuldigung nochmals für den schludrigen ersten Code.
Der "Fehler" tritt offensichtlich nur bei der ersten linken Lesung auf. Rechts ist der Effekt fast nicht zu erkennen (wenn man davon absieht, dass sich die Pegel insgesamt erhöhen!):
BackLEDs(OFF,OFF)
Erste Messung: 494 - 219
Zweite Messung: 494 - 219
BackLEDs(ON,ON)
Erste Messung: 783 - 366
Zweite Messung: 558 - 363
Dritte Messung: 558 - 363
Unerwarteterweise erhalte ich direkt nach dem Einschalten folgende Ausgabe:
BackLEDs(OFF,OFF)
Erste Messung:
267 - 663
Zweite Messung: 505 - 668
BackLEDs(ON,ON)
Erste Messung: 750 - 713
Zweite Messung: 569 - 712
Dritte Messung: 569 - 712
BackLEDs(OFF,OFF)
Erste Messung: 509 - 670
Zweite Messung: 509 - 670
BackLEDs(ON,ON)
Erste Messung: 751 - 713
Zweite Messung: 569 - 712
Dritte Messung: 569 - 712
BackLEDs(OFF,OFF)
Erste Messung: 508 - 670
Zweite Messung: 508 - 670
BackLEDs(ON,ON)
Erste Messung: 751 - 713
Zweite Messung: 570 - 712
Dritte Messung: 570 - 712
Wenn die Wertänderung größer als z.b. 200 ist sollte funktionieren solange keine "Ausrutscher" auftauchen.
Schönes Ostern-WE noch
mic
Lesezeichen