mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Abfrage von Bits in Register


Autor: Großes Fragezeichen (112)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sind folgende beiden Codezeilen gleichwertig?

if((IRQ_MASK != RX_START_EN))
{}


if(!RX_START_EN)
{}

mfg und danke!

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um zu sagen ob diese beiden Zeilen gleichwertig, oder wenigstens korrekt 
sind, benötige ich mehr Informationen. Ohne weitere Informationen, wie 
diese Masken aussehen, würde ich sogar raten, dass es "if(IRQ_MASK & 
RX_START_EN)" heißen müsste.

Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein.

if (5 ist ungleich 6) {}
if (nicht 6) {}

Autor: Großes Fragezeichen (112)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ooohh. Ich glaub du hast mich damit schon auf die richtige Fährte 
geführt.

Das Bit RX_START_EN befindet sich im Register IRQ_MASK.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Großes Fragezeichen schrieb:
> Das Bit RX_START_EN befindet sich im Register IRQ_MASK.

Wenn RX_START_EN nur eine Bitnummer ist, dann solltest du dieses Macro 
verwenden, um eine 1 an die richtige Stelle zu schieben. Mit einem AND 
kann man dann einfach abfragen, ob das entsprechende Bit gesetzt ist

if(IRQ_MASK & (1 << RX_START_EN))

Wenn RX_START_EN eine Bitmaske ist, dann entfällt natürlich das shiften.

if(IRQ_MASK & RX_START_EN)

Eine weitere Möglichkeit wäre auch, dass RX_START_EN ein Makro ist, 
welches direkt das richtige Bit extrahiert. In diesem Fall fällt sogar 
die Verknüfung it IRQ_MASK weg.

if(RX_START_EN)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobi schrieb:

@TO
Langer Rede kurzer Sinn:
Mann muss sich ansehen wie RX_START_EN definiert ist. Die Schreibweise 
mit alles Grossbuchstaben, deutet darauf hin, dass es sich dabei um ein 
Makro handelt und das muss es in irgendeinem Header File geben.

Also dieses Makro suchen, ansehen. Dann weiß man mehr.

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.