Ich glaube das Problem liegt hier:
i2c_start_wait(SLAVE_ADRESSE+I2C_WRITE);
Die I2C-Adresse liegt in den oberen 7 Bit des ersten Byte, es sollte also heißen (SLAVE_ADRESSE << 1) | I2C_WRITE
MfG Klebwax
Hallo,
ich habe meinen Nunchuck wie hier angeschlossen:
https://www.roboternetz.de/community/threads/37522-Nunchuk-Bascom-Atmega8-Brauche-hilfe-)/page7?p=428731#post428731
rot - 3,3V
weis - GND
grün - SDA mit 10k pullup an 3,3V
gelb - SCL mit 10k pullup an 3,3V
Ich benutze die I2C Bibliothek von Peter Fleury Bus läuft auf 100khz.
mein quellcode:
Er giebt mir nur hallo aus, test1, test2 oder test3 nicht...Code:#define SLAVE_ADRESSE 0x52 int main(void) { uart_init(); sei(); uart_puts("Hallo!\r\n"); i2c_init(); // initialize I2C library i2c_start_wait(SLAVE_ADRESSE+I2C_WRITE); // set device address and write mode uart_puts("Test1\r\n"); i2c_write(0x40); i2c_write(0x00); i2c_stop(); // set stop conditon = release bus i2c_start_wait(SLAVE_ADRESSE+I2C_WRITE); // set device address and write mode uart_puts("Test2!\r\n"); i2c_write(0x00); i2c_rep_start(SLAVE_ADRESSE+I2C_READ); // set device address and read mode uart_puts("Test3\r\n"); uart_putc(i2c_readNak()); i2c_stop(); }
hat einer eine Idee woran das liegen kann?
gruß
Deko
Ich glaube das Problem liegt hier:
i2c_start_wait(SLAVE_ADRESSE+I2C_WRITE);
Die I2C-Adresse liegt in den oberen 7 Bit des ersten Byte, es sollte also heißen (SLAVE_ADRESSE << 1) | I2C_WRITE
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Hallo
Klebwax hat recht:
(Aus https://www.roboternetz.de/community...l=1#post357342)Code:'Const Nunchuck_write = &H52 ' Slaveadresse 'Const Nunchuck_read = &H53 Const Nunchuck_write = &HA4 ' Slaveadresse Const Nunchuck_read = &HA5
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
leider führt i2c_start_wait((SLAVE_ADRESSE << 1) | I2C_WRITE); oder i2c_start_wait(0xA4); zu keiner Besserung
Lesezeichen