реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> itoa на asm, из темы "51 vs AVR"...
=GM=
сообщение Nov 15 2007, 23:39
Сообщение #16


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Чёта =mse= примолк, мы тут трудимся, как пчёлки...

mse, время исполнения исходного кода =АВР= улучшено на 17+2=19 тактов, или на 26%.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Guest_=AVR=_*
сообщение Nov 16 2007, 05:56
Сообщение #17





Guests






Внесу ясность. Как я уже отметил выше, мой код был НАПИСАН лишь для демонстрации альтернативного метода преобразования систем счисления, а именно связки int2fix+fix2a. Код был написан мной для dsPIC/PIC24, а в AVR ASM был просто тупо переведен в лоб безо всякой оптимизации. mse ПРИВЕЛ пример этого кода как существенно более быстрого, нежели itoa с вычитаниями степеней десятки и уж тем более чем алгоритм Горнера (сдвиг-коррекция).

То, что вы наоптимизировали посредством комбинирования методов, есть гуд, но не есть повод подкалывать mse - "он просто разместил объяву"(с) smile.gif
Go to the top of the page
 
+Quote Post
mse
сообщение Nov 16 2007, 07:30
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(=GM= @ Nov 16 2007, 02:39) *
Чёта =mse= примолк, мы тут трудимся, как пчёлки...

mse, время исполнения исходного кода =АВР= улучшено на 17+2=19 тактов, или на 26%.

Я, когда писал, по содержимому исходной ветки, имел в виду - перейти от безпонтового трёпа к конкретным вещам. Чтобы процесс членомерства был более предметен. ;О) Бо там началось тупое перехождение на личности, плюс бессмертное "ЦвсАСМ".
В переводе на общеупотребительный, мой пост можно перевести так: "Кто хочет замерять свой инструмент относительно других, плеазе: вот вам =AVR=, вот вам АСМ." ;О) А уж потом этот кусок выстригли из контекста и оформили как самостоятельное...И то, всё свелось к тупому вылизыванию предложенного алгоритма. Скушно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 16 2007, 11:13
Сообщение #19


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(mse @ Nov 16 2007, 07:30) *
И то, всё свелось к тупому вылизыванию предложенного алгоритма. Скушно

To mse
Да ладно, никто ничего не вылизывал, просто летучий обмен опытом, показали друг другу фрагментики, как кто пишет, вот и всё.

А вот интересно, вы не делали ЧМ детектор на АВР? Я тут ради спортивного интереса написал программку частотного дискриминатора для атмеловского МК (тактовая частота проца 20 МГц, 12-разрядные АЦП и ЦАП, 24-битная арифметика), уложился в 20 мкс, т.е. частота выборок - 50 кГц.

To singlskv Вот ещё свёрнутый фрагмент кода. По-своему тоже красиво.
Код
binasc:  ldi    temp,0x2F        ;
binas1:  inc    temp             ;10000 stage
         subi   res0,0x10        ;
         sbci   res1,0x27        ;
         brsh   binas1           ;
         subi   res0,0xF0        ;
         sbci   res1,0xD8        ;
         st     x+,temp          ;

Иногда места в программе мало, а времени вагон. Стоит в 8-ногом чипе, преобразовывает 24-битные числа от цифровых штангенциркулей.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
mse
сообщение Nov 16 2007, 12:20
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(=GM= @ Nov 16 2007, 14:13) *
To mse
Да ладно, никто ничего не вылизывал, просто летучий обмен опытом, показали друг другу фрагментики, как кто пишет, вот и всё.

Да я не о том. Вылизывание само по себе полезно, но алгоритм то тот-же. Тут скучно. В смысле, самостоятельной темы недостойно.
Бо пост оказался выдернут из контекста - материнской ветки про другое. Там он смотрелся логичнее.
Цитата
А вот интересно, вы не делали ЧМ детектор на АВР?

