Moin alle,

Ich versuche mich hier schon seit längerer zeit an einem TWI Slave, basierend auf ienem ATmega16.
Das Datenblatt gibt ja Infos über die Adressregister, den TWI-Flag und weiteres, denoch habe ich bisher nur misserfolge zu verzeichnen.

Es geht darum, Daten von einem ATmega16 über TWI zu einem anderen ATmega16 zu senden. Die TWI_Mastersoftware auf dem einen mega16 läuft einwandfrei, so dass ich einen LM75 auslesen kann und einen M24C02 beschreiben kann etc.


Mein Code der im Anschluss gepostet ist hat nur zur folge, dass auf dem LCD des Slaves immer nur "10010000" zu sehen ist.

Code:
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"

#define Dev24C02  	0xA0      	// EEprom twi Adresse
#define LM75		0x90		// Temperatursensor twi Adresse

void twi_slave_init(void)
{
	TWAR = 0xCC;
	TWCR |= (1<<TWEN) | (1<<TWEA);
}


int main(void)
{
	uint8_t output;			
	unsigned char buffer[10];

	lcd_init(LCD_DISP_ON);					// LCD initialisieren
    twi_slave_init();                       // TWI Slave initialisieren



    while(1)
	{
		
		if(TWCR = 0b10000000);		//Wenn TWINT = 1, dann TWSR auslesen
		{
			output = TWSR;
		}

		lcd_clrscr();
		lcd_gotoxy(0,0);
		lcd_puts(itoa(output, buffer, 2));

		_delay_ms(300);
	}
}
Sehe ich das richtig, dass mein Fehler beim auslesen der TWINT Flag über die IF-Schleife ist?

Kann mir jemand sagen, wo der Fehler ist?


Gruss Jey