usb-адаптер передатчика - альтернативная open-source прошивка

osnwt
Николай-К:
  1. 2006.07.13 - работает но почти все каналы дергаются

By design. Это уже обсуждали. Хотя у некоторых работает без дрыгов, но это просто удачный USB хост. Причина выявлена. Считать прошивку устаревшей.

  1. 2006.07.20 - не работает (и в игровых устройствах ее нет)

То, что нет в устройствах - странно. Должно просто не работать (у большинства) чтение PPM сигнала. Считать прошивку нерабочей.

  1. 2006.08.09 - работает очень хорошо

Рабочая прошивка с тем же набором опций, что и предыдущая (которая не работает). Считать прошивку баг-фиксом предыдущей.

  1. 2006.08.11 - работает очень хорошо (разницы с предыдущей не увидел)

Разницы и нет в смысле подергивания. Разница только в дополнительном дублировании одного канала на выход контроллера и альтернативный вариант джойстика с дублирующими кнопками (и в этом варианте частота передачи данных на компьютер в 2 раза ниже, чем без кнопок - теоретически 50 и 100 раз в секунду, соответственно. Практически не проверялось).

И еще попутно вопрос, а что биты конфигурации все должны быть в Off,
там только SUT0 - сам ставится в On, а то ведь в прошивках которые были выложены
здесь раньше было - CKOPT-On и SPIEN-On?

Судя по часто появляющемуся тут вопросу о битах конфигурации: я вообще не указывал того, какие биты должны быть прошиты. Должны быть прошиты точно те же самые биты, что и для оригинальной прошивки, поскольку аппаратно устройства идентичны. И отсутствие прошитого бита SPIEN вообще сделает контроллер неперешивающимся по SPI. Поскольку прошивка задумывалась, как drop-in replacement для оригинальной (бросил на место оригинальной и забыл), то акцента на установке битов не делалось.

Кабель у меня собран на Atmega8-16PI который питается от 3.3 вольт.

Если оно работает с оригиналом, то будет работать и с альтернативной версией. Спор по поводу питания от 3.3 вольт кристаллов, работающих на 12 MHz, уже был в соответствующей ветке. Как правило, все работает. Я предпочел питать контроллер от 5 вольт, но выбор этот более-менее произвольный.

Для полного результата нужно еще проверить на разных версиях винды и разных
передатчиках, эта возможность у меня есть но нужно некоторое время.

Самое интересное - проверить на 98 и ME. 98-я, по имеющейся информации, иначе работает с HID джойстиками. Она требует положительных значений передаваемых данных (это условие у меня соблюдается изначально) и не использует USB interrupt для опроса устройства (у меня реализовано оба варианта: как система запросит - так мы ей и ответим).

В любом случае спасибо за информацию всем ответившим. По крайней мере понятно, что хоть у кого-то оно заработало. Хотелось бы еще в том же ряду увидеть сравнение с оригинальной версией, чтобы для себя уяснить, а имело ли смысл все это мероприятие? Я писал для себя, но спустя полгода что-то стукнуло выложить сюда. Может, и зря. Но раз выложил, то хотелось хотя бы понять, имело ли все это смысл…

Николай-К

Попробовал снова прошивки но уже с включенными битами - CKOPT и SPIEN:
2006.08.09 - работать совсем отказалась
2006.08.11 - работает как и прежде отлично
2006.08.11(btn) - тоже работает без проблемм

DrClover
osnwt:

В любом случае спасибо за информацию всем ответившим. По крайней мере понятно, что хоть у кого-то оно заработало. Хотелось бы еще в том же ряду увидеть сравнение с оригинальной версией, чтобы для себя уяснить, а имело ли смысл все это мероприятие? Я писал для себя, но спустя полгода что-то стукнуло выложить сюда. Может, и зря. Но раз выложил, то хотелось хотя бы понять, имело ли все это смысл…

На мой взгляд- Имело !!! и даже не надо сомневаться в этом.
повторюсь - Честь и хвала автору 😃 😃 😃

ЗЫ у меня оригинальная работала нормально тока с SANWA RD6000, c Futaba 9CHP каналы были перетусованы и небыло кнопок (смею предположить что изза инверсии PPM, транзистор на входе стоит)
С Вашей все ОК.ОВ.

