Микропроцессорный передатчик и приемники

Usr1
realsystem:

А разве openservo недостаточно? Там команды на сервы поступают по I2C.

Классный проект! Надо взять на заметку. Как-нибудь попробую прикрутить…

realsystem
Володимир:

Кто генерит команды?
Нужен ведь РС-приемник…

МК, ну их проект можно взять за основу, он вроде как отлажен

Usr1
realsystem:

МК, ну их проект можно взять за основу, он вроде как отлажен

Главное чтобы у них API был достаточно отлажен…

Boroda-msk
Володимир:

Работают фронты, что для цифровой техники позапрошлый век. “Такие расстояния” - это около метра, а то и больше. Рядом с силовыми проводами а-ля электросварка и точно с такими же фронтами токов…

Переходите на оптоволокно… 😃

an2an
Boroda-msk:

Переходите на оптоволокно…

Согласованной дифференциальной линии будет достаточно.

avalanch

Исключить полностью возможно (даже без аппаратного ШИМ), если прогу аккуратненько написать. А приемлемые для сервы рамки - это сколько мкс в цифрах ?

an2an:

Исключить его полностью, в такой реализации почти невозможно, но и загнать в приемлемые рамки - задача не простая.

an2an
avalanch:

Исключить полностью возможно (даже без аппаратного ШИМ), если прогу аккуратненько написать. А приемлемые для сервы рамки - это сколько мкс в цифрах ?

Современная аппаратура имеет разрешение 11 бит, что соответствует примерно 500 наносекунд, джитер хочется иметь хотябы вдвое меньше разрешения, иначе нахера оно нужно… Даже при использовании вложенных прерываний обеспечить такой джитер будет ооооочень сложно, если у вас есть потребности обрабатывать и другие прерывания.

avalanch

ATMEGA88 например на 20 МГц справится, 1 команда выполняется 50 нс. За 5 команд в принципе можно успеть свалить из другого более низкоприоритетного прерывания и выставить ноги управления сервами. Другое дело что для нескольких каналов все равно появится задержка, то есть каналы НЕ одновременно будут изменяться. ПЛИС конечно справится с такой задачей гораздо лучше. Даже не предполагал что такая проблема сделать хороший многоканальный кодер или декодер. Спасибо за разъяснения.

an2an:

что соответствует примерно 500 наносекунд, джитер хочется иметь хотябы вдвое меньше разрешения

Aleksey_Gorelikov
realsystem:

А разве openservo недостаточно? Там команды на сервы поступают по I2C.

+1, да и у Конзе есть прошивка к китайским регулям (копиям джети 18) с управлением по и2с. Правда Конзе не из-за помехозащищенности вроде, а ради быстродействия для ХУФО новый борт изобретал… Но всеравно, принципиально новая цифровая электронника уже полным комплектом!

an2an

В принципе можно многое, я в свое время поприседал когда делал декодер PCM1024 на восьмой меге. Гораздо лучше делать это аппаратно. И еще неплохо бы высталять данные в каналы одновременно, т.к. если машинки должны работать синхронно (например половинки РВ), то не гоже делать меж ними задержку…

Кстати, в АВР нет ведь управления приоритетами прерываний?

avalanch

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

an2an:

В принципе можно многое…

Явного нет, но можно сделать. При входе в низкоприоритетное прерывание выставить флаг разрешения прерываний. Тогда при приходе высокоприоритетного, контроллер уйдет на него. Естественно при этом не забыть сохранить статус и другие нужные регистры.

Кстати, в АВР нет ведь управления приоритетами прерываний?

an2an
avalanch:

Явного нет, но можно сделать. При входе в низкоприоритетное прерывание выставить флаг разрешения прерываний. Тогда при приходе высокоприоритетного, контроллер уйдет на него. Естественно при этом не забыть сохранить статус и другие нужные регистры.

Это я знаю, но прерывание от таймера не самое высокоприоритетное, значит более приоритетными пользоваться нельзя или почти нельзя…

tumbzik

