Hallo, ich habe im Moment einige Probleme mit dem CC430F5137 eine I2C-Verbindung auf zu bauen. Das Problem ist, dass das RXIFG nicht gesetzt und meine ISR nicht betreten wird. Nun habe ich in dem TI-Support Forum von dem (Mitarbeiter?) Jens-Michael-Gloss die folgende Antwort gefunden: In I2C mode, both, RXIFG and TXIFG are triggering the TX ISR. The RX ISR is used for status changes (start condition detected, NACK received etc.) It's easy to miss. Die Antwort stammt allerdings aus dem Jahre 2011, könnte also nicht mehr aktuell sein... Meine Frage also: Wo im aktuellen Datenblatt oder Family Guide finde ich diesen Hinweis? mfg
Jens-Michael G_r_oss ist kein TI-Mitarbeiter, aber postet viele hilfreiche Beiträge. Die Konfiguration der Interrupts wird im zu Deinem MSP430-Derivat passenden "Family User's Guide" beschrieben; gerade die von der USCI_B im I2C-Betrieb verwendeten Interrupts unterscheiden sich von Familie zu Familie teilweise erheblich ('F5438 beispielsweise verwendet separate Interrupts, während 'G2553 Interruptsharing betreibt). Für Dich interessant dürfte der Abschnitt 24.3.7 im "Family User's Guide" (slau259e) ab Seite 653 sein. Da steht
1 | The USCI has only one interrupt vector that is shared for transmission, |
2 | reception, and the state change. |
3 | USCI_Ax and USC_Bx do not share the same interrupt vector. |
... insofern liegt Jens-Michaels Beitrag etwas daneben, da es hier nur eine ISR für alles gibt. In Deinem Interrupthandler für USCI_B musst Du also alle möglichen Fälle auswerten. Hilfreich können auch hier die üblichen Codebeispiele von TI sein - http://www.ti.com/lit/zip/slac458, und hierin die Beispiele cc430x513x_uscib0_i2c_04.c bis _11.c
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.