graham
DrClover:

ЗЫ у меня оригинальная работала нормально тока с SANWA RD6000, c Futaba 9CHP каналы были перетусованы и небыло кнопок (смею предположить что изза инверсии PPM, транзистор на входе стоит)
С Вашей все ОК.ОВ.

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

DrClover
graham:

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

С футаба 9 она работала - но без кнопок, с санвой нормально с кнопками
Возможно это из за транзистора на входе(РРМ позитив негатив) делал несколько штук себе и друзьям
по полной схеме со стабилизатором 3.3в и транзистором на входе у всех окей, у меня без кнопок 😦
Вэтом проекте как я понял нет разницы в РРМ позитив или негатив
удобно для не сильно рубящих правильно собрал схему- залил прошивку -счастье ! 😃
да и дерганий каналов поменьше.

toxa
DrClover:

ЗЫ у меня оригинальная работала нормально тока с SANWA RD6000, c Futaba 9CHP каналы были перетусованы и небыло кнопок (смею предположить что изза инверсии PPM, транзистор на входе стоит)

У sanwa и futaba разный порядок следования каналов. У futaba 1-элерон 2-руль высоты а у sanwa - 1-руль высоты 2-элероны.

boroda_de

Заинтриговали меня посты тут: скачал, прошил последнюю версию с кнопками (ничего не менял, т.к. компайлера нет а ссылка в доку на демо качает полную версию).
Как уже замечено каналы по сравнению с оригинальной прошивкой расположены по-другому…
Дрожания ручек не заметно, зато имеется небольшое скакание при минимальной длине импульса на двух каналах (из шести)
Передатчик Graupner/JR X412 совсем новый (т.е. резюки в порядке)
Позже протестую с Graupner MX12/JR 2610
Спасибо автору и успехов

osnwt
boroda_de:

компайлера нет а ссылка в доку на демо качает полную версию.

Это не совсем демо - это на самом деле полная eva*luation версия, отличающаяся от retail только отсутствием исходников библиотек. Если ее скачивать через сайт после регистрации (ни к чему не обязывающей), то на указанный email присылают 30-дневную лицензию, позволяющую протестировать пакет без каких-либо ограничений. Если скачать ее по прямой ссылке, то без лицензии запустить продукт не получится, но в определенном смысле эта проблема решаема. Например, путем покупки лицензии. Ну, или поиска в интернете, или т.п.

Buranov_P

Проверил последние прошивки на Win ME и 98. Передатчик - Hitec Focus Heli 5. Работают без проблем FMS и AFPD. Оригинальная прошивка v1.1 не позволяет откалибровать джойстик в этих симуляторах под МЕ и 98.

Теперь замечания/просьба. Дело в том, что без хотя бы одной кнопки откалибровать джойстик в “Игровых устройствах” (в МЕ и 98) не удается. (Или я не знаю как. Кто знает - научите. Только не надо ссылаться на Win XP - там это сделать можно!)) Кнопки, совмещенные с ручками передатчика еще более запутывают ситуацию. Крайне желательно было бы, чтобы хотя бы одна кнопка эмулировалась с клавиатуры или с замыкания ножки микропроцессора на землю.

IMHO: Нужна прошивка, где кнопки эмулируются с клавиатуры или с ножек микропроцессора (что, по моему, совсем уж не сложно сделать), а лучше - обе прошивки. Кнопки с ручек передатчика, на мой взгляд, только создают неудобства.

В любом случае большая благодарность автору. Я, например, давно уже собирался сделать адаптер - наконец сделал. (Хотя реальной нужды вроде бы и нет - есть фирменнные RF G2 и Reflex. Пульт RF G2 перекрывает все потребности.) Просто любопытно было поковыряться.

