Hallo zusammen,
ich habe ein ähnliches Problem. Ich arbeite mit einem XMega128, an den 4
I2C-Porterweiterungs-ICs PCA9555 angeschlossen sind. Diese ICs schalten
bzw. lesen über Optokoppler 24V-Spannungspegel. Die 24V-Spannung wird
extern eingespeist. Die Erweiterungs-ICs werden aber von der internen
Boardspannung gespeist, an der auch der XMega hängt.
Nun passiert immer wieder, wenn die externe 24V-Spannung ausgeschaltet
und eingeschaltet wird, dass sich der XMega aufhängt. Er bleibt an der
Programmzeile hängen, in der abgefragt wird ob die TWI-Übertragung
abgeschlossen wurde. Dabei bleibt der Busszustand laut BUSSTATE-Bits auf
BUSY stehen und RXACK-Bit, das ja den zuletzt empfangenen
acknowledge-Bit anzeigt, ist gesetzt, es wurde folglich NACK empfangen.
Nun, das TWI-Modul im XMega hat ja die TIMOUT-Bits, die, wenn gesetzt,
den Bus wieder in den IDLE-Zustand zurückbringen, wenn er "lange"
inaktiv bleibt. Ich habe diese Bits jetzt auch gesetzt, aber das
Programm bleibt trotzdem hängen und wartet bis der Bus wieder frei ist.
Veilleicht hatte ja jemand von euch ein solches Problem und könnte mich
wissen lassen, wie er das gelöst hat. Ich wäre für die Hinweise seht
dankbar!