Forum: Compiler & IDEs Merkwürdiges Verhalten bei Befehlsauswertung


von Fabian K. (fabi2607)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

Ich bin seit einiger Zeit dabei ein ferngesteuertes Uboot zu bauen. Als 
Hauptprozessor verwende ich einen Atmega 644P.

Nun tritt aber ein merkwürdiger Fehler auf, wenn ich Funkbefehl sende.
alle Funkbefehle funktionieren problemlos, nur wenn ich die 
Motorengeschwindigkeit sende, bekomme ich erst die gesendete 
Geschwindigkeit und das ACK Signal zurück, aber danach antwortet er auf 
alle Befehle nur noch mit "Unknown".

Ich habe den Quellcode angehangen, die fehlerhafte Funktion ist nav().

Ich hoffe ihr könnt mir helfen, ich bin wirklich am verzweifeln.
Danke im voraus,
Fabian

von Klaus W. (mfgkw)


Lesenswert?

und was sendest du denn?

von Fabian K. (fabi2607)


Lesenswert?

Ich sende zum Beispiel "ls200q" um die Motorgeschwindigkeit des linken 
Motors einzustellen. Daraufhin bekomme ich auch 200ACK zurück, wie es 
sein sollte.
Wenn ich aber danach "t0q" sende um die Testsequenz zu starten bekomme 
ich nur ein "Unknown" zurück.
Alle anderen Befehle bis auf "rs???q" und "ls???q" funktionieren. Nur 
wenn ich einen der beiden Befehle eingebe funtioniert keiner mehr.

von Stefan E. (sternst)


Lesenswert?

Weil du bei einer 3 stelligen Zahl in rs232_send_num die Returnadresse 
auf dem Stack überschreibst, und der µC daher beim Return im Nirwana 
landet.

von Fabian K. (fabi2607)


Lesenswert?

Danke für die schnelle Hilfe, jetzt funktioniert es,
ich hatte vergessen das ich auch noch die \0 am Ende eines Strings habe.
Naja, aus Fehlern lernt man.

von Klaus W. (mfgkw)


Lesenswert?

das kann ich unterschreiben.

Davon abgesehen macht das wenig Sinn:
1
    if(i < 2)
2
    {
3
      continue;
4
      rs232_send("Error!\n");
5
    }

Nach dem continue wird nichts mehr ausgeführt (rs232_send())

von Fabian K. (fabi2607)


Lesenswert?

Danke, der Dreher war mir gar nicht aufgefallen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.