Forum: Mikrocontroller und Digitale Elektronik Einfach mal gesprungen.


von BeamBot (Gast)


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

von Gast (Gast)


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ß

von Peter D. (peda)


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

von BeamBot (Gast)


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 ...

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
Noch kein Account? Hier anmelden.