#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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.