Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


Ответ
Опции темы

IAR Embedded Workbench

Непрочитано 14.03.2013, 18:28   #181
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от tempora Посмотреть сообщение
Это зачем?
m можно сделать 8-ми битным.
На строку конечно много тактов.
Но я повешу АЦП на прерывания - пусть читает и суммирует, а обработку результата сделаю по флагу, вне прерывания.
Пока он насобирает, должно успеть посчитать.
Реклама:
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 18:58   #182
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от gary2007 Посмотреть сообщение
m можно сделать 8-ми битным.
Ааффигенный выигрыш.

Сообщение от gary2007 Посмотреть сообщение
На строку конечно много тактов.
Вот и я о чём - там еще до 8 делений на 10. Получается, что вволю натрахавшись с переводом короткого кода "(i+500)/1000" в последовательность сдвигов/сложений, мы получаем выигрыш порядка 10 процентов (грубо) от общего времени вывода на дисплей. Стоит ли овчинка выделки? Если очень хочется, то можно и все деления на 10 также выполнять сдвигами/сложениями, тогда экономия за счет полного отказа от делений достигнет максимума, но... так ли она велика, вот вопрос...

Посмотрим на задачу с другой стороны:
Сообщение от gary2007 Посмотреть сообщение
Есть 20-ти битное число ... т.е максимум 7 знаков. Мне нужно вывести его на LED семисегментный индикатор, и только старшие 4 цифры, но при этом еще и округлить.
Было предложено два варианта деления с округлением - с делением и со сдвигами/сложениями:
Код:
unsigned int Calc1(unsigned long N)
{
    return((N+500)/1000);
}
unsigned int Calc2(unsigned long N)
{
unsigned int a,b,c,d,res;
#define     MulBy24(val)    (((val)‹‹4)+((val)‹‹3))

        a = N ›› 10;
        b = MulBy24(a) + (N & 1023) + 500;
        c = b ›› 10;
        d = MulBy24(c) + (b & 1023);
        res = a+c;
        if (d›1000) ++res;

        return(res);
}
void	main()
{
unsigned int v;
        ...
        v = Calc1(1048575);	// 199 clocks
        v = Calc2(1048575);	// 114 clocks
        ...
}
Разница времени выполнения указанных процедур составляет (199-114)=85 тактов (средний уровень оптимизации на скорость). Если частота вывода на LED-дисплей равна 25 раз в секунду, а тактовая частота меги - 8МГц, то наш трахач со сдвигами и сложениями привел к нев****ной экономии в двацать семь тысячных процента (0,027%). А если еще потрахаться с процедурой преобразования строки, переведя и её в сдвиги/сложения, то выигрыш увеличится в десять раз (грубо) и составит аж 0,27%. Достойный результат!
А как только мы накупим плюшек и заварим рюмочку чаю, чтобы отпраздновать свою победу, дверь откроется и заказчик бодрым голосом сообщит, что ширину LED-дисплея нужно увеличить (вариант - уменьшить) на один символ.
Мне, в моей процедуре, достаточно будет убрать (вариант - добавить) один нолик в делителе и еще один - в слагаемом, например - "(i+50)/100", а Вам, в супер-пупер-оптимизированной процедуре, придется переписать всё. И это ради выигрыша в 0,027% !!!

Напоминает историю о том, как два ковбоя, совершенно бесплатно, наелись коровьих лепешек.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 14.03.2013 в 19:46.
tempora вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 19:25   #183
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Маленький вопрос

Вот это вот для 20 битного N и 8 битного проца
unsigned int Calc1(unsigned int N)
не написать ли так
unsigned int Calc1(unsigned long N)
Boba_spb вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 19:36   #184
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Там разумеется д.б. long и не для Calc1, а для обеих процедур.
__________________
There's always more than one way to skin a cat.
tempora вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 19:46   #185
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Ну во второй то 4 байта разнести на два слова - затрат то мало. А в первой то вся арифметика попрет по 32 битам - экономия то увеличится
Boba_spb вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 19:49   #186
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

А на каком проце это работает то все?
Boba_spb вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 19:55   #187
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от Boba_spb Посмотреть сообщение
экономия то увеличится
Да, если грубо, то время возрастет в 4 раза. Только результата в целом это не изменит - что цепляться за соломинку?
Тем более, что все предположения брались в пользу варианта со сдвигами/сложениями. Например, выводить данные на LCD-дисплей 25 раз в секунду - это слишком часто, глаз совместит разные показания в одну кашу. Нужно уменьшить, скажем, до 2. И не все числа будут иметь максимальное значение, при этом время деления сократится, а время сдвигов/сложений останется неизменным.
Так что, вывод прежний - тратить ресурсы нужно на оптимизацию тех процедур, которые отнимают основную долю процессорного времени.
__________________________________________________ ___
Upd:
Сообщение от Boba_spb Посмотреть сообщение
А на каком проце это работает то все?
А какая разница? Даже если тактовая там не 8 МГц, а только 1, все равно речь будет идти лишь о долях процента.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 14.03.2013 в 20:06.
tempora вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 20:19   #188
gary2007
Почётный гражданин KAZUS.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от tempora Посмотреть сообщение
А как только мы накупим плюшек и заварим рюмочку чаю, чтобы отпраздновать свою победу, дверь откроется и заказчик бодрым голосом сообщит, что ширину LED-дисплея нужно увеличить (вариант - уменьшить) на один символ
Да тут до заказчика еще далеко.
Я просто хотел поиграться с апнотом AVR121, неспеша, с разными вариантами. Инфы в сети мало, а открытого кода разработок вообще не видел, поэтому неизвестно что там потребуется.
А до таких сдвигов, как показал Boba_spb, я сам вообще бы никогда не додумался.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 20:41   #189
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от gary2007 Посмотреть сообщение
Да тут до заказчика еще далеко.
Ну, причем здесь заказчик и как до него далеко? Суть в том, что Вы тратите непропорционально много времени на процедуру, которая и ресурсов берет мало и повторяемостью не обладает. *)

Сообщение от gary2007 Посмотреть сообщение
А до таких сдвигов, ... вообще бы никогда не додумался.
В данном конкретном случае они только во вред. А вообще - перечитайте свойства позиционных систем записи. Повторение, мать его...
_______________________________
*) Upd: и к оверсэмплингу не относится.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 14.03.2013 в 20:51.
tempora вне форума   Ответить с цитированием
Непрочитано 14.03.2013, 20:49   #190
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от gary2007 Посмотреть сообщение
Инфы в сети мало, а открытого кода разработок вообще не видел, ...
Ммм, то есть как это "мало" и "вообще не видел"? Я правильно понял, что речь об оверсэмплинге? Мало того, что Атмел предоставляет исходники, так еще и Гугл на "AVR121" выдал 39'400 результатов. Первый кажет на Атмел, второй - на Chipenable.Ru. Или нужно что-то другое?
__________________
There's always more than one way to skin a cat.
tempora вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06


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


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