Hallo Rolf, äh meine natürlich Hardest,
erst einmal ein herzliches Willkommen im Forum.
anguggen hab ich getan.Vll ist es aber doch mein Code... wer ihn mal anguggen will![]()
Die while()-Geschichte habt ihr ja schon zusammenbekommen.
Die 'spinnerten Momente', ja da liegst du richtig, es ist dein main()-Programm, welches das Problem erzeugt. Die Hardware können wir bestimmt ausschliessen.
Das main() läuft bei dir einmal von oben nach unten durch. Startet zwischendurch deine Funktionen und endet unten bei der }.
Das ist nicht gut, da die CPU dann Langeweile bekommt und ein bisschen rumspinnt.
2 Möglichkeiten führen zu einer Besserung.
1) Dein main() wird genau ein mal durchlaufen:
2) Oder Rolf wird senil und wiederholt immer alles:Code:int main(void) { Init(); //Ab hier beginnt Rolf zu "Leben" . . //miau RWARD(); Msleep(1000); STOP(); while (1); // <<<<<------ Hier wird die CPU geparkt. KOMA-Zustand // Wiederbeleben von Rolf nur noch mit aus- und einschalten moeglich. return 0; // Sieht ueberfluessig aus, verhindert aber ein waring beim Compiler. }
Ob dies schon ausreicht alle von dir beschriebenen Sonderlebensfunktionen zu beheben, weiss ich nicht genau. Vor allem die Taster-Funktion hat im Rolf so ihr Eigenleben. Aber ist es nicht genau das was du mit deinem Programm erreichen wolltest?Code:int main(void) { Init(); //Ab hier beginnt Rolf zu "Leben" //Morgenmassage senden SerPrint("\r\nMuah... muss ich aufstehen?\r\n"); while (1) // <<<<---- die Schleife der Wiederholung beginnen ... { //Rolf wartet erstmal ab erwarten(1); . . STOP(); } // <<<<---- ... und natürlich die Schleife zumachen. while (1); // Das ist zwar nun ueberfluessig, aber schuetzt vor // 'spinnenden Momenten', falls die Schleife oben durch einen // Programmfehler verlassen wird. return 0; }Ist es so nicht schon fertig?
Weiter viel Erfolg, vor allem Spaß und viel Geduld mit Rolf
wünscht euch Sternthaler







Zitieren

Lesezeichen