IAR 3.20C for AVR и sprintf

Dec 07, 2004 4 Replies

Tue Dec 07 2004 18:38, Dmitry Gromov wrote to All:

DG> Так вот, что в дебаггере, что в железе, выполнение команды sprintf DG> приводит DG> к сбросу. DG> Чего я только не перепробовал, крутил всячески форматтерами printf в DG> настройках компилятора, менял библиотеки CLIB, DLIB, все равно ничего не DG> получилось. DG> Мож кто знает где собака порылась? И где мне стоит порыться?

Увеличить размер стека. Еще лучше - отказаться от использования printf - слишком много ресурсов ей надо.

WBR, Юрий.

Tue Dec 07 2004 18:38, Dmitry Gromov wrote to All:

DG> b=sprintf(str,"%.1f",a); DG> Так вот, что в дебаггере, что в железе, выполнение команды sprintf DG> приводит к сбросу.

  1. Hе пользоваться IAR 3.20с. Он глючный. Пользоваться 2.28A. 2. Hе пользоваться *printf. Это очень прожорливые функции. Hаписать вывод самому. 3. Если уж пользоваться printf, то пользоваться printf_P и увеличить размер стека возвратов и стека переменных. VLV

"Evil will prevail because good is dumb" (c) Dart Weider

Hello, All! Замучала меня одна непонятка. Вот коротенький кусок кода для Меги32, иллюстрирующий суть проблемы. void main(void) { char str[10]; float a=14.4; . некоторые команды, никак не затрагивающие вышедекларированные переменные . b=sprintf(str,"%.1f",a); . дальше некоторые команды . . . . } Так вот, что в дебаггере, что в железе, выполнение команды sprintf приводит к сбросу. Чего я только не перепробовал, крутил всячески форматтерами printf в настройках компилятора, менял библиотеки CLIB, DLIB, все равно ничего не получилось. Мож кто знает где собака порылась? И где мне стоит порыться?



With best regards, Dmitry Gromov. E-mail: snipped-for-privacy@deletethis.newmail.ru



Доброго здоровья, Dmitry!

07 Dec 04 17:59, Yuriy K написал для Dmitry Gromov:

DG>> Так вот, что в дебаггере, что в железе, выполнение команды sprintf DG>> приводит DG>> к сбросу. DG>> Чего я только не перепробовал, крутил всячески форматтерами printf в DG>> настройках компилятора, менял библиотеки CLIB, DLIB, все равно ничего не DG>> получилось. DG>> Мож кто знает где собака порылась? И где мне стоит порыться?

YK> Увеличить размер стека. YK> Еще лучше - отказаться от использования printf - слишком много ресурсов YK> ей надо.

и не забыть включить large-библиотеку вывода

WBR, Сергей. ICQ: 101347299

Hello, Vladimir! You wrote to Dmitry Gromov on Tue, 07 Dec 2004 19:02:21 +0500:

VV> 1. Hе пользоваться IAR 3.20с. Он глючный. Пользоваться 2.28A. VV> 2. Hе пользоваться *printf. Это очень прожорливые функции. Hаписать VV> выводсамому. VV> 3. Если уж пользоваться printf, то пользоваться printf_P и увеличить VV> размерстека возвратов и стека переменных.

Hу что ж. Теперь работает. Ты, также как и Yuriy K, оказался абсолютно прав. Увеличил стеки и все понеслось. Так же вы были правы и насчет написать вывод самому. Hакрапал функцию, которая раз в 10 меньше и как минимум в 2 раза быстрее чем *printf. К черту теперь printf. Огромное спасибо за подсказки.

With best regards, Dmitry Gromov. E-mail: snipped-for-privacy@deletethis.newmail.ru

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required