|
|
  |
Генерация сигнала прямоугольной формы, реалиация линейного изменения |
|
|
|
Aug 29 2008, 11:50
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(=GM= @ Aug 29 2008, 14:31)  по-другому никак. По другому тоже можно - генерить прямоугольник сразу, с частотой в два раза больше требуемой, затем внешним триггером делить на два. На прямоугольник не надо так много выборок как на синус. И меандр будет чище, чем после фильтра->компаратора.
|
|
|
|
|
Aug 29 2008, 11:59
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(=GM= @ Aug 29 2008, 13:13)  Почему же извращённый? Это единственный вариант на авр, дешёвый к тому же. Недостаток - при перестройке генерация прекращается. Ну и аналоговой обвески много - DAC и фильтр. Цитата(Qwertty @ Aug 29 2008, 15:50)  По другому тоже можно - генерить прямоугольник сразу, с частотой в два раза больше требуемой, затем внешним триггером делить на два. На прямоугольник не надо так много выборок как на синус. И меандр будет чище, чем после фильтра->компаратора. Нельзя. Сигнал надо делать чистым, а если фаза будет дрожать (а без преобразования в синус и последующей фильтрации это неизбежно), то и после делителя картина останется прежней. Ничего, даже отдаленно напоминающего меандр, уже не получится. А вот через аналоговое преобразование - получится.
|
|
|
|
|
Aug 29 2008, 12:02
|

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

|
Цитата(=GM= @ Aug 29 2008, 16:31)  Прозевали вы сообщение уважаемого rx3apf (пост #8). Сначала надо получить синус, потом компаратор, потом меандр 0,3Гц-200кГц с дискретом 0,3 Гц, по-другому никак. А, это там, где он назвал такой вариант "извращённым"?  А в вашей интерпретации это уже "по-другому никак"?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 29 2008, 12:06
|
Гуру
     
Группа: Участник
Сообщений: 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? Теоретически - достаточно больше двух выборок. На практике, используя пассивный ФНЧ пятого порядка, картинка была вполне симпатичной при четырех-пяти.
|
|
|
|
|
Aug 29 2008, 12:28
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(rx3apf @ Aug 29 2008, 15:59)  Нельзя. Сигнал надо делать чистым, а если фаза будет дрожать (а без преобразования в синус и последующей фильтрации это неизбежно), то и после делителя картина останется прежней. Ничего, даже отдаленно напоминающего меандр, уже не получится. А вот через аналоговое преобразование - получится. У меня и так получается нормально. Не знаю как насчет отдаленно, но я по осцилу от меандра сигнал после делителя отличить не могу.
|
|
|
|
|
Aug 29 2008, 12:48
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(rx3apf @ Aug 29 2008, 16:34)  Тогда какая принципиальная разница, генерить сразу меандр или делать его потом триггером ? Вариант с накоплением фазы не дает возможность получить меандр Сразу не выходит, получается что-то типа 11100_11000_11100_11000...То есть при неизменном периоде длительность импульса скачет достаточно серьезно.
|
|
|
|
|
Aug 29 2008, 12:59
|
Гуру
     
Группа: Участник
Сообщений: 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
|
|
|
|
|
Aug 29 2008, 13:09
|

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 тактов есть какие-нибудь предположения?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 29 2008, 13:37
|

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
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 29 2008, 14:22
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(rx3apf @ Aug 29 2008, 16:59)  И после делителя на 2 внешним триггером она будет скакать точно так же. Вроде бы самоочевидно, нет ? Нет  11100_11000_11100_11000... 11111_00000_11111_00000... после делителя
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|