Forum: Mikrocontroller und Digitale Elektronik Repeated START (I2C)


von ArGr (Gast)


Lesenswert?

Hallo!

Bei Kommunikation des MSP-430 mit einem Sensor muss ich die
RESTART-Option verwenden, da der Sensor keine STOP-Sequenz zwischen
Schreib- und Lesebefehlen akzeptiert. Das klappt bei mir aber nicht, es
wird nicht vom Senden auf Empfangen umgeschaltet (TXRDYIFG bleibt '1'
und RXRDYIFG - '0').

Hatte vielleicht jemand das ähnliche Problem?

Danke!



(mein Code:

P3SEL |= 0x0a;                            // Assign I2C pins to module
U0CTL |= I2C + SYNC;                      // Switch USART0 to I2C mode
U0CTL &= ~I2CEN;                          // Disable I2C
I2CTCTL = I2CRM + I2CSSEL_2;              // SMCLK + RESTART
I2CSCLH = 0x01;                           // High period of SCL
I2CSCLL = 0x01;                           // Low period of SCL
I2CSA = addr;                             // Slave address
U0CTL |= I2CEN;                           // Enable I2C, 7 bit addr,

U0CTL |= MST;          // Master mode
I2CTCTL &= 0xfd ;        // Set STOP-bit low
I2CTCTL |= I2CTRX + I2CSTT;       // transmit
while ((I2CIFG & TXRDYIFG) == 0);      // Wait for T. to be ready
I2CDRB = data;

I2CTCTL &= 0xf5;         // receive mode
I2CTCTL |= I2CSTT ;
while ((I2CIFG & RXRDYIFG) == 0);    // Wait for R to be ready
I2CTCTL |= I2CSTP;
read_val = I2CDRB;
)

von Bernhard S. (bernhard)


Lesenswert?

Hallo ArGr,

ich habe jetzt verzwefelt versucht im Datenblatt nachzuschauen

http://www.datasheetcatalog.net/cgi-bin/helo.pl?text=MSP430&action=Search

Konnte aber nirgens einen Hinweis auf TWI / I2C und TXRDYIFG finden?


Bernhard

von arc (Gast)


Lesenswert?

Aus dem 430x1xx UG: "I2CRM must be reset to generate a RESTART
condition." d.h. für mich, daß das ganze nur dann funktioniert, wenn
es wie in der Application Note gemacht wird (Längen im I2CNDAT und
Daten im ISR übertragen)

http://www-s.ti.com/sc/psheets/slaa208/slaa208.zip
In I2Croutines.c ist u.a. EEPROM_RandomRead

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.