Hallo, ich entwickle eine I2C-Kommunikation von einem LPC2148 (Master) zu einem oder mehreren ATmega16 (Slaves). Dabei wird folgendes Protokoll verwendet: START SLA+W Befehls-Datenblock mit CRC senden START SLA+R Antwort-Datenblock mit CRC empfangen STOP Der erste Teil funktioniert, die CRC-Prüfsumme stimmt und der Befehl wird im Slave ausgeführt. Beim Antwort-Datenblock wird aber im Master das erste Byte zweimal empfangen. Es werden zwei Interrups im LPC2148 ausgelöst, der I2C-Status ist bei beiden Interrupts 0x58, es steht aber zweimal das zuerst vom Slave gesendete Byte im Datenregister. Das ist beim Debuggen mit Haltepunkt in der Interruptroutine so, auch ohne Anhalten steht das doppelte Zeichen nachher im Empfangspuffer. Am Slave kann es nicht liegen, alle TWI-Zustände und übertragenen Datenbytes werden zusätzlich über RS232 ausgegeben und sind korrekt. Gibt es da eine Besonderheit beim LPC2148, wodurch so etwas auftrten kann ? Im Errata-Sheet habe ich nichts gefunden und ich bin streng nach dem User-Manual vorgegangen. Dort sind die Zustände mit daraus folgenden Aktionen genau beschrieben. Gruß, Martin
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.