Не такая уж большая проблема, если процессор имее нормальный развитОй модуль таймера, например как TMS320F28xx, модуль которого позволяет легко реализовать как типичный шим так и PPM, при этом ядро будет радостно спать всё время, кроме того момента, когда нужно изменить интервал. А если очень хочется поставить в железку говнопроц, то простенькая, маленькая плисина, типа XC9500XL или если нравится Альтера-MAX3000 и в путь. Там даже знать то ничего не нужно, схему на вентилях нарисовать сможет любой хоть сколь нибудьпонимающий что такое цифровая электроника.

Ксати за примером готового пульта особенно далеко ходить не нужно. Есть такой замечательный аппарат Multiplex Royal EVO. Работает так: формирует PPM, а в паузах, пока крутится таймер-обсчитывает математику. Прога написана так, что исключает коллизии и к моменту, когда нужно выпулить очередные новые данные, они уже всегда готовы.

an2an

Так генерить PPM - не проблема, одной ножкой таймер завсегда дергать умеет, надо всего лишь успеть подсунуть новое значение до следующего срабатывания таймера, а вот дергать 8-ю ногами таймер не умеет. В приемнике гораздо больше асинхронных событий требующих быстрой обработки, пульт проще приемника в этом отношении.

tumbzik
an2an:

а вот дергать 8-ю ногами таймер не умеет.

Кто вам такое сказал? Всё зависит от устройства этого таймера и числа каналов=)

an2an

Мы говорим про конкретный камень, атмеловский арм7 и еще немного про какие-то АВР-ы. А в какой железке до 10-15 баксов таймер может дергать 8-ю ножками?

tumbzik

focus.ti.com/docs/prod/…/msp430f5438.html Самый сильный из мелких, но и более мелких в том же семействе есть представители у которых >8 ног на таймер цепляется.
focus.ti.com/docs/prod/…/tms320f2806.html один из самых слабеньких представителей семейства самых сильненьких.
Армы не уважаю и не использую. Пока не столкнулся с задачей где бы они были реально в тему.
Цены указанны при закупке 100U, при регистрации проекта и на 10 штук дадут ту же цену, если не ниже.
p.s чуток слукавил. Очень сильно присматриваюсь к кортексам, но пока не ясно куда их использовать=))))

avalanch

Какие в приемнике асинхронные события кроме приема и укадки данных из эфира (это если PCM формат), если PPM то вообще все проще гораздо. Кстати задержек в выставлении импульсов сервы можно избежать (минимизировать) если все сервы повесить на 1-2 порта. Тогда можно выставлять сразу весь порт в соответствии с текущим положением. ИМХО даже ATMEGA88 на высокой частоте клока справится.

an2an:

В приемнике гораздо больше асинхронных событий требующих быстрой обработки, пульт проще приемника в этом отношении.

tumbzik
avalanch:

Какие в приемнике асинхронные события кроме приема и укадки данных из эфира (это если PCM формат), если PPM то вообще все проще гораздо. Кстати задержек в выставлении импульсов сервы можно избежать (минимизировать) если все сервы повесить на 1-2 порта. Тогда можно выставлять сразу весь порт в соответствии с текущим положением. ИМХО даже ATMEGA88 на высокой частоте клока справится.

Если просто взаимодействие с приемопередающим модулем по UART в стиле работы с черным ящиком, то справится даже оч простенький проц. А если модуль умный и его нужно конфигурировать, либо как-то иначе предобрабатывать данные, тогда появляется море асинхронных процессов, уложить которые в синхронные задачка довольно сложная.

Usr1

Не удается уделять много времени этому проекту 😦 Но, учитывая, что радиокомплектов все равно пока нет, сильно не тороплюсь… Еще и полетать ведь хочется 😉

Вообщем, сегодня посидел часок. В результате на одной плате совместил функции приемника и передатчика и, пультом через плату порулил элеронами. Пока без возможности триммирования и установки диапазонов. И цикл достаточно простой и дубовый. Буду доводить до ума API и эмулировать работу комплектов связи через провода…

Задался вопросом, хватит ли 8 бит для передачи одного пропорционального канала? Или же необходима более высокая точность? Мне, как начинающему авиамоделисту, кажется, что достаточно, но тут я могу ошибаться…

tumbzik

В топовых стандартах заложено 2048отсчетов на канал. DSM2048 например.