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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> максимальная скорость COM-порта?, получится ли?
skopus
сообщение Aug 31 2005, 21:39
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Здравствуйте!
Прошу вашей помощи по алгоритму задачи.

Есть контроллер AS-megaM на основе Atmega128 с кварцем 7.232 Мгц.

Стоит задача сделать из него генератор синусоидального сигнала с частотой 780гц . То есть в ком-порт будут отправляться дискретные значения амплитуды, которые беруться из таблицы, хранящейся в памяти контроллера, а верхний софт считает все это из порта и будет выводить на экран в виде графика. Казалось, все довольно просто но!...

1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
получается, что COM-порт должен работать на частоте 780*25*18=351000 Гц.

Это же не реально, не так ли? Или есть какой-то другой способ?
Go to the top of the page
 
+Quote Post
yung
сообщение Aug 31 2005, 22:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Вообще, как-то все странно. Какой смысл брать 16-разрядную точность для амплитуды, если всего 25 выборок на период? Искажения гораздо больше отсюда будут (малое число отсчетов на период). ИМХО, разрядность квантования и дискретизации должна быть сопоставима.
Go to the top of the page
 
+Quote Post
ValeraVi
сообщение Aug 31 2005, 22:42
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 44
Регистрация: 30-07-05
Из: Kyiv, Ukraine
Пользователь №: 7 211



2 skopus
при UBRR = 0 и U2X = 1 на вашем кварце мега128 может работать и на 904000 bps (RTFM) ... Проблемы могут возникнуть только если вы это дело будете связывать по ком порту с ПК ... хотя ... и они решаемые...
Go to the top of the page
 
+Quote Post
rat
сообщение Sep 1 2005, 03:02
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 497
Регистрация: 9-06-05
Из: Новосибирск
Пользователь №: 5 852



Вообще говоря 25 выборок очень мало, но если их хватает и 25, то должно хватать 6-8 разрядов, 16 совершенно не к чему, если все-таки нужен приличный синус, то ставь ЦАП 8-разрядов, 64 или 128 выборок, а после активный фильтр, лучше 2 , второго порядка каждый, у меня в такой схеме искажения были лучше 0.1%
Go to the top of the page
 
+Quote Post
CDT
сообщение Sep 1 2005, 05:10
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Цитата(skopus @ Sep 1 2005, 00:39)
Стоит задача сделать из него генератор синусоидального сигнала с частотой 780гц . То есть в ком-порт будут отправляться дискретные значения амплитуды, которые беруться из таблицы, хранящейся в памяти контроллера, а верхний софт считает все это из порта и будет выводить на экран в виде графика.
*

Интересно, а что, верхний софт такой тупой, что сам не может содержать таблицы синуса и брать их из своей памяти, что бы вывести на экран?


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
NickB
сообщение Sep 1 2005, 07:44
Сообщение #6


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

Группа: Свой
Сообщений: 114
Регистрация: 22-06-04
Пользователь №: 102



Может быть стоит подумать о реализации синуса по методу DDS?
А передавать только значение частоты
Посмотрите напримет на телесистемах проект Леонида Ивановича
Go to the top of the page
 
+Quote Post
skopus
сообщение Sep 1 2005, 08:15
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Понимаете, задачу ставил не я. Роль ЦАП играет компьютер. Выборок 25. Амплитуда 16- разрядная. Это условие. Менять его нельзя. Это что-то вроде тестововй задачи.
Искажения сейчас не имеют никакого значения. Нужно, чтоб картинка была похоже на синус хотя бы приблизительно.
Быстродействия меги хватит, но меня беспокоит именно проблема слишком высокой скорости передачи данных по com-порту. Может можно обойти этот момент как-то алгоритмически?
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 1 2005, 08:20
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(skopus @ Sep 1 2005, 01:39)
1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
*


Вы можете передавать значения приращения сигнала (дельта-модуляция) это уменьшит разрядность Ваших данных, что 'разгрузит' скорость передачи.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
skopus
сообщение Sep 1 2005, 08:28
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Цитата(BVU @ Sep 1 2005, 11:20)
Цитата(skopus @ Sep 1 2005, 01:39)
1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
*


Вы можете передавать значения приращения сигнала (дельта-модуляция) это уменьшит разрядность Ваших данных, что 'разгрузит' скорость передачи.
*




но ведь если посылка будет 10 байт а не 18, то все равно получается 780*25*10=195000 - это же больше стандартной скорости 115200.
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 1 2005, 08:56
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(skopus @ Sep 1 2005, 12:28)
Цитата(BVU @ Sep 1 2005, 11:20)
Цитата(skopus @ Sep 1 2005, 01:39)
1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
*


Вы можете передавать значения приращения сигнала (дельта-модуляция) это уменьшит разрядность Ваших данных, что 'разгрузит' скорость передачи.
*




но ведь если посылка будет 10 байт а не 18, то все равно получается 780*25*10=195000 - это же больше стандартной скорости 115200.
*



