Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Результаты опроса: Я пользуюсь компилятором для AVR ...
WinAVR 17 27.42%
IAR 15 24.19%
CodeVision 22 35.48%
Другой компилятор С 1 1.61%
Я пишу не на С 7 11.29%
Голосовавшие: 62. Вы ещё не голосовали в этом опросе

 
Опции темы

IAR AVR

Непрочитано 15.09.2009, 15:41  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от shulgaserj Посмотреть сообщение
Ну в прерывания я конечно бы не стал пользоваться itoa.
Черт с ним с прерыванием. Но и в многозадачной ОС это не пройдет. Либо оборачивать вызов в критическую секцию, но так можно всю систему уронить.

Сообщение от shulgaserj Посмотреть сообщение
Ну если так стоит вопрос - то всю прогу моно на ASMе написать.
Вот и мне так кажется.
Реклама:
kison вне форума  
Непрочитано 15.09.2009, 15:42  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: IAR AVR

так вроде работает:
#include ‹ioavr.h›
#include ‹inavr.h›
#include ‹stdio.h›
#include ‹pgmspace.h›


int d=1234;
char line[6];
int main( void )
{

sprintf(line,"%d \r\n",d);


for(;;
}
oleg110592 вне форума  
Непрочитано 15.09.2009, 15:48  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от oleg110592 Посмотреть сообщение
так вроде работает:
Ну попробуйте теперь для unsigned int d = 55678;
kison вне форума  
Непрочитано 15.09.2009, 16:11  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от kison Посмотреть сообщение
Ну попробуйте теперь для unsigned int d = 55678;
так работает:
#include ‹ioavr.h›
#include ‹inavr.h›
#include ‹stdio.h›
#include ‹pgmspace.h›

long d = 55678;
//int d=12345;
char line[7];
int main( void )
{

sprintf(line,"%ld \r\n",d);


for(;;
}
oleg110592 вне форума  
Непрочитано 15.09.2009, 16:11  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR AVR

Я до кучи и CV протестировал.
В максимально урезанном варианте по размеру абсолютный рекордсмен - 856 байт вся программа. По тактам тоже неплохо - 1608. С беззнаковым целым работает и в минимуме. Правда как только немного повысил возможности - long,width, так сразу все и протухло - 1344 байта и 12699 тактов. Это уже ни куда не годится. Правда компилятор старый 1.25.3. Может что и улучшилось.
kison вне форума  
Непрочитано 15.09.2009, 16:27  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от oleg110592 Посмотреть сообщение
так работает:
Ну да. 12232 такта и ключик в кармане. Проигрыш бесплатному GCC всего в 10 раз - очень достойный результат. Кроме того, а как же тогда вывести unsigned long int a = 2415919103 ? Оно конечно не часто надо, но все же? Ответ - включить medium в свойствах printf. И получить вообще больше 15000 тактов на преобразование.
Я плавучку в ИАР вообще боюсь проверять.
Ладно я заканчиваю играться. ИАР пойдет в корзину, где ему самое место.
kison вне форума  
Непрочитано 15.09.2009, 16:43  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR AVR

Ну тут топикстартер хотел чистой арифметики. На прощание с ИАР-ом:
Код:
volatile unsigned char ii = 0;

unsigned char a[64] = {0,1,2,3,4,5,6,7,8,9};
unsigned char b[64] = {9,8,7,6,5,4,3,2,1,0};

unsigned char r[64];

void CalcMax(void)
{
 unsigned char i;

for (i = 0; i ‹ 64; i++)
  {
    if(a[i] › b[i]) r[i] = a[i]; else r[i] = b[i];
  // r[i] = a[i] › b[i] ? a[i]:b[i]
  }
}

int		main(void)
{

CalcMax();

while(1)
	{
	ii++;
	}
}
ИАР - 318 байт вся программа, CalcMax выполняется 1485 тактов.
GCC 4.2.2 - 288 байт вся программа, CalcMax 1487 тактов. Вот такая арифметика. Итого победа ИАР с перевесом в 0,13%. Т.е. доли процента. Реально так и есть, иногда на эти доли впереди GCC. Кстати я пользую все же версию двухлетней давности, а ИАР самый свежий.
Если размерность массива поднять до 280 и соответственно счетчик цикла i сделать unsigned int, то картина меняется - GCC 6735 тактов,ИАР 7315. А это уже не доли, и даже не проценты - почти целый десяток их.
Повторяю - каждый может оттестировать сам, для этого и примеры прикрепляю.

Последний раз редактировалось kison; 15.09.2009 в 16:59.
kison вне форума  
Непрочитано 15.09.2009, 16:53  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от kison Посмотреть сообщение
Я плавучку в ИАР вообще боюсь проверять.
Ладно я заканчиваю играться. ИАР пойдет в корзину, где ему самое место.
Да с sprinf у IAR плохо. В исходниках библиотек, посмотрел дата 1986 - 1999. Сделали один раз и забыли.
Но я использовал ИАР именно из-за float.
Надо было срочно в мегу48 (уже были закуплены) впихнуть терморегулятор под два типа термопар (два полинома). WinAVR, Codevision не влезли ИАР влез (исходник один и тот же). Можно было было конечно оптимизировать вручную, но не было времени.
oleg110592 вне форума  
Непрочитано 15.09.2009, 17:11  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от oleg110592 Посмотреть сообщение
Но я использовал ИАР именно из-за float.
Надо было срочно в мегу48 (уже были закуплены) впихнуть терморегулятор под два типа термопар (два полинома). WinAVR, Codevision не влезли ИАР влез
Так - заинтересовало. Плавучка значит Их есть у меня
Код:
volatile unsigned char ii = 0;

volatile double a = 5.0;
volatile double b = 25.0;

volatile double c;

void CalcC(void)
{
c = a * b;
}

int		main(void)
{

CalcC();

while(1)
	{
	ii++;
	}
}
Итого - ИАР - 841 байт, CalcC выполняется 243 такта.
GCC4.2.2 - 582 байта, CalcC выполняется 156 тактов. Очень странно. Хочу комментариев от пользующих этот странный компилятор. В чем же сила? Я вот думаю что в опенсорсных продуктах
Кстати - даже CV выглядит лучше ИАР - 221 такт. Хотя он тоже не самый свежий

Последний раз редактировалось kison; 15.09.2009 в 17:16.
kison вне форума  
Непрочитано 15.09.2009, 17:33  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: IAR AVR

Сообщение от kison Посмотреть сообщение
Итого - ИАР - 841 байт, CalcC выполняется 243 такта.
GCC4.2.2 - 582 байта, CalcC выполняется 156 тактов. Очень странно. Хочу комментариев от пользующих этот странный компилятор. В чем же сила? Я вот думаю что в опенсорсных продуктах
Кстати - даже CV выглядит лучше ИАР - 221 такт. Хотя он тоже не самый свежий
volatile может в ИАРе и не надо:
44 bytes of CODE memory (+ 136 range fill )
64 bytes of DATA memory
oleg110592 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IAR for AVR kassiopay Микроконтроллеры, АЦП, память и т.д 5 27.03.2009 17:20
Глюк IAR C/EC++ Compiler for AVR 3.20 paha1956 Коллекция глюков 0 01.11.2006 17:31
IAR for AVR vasilij-kursikov Микроконтроллеры, АЦП, память и т.д 29 28.09.2006 18:14
IAR EW for Atmel AVR 4.12A Nikolajx Микроконтроллеры, АЦП, память и т.д 6 09.01.2006 15:18
[Решено] Ошибка в IAR C for AVR Lean Коллекция глюков 0 15.05.2003 11:34


Часовой пояс GMT +4, время: 03:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.