Hallo, ich habe folgende "struct". Diese möchte ich in einer for Schleife bit für bit auslesen, um die Daten an ein Schieberegister zu senden. "" KEIN SPI MODE ""
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
Gruß Siegfried
|
Anzeige
|
struct in for schleife auslesenHallo, ich habe folgende "struct". Diese möchte ich in einer for Schleife bit für bit auslesen, um die Daten an ein Schieberegister zu senden. "" KEIN SPI MODE ""
Gruß Siegfried Siegfried Saueressig schrieb: > Diese möchte ich in einer for Schleife bit für bit auslesen, Geht so einfach über einen Index nicht, weil du ja kein Array von Bits definiert hast... Du kannst ja mal sowas probieren:
Aber ich bin mir da nicht so sicher, was die Bitreihenfolge angeht...
:-o
> my_lcd_wd_c2704m_1hnn my_LCD_DATA LcdData;
Das erhält von mir das Attribut: ABSOLUT UNLESERLICH
Wieviele Unterschiede sind in den folgenden Zeichenketten:
my_lcd_wd_c2704m_1hnn my_LCD_DATA LcdData;
my_lcd wd_c2704m 1hnn_my_LCD DATA_LcdData;
Gast
#1854310
Geht leider nicht, Arrays von Bitfeldern sind in C nicht erlaubt. Ansonsten ist das üble Bitfrickelei, denn du weißt nicht, wie und wo und warum der Compiler Füllbits und -bytes einfügt. Lothar Miller schrieb: > unsigned LCD_D[8]: 1; // Das wird sicher nicht gehen. Hallo, wie Sven geschrieben. non-integral type bitfield detected Gruß Siegfried Und wie bereits geschrieben, das geht so nicht. Mach's so wie es alle anderen auch machen: In einer Schleife aus _byte (oder Data; warum geibt es da eigentlich 2 mal denselben Member in der union) und einer Maske das jeweils interessierenden Bit herausholen. In der Schleife die Maske um jeweils 1 Stelle nach links (oder rechts; ja nachdem welche Reihengfolge man haben will) verschieben und gut ists. Das ganze ist ein 4 Zeiler. Das lohnt nicht, sich da groß den Kopf zu zerbrechen, wie man da unbedingt ein Bitfeld zum Einsatz bringt. Manchmal sind die klassischen Verfahren einfach die besten. Wer die klassiche Schreibweise zur Extraktion einen Bits beherrscht * hat keine Schwierigkeiten durch unerwarteten Overhead beim bitweisen Zugriff in ein Byte, der bei Bitfeldern durch die Syntax verschleiert wird. * weiß sich in allen Lebenslagen zu helfen. Karl heinz Buchegger schrieb: > Wer die klassiche Schreibweise zur Extraktion einen Bits beherrscht > * hat keine Schwierigkeiten durch unerwarteten Overhead beim > bitweisen Zugriff in ein Byte, der bei Bitfeldern durch die Syntax > verschleiert wird. Das ist auch der Grund, warum ich nach einem kurzen Blick auf diese C-Syntaxelemente solche Bitfelder gleich wieder aus meinem Repertoire entfernt habe. > * weiß sich in allen Lebenslagen zu helfen. Und kommt in einige nicht, aus denen er kein Entkommen mehr findet (z.B. ein 16-Bit Feld, das zwischen einem Little- und einem Big-Endian-Prozessor ausgetauscht wird...) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|