Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с Атмегой16
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
SvetaM
Надо написать на ассемблере Фурье преобразование для 16-той атмеги. Сигнал сначала обрабатывается в АЦП, а потом делается Быстрое Фурье Преобразование. Если есть у кого исходники, буду признательна. Заранее спасибо.
_Bill
Цитата(SvetaM @ Jun 8 2006, 13:29) *
Надо написать на ассемблере Фурье преобразование для 16-той атмеги. Сигнал сначала обрабатывается в АЦП, а потом делается Быстрое Фурье Преобразование. Если есть у кого исходники, буду признательна. Заранее спасибо.

Проще всего найти исходный текст на Си и странслировать его каким-нибудь компилятором для AVR.
SvetaM
Да вот спогиском прогблема, а так же совсем не знаю каким образом и с помощью чего можно переделать из С в ассемблер. Не подскажете, и если есть что-ниудь конкретное укажите плиз ссылочки.
_Bill
Цитата(SvetaM @ Jun 8 2006, 13:58) *
Да вот спогиском прогблема, а так же совсем не знаю каким образом и с помощью чего можно переделать из С в ассемблер. Не подскажете, и если есть что-ниудь конкретное укажите плиз ссылочки.

Единственная ссылка, которую я знаю:IAR AVR EW
Можно еще найти в I-net ссылки на Code Vision, WinAVR, AVR gcc.
А делается все просто. Берется исходный Си-текст функции FFT и транслируется соответствующим транслятором, у которого в опциях задана генерация ассемблерного файла. Результатом трансляции будет интересующая Вас функция, записанная на ассемблере.
SvetaM
[/quote]
Единственная ссылка, которую я знаю:IAR AVR EW
Можно еще найти в I-net ссылки на Code Vision, WinAVR, AVR gcc.
А делается все просто. Берется исходный Си-текст функции FFT и транслируется соответствующим транслятором, у которого в опциях задана генерация ассемблерного файла. Результатом трансляции будет интересующая Вас функция, записанная на ассемблере.
[/quote]

Спасибо большое. Попробую.
BVU
Вопрос такой... если Вы пишете на ASM есть ли у Вас поддержка использования чисел с плавающей/фиксированной запятой (в чем я сомневаюсь), т.к. при использовании БПФ необходимы действия с числом Pi и значениями Sin и Cos?
_artem_
example http://elm-chan.org/works/rsm/report_e.html
vvs157
Цитата(_Bill @ Jun 8 2006, 14:43) *
Проще всего найти исходный текст на Си и странслировать его каким-нибудь компилятором для AVR.


А разве при этом получится асемблерный *текст* с библиотеками?
phase
я думаю это тебе поможет...
elm
elm2


opps немного опоздал blush.gif blush.gif blush.gif
vvs157
Цитата(BVU @ Jun 8 2006, 16:07) *
Вопрос такой... если Вы пишете на ASM есть ли у Вас поддержка использования чисел с плавающей/фиксированной запятой (в чем я сомневаюсь), т.к. при использовании БПФ необходимы действия с числом Pi и значениями Sin и Cos?


Фиксированная запятая особой проблемы не составляет, а sin-cos можно и по таблице с линейной интерполяцией между точками.
defunct
Цитата(vvs157 @ Jun 8 2006, 15:49) *
Фиксированная запятая особой проблемы не составляет, а sin-cos можно и по таблице с линейной интерполяцией между точками.

Хм.. это ж скольки разрядные числа будут? ;>
Не проще ли всю задачу сразу решать на C?
vvs157
Цитата(defunct @ Jun 8 2006, 18:39) *
Цитата(vvs157 @ Jun 8 2006, 15:49) *

Фиксированная запятая особой проблемы не составляет, а sin-cos можно и по таблице с линейной интерполяцией между точками.

Хм.. это ж скольки разрядные числа будут? ;>
Не проще ли всю задачу сразу решать на C?


16 бит, в принципе можно и 32. На 16 я таким образом логарифмы и эспоненты считал
defunct
Цитата(vvs157 @ Jun 8 2006, 17:57) *
16 бит, в принципе можно и 32. На 16 я таким образом логарифмы и эспоненты считал

Интересно. Можно еще парочку вопросов:
А где точку ставите? 16 бит целая, 16bit - дробная часть, или как-то по-другому?
И насколько оправдано в плане увеличения быстродействия по сравнению с плавающей точкой?
vvs157
Цитата(defunct @ Jun 8 2006, 19:18) *
Цитата(vvs157 @ Jun 8 2006, 17:57) *

16 бит, в принципе можно и 32. На 16 я таким образом логарифмы и эспоненты считал

Интересно. Можно еще парочку вопросов:
А где точку ставите? 16 бит целая, 16bit - дробная часть, или как-то по-другому?
И насколько оправдано в плане увеличения быстродействия по сравнению с плавающей точкой?


Арифметика для 16 бит была такая. Умножение А*В/8000H, деление - A/B*8000H, А-со знаком, В - коэффициент без знака, то есть B<=1 (то есть В - фиксированная точка 0.16). То есть не так, чтоб сначала умножить, а потом разделить, а сразу алгоритм содержал внутри себя дополнительный сдвиг. Насчет быстродействия - не оценивал, так как изначально делалось для 8031 с 16к ROM и там не до С и не до плавающей точки было (с тех пор 10 лет прошло).
SvetaM
Спасибо всем за советы. Только вот не знаете ли вы где можно взять текст программы по реализации Фурье преобразования на ассемблере, да к тому же еще под ATMega16. Заранее признательна за содействие.
GetSmart
Посмотрел сайт elm и elm2. Круто! Особенно ролик со сканированием радиодиапазона. Это там, где красно-оранжевый дисплей. Низачто бы не подумал, что такое можно сделать на меге. Видно мужик настоящий профи.

SvetaM
А чем вам не нравится исходник на том сайте? (на elm или elm2)
Там есть архив, в нём файл ffft.s с асм-текстом. Вроде там расчёты с фиксированной точкой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.