08.11.2014, 20:10
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: IAR Embedded Workbench
С первого взгляда!
Больше всего унылости преподносит pow. Что, трудно заменить на цикл? Там 10 в степени. В простых случаях тупо заменить на константу, тогда всё просто, легко и летает.
|
|
|
|
08.11.2014, 21:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: IAR Embedded Workbench
Это тупой копи-паст.
pow выбросил, конечно.
|
|
|
|
08.11.2014, 22:34
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: IAR Embedded Workbench
Ага! Сегодняшняя неудовлетворённость с исправлениями вчера.
|
|
|
|
08.11.2014, 23:00
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: IAR Embedded Workbench
Ага, спасибо, замечательно сам с собой пообщался.
Функция sprintf в MicroC прекрасно работает, но жрет аж 16к флеши!
Моя жрет 3.5к флеши, что тоже не мало.
Последний раз редактировалось Easyrider83; 09.11.2014 в 02:20.
|
|
|
|
09.11.2014, 05:59
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: IAR Embedded Workbench
И причём здесь тогда ИАР? Под STM8 в ИАРе отъедает около 1К флэша, выполняется за ~1000 тактов, что в 6 раз меньше и в 13 раз быстрее чем sprintf.
Код:
|
// reverses a string 'str' of length 'len'
void reverse(char *str, uint8_t len)
{
uint8_t i = 0, j = len - 1, temp;
while(i ‹ j)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++; j--;
}
}
// Converts a given integer x to string str[]. d is the number
// of digits required in output. If d is more than the number
// of digits in x, then 0s are added at the beginning.
uint8_t intToStr(uint16_t x, char str[], uint8_t d)
{
uint8_t i = 0;
while(x)
{
str[i++] = (x%10) + '0';
x = x/10;
}
while(i ‹ d)
{
str[i++] = '0';
}
if(i) reverse(str, i);
str[i] = '\0';
return i;
}
// Converts a floating point number to string.
void ftoa(float n, char *res, uint8_t afterpoint)
{
uint8_t m = 0, i;
uint16_t ipart, v = 1;
float fpart;
if(n ‹ 0)
{
n = -n;
m++;
res[0] = '-';
}
if(!(uint8_t)n)
{
if(m)
{
res[1] = '0';
}
else
{
res[0] = '0';
}
m++;
}
ipart = (uint16_t)n;
fpart = n - (float)ipart;
i = intToStr(ipart, res + m, 0);
if (afterpoint)
{
res[i+m] = '.'; // add dot
for(uint8_t k = 0; k ‹ afterpoint; k++)
{
v *= 10;
}
fpart *= v;
intToStr((uint16_t)fpart, res + i + 1 + m, afterpoint);
}
} |
О красоте судить не буду, это же не баба!
|
|
|
|
09.11.2014, 10:49
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Re: IAR Embedded Workbench
Решил обновить EWSTM8 до 1.42.3(брал в будке на сахаре). Все хорошо если бы не проблема с ST-Link, может кто знает как решить.
Ось Win7x86.
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
09.11.2014, 11:04
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: IAR Embedded Workbench
woroba, Снова проекты на Рабочем столе держим ?
Запусти IAR от админа ...
__________________
Осторожно , злой кот
|
|
|
Сказали "Спасибо" dosikus
|
|
|
09.11.2014, 12:47
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Re: IAR Embedded Workbench
Да нет, не на рабочем. Скорее в облаке(на 1 скрине видно) ![Голова кругом](images/smilies/icon_rolleyes.gif)
А вот от админа помогло.
В общем странно, если я в системе админ. захожу как админ, то какого оно требует еще софт запускать от админа
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
14.11.2014, 21:49
|
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: IAR Embedded Workbench
Не могу понять, как при отладке измерить время выполнения какой-либо функции. Подскажите начинающему.
|
|
|
|
14.11.2014, 23:12
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от sergeyye
|
Не могу понять, как при отладке измерить время выполнения какой-либо функции. Подскажите начинающему.
|
Смотря какая архитектура...В общем случае можно запустить какой-нибудь ненужный таймер и фиксировать сколько таймер насчитает за вемя работы функции.
В частном случае (Cortex-M3/4) - есть встроенные в ядро счётчики тактов, которые IAR может использовать, а может и не использовать, если не умеет. Своих средств подсчёта времени у IAR нет.
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подниму тему WinAVR vs IAR
|
oleg110592 |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.10.2015 14:06 |
Часовой пояс GMT +4, время: 02:22.
|
|