Forum: Mikrocontroller und Digitale Elektronik MSP430 / I2C Senden UND Empfangen


von nico (Gast)


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

von ramgeis (Gast)


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

von nico (Gast)


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

von Jörg S. (joerg-s)


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.

von ramgeis (Gast)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.