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