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
und was sendest du denn?
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.
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.
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.
das kann ich unterschreiben. Davon abgesehen macht das wenig Sinn:
1 | |
2 | |
3 | |
4 | |
5 | |
Nach dem continue wird nichts mehr ausgeführt (rs232_send())
Danke, der Dreher war mir gar nicht aufgefallen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.