mikrocontroller.net

Forum: Compiler & IDEs Bitmanipulation mit Konstante


Autor: henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe derzeit ein etwas 'exotisches' Problem:

Ich habe verschiedene defines, mit der ich verschiedene Varianten einer 
Firmware auswählen kann.

Ich möchte mir nun ein Byte im Flash mit der bit-kodierten Variante 
anlegen.

Auf Basis von
#define SOUND_TO_LIGHT
#define ALT_COLORS
sollte nun ein Byte im Flash mit dem Wert von beispielsweise 0b01001000 
entstehen.

Ich habe schon mit Konstanten und und defines experimentiert - komme 
aber mit der Umwandlung nicht klar.

Es wäre nett, wenn einer einen Tipp hätte.


Viele Grüße,
Henne

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sowas?
const ee_version ... = 0
#ifdef SOUND_TO_LIGHT
    | (1 << 0)
#endif
#ifdef ALT_COLORS
    | (1 << 6)
#endif
;

oder sauberer:
#ifdef SOUND_TO_LIGHT
#define HAVE_SOUND_TO_LIGHT 1
#else
#define HAVE_SOUND_TO_LIGHT 0
#endif

#ifdef ALT_COLORS
#define HAVE_ALT_COLORS 1
#else
#define HAVE_ALT_COLORS 0
#endif

const ee_version ... = (HAVE_SOUND_TO_LIGHT << 0) | (HAVE_ALT_COLORS << 6);

oder direkt die Masken definieren.

Autor: henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johann:
Deine zweite Variante hat mir die Augen geöffnet - Vielen Dank :-)

Bei dem Taggen meiner Firmwares habe ich allerdings festgestellt, dass 
ich ein älteres Programm unverändert nicht mehr kompilieren kann, da ich 
zwischenzeitlich WinAVR zur Unterstützung eines neueren AVRs geupdated 
hatte und nun der Code zu groß ist. Ich geh hier mal auf die Suche, um 
das hoffentlich wieder in den Griff zu bekommen..


Viele Grüße,
Hendrik

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.