Ok ich kann das Modul jetzt über I2C ansprechen, jedoch kommen nur komische zeichen bei dem i2c_readAck in der whileschleife raus, z.B. ö und das fortlaufend
ich habe mir mal die variable size ausgeben lassen und da steht immer die 74 drin, sieht nach der adresse des moduls aus auf der es liest, kann das nicht wirklich deuten 
Bitte um Hilfe
Code:
int main(void) {
uint16_t size;
uint16_t how_much = 10;
uint8_t device = 73+I2C_READ;
DDRC = 0xFF;
PORTC = 0x00;
PORTD &= ~(1<<DDD2);
Delay(1000);
// *** Diode blinken lassen ***
PORTD |= (1<<DDD2);
Delay(400);
PORTD &= ~(1<<DDD2);
CursorVisual(1);
ClearLcd();
UsartTx('>');
UsartPrint((uint8_t *) "Entwicklermodus ", 19);
Delay(4000);
PORTD |= (1<<DDD2);
Delay(1000);
PORTD &= ~(1<<DDD2);
i2c_start(device);
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
size = (uint16_t) i2c_readAck();
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
size <<= 8;
size |= i2c_readAck();
char zahlausgabe[sizeof(size)] ;
sprintf(zahlausgabe,"%i",size);
UsartPrint((uint8_t *) zahlausgabe,strlen(zahlausgabe));
Delay(10000);
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
if (size == 0 || size == 0xffff) {
} else {
while (size && how_much){
if (size == 1 || how_much == 1) {
Delay(400);
PORTD |= (1<<DDD2);
Delay(100);
PORTD &= ~(1<<DDD2);
Delay(400);
//buffi[w] = i2c_readNak;
UsartTx(i2c_readNak);
} else {
//buffi[w] = i2c_readAck;
UsartTx(i2c_readAck);
}
// Alle Zähler und Pointer weiterzählen
//w++;
//dest++;
//cnt++;
size--;
how_much--;
}
}
i2c_stop();
Lesezeichen