Кстати, если кому интересно. Столкнувшись с проблемой “Неизвестное USB устройство” стал с ней бороться. Были перепробованы все рекомендованные (в соответствующей ветке форума) способы: Питание 5в - 3.6в, конденсаторы на D+ и D-, провод длинный - короткий и тд. Все это давало мизерные результаты. (Хотя и давало. Например, иногда все таки устройство опознавалось). В конце концов подпаял конденсатор 500пф на ножку резонатора (все равно какую) - все заработало как часы! В любых комбинациях - 5в, 3,6в, с конденсаторами на D+ и D-. и без с длинным кабелем и коротким, с любыми прошивками (даже с “неустойчивами” , про заведомо нерабочие я не говорю)… . Померял частоту на резонаторе.Без подпаянного конденсатора 12.06 мгц. С конденсатором на выводе XTAL2 - 12.00, с конденсатором на XTAL1 - 11,93. За точность цифр не ручаюсь - мерялось китайским мультиметром, хотя думаю кварц там заведомо точнее, чем керамический резонатор. Но тенденцию проследить можно… . Кстати, рекомендация включить FUSE bit CKPOT (в оригинальной статье, написано - включить все FUSE… ) как раз и подключает внутренние конденсаторы к резонатору, понижая частоту (в моем случае - недостаточно!). В общем, возникло предположение - а не связаны ли все проблемы у людей с разбросом частот резонатора? У кого чуть ниже - и никаких проблем, а у кого чуть выше… . Впрочем, это каждый может проверить сам. Если не заест лень - попробую поставить внешнюю RC цепочку, и посмотреть, насколько точно нужно подбирать частоту. (В оригинальной статье написано: ± 1%, но в моем случае +1% оказался фатальным!)
В данный момент схема выглядит так: два диода с +5 на питание процессора, конденсатор 0,1 мкф керамический по питанию процессора, никаких резисторов, конденсаторов, стабилитронов на D+ и D- (кстати, резистор с D- должен быть подключен к +5, а не к 3,3в ? по описанию шины, хотя это, наверное, непринципиально. Сигнал с передатчика - через резистор. Итого:
Два конденсатора 0,1мкф (питание проца) и 510 пф (на резонатор)
Два резистора 1,5ком (с D- на +5в) и 10ком (на передатчик)
Два диода КД522 снижают напряжение до 3,6в. (Я все-таки тоже сторонник, чтобы все было по правилам)
ATMEGA8-16PI
Резонатор ZTT 12мГц

Итого 8 элементов. Без проблем работает с удлиннительным USB кабелем 1,6 метра, на раных компах.

9 days later
Yuriy

Решил заменить шнур с Com портом, на шнур USB. Собрал устройство, взял у знакомого программатор, скачал PonyProg, запрограммировал. Подключил к компу - устройство не опознано. Посмотрел осциллографом сигналы на выходе - нет ничего, кроме постоянки на “Data-” и входного сигнала РРМ. На обеих ножках кварца тоже нет ничего. А больше и проверять-то нечего. С микропроцессорами я не знаком, поэтому есть вопросы:

  • встроенный генератор на кварце тоже программируется, или он должен работать автономно?
  • расширение а90 - это тоже НЕХ, я его переименовал с расширением НЕХ, чтобы открыть в программаторе, это допустимо?
  • как-то можно проверить, правильно ли я его запрограммировал и что еще можно посмотреть?
  • может я генерацию щупом срываю, но вроде с делителем 1:10 и емкостью 12 пф.
boroda_de

П1. Чтоб кварц заработал, нужно при прошивке процессора поставить Fuses смотрите тут www.rcdesign.ru/articles/electronics/rcusb

Важно не забыть запрограммировать конфигурационные биты контроллера (fuses). Для данного устройства все биты должны быть установлены в “1” (не запрограммированы). Для этого в PonyProg необходимо снять все флажки в диалоговом окне “Configuration and Security bits”.

П2 Допустимо, я тоже так делал.
Скорее всего у Вас после поправки fuses заработает.

Yuriy

boroda_de спасибо. Я конечно читал, что все биты конфигурации должны быть в 1. Но я почему-то считал, что их достаточно правильно выставить и они зашьются одновременно с основной прошивкой, а оказывается их надо отдельно прошить. Всю голову сломал.

Psw
copperfield:

А кто-нибудь делал джойстик на PIC?

Как раз под рукой случайно оказался 18ф4550 в ДИП корпусе и не нужный USB шнурок - сегодня спаял/запустил пробничек:

в текущий момент одно осевого джоя.
Ну …
Из хороших новостей - на Микрочипе стала бесплатно доступна студенческая 60 дней версия Си для 18 ПИКов. ну и какая-то документация к нему.
Наконец-то я хоть какой-либо проектик на Си для ПИКов самостоятельно скомпилил и он кое-как заработал. Пришлось правда в проект добавить асм файл явного описания конфигурации МК ( не знаю как енто содеять на Си ), ну и подправить конфу для 12 МГц квареца - как у оригинального шнурка.
А дальше - надо править/ваять дескрипторы/прочее, что-бы 16 бит CCP использовать для захвата PPM,
(точность захвата должна быть раз в пять лучше чем выход у Футабы-2048), аппаратный USB должен успевать 8 каналов по 16 бит передавать, ну и усреднять АЦП преобразования - благо макс производительность АЦП около 125 киловыборок/секунду, если 4 канала по 64 раза усреднять - более 400 усреднённых 16 бит преобразований/секунду на каждый канал - более 8 раз быстрее чем надо.
Одним словом - можно/нужно ковырять .
А из интересных ( но как всегда мало доделанных) примерчиков для 18ф4550 на Микрочипе - USB бут лоадер ну и Storage класс.

Psw
osnwt:

(ограничение программного USB как low-speed device).
>>>
пример того, как можно делать USB HID дескрипторы
>>>
Еще оптимальнее было бы переписать out_joystick_btn так, чтобы передавать не 8-ми, а 10-ти битные значения каналов.

Ну … Помог бы мне кто с дескриптором/прочим - потому как HID Descriptor Tool не нашёл почему-то,
а самому думать - пока не получается.
Иными словами, хочу попробовать на 18ф4550 заменить текущий дескриптор ОДНО осевого джоя из
примера Урок #2. Создание USB 2.0 совместимого HID-устройства типа джойстик:
// Старый одноосевой Джой дескриптор
// 0x05, 0x01, // USAGE_PAGE (Generic Desktop)
// 0x15, 0x00, // LOGICAL_MINIMUM (0)
// 0x09, 0x04, // USAGE (Joystick)
// 0xa1, 0x01, // COLLECTION (Application)
// 0x05, 0x02, // USAGE_PAGE (Simulation Controls)
// 0x09, 0xbb, // USAGE (Throttle)
// 0x15, 0x00, // LOGICAL_MINIMUM (0)
// 0x26, 0xff, 0x00,// LOGICAL_MAXIMUM (255)
// 0x75, 0x08, // REPORT_SIZE (8)
// 0x95, 0x01, // REPORT_COUNT (1)
// 0x81, 0x02, // INPUT (Data,Var,Abs)
// 0x05, 0x09, // USAGE_PAGE (Button)
// 0x19, 0x01, // USAGE_MINIMUM (Button 1)
// 0x29, 0x08, // USAGE_MAXIMUM (Button 8)
// 0x15, 0x00, // LOGICAL_MINIMUM (0)
// 0x25, 0x01, // LOGICAL_MAXIMUM (1)
// 0x75, 0x01, // REPORT_SIZE (1)
// 0x95, 0x08, // REPORT_COUNT (8)
// 0x55, 0x00, // UNIT_EXPONENT (0)
// 0x65, 0x00, // UNIT (None)
// 0x81, 0x02, // INPUT (Data,Var,Abs)
// 0xc0 // END_COLLECTION
на дескриптор, описывающий 8 - 10 штук 16 бит осей и 8 кнопок.
Ограничения длинны - макс 64 байта передачи за раз - вполне хватает для передачи всего одним пакетом.

Psw
Psw:

Ну … Помог бы мне кто с дескриптором/прочим
а самому думать - пока не получается.

Нашёл HID Descriptor Tool, не особо помогает, вот что вставил:
// Пытаюсь модифицировать дескриптор для 16 бит 9 каналов джойстика и 8 кнопок -
// получается 19 байт надо передавать.
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x27, 0xff, 0xff, 0x00, 0x00, // LOGICAL_MAXIMUM (65535)
0x75, 0x10, // REPORT_SIZE (16)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x82, // INPUT (Data,Var,Abs,Vol)
0xc0, // END_COLLECTION
0xa1, 0x00, // COLLECTION (Physical)
0x09, 0x32, // USAGE (Z)
0x09, 0x33, // USAGE (Rx)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x82, // INPUT (Data,Var,Abs,Vol)
0xc0, // END_COLLECTION
0x09, 0x34, // USAGE (Ry)
0x09, 0x35, // USAGE (Rz)
0x09, 0x36, // USAGE (Slider)
0x09, 0x37, // USAGE (Dial)
0x09, 0x38, // USAGE (Wheel)
0x95, 0x05, // REPORT_COUNT (5)
0x81, 0x82, // INPUT (Data,Var,Abs,Vol)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x08, // REPORT_COUNT (8)
0x75, 0x01, // REPORT_SIZE (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x08, // USAGE_MAXIMUM (Button 8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0 // END_COLLECTION
В итоге - каналы джоя появились на свет, но - молча стоят по центру.
Хотя я буфер передачи удлиннил до 20 байт и один байт АЦП рассовал по старшим байтам всех каналов - толку пока ноль, ни кнопки ни каналы не шевелятся.

Psw
Psw:

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

Оказалось, что такая ерунда при различной не стыковке в дескрипторах.
В итоге Сделал себе напоминалку - код не связан/не вылизан:
// При смене формата джоя как минимум менять:
// 1. Длинна дескриптора HID_RPT01_SIZE в USBCFG.H
// 2. Количество Передаваемыхбайтов HID_INT_IN_EP_SIZE в USBCFG.H
// 3. Макс размер передаваемого буфера EP0_BUFF_SIZE = 8 в USBCFG.H
// 4. Структура передаваемого буфера в User_Joy.c
// 5. Количество байт в Вызов передачи данных HIDTxReport(buffer,2) в User_Joy.c ;
В текущий момент сделано 9 каналов по 16 бит и 8 кнопок - но девятого канала ни AFPD ни утилита калибровки джоев не видит, уберу его.
Сегодня затолкал/термо вклеил 18ф4550 и разъем USB в пультик от DF5#4 соосничка - в параллель к родному кодеру, перед кренкой диодик на всяк случай поставил, что-бы от USB питание на вых каскад не шло. Быть может поторопился, но вроде Микрочип USB бут лоадер тоже работает кое-как - обновлять по USB шнурку прошивки джоя вроде получается, потому и вклеил - без ICSP коннектора.
Теперь можно играцца дальше.

Pa5ha

А у меня не работает что-то. Девайс шьется, фузы зашил, прошивку залил, устройство неопознано. Светодиодная мигалка заработала. Ошибок в подключении вроде нету -)

