Вот тест-прграмма:
#include <string.h>
#include <stdio.h>
#include <LPC214x.H>
Код
volatile int rc=0;
volatile float A0 = 15.2, B0 = 0.152;
int tst(const int iprivod,int id0, float iV0)
{ int iS0, iS2, it0, idx1, idt, iS_m=0x1234, it_m;
[b] iS_m = (int)(A0 * A0 /B0);
//Locals window show here 0x40000468 for iS_m
//and 0x000005F0 if next line is commented
[/b] iS_m = A0 * A0;
it_m = A0/B0+0.5;
id0 = iS_m;
if(iV0 < 0.)
{
it0 = iV0/B0+0.5;
} else {
iS0 = iV0*iV0/(B0*2.);
}
if(id0 <= iS0)
{ if(iprivod > 0)
{
idx1 = 123;
} else idt = 321;//it_m;
return 0;
}
iS2 = (id0 + iS0);
if(0x1235 > iS_m)
{
return iS_m;
}
return 2;
}
int main (void)
{
while(1)
{
rc= tst(1,1520, 0.);
}
}
оптимизаю, всю, какую смог найти - отключил
Собственно, что фигню показывает еще и можно б было пережить, но чем-то подобном у меня виснет. Причем только, если звать из прерывания...
Куды бежать ?