So, konnte den Fehler wieder hervorufen:
Das ist der normale Code der Wartefunktion
Code:
void Warten()
{
timecount=0;
while (1) { if (timecount>=50) break;}
}
und hier ist die Drehzahlüberprüfung eingebaut:
Code:
void Warten()
{
char x;
timecount=0;
x=0;
while (x<2)
{ if (timecount>=25)
{Messercheck();x++;}
}
}
(immer alle 0.25s, wie auch sonst im Programm)
Der Robi führt die ersten 5 Sekunden richtig aus = blinken einer Led nach dem einschalten mit dieser Wartefunktion.
Danach soll er auf GPS Empfang warten und zeigt dabei GPS Status, Uhrzeit und Datum an, erst wenn ein guter Empfang da ist werden die Motoren gestartet.
Dabei hängt er sich auf, mal kommt er noch dazu Uhrzeit und Datum anzuzeigen, meistens kommt aber nur die Überschrift "Warten auf GPS" und es wird kein GPS Signal ausgewertet oder angezeigt. Oder die Uhrzeit udn Status ändern sich nicht mehr, daher sicher keine richtige Ausführung des Programmes mehr.
In dieser Phase wird weder die Wartefunktion noch der Messercheck verwendet, die Wartefunktion wie gesagt nur vorher fürs blinken der LED.
Messercheck ist als static inline definiert, wird schon oft im Programm verwendet, und ich hab es gerade an noch einer anderen Stelle im Programm eingefügt ohne dass es den normalen Ablauf stört.
Warum stört es also ausgerechnet hier den kompletten Programmablauf und an anderer Stelle nicht?
LG!
Lesezeichen