|
Keil, отладчик показывает непойми что |
|
|
|
Dec 22 2006, 04:06
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Вот тест-прграмма: #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.); } } оптимизаю, всю, какую смог найти - отключил Собственно, что фигню показывает еще и можно б было пережить, но чем-то подобном у меня виснет. Причем только, если звать из прерывания... Куды бежать ?
|
|
|
|
|
 |
Ответов
|
Dec 22 2006, 04:17
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(evgen2 @ Dec 22 2006, 04:06)  Собственно, что фигню показывает еще и можно б было пережить, но чем-то подобном у меня виснет. Locals у многих отладчиков может иногда показывать фигню, даже с отключенной оптимизацией. Смотрите дизассемблер. Цитата(evgen2 @ Dec 22 2006, 04:06)  Причем только, если звать из прерывания... А как обстоят дела с реентерабельностью float-функций смотрели? Использование float в прерывании - признак дурного вкуса, ИМХО.
|
|
|
|
|
Dec 22 2006, 05:10
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(aaarrr @ Dec 22 2006, 05:17)  Цитата(evgen2 @ Dec 22 2006, 04:06)  Собственно, что фигню показывает еще и можно б было пережить, но чем-то подобном у меня виснет.
Locals у многих отладчиков может иногда показывать фигню, даже с отключенной оптимизацией. Смотрите дизассемблер. Цитата(evgen2 @ Dec 22 2006, 04:06)  Причем только, если звать из прерывания... А как обстоят дела с реентерабельностью float-функций смотрели? Использование float в прерывании - признак дурного вкуса, ИМХО. С реентабельностью - никак, т.к. вызываю только в прерывании, ставил защиту от повторого попадания в стиле void fun_foo() { static int work=0; if(work++) return; ...... work = 0; } - не помогает насчет возможности или невозможности использования float point в прерываниях - ничего не нашел в доках. Да, в отладчике , если из прервывания таймера вызывать аналог tst() - все работает (о, еще одна идея - завтра попробовать из прерывания таймера вызывать на живом процессоре) Я в непонятках - это бага компилятора, фича процессора или моя граблепритягивательная карма ?
|
|
|
|
Сообщений в этой теме
evgen2 Keil, отладчик показывает непойми что Dec 22 2006, 04:06  aaarrr Цитата(evgen2 @ Dec 22 2006, 05:10) С рее... Dec 22 2006, 05:26   evgen2 Цитата(aaarrr @ Dec 22 2006, 06:26) Цитат... Dec 22 2006, 06:22    evgen2 Кстати - а что тогда в прерываниях можно с float p... Dec 22 2006, 06:36    aaarrr Цитата(evgen2 @ Dec 22 2006, 06:22) хммм.... Dec 22 2006, 06:41     evgen2 Цитата(aaarrr @ Dec 22 2006, 07:41) Должн... Dec 22 2006, 12:53      evgen2 Цитата(evgen2 @ Dec 22 2006, 13:53) то ка... Dec 22 2006, 15:39       aaarrr Цитата(evgen2 @ Dec 22 2006, 15:39) кое ч... Dec 22 2006, 15:53        evgen2 Цитата(aaarrr @ Dec 22 2006, 16:53) Цитат... Dec 22 2006, 17:59 aaarrr Цитатакак оценить размер стека
Найти, где устанавл... Dec 22 2006, 18:15 evgen2 Цитата(aaarrr @ Dec 22 2006, 19:15) Цитат... Dec 22 2006, 18:38 Alex03 Цитата(aaarrr @ Dec 22 2006, 20:15) Найти... Dec 22 2006, 18:46  aaarrr Цитата(Alex03 @ Dec 22 2006, 18:46) Кстат... Dec 22 2006, 19:28  evgen2 [quote name='Alex03' date='Dec 22 2006... Dec 22 2006, 20:12   evgen2 мда, опять стою на этих граблях
ft0 should be ... Dec 25 2006, 18:22 aaarrr Вообще-то 1073747848 это и есть 2.001436, только в... Dec 25 2006, 20:35
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|