Например TDA7294

Форум РадиоКот • Просмотр темы - sin, mega8535, AD7524 и WinAVR. Как реализовать синусоиду?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб авг 23, 2025 18:42:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: sin, mega8535, AD7524 и WinAVR. Как реализовать синусоиду?
СообщениеДобавлено: Вт апр 28, 2009 17:41:57 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
Здраствуйте! Вот собрал себе генератор на mega8535 и AD7524. Помогите пожалуйста в написании программы на С++, для генерации синуса от нескольких Гц до нескольких МГц. Схема рабочая, проверено, написал для нее код чтобы генерировать пилообразный сигнал.

Заранее спасибо!


Вложения:
AD7524.GIF [15.2 KiB]
Скачиваний: 770

_________________
Все гениальное - просто!!!!!!!!!
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 17:57:22 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
а вот пилообразный, это вы имеете просто треугольный или как в строчной развертке?
можете дать сайт, где все об этой схеме написано?

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 18:23:59 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
Stalker46 писал(а):
а вот пилообразный, это вы имеете просто треугольный или как в строчной развертке?
можете дать сайт, где все об этой схеме написано?


Об этой схеме ни наодном сайте вы не найдете описание на данный момент. поскольку я её сам придумал)))))))

Пилообразный, это треугольный. Сначала сигнал нарастает в течении определенного промежутка времени, а потом в течении такого же промежутка времени спадает.

По схеме если что то надо, то спрашивайте у меня, я отвечу. А если вы владеете языком Си, подскажите мне:)

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 18:45:32 
Друг Кота

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Сб мар 07, 2009 20:44:36
Сообщений: 4435
Рейтинг сообщения: 0
я Учу Си))) так что на данный момент не помогу...

_________________
Не умеешь - не берись, но не взявшись не научишься...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 18:55:25 
Говорящий с текстолитом
Аватар пользователя

Карма: 7
Рейтинг сообщений: 12
Зарегистрирован: Вс дек 14, 2008 20:36:47
Сообщений: 1596
Откуда: SPb
Рейтинг сообщения: 0
Не знаю, может туплю, а чем это не устраивает http://radiokot.ru/circuit/digital/measure/20/ ?
На предмет расширения диапозона можно к автору постучаться.... :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 19:02:04 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18404
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
до нескольких мегагерц - это вы немножко завысили требования... если писать исключительно на ассемблере - можно выжать под сотню килогерц синус... на чистом С или С++ даже это будет сложновато...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 19:15:26 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
saschai писал(а):
Не знаю, может туплю, а чем это не устраивает http://radiokot.ru/circuit/digital/measure/20/ ?
На предмет расширения диапозона можно к автору постучаться.... :))


Эта схему устраивает если необходим генератор просто как генератор., а мне надо просто реализовать его с бОльшими функциями на базе тех компонентов что имеются в наличии у меня, это часть моей дипломной работы.

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 19:16:42 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Не всё простое гениально...
Если выдавать отсчеты синусоиды на ЦАП с помощью м/к, то частотная шкала будет неудобной - при 16МГц тактовой, двухбайтном делителе этой тактовой и тридцатидвух отсчетах на период синусоиды, распределение частот на шкале будет примерно таким:
Изображение
То есть, самая высокая - 62'500Гц, следующая - 31'250Гц, и так далее...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 19:19:02 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
ARV писал(а):
до нескольких мегагерц - это вы немножко завысили требования... если писать исключительно на ассемблере - можно выжать под сотню килогерц синус... на чистом С или С++ даже это будет сложновато...


Хотелось бы как можно больше выжать.

А почему не получится "до нескольких мегагерц", можно чуть поподробней? Чем С так ограничивает? Я просто не так давно этим стал заниматся и интересно)

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 19:26:29 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
Yellow Tiger писал(а):
...частотная шкала будет неудобной - при 16МГц тактовой, двухбайтном делителе этой тактовой и тридцатидвух отсчетах на период синусоиды...

То есть, самая высокая - 62'500Гц, следующая - 31'250Гц, и так далее...


