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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Генерация сигнала прямоугольной формы, реалиация линейного изменения
Qwertty
сообщение Aug 29 2008, 11:50
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(=GM= @ Aug 29 2008, 14:31) *
по-другому никак.

По другому тоже можно - генерить прямоугольник сразу, с частотой в два раза больше требуемой, затем внешним триггером делить на два. На прямоугольник не надо так много выборок как на синус. И меандр будет чище, чем после фильтра->компаратора.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 11:59
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(=GM= @ Aug 29 2008, 13:13) *
Почему же извращённый? Это единственный вариант на авр, дешёвый к тому же.

Недостаток - при перестройке генерация прекращается. Ну и аналоговой обвески много - DAC и фильтр.


Цитата(Qwertty @ Aug 29 2008, 15:50) *
По другому тоже можно - генерить прямоугольник сразу, с частотой в два раза больше требуемой, затем внешним триггером делить на два. На прямоугольник не надо так много выборок как на синус. И меандр будет чище, чем после фильтра->компаратора.

Нельзя. Сигнал надо делать чистым, а если фаза будет дрожать (а без преобразования в синус и последующей фильтрации это неизбежно), то и после делителя картина останется прежней. Ничего, даже отдаленно напоминающего меандр, уже не получится. А вот через аналоговое преобразование - получится.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 29 2008, 12:02
Сообщение #18


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(=GM= @ Aug 29 2008, 16:31) *
Прозевали вы сообщение уважаемого rx3apf (пост #8). Сначала надо получить синус, потом компаратор, потом меандр 0,3Гц-200кГц с дискретом 0,3 Гц, по-другому никак.


А, это там, где он назвал такой вариант "извращённым"? smile.gif А в вашей интерпретации это уже "по-другому никак"? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 12:06
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(=GM= @ Aug 29 2008, 13:58) *
Цикл легко можно уменьшить до 8 тактов и даже до 7. (С помощью усложнения схемы мне даже удалось довести до 4 тактов для генератора и до 5 тактов для свипа, впрочем там преследовались другие цели.)

А вот как сделать меньше 9 без уменьшения разрядности накопителя ? Я когда-то этим развлекался (переделывал программку от J. Hansen), добавлял генератор белого шума, упрощал генераторы пилы, но вот сократить цикл синуса не смог...


Цитата(=GM= @ Aug 29 2008, 13:39) *
Чтобы сгенерить нормальный синус, надо не менее 8-10 выборок на период. Для выходной частоты 200 кГц частота выборок составит не менее 1600-2000 кГц, и то этого может быть мало. При тактовой частоте проца 20 Мгц на одну выборку остаётся всего 10 тактов, какие 80?

Теоретически - достаточно больше двух выборок. На практике, используя пассивный ФНЧ пятого порядка, картинка была вполне симпатичной при четырех-пяти.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Aug 29 2008, 12:28
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(rx3apf @ Aug 29 2008, 15:59) *
Нельзя. Сигнал надо делать чистым, а если фаза будет дрожать (а без преобразования в синус и последующей фильтрации это неизбежно), то и после делителя картина останется прежней. Ничего, даже отдаленно напоминающего меандр, уже не получится. А вот через аналоговое преобразование - получится.

У меня и так получается нормально. Не знаю как насчет отдаленно, но я по осцилу от меандра сигнал после делителя отличить не могу.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 12:34
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Qwertty @ Aug 29 2008, 16:28) *
У меня и так получается нормально. Не знаю как насчет отдаленно, но я по осцилу от меандра сигнал после делителя отличить не могу.

Тогда какая принципиальная разница, генерить сразу меандр или делать его потом триггером ? Вариант с накоплением фазы не дает возможность получить меандр (к меандру форма приближается по мере увеличения числа выборок на период), а с прямым счетом тактов разрешение на высоких частотах очень грубое.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Aug 29 2008, 12:48
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(rx3apf @ Aug 29 2008, 16:34) *
Тогда какая принципиальная разница, генерить сразу меандр или делать его потом триггером ? Вариант с накоплением фазы не дает возможность получить меандр

Сразу не выходит, получается что-то типа 11100_11000_11100_11000...То есть при неизменном периоде длительность импульса скачет достаточно серьезно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 12:53
Сообщение #23


Ambidexter
*****

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



