Help - глюки с float в Keil?

Thu Jul 17 2003 16:53, Yuri Kopylov wrote to Ilja Vlaskin:

YK> Поскольку портящиеся процедуры main были типа 'перевод float YK> в строку,

Это типа sprintf() ? Если так, то надо перед именем переменной явно указать формат:

sprintf("format string",.....(float)my_float);

Это баг (фича ?) строковой библиотеки Кейла.

Tadas

Reply to
Tadas
Loading thread data ...

"Yuri Kopylov" snipped-for-privacy@mtu-net.ru сообщил/сообщила в новостях следующее:

(Bank0

float

Извиняюсь - погорячился! Компилятор честно делает PUSH-POP всех 8 регистров банка 0 при входе в ISR, так что это (DATA overlay процедур, вызываемых из ISR и main) не могло быть причиной глюков программы. Надо искать дальше.

С уважением, Юрий Копылов snipped-for-privacy@mtu-net.ru

Reply to
Yuri Kopylov

"Tadas" snipped-for-privacy@takas.lt сообщил/сообщила в новостях следующее:

Буду иметь ввиду, спасибо. Но обычно (как и в данном случае) я пишу свои процедуры. Типа того как ниже. Очень давно замерял размеры кода, и с тех пор считаю, что так короче и быстрее при моем фиксированном формате выдачи.

k = (int)f.fl; c = k/1000; que[qlen++] = c | 0x30; // Тысячи k -= c*1000; c = k/100; que[qlen++] = c | 0x30; // Сотни k -= c*100; que[qlen++] = ','; // Десятичная точка c = k/10; que[qlen++] = c | 0x30; // Десятки c = k-c*10; que[qlen++] = c | 0x30; // Единицы

WBR Юрий Копылов snipped-for-privacy@mtu-net.ru

Reply to
Yuri Kopylov

Долгих лет , Yuri.

Wednesday July 16 2003 18:47, you wrote to Sergey Davydov: YK> я сам (своим кодом) хотел бы проверить валидность RAM. Hапример, не YK> хотелось бы при WDT-RESET обнулять длинные цифровые фильтры и PID, YK> чтобы они опять долго входили в режим и т.д. Я бы просто проверил YK> критические переменные в RAM на свои лимиты, а не начинал с обнуленных YK> величин. Разве не логично? Hе логично, если у твоего ПИДа после глюкавого pестаpта будет офигенная(ну ошибочно записалось) интегpальная составляющая, то ты долго и нудно будешь pасхлебывать получившуюся колебательность, а если система в некотоpых пpеделах неустойчива, то и вpазнос можно пойти, а с нулевой интегpальной частью ты получишь лишь легкое затягивание пеpеходного пpоцесса. Та же баня с фильтpом, пpи глюке он может дооооооооооооолго пpиходить в себя :)))

Bye, Dmitry.

Reply to
Dmitry Busse

Hello Yuri,

YK> Да, это я уже понял. Попробую перенести часть глобальных YK> переменных в другой (новый) сегмент (файл), равный размеру текущей YK> дырки в RAM. Хотя поначалу мне казалось, что линкер мог бы и рвать YK> сегменты сам.

Линкер не знает как их рвать, чтобы ничего не испортить, например массивы или структуры, которые должны лежать в памяти неразрывно. Конечно, компилятор мог бы создавать свой сегмент на каждую переменную, но видимо Keil решил не делать излишних усложнений.

Reply to
Andy Mozzhevilov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.