Может, провод мгтф на юсб не подходит? 4 провода, где то 10 см. 😃

AVK

Последнюю прошивку залил вполне нормально работает, только когда ручками шевелишь почемуто кнопки мигают (когда в виндах смотришь), кстати попутно выяснил что мега 8-8 нормально работает на 12 мГц, видать просто маркировка разная а чип один.

osnwt
AVK:

Последнюю прошивку залил вполне нормально работает, только когда ручками шевелишь почемуто кнопки мигают (когда в виндах смотришь)

Так и быть должно, поскольку кнопки просто дублируют состояния каналов. Если канал меньше 50%, то кнопка выключена (погашена). Если больше 50%, то включена (светится).

Я не знаю, какой смысл это было делать (думаю, что симуляторы позволяют правильно интерпретировать и аналоговые каналы самостоятельно, без помощи искусственно введенных кнопок), но раз просили - сделал.

По поводу независимых от каналов кнопок (был такой вопрос): сделать их управление от клавиатуры проблематично, так как это повлечет за собой свой драйвер на Windows. А вот сделать их зависимыми от кнопок, подключенных к Mega8 - это очень просто. Достаточно один раз при инициализации прошивки включить pull-up резисторы на соответствующих пинах (куда подключить кнопки), а потом читать состояние этих битов, укладывать их в байт и вставлять его при формировании HID Report вместо сравнения каналов с 50%. Это легко сделать самому - на то и открытые исходники.

AVK

Я так понял, что полярность сигнала по барабану? у меня на входе транзистора нет просто рез на 10к стоит.

По поводу джойстика на пике, это изврат конкретный, особенно если посмотреть на цены пиков и ужаснуться сразу и навсегда забыть про пики.