Mit I2CNDAT will ich, wie unten gezeigt, 3 Byte an den EEPROM absenden. Wähle ich I2CNDAT größer 2, bleibt das Programm hängen. Was könnte ich falsch machen? MfG Wolfgang void I2C_Init (void) { P3SEL |= 0x0A; // Assign I2C pins to module U0CTL |= I2C + SYNC; // schaltet UART auf I2C bzw. auch SPI U0CTL &= ~I2CEN; // Recommended init procedure -schaltet I2C ein I2CTCTL |= I2CSSEL1; // SMCLK-- I2CTCTL = Übertragungsregister mit // SMCLK laden, I2CWORD=0 --> byteweise I2CTCTL&=~I2CRM; U0CTL |= I2CEN; // Enable I2C } void schreib_24LC(void) //Adresse 0 1 0 1|0 A2 A1 A0|RW ; 0x51 bei A1=1; // 0101 0010 { I2CSA = ADRESSE_24LC; I2CNDAT = 0x03; U0CTL |= MST; // Master mode I2CTCTL |= I2CSTT+I2CSTP+I2CTRX; while ((I2CIFG & TXRDYIFG) == 0);// Wait for transmitter to be ready I2CDRB = 0x01; //Adresse Byte 1 while ((I2CIFG & TXRDYIFG) == 0); I2CDRB = 0x06; //Adresse Byte 2 while ((I2CIFG & TXRDYIFG) == 0); I2CDRB = 0xAB; // Datenbyte while ((I2CTCTL & I2CSTP) == 0x02);
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.