Hallo Ich versuche gerade mit einen MSP430F2132 eine SmartBattery über I2C auszulesen. Dazu habe ich mir mal die Code-Samples bezüglich I2C angesehen und auch einige zum Laufen gebracht. Jedoch nur immer in eine Richtung. Das heisst soviel wie entweder ich bin Master mit dem uP und sende etwas an eine I2C Device, ich bin Master und empfange etwas von einer I2C Device, ich bin Slave und sende eine Antwort an einen Master oder ich bin Slave und empfange etwas von einem Master. Soweit so gut, immerhin ein Erfolg. Nun möchte ich aber gerne (als Master) ein Byte an eine I2C Device senden und danach die Antwort der Device auslesen. Dazu müsste ich ja nun zuerst senden und dann empfangen. Hier habe ich jedoch das Problem, dass in den Samples folgende Interruptfunktion: #pragma vector = USCIAB0TX_VECTOR __interrupt void USCIAB0TX_ISR(void){ } für beides Verwendung findet, also bei den Samples wo der Master sendet zum Senden und bei den Samples wo der Master empfängt zum Empfangen. Wie kann ich aber beides nutzen? Hoffe ich habe mich verständlich genug ausgedrückt. Danke und Gruss Nico
Hi, In deinem Fall bist Du immer der Master !!! Lese Dir mal die Tutorials bezüglich I2C durch. Hänge einfach mal ein normales I2C EEPROM dran und teste. Oft haben die I2C Hardwareblöcke auch Fehler !! Also immer zuerst die Fehlerbeschreibungen des Controllers lesen. Ich mache es immer zu Fuß, mit Bitbanging. Da hab ich die Kontrolle und schalte Fehler aus. Viel Spaß noch. Gruß Siegmar
hi danke für deine antwort. das ich dann der master bin ist mir schon klar, ich habe das mit dem slave nur zu testzwecken ausprobiert. wo gibt es denn ein gutes I2C tutorial? ich habe lange gesucht aber bin nicht fündig geworden. bei den code beispielen von TI ist leider keines für ein eeprom dabei, hast du ein solches? danke nico
>Wie kann ich aber beides nutzen? >Hoffe ich habe mich verständlich genug ausgedrückt. Also ich hab's nicht verstanden :) Mit den Interrupts beim Hardware I²C kenn ich mich jetzt auch nicht aus, aber egal ob du was als Master senden oder empfangen willst, gehört ja auch immer ein senden dazu (minimum senden der Adresse). Für die ersten Tests würde ich eh alles ohne Interrupts machen. Da dengelst du dann einfach Adresse und evt. Register Nr. raus und wartest einfach bis die Daten im Empfangsregister stehen.
Hallo z.B http://www.roboternetz.de/wissen/index.php/I2C http://www.sprut.de/electronic/pic/grund/i2c.htm http://de.wikipedia.org/wiki/I%C2%B2C auf www.msp430.com findest zu selbstverständlich Beispielcode für EEPROM Routinen. Wichtig ist halt, die Grundlagen verstanden zu haben. Interupts würde ich für den Anfang auch immer weglassen. Noch viel Spaß Gruß Siegmar
Wenn der Interruptvektor fuer RX und TX verwendet wird musst halt die IFGs (RXIFG TXIFG) abfragen. mfg Alex
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.