Hall zusammen
ich versuche nun schon seit 2 Tagen die Kommunikation zwischen den beiden Controllern zum Laufen zu bringen und bin inzwischen dabei angelangt, dass ich direkt den Beispielcode aus dem Wiki (Twi Slave mit AVR-GCC) übernommen habe und um eine Ausgabe auf einem Display erweitert habe. Der funzt jedoch auch nicht.
Pull Ups (4,7k) sind auch eingelötet.
Hier noch der Code vom Master (Habe mal nur den Lesezugriff getestet)
Und der Code des SlavesCode:uint8_t byte1 = 100; uint8_t byte2 = 43; uint8_t byte3 = 44; int main(void) { HintergrundBeleuchtungAn(); lcd_init(LCD_DISP_ON); i2c_init(); // init I2C interface _delay_ms(1500); lcd_gotoxy(12,1); lcd_puts("Read"); if(!(i2c_start(SLAVE_ADRESSE+I2C_WRITE))) //Slave bereit zum lesen? { i2c_write(0x00); //Buffer Startadresse zum Auslesen i2c_rep_start(SLAVE_ADRESSE+I2C_READ); //Lesen beginnen byte1= i2c_readAck(); // Bytes lesen... byte2= i2c_readAck(); byte3= i2c_readNak(); // letztes Byte lesen, darum kein ACK i2c_stop(); // Zugriff beenden lcd_gotoxy(0,0); lcd_puts("SUCCES"); char temp[4]; lcd_gotoxy(0,1); lcd_puts(itoa(byte1, temp, 10)); lcd_gotoxy(4,1); lcd_puts(itoa(byte2, temp ,10)); lcd_gotoxy(7,1); lcd_puts(itoa(byte3, temp ,10)); } else { lcd_gotoxy(0,1); lcd_puts("ERROR"); /* Hier könnte eine Fehlermeldung ausgegeben werden... */ } if ((byte1 != 100)||(byte2 != 43)||(byte3 != 44)) { lcd_gotoxy(0,1); lcd_puts("ERROR_"); /* Die Bytes wurden nicht korrekt übertragen und wieder gelesen! */ } for(;;); }
SetPercentage ist eine Funktion die mir Werte zwischen 0 und 100 auf einer LED leiste ausgibtCode:init_twi_slave(SLAVE_ADRESSE);; for(uint8_t i=0;i<i2c_buffer_size;i++) { i2cdata[i]=10+i * 3; } while(1) { for(uint8_t i=0;i<i2c_buffer_size;i++) { SetPercentage(i2cdata[i]); _delay_ms(500); } }
Weiß jemand was ich falsch mache ?







Zitieren

Lesezeichen