IAR 3.20C for AVR и sprintf

Do you have a question? Post it now! No Registration Necessary

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

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



IAR 3.20C for AVR и sprintf
Tue Dec 07 2004 18:38, Dmitry Gromov wrote to All:

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

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

WBR, Юрий.


IAR 3.20C for AVR и sprintf
       Доброго здоровья, 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


IAR 3.20C for AVR и sprintf
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


Re: IAR 3.20C for AVR и sprintf
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



Site Timeline