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.