Цитата(rx3apf @ Aug 29 2008, 11:06) *
А вот как сделать меньше 9 без уменьшения разрядности накопителя ? Я когда-то этим развлекался...но вот сократить цикл синуса не смог

Всё просто. Если вы до запуска цикла перенесёте таблицу синуса из флеша в озу, а в программе из поста #13 вместо команды lpm поставите команду ld r0,z - получите уже 8 тактов.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 12:59
Сообщение #24


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Qwertty @ Aug 29 2008, 16:48) *
Сразу не выходит, получается что-то типа 11100_11000_11100_11000...То есть при неизменном периоде длительность импульса скачет достаточно серьезно.

И после делителя на 2 внешним триггером она будет скакать точно так же. Вроде бы самоочевидно, нет ?


Цитата(=GM= @ Aug 29 2008, 16:53) *
Всё просто. Если вы до запуска цикла перенесёте таблицу синуса из флеша в озу, а в программе из поста #13 вместо команды lpm поставите команду ld r0,z - получите уже 8 тактов.

А, ну такой вариант я предполагал. Просто когда я развлекался с таким генератором, использовался 2313, а у него такой фокус не пройдет из-за ограниченности памяти.

Сообщение отредактировал rx3apf - Aug 29 2008, 12:57
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 13:09
Сообщение #25


Ambidexter
*****

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



Цитата(rx3apf @ Aug 29 2008, 10:59) *
Недостаток - при перестройке генерация прекращается. Ну и аналоговой обвески много - DAC и фильтр

Ну, это как систему строить. В одном варианте у меня при 7 тактах на выборку (это 2857 квыборок/с) генерация при перестройке не прекращается. А в другом варианте при 5 тактах на выборку (это 4000 квыборок/с) частота перестраивается с заданной скоростью. И только в последнем варианте, при 4 тактах на выборку (это 5000 квыборок/с), генерация при перестройке прекращается. Вот думаю, как лучше объединить варианты в одном изделии.


Цитата(rx3apf @ Aug 29 2008, 11:59) *
А, ну такой вариант я предполагал. Просто когда я развлекался с таким генератором, использовался 2313, а у него такой фокус не пройдет из-за ограниченности памяти

Что ж вы молчали-то? Вот чего не напишу, всё уже предполагалось, а чего спрашивать тогда? А насчет 7 тактов есть какие-нибудь предположения?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 13:14
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(=GM= @ Aug 29 2008, 17:09) *
о не напишу, всё уже предполагалось, а чего спрашивать тогда? А насчет 7 тактов есть какие-нибудь предположения?

А вот 7 и меньше тактов - действительно не могу сообразить.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 13:37
Сообщение #27


Ambidexter
*****

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



Цитата(rx3apf @ Aug 29 2008, 12:14) *
А вот 7 и меньше тактов - действительно не могу сообразить

Ну, это тоже просто, примерно вот так
Код
        add   r28,r24 ; 1
        adc   29,r25  ; 1
        adc   r30,r26 ; 1
        ld    r0,z    ; 2
loop:   out   portb,r0; 1
        add   r28,r24 ; 1
        adc   29,r25  ; 1
        adc   r30,r26 ; 1
        ld    r0,z    ; 2
        add   r28,r24 ; 1
        out   portb,r0; 1
        adc   29,r25  ; 1
        adc   r30,r26 ; 1
        ld    r0,z    ; 2
        rjmp  loop    ; 2, total=14/2=7


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 13:42
Сообщение #28


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(=GM= @ Aug 29 2008, 17:37) *
Ну, это тоже просто, примерно вот так

Хм, действительно. Растянуть цикл я пробовал, но по растактовке не получалось. А тут и в самом деле получается...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 13:51
Сообщение #29


Ambidexter
*****

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



Цитата(AHTOXA @ Aug 29 2008, 11:02) *
А, это там, где он назвал такой вариант "извращённым"? smile.gif А в вашей интерпретации это уже "по-другому никак"? smile.gif

Именно это вы и прозевали (:-)


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Aug 29 2008, 14:22
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(rx3apf @ Aug 29 2008, 16:59) *
И после делителя на 2 внешним триггером она будет скакать точно так же. Вроде бы самоочевидно, нет ?

Нет smile.gif
11100_11000_11100_11000...
11111_00000_11111_00000... после делителя
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:31
Рейтинг@Mail.ru


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