-         
Ergebnis 1 bis 2 von 2

Thema: I2C Bus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.10.2011
    Beiträge
    51

    I2C Bus

    Anzeige

    Hallo!

    Beim Implementierung einer I2C Kommunikation zwischen einem Mega328P und einen PCF8574 bin ich auf folgende Eigenheit gestoßen. Die ich mit nicht ganz erklären kann.

    Beschreibe ich das TWCR so: TWCR |= (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

    Funktioniert die Kommunikation nicht.

    Beschreibe ich das TWCR so: TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

    funktioniert die Kommunikation.

    Der Unterschied liegt in diesem Zeichen "|".

    Syntaxmäßig erkenne ich jetzt keinen Unterschied da ja nach beiden Operationen die gleichen Werte in TWCR stehen. Vermutlich scheitert es daran, dass bei "|=" das TWINT-Flag nicht richtig zurückgesetzt wird. Jedoch weiß ich nicht was jetzt syntaxmäßig oder ausführungstechnisch der Unterschied liegt.

    Vielleicht hat ja schon wer eine ähnliche Erfahrung damit gemacht und hat eine Begründung gefunden.

    Mfg
    fulltime

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    697
    Hallo fulltime,

    bei der Anweisung

    TWCR |=

    wird der Inhalt von TWCR ausgelesen und mit den Werten rechts vom = verodert und wieder zurückgeschrieben. Das bedeutet, wenn noch ein anderes Bit in diesem Register gesetzt ist, bleibt es gesetzt.

    Die Anweisung

    TWCR =

    schreibt direkt deine Werte rechts vom = in das Register und löscht eventuell vorher gesetzte andere Bits.

    Viele Grüße,
    Andreas

Berechtigungen

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