Einfach mal gesprungen.

Gast #1153355
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
Gast #1153391
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ß
#1153451
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren