Experimentiere mit dem TWI bzw. I2C. Habe eine I2C-LCD-Display mit PCF8574-Portexpander an Port D des Atmegas128 angeklemmt und möchte nun testen, ob die Kommunikation klappt. Dazu habe ich aus dem Datenblatt des Atmega das C-Example genommen:
1 | i2cSetBitrate(100); |
2 | |
3 | cli(); |
4 | TWCR=(1<<TWINT) | (1<<TWSTA) | (1<<TWEN); |
5 | while (!(TWCR & (1<<TWINT))); |
6 | TWDR= 0x78 & 0xFE; |
7 | TWCR = (1<<TWINT) | (1<<TWEN); |
8 | while (!(TWCR & (1<<TWINT))); |
9 | TWDR=0x00; |
10 | TWCR = (1<<TWINT) | (1<<TWEN); |
11 | while (!(TWCR & (1<<TWINT))); |
12 | TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO); |
Damit müßten alle Portpins auf 0 gesetzt werden. Wenn ich aber an den Pins des LCD-Displays messe (die mit dem Portexpander-Baustein verbunden sind), sind RS, R/W, E sowie D5 auf High Potenzial. Der Rest Low. Hat jemand noch eine andere Möglichkeit, die TWI-Funktion zu testen?