Хорошо давайте так - передавайте скорость изменения вашего сигнала (ускорение). Может быть в 8-бит то уложитесь, а Программе на PC отдать всю остальную обработку по восстановлению сигнала.
По всей видимости 'в лоб' эта не решается (1 выборка значения -> передача в порт). Если уж связались с COM портом здесь необходима информационная компрессия при граничной скорости передачи (во времени).
Есть еще вариант: необходимо рассмотреть, как быстро надо перестраивать параметры амплитуды, частоты и фазы вашего синуса? Передаете Вашей PC программе 'блоком' эти три значения, при изменении снова 'блок' и т.д.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
skopus
сообщение Sep 1 2005, 09:04
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Цитата(BVU @ Sep 1 2005, 11:56)
Цитата(skopus @ Sep 1 2005, 12:28)
Цитата(BVU @ Sep 1 2005, 11:20)
Цитата(skopus @ Sep 1 2005, 01:39)
1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
*


Вы можете передавать значения приращения сигнала (дельта-модуляция) это уменьшит разрядность Ваших данных, что 'разгрузит' скорость передачи.
*




но ведь если посылка будет 10 байт а не 18, то все равно получается 780*25*10=195000 - это же больше стандартной скорости 115200.
*



Хорошо давайте так - передавайте скорость изменения вашего сигнала (ускорение).
*



Ускорение - это вторая производная от синуса. То есть -sin. От этого ничего не меняется абсолютно, но идея красивая smile.gif
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 1 2005, 09:15
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(skopus @ Sep 1 2005, 13:04)
Цитата(BVU @ Sep 1 2005, 11:56)
Цитата(skopus @ Sep 1 2005, 12:28)
Цитата(BVU @ Sep 1 2005, 11:20)
Цитата(skopus @ Sep 1 2005, 01:39)
1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
*


Вы можете передавать значения приращения сигнала (дельта-модуляция) это уменьшит разрядность Ваших данных, что 'разгрузит' скорость передачи.
*




но ведь если посылка будет 10 байт а не 18, то все равно получается 780*25*10=195000 - это же больше стандартной скорости 115200.
*



Хорошо давайте так - передавайте скорость изменения вашего сигнала (ускорение).
*



Ускорение - это вторая производная от синуса. То есть -sin. От этого ничего не меняется абсолютно, но идея красивая smile.gif
*



cool.gif бывает 'зарапортовался'.
Но есть еще возможность - как поднять тактовую частоту Вашего mega128 на кварце скажем 16.000000Mz и получить максимально совместимые для PC скорость передачи по COM порту в 256000.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
skopus
сообщение Sep 1 2005, 10:38
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Цитата(BVU @ Sep 1 2005, 12:15)
Цитата(skopus @ Sep 1 2005, 13:04)
Цитата(BVU @ Sep 1 2005, 11:56)
Цитата(skopus @ Sep 1 2005, 12:28)
Цитата(BVU @ Sep 1 2005, 11:20)
Цитата(skopus @ Sep 1 2005, 01:39)
1/780 = 0.00128205 секунды
за это время нужно отправить 25 послыок по 18 бит (так как значение амплитуды 16 разрядное)
*


Вы можете передавать значения приращения сигнала (дельта-модуляция) это уменьшит разрядность Ваших данных, что 'разгрузит' скорость передачи.
*




но ведь если посылка будет 10 байт а не 18, то все равно получается 780*25*10=195000 - это же больше стандартной скорости 115200.
*



Хорошо давайте так - передавайте скорость изменения вашего сигнала (ускорение).
*



Ускорение - это вторая производная от синуса. То есть -sin. От этого ничего не меняется абсолютно, но идея красивая smile.gif
*



cool.gif бывает 'зарапортовался'.
Но есть еще возможность - как поднять тактовую частоту Вашего mega128 на кварце скажем 16.000000Mz и получить максимально совместимые для PC скорость передачи по COM порту в 256000.
*



проще припаять обычный ЦАП, чем заменить кварц... Скорее всего так и придется сделать.
Go to the top of the page
 
+Quote Post
bzx
сообщение Sep 1 2005, 10:56
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



1. А что если работать с LPT? Подключить непосредственно к нему ЦАП. Как?
2. А почему бы не использовать звуковую карту PC. Она 16бит. Очень много софта для работы со звуковой картой?


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 1 2005, 11:04
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(skopus @ Sep 1 2005, 14:38)
проще припаять обычный ЦАП, чем заменить кварц... Скорее всего так и придется сделать.
*


А смысл передачи данных на COM порт тогда в чем был? Только что бы посмотреть картинку генерируемого сигнала? cranky.gif
Наверно с этого и надо было начинать ("припаять обычный ЦАП"), если Вы собирались делать обыкновенный генератор синусоидального сигнала. А средством визуализации Вашего сигнала при прохождении всевозможных трактов является тривиальный осцилограв или примочка к PC (в данном случае, что доступнее). smile.gif


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post

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

 


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


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