Gast
#1479854
Hallo ich habe ein Problem mit meinem ATMega 128.
Ich arbeite mit BASCOM und über eine I2C Kommunikation.
Eigentlich will ich eine ganz simple Sache realisieren.
Master sendet, slave empfängt.
Ich möchte das Statusregister (TWSR) des Masters abfragen, ob sich nach
dem schicken der Adresse ein Slave gemeldet hat. Wenn ja sollte laut
Datenblatt im TWSR der Wert hex18 stehen. Sollte kein Slave ein ACK
zurück gesendet haben, müsste der Wert hex20 darin stehen.
Nun ist die Frage, wie ich am Master das TWSR nach jedem Vorgang
überprüfen kann.
I2Cstart
'TWSR überprüfen
I2Cwbyte Slave_Adresse
'TWSR überprüfen
I2Cwbyte Daten
'TWSR überprüfen
I2Cstop
Beim Slave überprüfe ich das TWSR, in dem ich in einer Interrupt Service
Routine den Wert prüfe. Nach jedem Schritt bekommt der Slave ja diesen
Interrupt. (Interner TWI Interrupt)
On Twi Slave_ISR
Enable TWI
Enable Interrupts
Nur beim Master scheint kein Interrupt zu kommen. Dort habe ich
On Twi Master_ISR
Enable TWI
Enable Interrupts
geschrieben und in Master_ISR: frage ich das TWSR ab. Darauf reagiert er
aber gar nicht.
Kann mir da jemand erklären, wie ich im Master ans TWSR komme und auf
den Inhalt reagieren kann?
MfG Ninnik