Forum: Mikrocontroller und Digitale Elektronik MSP430-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;
)

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.