Forum: Mikrocontroller und Digitale Elektronik Atmega delay mit globalen Variablen


von Stefan I. (keinwitz)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

in meinem ATMEGA16-Programm verwende ich die Standardfunktion 
_delay_us(). Die Zeit soll über Variabeln verändert werden können. Diese 
Variabeln werden über Taster, die in einer ISR abgefragt werden 
verändert und neu berechnet (Periodenzeit tp, Dutycycle, ton).

Hier mein Problem: Verwende ich globale Variabeln (mit Zusatz 
"volatile") stimmen zwar die Werte der Variabeln (mit LCD-Display 
überprüft), jedoch nicht die Zeiten der _delay_us()-Funktion. Deklariere 
ich dagegen die gleiche Variablen mit den selben Rechnungen in meiner 
main-Funktion stimmen die Zeiten exakt.

Im Anhang findet ihr den Main-Source code. Gibt es von eurer Seite eine 
plausible Erklärung dafür?

(Ich verwende AVR Studio 4.18, Atmega16 16MHz ext. Quarz)

von Lukas K. (carrotindustries)


Lesenswert?

Stefan I. schrieb:
> Im Anhang findet ihr den Main-Source code. Gibt es von eurer Seite eine
> plausible Erklärung dafür?

Die delay Funktionen dürfte nicht mit Variablen als Parameter aufgerufen 
werden.

von Falk B. (falk)


Lesenswert?


von Stefan I. (keinwitz)


Lesenswert?

Vielen Dank für den Hinweis!

von Christian W. (cweckmann)


Lesenswert?

In diesem Fall wahrscheinlich unwichtig und längst bekannt, aber:

Die Benutzung der Standard-Delays mit Variablen bläht das hexfile 
tierisch auf, da der float-Teil aus den delay-Innereien mit reinkommt.

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.