- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 14

Thema: Verständnisproblem Bitoperator mit µC-PIN

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2016
    Beiträge
    15
    In Binär sieht das dann so aus:

    PD5 ist ja "5".

    DDRD |= (1<<PD5)

    DDRD ist z.B. 10000011.

    (1<<PD5) ist 00000001 um 5 stellen nach links verschoben ergibt das: 00100000

    Hier wird diese Operation durchgeführt: "|="

    ODER-Verknüpfen:

    10000011
    00100000
    ---------
    10100011 -> Dieser Wert wird nun in das DDRD-Register gespeichert.


    Alter Wert von DDRD-Register = 10000011 (Hier ist der PIN: 0,1,7 als Ausgang definiert).
    Neuer Wert von DDRD-Register = 10100011 (Hier ist der PIN: 0,1,5,7 als Ausgang definiert).

    Hab ich das so richtig aufgeschrieben?


    MfG

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    Ja das stimmt so.

    MfG Hannes

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Zitat Zitat von AVRprogger91 Beitrag anzeigen
    Hab ich das so richtig aufgeschrieben?
    Soweit ist alles richtig.

    Es gibt noch einen kleinen Haken an der Geschichte:
    Bei manchen µCs ist das DDR-Register nicht lesbar, bzw. liefert immer den Wert 0xFF beim Lesen. Dies ist vor allem bei µCs welche auf der Motorola-Architektur aufbauen verbreitet.

    Das steht aber im Datenblatt des µCs.

    z.B. https://www.renesas.com/en-eu/doc/pr...40fb0fdda5d9dc
    Seite 117: P1DDR kann nur geschrieben werden.


    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    und um die Verwirrung zu komplettieren:

    XMega Prozessoren haben zu den DIR registern auch noch ein DIRSET und DIRCLR
    die ersparen dir das verodern, du schreibst einfach in das SET oder CLR register das bit hinein dass du setzen oder löschen möchtest
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2016
    Beiträge
    15
    Das heißt, das was ich im Beitrag: "#5" geschrieben habe kann ich nicht bei einem ATxMega anwenden sondern nur bei einem ATmega?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Zitat Zitat von AVRprogger91 Beitrag anzeigen
    Das heißt, das was ich im Beitrag: "#5" geschrieben habe kann ich nicht bei einem ATxMega anwenden sondern nur bei einem ATmega?
    Doch, direkt auf dem DIR-Register funktioniert es so wie in #5 beschrieben.

    Zusätzlich ist aber die ODER-Verknüpfung auch als Hardware vorhanden.

    DIR |= (1<<P5);
    funktionier auch auf dem xMEGA.

    Zusätzlich geht aber auch:
    DIRSET = (1<<P5);

    Zudem kann man über DIRSET auch mehrere Bits gleichzeitig setzen:
    DIR |= ((1<<P5)|(1<<P4)|(1<<P3));
    oder
    DIRSET = ((1<<P5)|(1<<P4)|(1<<P3));

    besonders das Zurücksetzen wird noch etwas vereinfacht
    DIR &= ¨(1<<P5);
    oder
    DIRCLR = (1<<P5);

    MfG Peter(TOO)
    Geändert von Peter(TOO) (20.12.2016 um 13:42 Uhr) Grund: Zwei Klammern vergessen
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    das spart wertvolle Rechentakte, vor allem beim Bitbanging! (Also wenn man irgend einen Bus in Software simuliert)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2016
    Beiträge
    15
    O.K.,

    das heißt beim xMega muss ich halt das Register: "DIR" statt "DDRx" verwenden, wenn ich es so machen will wie in meinem Beitrag #5.
    Dann funktioniert das genauso.

    Danke für die Hilfe!

    MfG

Ähnliche Themen

  1. [ERLEDIGT] SPI: Verständnisproblem
    Von schorsch_76 im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 17.09.2014, 18:18
  2. Verständnisproblem #define
    Von Arkon im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 24.01.2012, 12:39
  3. Syntax Verständnisproblem
    Von Rone im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 24.06.2009, 22:56
  4. Ladungspumpe - Verständnisproblem
    Von snipor im Forum Elektronik
    Antworten: 32
    Letzter Beitrag: 19.04.2009, 21:33
  5. ADC - Umrechnung - Verständnisproblem
    Von DIYLAB im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 16.03.2005, 21:06

Berechtigungen

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

Solar Speicher und Akkus Tests