www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einfach mal gesprungen.


Autor: BeamBot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

habe einen Code geschrieben. Die init()-Routine wird sauber 
abgearbeitet, danach soll er in die Hauptschleife ( while(1) ) springen 
und dort die erste Funktion, bei mir eine Tastenabfrage ausführen!

Macht er aber nicht!

Die ersten beiden Funktionen werden ( im Einzelschritt getestet ) 
einfach mal ausgelassen und sofort zur Ausgabefunkton ( ausPWM() ) 
gesprungen.

Codeausschnit der main()

int main (void) {


  init();                      // INITIALISIERUNGS AUFRUFEN


  // PROGRAMMABLAUF
  while(1)
  {

    vrFahrt();                  // FAHRTRICHTUNG PRÜFEN
    aus = gleisSPAN(ausalt, balt, a, b);  // BERECHNUNG DER AKTUELLEN 
GLEISSPANNUNG
    ausPWM(aus);                // ÜBERGABE GLEISSPANNUNG AN PWM
    pauseZEIT();                // WARTEZEIT BIS ZUM NÄCHSTEN AUSLESEN


  }


  return 0;

}

Klicke ich nun im Einzelschritt weiter durch, arbeitet er irgendwann 
danach mal die funktionen vrFahrt() und gleisSPAN() ab!?

Weiß jemand durch was so ein ungewollter Reihenfolgetausch ausgelöst 
werden kann? ( Hoffe ich hab das verständlich erklärt!? )
Der Compiler meldet übrigens keinen Fehler und gibt keine Warnung aus!

Hoffe auf Hilfe,

Grüsse

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du die Compiler Optimierung an? Das kann manchmal zu "seltsamen" 
Sprüngen im Debugger führen.
Schau dir den erzeugten Assemblercode an, der spricht die Wahrheit!

btw.
Sind das alles globale Variablen? Wenn ja, warum behandelst du sie wie 
lokale Variablen?

Gruß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BeamBot wrote:
> Der Compiler meldet übrigens keinen Fehler und gibt keine Warnung aus!

Schön für den unbekannten Compiler.
Und das unbekannte Target, unbekannten Debugger, unbekannte IDE usw. 
usw. usw.


Ich sach mal ausm Bauch heraus: M103-Fuse

Wenn der Tip nicht paßt, liegts an Dir, weil Du 0 Informationen gibst.


Ist es denn wirklich so eine große Zumutung, ein Posting wenigstens 
einmal zu lesen, ob damit ein anderer überhaupt was anfangen kann?


Peter

Autor: BeamBot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Euch beiden.

Werde mal sehen wie ich das hinbekomme.

Beambot

P. S. Habe die Variablen global, weil ich sie sonst in AVR Studio 4 
nicht beobachten kann ...

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.