Uloženie reálneho čísla do EEPROM

Zdravím.
Potrebujem v jednej aplikácii vypočítavať hodnotu T_uk podľa ekvitermickej krivky na základe Tvonk.
Používam na to tento vzorec:

T_uk =(20 - Tvonk)*k + 30;

Premenná k (krivka) je reálne číslo a tu sa začína problém.Pokiaľ ju zadám “pevne” všetko je O.K.Tlačítkami sa dá aj inkrementovať aj dekrementovať,no po takejto zmene ju potrebujem uložiť do Eeprom v MCU.
Premenná “k” je zadefinovaná ako

float k; k=0.9;
Viete mi poradiť akým spôsobom rozdelím “k” na jednotlivé byte a uložím do Eeprom?
A aj naopak? Z Eeprom do “k”.
tento spôsob nefunguje.

k=k * (eeprom_read(0x01) << 8); Relatko.

Nevím jestli jsem to pochopil správně, ale co ukládat “k” jako násobek deseti a potom celý vzorec dělit deseti.

Nie,nie.Ja potrebujem do Eeprom uložiť hodnotu “k” po jej zmene.
Problém je z typom premennej.Float nedokážem rozdeliť na jednotlivé byte ani keď číslo vynásobím 10.Napr.inteager nie je problém rozdeliť a násl.spojiť.Lez float sa mi akosi nedá.
Relatko.

Co tak si tam hodit kousek kódu v asm a udělat to postaru assemblerem?

Asi jsi petra nepochopil. Jeho úprava spočívá v převedení výpočtu z plovoucí ř. čárky na pevnou. Místo ve float bys to počítal (mnohem rychleji a menším výsledným kódem) v int.
Pokud např. potřebuješ pro “k” rozsah (0-2> v krocích po 0.1, lze to taky napsat jako “((20 - Tvonk)*k)/32 + 30”, kde “k” je hodnota 0-31. Místo dělení 32 lze použít posun o 5b doprava.

Jinak float je obvykle 32bit, je tedy nutné zpracovat 4B. Např. pokud by bylo k od odresy 0 s nenižším byte na témže místě, pak:

k = eeprom_read(0x00); k |= (eeprom_read(0x01) << 8); k |= (eeprom_read(0x02) << 16); k |= (eeprom_read(0x03) << 24); // nyni je nacteno cele "k"