Цитата(LeshaL @ Mar 13 2006, 17:03)

В __eeprom обьявлена переменная типа float. Как с минимальными затратами определить, что эта переменная имеет нечисловой формат (когда по адресу хранения float появляется значение 0xFFFFFFFF) чтобы привести ее в какое-нибудь начальное значение числового формата? Операции сравнения не работают. Если я пытаюсь определить нечисловой формат так:
if(my_float==0.NaN),
то, судя по ассемблерному тексту, my_float сравнивается не с 0xFFFFFFFF, a c 0x7FFFFFFF. Если сравниваю так: if(my_float==-0.NaN), то ничего не меняется...
я делал так (в IAR 3.20):
Код
static char is_nan(const float *F)
{
return ((((unsigned char*)F)[2] & 0x80)==0x80) && ((((unsigned char*)F)[3] & 0x7F)==0x7F);
}
Этой ф-ии передаю указатель на float в RAM.
Но эта ф-я зависит от порядка байт во float, этот вариант для IAR320 для AVR.
Измени её под свои требования.