Hallo,
ich versuche seit kurzem mich mit I2C auseinanderzusetzten. Leider komme
ich damit im Moment nicht weiter. Ich benutzte einen Atmel Atmega 128
und will über ihn ein LCD ansteuern (Adresse 0x10). Das ganze läuft in
einer Software umgebung ab. Mein Code bleibt aber hängen, wenn er auf
das Ende der Übertragung von START wartet. Ich habe aber keine Ahnung
warum.
Hier ein kleiner Ausschnitt aus dem source an dieser Stelle.
Initialisieren
1 | PIND |= (1<< 0) | (1<< 1);
|
2 | PORTD |= (1<< 0) | (1<< 1); // Interne Pull-Up fuer SDA/SCL
|
3 | TWSR = 0; //Kein Prescaler
|
4 | TWBR = 84; //Setzen der Baudrate (eigentlich 84,16 aber abgerundet)
|
Problem tritt wie gesagt an der while schleife auf
1 | uint8_t twst;
|
2 |
|
3 | // send START condition
|
4 | TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
|
5 |
|
6 | // wait until transmission completed
|
7 | while(!(TWCR & (1<<TWINT)));
|
Im Anhang ist auch mein kompletter Source, wenn das hier nicht ausreicht
:)
Gruß,
meddins