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();