Minifriese
07.07.2007, 14:12
Moin moin!
Ich lasse zwei (später mehr) ATmegas über TWI kommunizieren. Da ich beim debuggen häufig Resets erzeuge, nämlich immer beim Laden neuer Software, ist mir aufgefallen, daß der TWI-Bus etwas seltsam reagiert. Wenn ich den Slave resette (der in meinem Fall vom Master regelmäßig gepollt wird), funktioniert der Bus hinterher sofort wieder. Wenn ich aber den Master resette, muß ich hinterher den Slave ebenfalls resetten, sonst hängt der Bus sich auf.
Gibt es da ein System bzw. Spezifikationen, was passiert, wenn man Geräte am Bus abschaltet/zuschaltet oder wenn man die Busleitungen bei laufendem Bus mit (unter Spannung stehenden) neuen Teilnehmern verbindet?
Im TWI-Manual von AVR steht glaube ich nur, daß für ordnungsgemäßen Betrieb alle Teilnehmer angeschaltet sein müssen. Ob der Bus tolerant auf "online" angesteckte Teilnehmer reagiert, steht dort nicht, oder?
Ich plane jetzt, einen I/O-Pin des Masters zum Reset-Eingang des Slaves zu verdrahten, damit der Master beim "Hochfahren" den Slave resetten kann. Das würde das Problem hoffentlich umgehen, was meint ihr?
Ich benutze übrigens die internen Pullups im Master für den TWI-Bus und die normale Geschwindigkeit (100kHz).
Gruß,
Nils
Ich lasse zwei (später mehr) ATmegas über TWI kommunizieren. Da ich beim debuggen häufig Resets erzeuge, nämlich immer beim Laden neuer Software, ist mir aufgefallen, daß der TWI-Bus etwas seltsam reagiert. Wenn ich den Slave resette (der in meinem Fall vom Master regelmäßig gepollt wird), funktioniert der Bus hinterher sofort wieder. Wenn ich aber den Master resette, muß ich hinterher den Slave ebenfalls resetten, sonst hängt der Bus sich auf.
Gibt es da ein System bzw. Spezifikationen, was passiert, wenn man Geräte am Bus abschaltet/zuschaltet oder wenn man die Busleitungen bei laufendem Bus mit (unter Spannung stehenden) neuen Teilnehmern verbindet?
Im TWI-Manual von AVR steht glaube ich nur, daß für ordnungsgemäßen Betrieb alle Teilnehmer angeschaltet sein müssen. Ob der Bus tolerant auf "online" angesteckte Teilnehmer reagiert, steht dort nicht, oder?
Ich plane jetzt, einen I/O-Pin des Masters zum Reset-Eingang des Slaves zu verdrahten, damit der Master beim "Hochfahren" den Slave resetten kann. Das würde das Problem hoffentlich umgehen, was meint ihr?
Ich benutze übrigens die internen Pullups im Master für den TWI-Bus und die normale Geschwindigkeit (100kHz).
Gruß,
Nils