mikrocontroller.net

Forum: Compiler & IDEs Merkwürdiges Verhalten bei Befehlsauswertung


Autor: Fabian K. (fabi2607)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und was sendest du denn?

Autor: Fabian K. (fabi2607)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabian K. (fabi2607)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das kann ich unterschreiben.

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

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

Autor: Fabian K. (fabi2607)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, der Dreher war mir gar nicht aufgefallen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.