Hallo! Wird beim TWI der Interrupt im Slave Modus nur ausgelöst, wenn die Slave Adresse stimmt oder wird zuerst allgemein der Interrupt ausgelöst und dann erst die Adresse kontrolliert? Danke für Antworten! mfg Andi
Soweit ich mich erinnere wird der TWI Interrupt (assume AVR Mega) bei jeder Aktion aufm Bus ausgelöst. Du musst in deiner ISR das Statusregister TWSR auswerten, um die entsprechenden Reaktionen durchzuführen.
Bei den Megas mit voller TWI unterstützung wird zwar nach jedem vollständigen Byte ein Interupt ausgelöst, wenn man jedoch als Slave auf eine neue Nachricht vom Master wartet so generiert die Address Match Unit erst bei Adressübereinstimmung (ausnahme General Call) mit TWAR einen Interupt. Dieser Interupt kann dann sogar die MCU aus dem Sleep Modus aufwecken.
Jo, ich habe nicht genau gelesen ;-) Ich meinte natürlich, dass in dem Fall, wenn die Addresse stimmt bzw. ein General Call vorliegt, trotzdem mehrere Interrupts ausgelöst werden. Es muss auf jeden Fall das Statusregister ausgelesen werden, da der Inhalt des Datenregisters abhängig von der jeweils verursachenden Kondition ist.
Die ganz neuen Megas haben sogar glaub ich die Möglichkeit auf Adressgruppen als Slave Address zu triggern.
Danke! Ich habe einen Mega 8 und einen Mega 16! Wie schauts bei denen aus? Bekomme ich nur einen Interrupt wenn die Slaveadresse stimmt? mfg Andi
Hmmm... und was hindert dich daran diese Frage durch Lesen des M16/M8 Datenblattes (kapitel Address Match Unit und Control Unit) dir selbst zu beantworten?
Danke - habs aber zuerst nicht gefunden im Datenblatt! Stimmt es, dass er jedesmal einen Interrupt auslöst (hätte ich aus dem Datenblatt gelesen)? Danke mfg andi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.