Okay, demfall scheint es mir, als ob ich beim Auslesen eines Bytes das vom TWI kommt noch etwas falsch verstanden zu haben.
Das Byte dass ich auslesen will (welches vom Master kommt) wird doch im TWSR Register gepseichert, sobald der TWI-Flag kommt, oder?
Beim jetzigen Code steht jetzt immer 1100000 (ja, es sind nur 7 Bits) auf dem LCD des Slaves.
Hier nochmal mein aktueller Code:
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)
{
while(!(TWCR & 0b10000000)); //solange warten, bis was ankommt
output = TWSR;
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts(itoa(output, buffer, 2));
_delay_ms(300);
}
}
Lesezeichen