Вы хотите сказать что "при 16МГц тактовой" нельзя сделать плавной регулировки частоты на частотном диапазоне? А если взять другой кварц? Или дело не только в нем?

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 19:49:37 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Арнаутов Юрий писал(а):
А почему не получится "до нескольких мегагерц", ... Чем С так ограничивает?
Это не Си ограничивает - это возможности кристалла ограничены.
Арнаутов Юрий писал(а):
Вы хотите сказать что "при 16МГц тактовой" нельзя сделать плавной регулировки частоты на частотном диапазоне?
Напиши хотя бы приблизительно тот участок программы, которым собираешься выводить эту синусоиду на ЦАП, даже без окружения - только сам цикл, и подумай - как ты будешь менять скорость вывода отсчетов на выход м/к, сам всё и увидишь.
Арнаутов Юрий писал(а):
А если взять другой кварц?
А больше 16МГц этот м/к не позволяет. Да и другие м/к того же класса не намного лучше - 20МГц. Они для другого сделаны, их задача - работать сложно и гибко (то есть - по программе), а не быстро.

Твое решение для этой задачи не годится. Совсем - так как оно из другой оперы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 20:15:46 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
>>А почему не получится "до нескольких мегагерц", можно чуть поподробней?

Прикинь, на каждую инструкцию 1-3 такта ситстемной синхронизации:
загрузить значение синуса из таблицы;
передать значение в порт;
инкрементировать адрес индекса;
перейти по метке.
Сколько машинных циклов, во столько раз и надо делить тактовую частоту. И это макс. что получится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 20:46:21 
Прорезались зубы

Зарегистрирован: Пт ноя 16, 2007 13:52:44
Сообщений: 231
Откуда: Рига, Латвия
Рейтинг сообщения: 0
Тема конечно интересная..
А теперь углубимся в процесс ЦАП-а - у нас есть бинарное значение на входе - на выходе уровень :) про частоту ничего.. при переходе с одного значения на другое ЦАП соответственное меняет значение как и всё в мире не мгновенно, а затрачивая на это время. В итоге на выходе мы получаем что-то..
Теперь к вашей задаче - надо получить сигнал определённои формы!
Любая форма описывается чем:
В математике - формулои, а в информатике - определённым числом точек.. :)
Так вот из этого вопросы:
- сколько же точек у вас сеичас на пилу..
- сколько точек хотите на Синусоиду??
Понятное дело чем больше точек тем меньше максимальная частота..
И конечноже - чем больше расчетов на каждуу точу - тем максимальная частота ещё уменьшается, а сигнал - тем более ступенчатый (Это случай когда у вас не хранятся заготовленные - расчитаные точки в памяти).
Теперь о синусоиде - расчет её грамоздок и требует математику с плавающей точкои, легче брать заготовленные константы. и скажу сразу для удобства расчет идёт от 0 до 90 градусов.. а остальное преобразование - или негатив или спад.. и т.д.
А если нужна формула расчета синуса (относительно точно) http://en.wikipedia.org/wiki/Sine#Sine (есть ссылак на русский - там есть формула расчета через ряды)
...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 21:51:10 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Pe3ucTop писал(а):
А если нужна формула расчета синуса ...
Ну вот нафига в этой задаче - расчет синуса?! :))) Эта таблица один раз рассчитывается и потом выдается на выход в разных темпах... :)))

Pe3ucTop писал(а): ...там есть формула расчета через ряды...
Ильф и Петров писал(а):
Остапа несло...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 22:36:39 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
Pe3ucTop писал(а):
Тема конечно интересная..
...

Для многих вероятно не очень, но для меня в данный момент очень актуальная)

Для пилы я брал 255 точек на подъем и 255 на спад, поскольку она выводилась не с очень большой частотой, то этого кол-ва точек много небыло.

Сколько я хочу точек в синус?... Есть идея формировать их столько, чтобы на низких частотах сигнал был более точный, а с повышением, их количество уменьшать.

Насчет заготовления констант на синус, я думал, но меня это не сильно привлекает... это по свойму ограничивает. Есть задумка просчитать синус, получить нужное количество точек и занести их в массив, а после этого выводить на ЦАП. Если частота сильно большая, просчитать меньшее количество точек, чтобы МК успел их вывести и получить нужную частоту. Скорость в ущерб качеству:)

