#define und Speicherplatz

Gast #285267
Lesenswert?
• ▲
▼
Hallo!

Ich möchte in meiner Header-Datei einige Defaultwerte per #define
setzen.
Z.B.

#define BASE_TIME 174

in meiner init() weise ich dann diesen Wert einer Variablen zu:

bt = BASE_TIME;
Ich möchte aber den Wert bt zwischenzeitlich ändern können (durch
PC-Kommunikation).

Dann mache ich z.B. folgenden Aufruf:

for (k=0; k< 5; k++) _delay_us(bt);

Das Problem:
Zwischen
for (k=0; k< 5; k++) _delay_us(bt);
und
for (k=0; k< 5; k++) _delay_us(BASE_TIME);

liegen 100 Byte Flash - und das bei jeder Nutzung von bt statt
BASE_TIME! Die Nutzung von BASE_TIME ist viel effizienter.


Warum?

Gruß
Markus
Moderator Persönliche Seite #285269
Lesenswert?
• ▲
▼
> Zwischen
> for (k=0; k< 5; k++) _delay_us(bt);
> und
> for (k=0; k< 5; k++) _delay_us(BASE_TIME);

> liegen 100 Byte Flash

Ja klar, und wahrscheinlich doppelt so viel Zeit wie du wirklich
warten wolltest.

Die delay-Funktionen können prinzipbedingt nur mit zur Compilezeit
feststehenden Konstanten ordentlich funktionieren.  Siehe letzter
Absatz in der Einleitung in

http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html

(Sorry, Unterstriche in der URL, die musst du cut&pasten.)

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