So, ich denke so müsste es klappen. Der Compiler meldet keinen Fehler mehr ich hoffe nur, die Logik stimmt auch so.

Code:
typedef struct {
uint8_t min, sek, hour, date, mon, year, druck, feuchte, temp;
} Messung;
. . .
Messung aktMessung; 
Messung * adress; 
Messung * i;
...
int main() {
...
case 6: //Teil einer Eingabe Aufforderung
	uart_puts("Alle Werte aus dem EEPROM auslesen\r\n");
	adress = (Messung*) eeprom_read_word(0x00);
	for(i=(Messung*)0x02; i < adress; i++) {
	//Ich will die Werte solange auslesen, bis ich bei der letzten Eingetragenen Messung angekommen bin
	eeprom_read_block(&aktMessung, i, sizeof(Messung));
	//Ausgabe von aktMessung über uart... 
	//...
	}
break;
case 7: 
	uart_puts("EEPROM Zeiger reseten.\r\n");
	eeprom_write_word(0, ((uint16_t)(Messung*)0x02));
	/*Ist das so richtig, oder zeigt er dann wo falsch hin. Ich dachte mir, ich nehm 2 mal die breite der Struktur und dann muss dass ganze ja aber natürlich wieder zum uint16_t werden für die funktion. */
break;
//...
} // Ende main();
//...
void speichern() { //Speichert die Werte aus aktMessung in den EEPROM
	#if DEBUG  
	uart_puts("Alle Werte der letzten aktuellen Messung speichern.\r\n");
	#endif

	adress = (Messung*) eeprom_read_word(0x00);
	//Überprüfung ob noch Platz ist im EEPROM
	if( (uint16_t)adress < 60) { /*512 Byte im Speicher / 8Byte pro Struktur = 64. Sicherheitshalbe hab ich 60 genommen.*/
		#if DEBUG  
		uart_puts("Ich werde bei "); PrintInt((uint16_t)adress); uart_puts(" anfangen in den EEPROM zu schreiben.\r\n");
		#endif
		eeprom_write_block( &aktMessung, adress, sizeof(aktMessung)); adress += 1;
		eeprom_write_word(0x00, (uint16_t)adress);
	}
	else {
		uart_puts("FEHLER: Kein Platz mehr im EEPROM!!!\r\n");
	}
}
Könnte sich das vielleicht nochmal jemand ansehen und mich über logische Fehler aufklären? Ich werde es nachher auf den Mega16 spielen, aber ich seh das schon kommen, dass da ncihts geht und ich den Fehler nciht finde ...

Danke

Andun