- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Bedeutung bit() bitSet()

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Hi,

    wie Du schon richtig erkannt hast, liefert bit(PRTIM1) den Wert 8 zurück.
    Darüber, dass Bit 3 im Register PRR dann 8 sein soll, musste ich in der Tat etwas schmunzeln...
    Ein Bit kann nämlich nur den Wert 0 oder 1 annehmen.

    Zur Erklärung stellt man am besten den Wert 8 als 8-stellige Binärzahl dar (8-Stellig, weil das Register 8 Bit groß ist):
    0b00001000

    Dabei steht die 0 ganz links für das Bit 7 (PRTWI) und die 0 ganz links für das Bit 0 (PRADC).
    Demnach wird also mit dem Befehl
    PRR = bit(PRTIM1) das Bit PRTIM1 im Register PRR auf 1 gesetzt und alle anderen Bits des Registers auf 0.

    Der Befehl
    ADCSRA &= ~ bit(ADEN)
    ist etwas komplizierter. Fangen wir zunächst wieder mit bit(ADEN) an: das gibt den Binärwert 0b10000000.
    Die Tilde (~) ist ein Operator, der das Einerkomplement der Binärzahl bildet. Anders gesagt: aus 0 wird 1 und aus 1 wird 0.
    Damit erhalten wir für ~bit(ADEN) 0b01111111.

    Nun zum Operator &=
    Hierbei handelt es sich um eine Kurzschreibweise. ADCSRA &= x; ist dasselbe wie ADCSRA = ADCSRA & x;
    Setzt man alles zusammen erhält man ADCSRA = ADCSRA & 0b01111111;
    Das Ergebnis der Operation ist, dass nur das Bit 7 (ADEN) auf 0 gesetzt wird und ansonsten jedes Bit des Registers so bleibt, wie es ist.

    bitSet(PRR, PRADC); hast Du ja schon richtig interpretiert.

    Gruß,
    askazo

  2. #2
    erstmal vielen Dank für die Erklärung, ich glaub jetzt hab auch ich es verstanden.
    mir war nicht klar das der Befehl bit() etwas setzt, dachte er liefert nur etwas zurück.Heist er fragt ab wo das bit steht und setzt es 1 und alle anderen 0.

    Also mit bit kann ich das ganze Register auf einmal neu setzen.
    Mit bitSet kann ich nur ein Bit (das angegebene)auf 1 setzen.

    Gruß

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Naja, Du hast es fast verstanden...

    Der Befehl bit() alleine setzt gar nichts - er ermittelt aus der Position eines Bits seine Wertigkeit. bit(0) liefert 1 zurück, bit(1) liefert 2, bit(2) liefert 4 usw...
    Das setzem erfolgt letztendlich nur durch die Zuweisung PRR =

    PRR = bit(3);
    macht also dasselbe wie
    PRR = 8;

    Aber ansonsten war's richtig.

Ähnliche Themen

  1. Atmel µC xxx-AU/Cu/Aur/Cur - Bedeutung?
    Von Cysign im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 30.07.2016, 17:36
  2. Begriffe und deren Bedeutung
    Von crAy0nd0pe im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 30.12.2007, 13:58
  3. BitSet Eclipse Plugin
    Von Surveyor im Forum Open Source Software Projekte
    Antworten: 22
    Letzter Beitrag: 23.10.2007, 22:41
  4. Bedeutung von Kondensatordaten??
    Von Löli im Forum Motoren
    Antworten: 6
    Letzter Beitrag: 13.03.2006, 13:25
  5. Bedeutung der verschiedenen AVR PIN´s?
    Von Frank im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 27.01.2004, 16:00

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test