mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik union werte auslesen


Autor: µC-nob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich hab mir eine union definiert, und möchte jetzt dessen Werte 
auslesen.
typedef struct
{
  unsigned Pin2     : 1;  
  unsigned Pin4     : 1;  
  unsigned Pin5     : 1;  
  unsigned Pin6     : 1;  
  unsigned Pin7     : 1;  
  unsigned Pin8     : 1;  
  unsigned InEnable  : 1;  
  unsigned dummy1   : 1;  
} tNPZugriff;

union 
{
  char Data;
  tNPZugriff Val;
} NPStruct;

Auslesen wollte ich das so:
if ((NPStruct.Data & 0x01 ) == 1) //Pin2
if ((NPStruct.Data & 0x02 ) == 1) //Pin4
if ((NPStruct.Data & 0x04 ) == 1) //Pin5

ich dachte jede meine Variablen hätte eine bitposition

--> Pin2 = 2^0
--> Pin4 = 2^1
--> Pin5 = 2^2 usw...

ist aber wohl nicht so??
Klappt nähmlich nicht, wies ich oben machen wollte??

Wie kann ich in so einem Fall sie Variablen richtig auslesen??


Danke

Gruß

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µC-nob wrote:
> ist aber wohl nicht so??
> Klappt nähmlich nicht, wies ich oben machen wollte??

Mit Verlaub, aber "Klappt nicht" ist ne absolut besch*ssene 
Problembeschreibung.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> unsigned Pin2     : 1;
unsigned was ?

Abgesehen davon ist es nicht vorgeschrieben, in welcher Reihenfolge bei 
einem Bitfeld die Elemente abgelegt werden. Der AVR-GCC legt z.B. das 
erste Element an der niedrigstwertigen Position ab, aber wie andere 
Compiler das machen, steht quasi in den Sternen.

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,  µC-nob,

Das Geschreibene erscheint mir nicht falsch.

Zur hinreichenden Anamnese fehlt mir noch:
1. wie ist "unsigned" definiert? Es müßte "unsigned char" heißen.
2. mit welchen Befehlen steuerst Du den Port an,
3. mit welchen Befehlen liest Du ihn aus.


ciao
Wolfgang Horn

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.