За формулу для синуса спасибо. Я с математикой дружу. если расчитываь на бумаге, а если тоже самое на С, то это для меня как подводный камень.

В языке С есть такие функции как asin(x) и sinh(x), но что то не получается с ними работать. Может кто сталкивался и у него получалось?

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 22:40:06 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
Yellow Tiger писал(а):
Pe3ucTop писал(а):
А если нужна формула расчета синуса ...
Ну вот нафига в этой задаче - расчет синуса?! :))) Эта таблица один раз рассчитывается и потом выдается на выход в разных темпах... :)))


Почему же? Я думаю расчет синуса то что нужно! Ведь можно использовать меньшее количество значений, чем есть в таблице, которую вы хотите один раз расчитать, тем самым увеличить частоту сигнала, конечно при этом пострадает его качество, и он будет сильно дискретным.

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 22:44:59 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср апр 22, 2009 11:07:00
Сообщений: 161
Рейтинг сообщения: 0
Может поставить тудыть паралельную рамку, на адресную шинку которой синтезатор частоты. А на выход цап r2r. Контролером же заполнять рамку и управлять синтезатором. Хоть гигагерцы, если такую память найдете. Я б посоветовал срам от старых материнок (кеш для пня).

Если уж настолько актуально. А МК это не для этого. Это для другого (с) мой


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 23:07:18 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Арнаутов Юрий писал(а):
Почему же? Я думаю расчет синуса то что нужно! Ведь можно использовать меньшее количество значений, чем есть в таблице, которую вы хотите один раз расчитать, тем самым увеличить частоту сигнала, конечно при этом пострадает его качество, и он будет сильно дискретным.

Не нужен здесь расчет синуса, и вообще смысл делать из меги генератор, тем более сигналов различной формы. Даже если брать один синус, то тоже не нужен расчет. Для того чтобы получить сигнал с большей частотой нужно "проредить" таблицу синуса (т. е. скакать чез 2, 3 и более отсчтетов), естественно это будет в ущерб качеству. Теперь о максимальной частоте, если теоретически предположить, что максимальная скорость выдачи отсчета микроконтроллером будет составлять 6 циклов (для меги можно читать тактов генератора), и на период синуса нужно будет вывести хотя бы 12 отчетов, то максимальная частота генерируемого сигнала будет 20МГц/(6*12) = 277 кГц. Но чтобы так сделать придется постараться. При этом ничем другим контроллер заниматься просто не сможет, и о С тоже можно забыть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 28, 2009 23:31:00 
Родился

Зарегистрирован: Чт мар 19, 2009 19:35:49
Сообщений: 14
Откуда: Алчевск
Рейтинг сообщения: 0
smac писал(а):
Не нужен здесь расчет синуса, и вообще смысл делать из меги генератор, тем более сигналов различной формы...


Спасибо, я понял ваше мнение. Я повторюсь, это часть моей дипломной работы. А в целом там кроме генератора еще чет есть) Ну и в конце концов надо же студенту что то делать на диплом, вот и решил сворганить такую нехитрую штуку :roll:

_________________
Все гениальное - просто!!!!!!!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 29, 2009 09:50:42 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Арнаутов Юрий писал(а):
Я думаю расчет синуса то что нужно! Ведь можно использовать меньшее количество значений, чем есть в таблице, ...
Рассуждения верные... но - по отношению к какой-то другой ситуации.

С одной стороны, никто не мешает брать значения из заранее рассчитанной таблицы не подряд, а через 1, через 2, через 3, уменьшая дискретность, а если частоты выдачи некратны, то подготовить разные таблицы синуса.

С другой стороны, даже если процессор будет молотить только на выдачу синуса наружу, максимум, чего удастся добиться от него - 60 килогерц, и это не при 255 отсчетах на период, а всего-лишь при 32-ух! Если же его заставить еще и синусы на ходу рассчитывать - то даже звукового диапазона не получится. Да и глупо это - N раз в секунду повторять одни и те же вычисления, вычисления с заведомо константным результатом.

Так-что - синус должен быть табличным и только!

PS А, кстати, мысль, что этот "перестраиваемый" генератор между двумя "соседними" частотами будет молча проскакивать половину своего диапазона - показалась несущественной?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 22 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y