Не, щас на м48 выделяю(вернее, уже выделил) из шума 50кГц. 4 точки на период. ;О) Хотел уже с ДСПик связаться, но посчитал - должон поместиться и, таки, поместился. Щас анальноговую часть причешу ешо... Время разработки съэкономил. Хотя на ДСПик смотрю пристально. ;О) Нехорошо так смотрю...
А детектор такой можно на Хмеге спокойно реализовывать. Там встроенные ЦАП/АЦП будут. Стерео. ;О)
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 16 2007, 17:20
Сообщение #21


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(mse @ Nov 16 2007, 12:20) *
Не, щас на м48 выделяю(вернее, уже выделил) из шума 50кГц. 4 точки на период. ;О) Хотел уже с ДСПик связаться, но посчитал - должон поместиться и, таки, поместился. Щас анальноговую часть причешу ешо... Время разработки съэкономил. Хотя на ДСПик смотрю пристально. ;О) Нехорошо так смотрю...
А детектор такой можно на Хмеге спокойно реализовывать. Там встроенные ЦАП/АЦП будут. Стерео. ;О)

Не надо на него смотреть, тем более пристально - глаза заслезятся(:-). Это ж печка! Посмотрите в сторону TMS320F2801, нормальная машинка, 100 мипс, 12-битный ацп, 16 каналов, можно оцифрять два канала одновременно, 3,75Мвыборок/с

Кстати в ЧМ дискриминаторе есть деление 24/24=24, выполняется за 270 тактов.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 16 2007, 18:09
Сообщение #22


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(=GM= @ Nov 16 2007, 02:39) *
mse, время исполнения исходного кода =АВР= улучшено на 17+2=19 тактов, или на 26%.
=GM= , здесь Вы слегка поспешили,
в коде =AVR=, промежуточный результат получается как значение 0-9999 нормализованное
до 0-0xFFFF, и после этого можно выполнять домножение на 10 и на каждом шаге получать
новый разряд.
Для того чтобы нормализовать диапозон 0-9999 в 0-0xFFFF нужно 10-13тактов,
так что реальная экономия всего 6-8 тактов, те ~10%.

Цитата(=GM= @ Nov 16 2007, 14:13) *
To singlskv Вот ещё свёрнутый фрагмент кода. По-своему тоже красиво.
Код
binasc:  ldi    temp,0x2F    ;
binas1:  inc    temp            ;10000 stage
         subi   res0,0x10    ;
         sbci   res1,0x27    ;
         brsh   binas1          ;
         subi   res0,0xF0    ;
         sbci   res1,0xD8    ;
         st     x+,temp         ;
У меня так:
Код
binasc:
        ldi     temp,0x36
        subi    res0,0x60
        sbci    res1,0xEA
        brsh    binasc2
binasc1:
        dec     temp
        subi    res0,0xF0
        sbci    res1,0xD8
        brlo    binasc2
binasc2:
        st      x+,temp

все по тем же причинам...
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 16 2007, 22:04
Сообщение #23


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(mse @ Nov 16 2007, 10:30) *
И то, всё свелось к тупому вылизыванию предложенного алгоритма. Скушно.
А вот здесь Вы, батенька, неправы,
результат вряд ли будет иметь чего-нить общее с оригиналом smile.gif
Go to the top of the page
 
+Quote Post
ae_
сообщение Nov 17 2007, 01:57
Сообщение #24


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(singlskv @ Nov 17 2007, 03:09) *
...
У меня так:
Код
binasc:
        ldi     temp,0x36
        subi    res0,0x60
        sbci    res1,0xEA
        brsh    binasc2
binasc1:
        dec     temp
        subi    res0,0xF0
        sbci    res1,0xD8
        brlo    binasc2
binasc2:
        st      x+,temp

все по тем же причинам...

Опечатка, "brlo binasc2"
Ещё вопрос по оформлению:
subi res0,0x60
sbci res1,0xEA
Неужели вы не напрягаясь, устно перевели десятичное 60000 в 0xEA60 ?
Наверняка пользовались какой-нибудь программой, тем же калькулятором, для перевода в hex.
Почему не поручить эту работу компилятору?
ldi temp,'6'
subi res0,low(60000)
sbci res1,high(60000)
имхо и листинг будет более читаемым.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016