Du hast die Reihenfolge der Parameter vertauscht.
Richtig wäre:
Code:
// Schreiben
eeprom_write_block (&value, (void*)start_adress, sizeof(value)); 

// Lesen
eeprom_read_block (&value, (void*)start_adress, sizeof(value));

// oder als Funktion
float read_float ( unsigned short start_adress ) {
    float value;
    eeprom_read_block (&value, (void*)start_adress, sizeof(value));
    return value;
}