MSP430 / I2C Senden UND Empfangen

Gast #882670
Lesenswert?

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
Gast #882799
Lesenswert?

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
Gast #882809
Lesenswert?

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
#882966
Lesenswert?

>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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren