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
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 | if(i < 2) |
2 | {
|
3 | continue; |
4 | rs232_send("Error!\n"); |
5 | }
|
Nach dem continue wird nichts mehr ausgeführt (rs232_send())
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.