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

 
 
> Фазовый сдвиг..., Генерация сигналов с фазовым сдвигом.
Andy_F
сообщение Oct 8 2006, 19:57
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



Возник следующий вопрос: как сгенерить два меандра с заданным фазовым сдвигом между ними, при чём этот сдвиг должен достаточно часто программно меняться ?

Видимо, это можно реализовать на 16 bit Timer/Counter1 (для Меги). Как бы организовать поизящнее задание значения фазового сдвига? А то пока видится громоздкий алгоритм с остановкой таймера, записью в регистр одного из каналов требуемого фазового сдвига, сбросом прескалера, запуском таймера... blink.gif

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nanobyte
сообщение Oct 9 2006, 06:45
Сообщение #2


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



А какие требуются частота, диапазон сдвига и шаг фазы?


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
Andy_F
сообщение Oct 9 2006, 08:58
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



Частота - около 8 кГц (при кварце 16 МГц), шаг сдвига фазы - несколько сотых градуса, диапазон, видимо, 0..180 градусов. Но это всё не принципиально, интересует только алгоритм изменения фазового сдвига между выходами, остальное очевидно...

С прерываниями связываться не хочется - контроллер будет загружен "тяжёлыми" задачами, вероятно, с другими прерываниями, если ещё и прерывание от генератора будет "под ногами путаться", будет совсем тяжко. Одно дело иногда (при необходимости) задавать новое значение сдвига, и совсем другое отвлекаться на каждый перепад выходного напряжения.

Двойная буферизация в данном случае только усложняет дело - при записи новых значений в регистры OCRx обновление произойдёт не одновременно, а каждый канал "досчитает" старое значение и в разные моменты времени каналы стартуют с новыми значениями. Поэтому я и предполагаю, что надо выдавать reset на прескалер, вроде бы при этом происходит безусловное обновление значений OCRx. А чтобы не попасть на момент переключения, надо, видимо, и таймер останавливать.

За ссылку (http://electronix.ru/forum/index.php?showtopic=14401) спасибо, действительно, задача похожая (и для похожих целей), только вопрошающий в той ветке как то сам не чётко понимает, что ему нужно. Соответственно, и ответы несколько "не в ту степь".

В целом, видимо, более простого (изящного) пути нет... sad.gif
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Oct 9 2006, 14:47
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(Andy_F @ Oct 9 2006, 11:58) *
С прерываниями связываться не хочется - контроллер будет загружен "тяжёлыми" задачами, вероятно, с другими прерываниями, если ещё и прерывание от генератора будет "под ногами путаться", будет совсем тяжко. Одно дело иногда (при необходимости) задавать новое значение сдвига, и совсем другое отвлекаться на каждый перепад выходного напряжения.

Да и не надо прерывания, пусть работает "на фоне". Там прерывания нужны были только для того чтобы при изменении фазы от кнопки не происходило заглатыввание периода, а если это делается 1 раз в пару секунд то можно прерывания включать только для этого дела, а потом снова отключать, там же в прерывании.
Цитата
За ссылку (http://electronix.ru/forum/index.php?showtopic=14401) спасибо, действительно, задача похожая (и для похожих целей), только вопрошающий в той ветке как то сам не чётко понимает, что ему нужно. Соответственно, и ответы несколько "не в ту степь".

У него был детектор, и нужно было сдвигом фазы свести выходной сигнал до минимума. А то что я выкладывал с кнопками, это как раз Ваш вариант, вроде бы.
Go to the top of the page
 
+Quote Post



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

 


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


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