5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 抽空做了一个usb的joystick [打印本页]

作者: 小刀    时间: 2006-6-12 23:42
标题: 抽空做了一个usb的joystick
采用的是16c745单片机,这个单片机不便宜啊,紫外线可擦写型,花了我150元。:em17:  
usb joystick支持ppm输入信号,输出7个模拟通道,8个数字通道。
我用的是3810发射机玩,支持破解了的aerofly,G3,G2等。
程序还在调试。就是第一个通道有些抖舵,其他通道都还稳定。:em15:



[ 本帖最后由 小刀 于 2006-6-13 00:41 编辑 ]
作者: CKL    时间: 2006-6-13 07:09
高手.
能發個線路圖嗎?
作者: llppd    时间: 2006-6-13 07:56
标题: 这里有原理图和程序
http://translate.google.com/tran ... rev=/language_toolshttp://translate.google.com/translate?u=http%3A%2F%2Fwww.cattopasto.com%2FElettronica%2FFMSUSB%2FFMSUSB.php&langpair=it|en&hl=en&ie=UTF-8&oe=UTF-8&prev=/language_tools
作者: palm    时间: 2006-6-13 08:36
谢谢!     
作者: 小刀    时间: 2006-6-13 11:44
原帖由 CKL 于 2006-6-13 07:09 发表
高手.
能發個線路圖嗎?


作者: 小刀    时间: 2006-6-13 11:56
原帖由 机修工 于 2006-6-13 10:19 发表
精神可佳,不过150的成本还不如买个成品了,也不会抖舵和存在不确定因数的

纯属兴趣,克服了抖舵会更有乐趣。:em15:
试验时用开发芯片的确比较贵,当程序调好后就可以用otp的单片机了,单价就几十元了,不过还是比51贵多了。
作者: 小刀    时间: 2006-6-13 12:04
原帖由 llppd 于 2006-6-13 07:56 发表
[url]http://translate.google.com/translate?u=http%3A%2F%2Fwww.cattopasto.com%2FElettronica%2FFMSUSB%2FFMSUSB.php&langpair=it|en&hl=en&ie=UTF-8&oe=UTF-8&prev=/language_tools[/url ...

链接地址有错误?
能给我发一份电路和程序吗?:em15:hufeihf@126.com

现在用的程序是自己编的,第一个通道有些抖舵,正在克服中…………:em15:
作者: feiji    时间: 2006-6-13 17:53
PIC16C745的价格应该在20~30元(上网查一下)
PIC16C745单片机自带USB接口,所以偏贵。

我用ATMeta8-8PI单片机(6.5元一片),固件模拟USB
制作了一个USB-joystick。只要支持游戏杆的软件都可用。
目前可以玩G2、G3(需要emu)、AFPD、FMS飞行模拟软件

[ 本帖最后由 feiji 于 2006-6-13 18:03 编辑 ]
作者: 小刀    时间: 2006-6-13 21:03
原帖由 feiji 于 2006-6-13 17:53 发表
PIC16C745的价格应该在20~30元(上网查一下)
PIC16C745单片机自带USB接口,所以偏贵。

我用ATMeta8-8PI单片机(6.5元一片),固件模拟USB
制作了一个USB-joystick。只要支持游戏杆的软件都可用。
目前可 ...


楼上的很牛啊。:em15:
固件模拟?是编程(fireware)实现usb功能的吗?还是外带usb接口芯片?
作者: feiji    时间: 2006-6-14 10:08
其实就是单片机汇编程序模拟usb实现(第一要求单片机处理速度很快,第二要求用汇编语言实现。
官方有现成的模拟USB功能汇编语言),实现usb接口功能。
ATMEL网站上有一整套文档(说明、单片机程序、windows驱动源程序、上位机程序)
文档号为AVR309(文档是usb接口转串口的)。可参考它,修改成其他的应用
作者: 小刀    时间: 2006-6-14 11:15
feiji兄弟,joystick的hid描述,ppm信号检测都是你自己搞定的吗?佩服。
我现在用16c745编程,usb固件采用厂家提供的mouse c语言源代码。自己修改成joystick的hid,c语言实现ppm检测。用3810的ppm信号调试,现在我碰到的问题就是:
采用电平检测的方式进行通道识别,目前就是第一个通道有30us的抖动,其他通道基本正常。
你能指点一下吗?
作者: loves123    时间: 2006-6-14 11:33
不错不错,值得研究研究.
作者: propeller    时间: 2006-6-14 13:11
原帖由 小刀 于 2006-6-14 11:15 发表
feiji兄弟,joystick的hid描述,ppm信号检测都是你自己搞定的吗?佩服。
我现在用16c745编程,usb固件采用厂家提供的mouse c语言源代码。自己修改成joystick的hid,c语言实现ppm检测。用3810的ppm信号调试,现在 ...



同步帧检测可能有问题。
作者: 荒野村夫    时间: 2006-6-14 15:56
窗口片是很贵!

你擦写一次要用多久?
作者: feiji    时间: 2006-6-14 16:05
原帖由 小刀 于 2006-6-14 11:15 发表
feiji兄弟,joystick的hid描述,ppm信号检测都是你自己搞定的吗?佩服。
我现在用16c745编程,usb固件采用厂家提供的mouse c语言源代码。自己修改成joystick的hid,c语言实现ppm检测。用3810的ppm信号调试,现在 ...





国外网站上有全套现成资料(汇编源代码、电路图),按电路图接好电路,ASM源代码用AVR-Studio编译后下载到单片机即可,不用做任何修改,工作也十分稳定,没有抖舵现象。
网址如下:http://quattro.haje.cz/view.php?cisloclanku=2005080201

用以上资料制作的usb-joystick费用很低,大概在20元左右!

另外,我想共享出全套制作资料(含源代码),但不知如何上传附件?

[ 本帖最后由 feiji 于 2006-6-14 16:11 编辑 ]
作者: 小刀    时间: 2006-6-14 16:50
原帖由 feiji 于 2006-6-14 16:05 发表





国外网站上有全套现成资料(汇编源代码、电路图),按电路图接好电路,ASM源代码用AVR-Studio编译后下载到单片机即可,不用做任何修改,工作也十分稳定,没有抖舵现象。
网址如下:[url]http://quatt ...

feiji是好人呐,一个纯粹的好人,一个脱离了低级趣味的好人。:em15:
建议通过邮件跟大家共享。我的邮箱:hufihf@126.com
发现捷克人还是很强的,又特别喜欢共享,不错。

[ 本帖最后由 小刀 于 2006-6-16 09:37 编辑 ]
作者: feiji    时间: 2006-6-14 17:48
需要的朋友给我发个邮件(我将提供全套资料:电路图、ASM语言源代码、hex烧片文件)
我的邮箱:wadz1@126.com

此前曾回过一个帖子(是用AT90S2313单片机制作G2并口硬件狗的),但只有一人向我索取(也是提供全套资料:电路图、C源代码)。他收到资料给我回信:“没想到如此简单!!!”

想玩便宜飞行模拟器的模友,给我发个邮件即可!
制作上若有问题,欢迎发邮件交流


此贴可否加精呢?^_^

[ 本帖最后由 feiji 于 2006-6-14 17:56 编辑 ]
作者: yasjb    时间: 2006-6-14 18:44
feiji,能给我一份吗?邮件没法发给你。我的邮箱:sjbiao@21cn.com 谢谢!
作者: feiji    时间: 2006-6-14 20:40
资料已给  小刀 、yasjb  发出。
作者: 小刀    时间: 2006-6-14 20:54
原帖由 荒野村夫 于 2006-6-14 15:56 发表
窗口片是很贵!

你擦写一次要用多久?


用紫外线擦写器,要十几分钟才能擦写干净。
其实编程也满有乐趣的。:em15:
作者: 小刀    时间: 2006-6-14 21:07
原帖由 propeller 于 2006-6-14 13:11 发表



同步帧检测可能有问题。


问题很奇怪。同步检测到后(电平变高),立刻调用子函数解通道,通道1到通道8都解出来了,除了通道1有30us的偶然跳舵,其他通道都稳定。电平检测是我是采用了8比特防抖动检测,可以排除干扰的可能。

feiji兄,资料已收到,谢谢。:em24:
作者: yasjb    时间: 2006-6-14 22:49
原帖由 feiji 于 2006-6-14 20:40 发表
资料已给  小刀 、yasjb  发出。

feiji兄,资料已收到,谢谢!:em26:
作者: gale    时间: 2006-6-15 12:02
高手云集,不顶不行。
作者: propeller    时间: 2006-6-16 00:47
原帖由 小刀 于 2006-6-14 21:07 发表


问题很奇怪。同步检测到后(电平变高),立刻调用子函数解通道,通道1到通道8都解出来了,除了通道1有30us的偶然跳舵,其他通道都稳定。电平检测是我是采用了8比特防抖动检测,可以排除干扰的可能。

feiji ...



30us应该是很小的跳动。

看看输入信号的斜率
看看是不是有不该发生的中断套嵌
看看同步脉冲宽度判断用的宽度是不是小于发射机编码同步宽度的最小值。我用3ms

另外你不会是用的a++;做的宽度检测吧?要是用了,那就是正常现象,是ALU的结构造成的。

能给一份资料吗,关于游戏手柄的hid描述,和16c745的usb应用资料。万分感激!
z_z_f@126.com
作者: propeller    时间: 2006-6-16 00:53
feiji大哥你的资料我也很想要,万分感激啊!
z_z_f@126.com
作者: hyx6688    时间: 2006-6-16 07:18
支持.谢谢也给我发一份.286898638@QQ.COM.谢谢了
作者: 吃素小老虎    时间: 2006-6-16 08:48
feiji兄:能给我发一分吗?我已经发去了邮件:邮件地址:chzhu_0@163.com
作者: 小刀    时间: 2006-6-16 09:25
原帖由 propeller 于 2006-6-16 00:47 发表



30us应该是很小的跳动。

看看输入信号的斜率
看看是不是有不该发生的中断套嵌
看看同步脉冲宽度判断用的宽度是不是小于发射机编码同步宽度的最小值。我用3ms

另外你不会是用的a++;做的宽度检测吧? ...

借了个示波器,准备周末再调试一下,或者干脆改变通道检测方式,16c745的ccp和portb管脚中断两种方式还没试验过。
我现在用3810玩aerofly,油门有3小格的随机抖动,玩模拟器没有问题,根本看不出来。但是问题就是问题,完全搞定了才有成就感:em15:。

const char ReportDescriptor1 [] =     
                       {0x05, 0x01,        /* usage page create @ 2006 05 29 by hzh */
                                        0x09, 0x04,        /* usage joystick */
                                        0xa1, 0x01,        /* collection (application) */
                                        0x09, 0x30,        /* USAGE (X) */
                                        0x09, 0x31,        /* USAGE (Y) */
                                        0x09, 0x32,        /* USAGE (Z) */
                                        0x09, 0x33,        /* USAGE (Rx) */
                                        0x09, 0x34,        /* USAGE (Ry) */
                                        0x09, 0x35,        /* USAGE (Rz) */
                                        0x09, 0x36,        /* USAGE (Slider) */
                                        0x15, 0x00,        /* LOGICAL_MINIMUM (0)*/
                                        0x26, 0xff,        /* LOGICAL_MAXIMUM (255) */
                                        0x00, 0x75,         /* REPORT_SIZE (8) */
                                        0x08, 0x95,        /* REPORT_COUNT (7) */
                                        0x07, 0x81,        /* INPUT (Data,Var,Abs) */
                                        0x02, 0x05,         /* USAGE_PAGE (Button) */
                                        0x09, 0x19,        /* USAGE_MINIMUM (Button 1) */
                                        0x01, 0x29,        /* USAGE_MAXIMUM (Button 8)*/
                                        0x08, 0x15,        /* LOGICAL_MINIMUM (0)*/
                                        0x00, 0x25,
                                        0x01, 0x75,        /* LOGICAL_MAXIMUM (1)*/
                                        0x01, 0x95,        /* REPORT_SIZE (1) */
                                        0x08, 0x81,        /* REPORT_COUNT (8) */
                                        0x02, 0xc0        /*END_COLLECTION*/
                                        };        /* end collection */

const unsigned int ReportDescrSize = sizeof(ReportDescriptor1);

const char DeviceDescriptor [] = {0x12, DEVICE, 0, 1, 0, 0, 0, 8, 0xD8, 4 ,3, 0, 0, 0, 1, 2, 0, 1};
const char ConfigDescriptor [] = {9, CONFIGURATION, 0x22, 0, 1, 1, 4, 0x80, 0x32,
/* Interface Descriptor  */       9, INTERFACE, 0, 0, 1, 3, 0, 0, 5,
/* HID descriptor        */       9, 0x21, 0, 1, 0, 1, 0x22, sizeof(ReportDescriptor1), sizeof(ReportDescriptor1)>>8,
/* Endpoint 1 descriptor */       7, ENDPOINT, 0x81, 3, 8, 0, 0x0a};   /* 8 = length, changed by hzh */
const char HIDDescriptor [] =    {9, 0x21, 0, 1, 0, 1, 0x22, sizeof(ReportDescriptor1), sizeof(ReportDescriptor1)>>8};

MICROCHIP的 USB C语言代码:http://ww1.microchip.com/downloads/cn/DeviceDoc/cn_usb122c.zip

[ 本帖最后由 小刀 于 2006-6-16 09:35 编辑 ]
作者: feiji    时间: 2006-6-16 14:44
资料已给 propeller 、hyx6688、吃素小老虎 、邮箱为shaoweih@pub.guangzhou.gd.cn
朋友发出。
作者: 吃素小老虎    时间: 2006-6-17 23:28
感谢feiji兄,不过有些东西还不清楚,比如3v3的二极管是什么型号,Button是什么开关,长开长闭还是按钮式,另外这个型号的单片机怎么看不清楚,是那个厂的,是ATmel的ATmega8L-16吗,图不太清楚能给个protel吗?

[ 本帖最后由 吃素小老虎 于 2006-6-17 23:37 编辑 ]
作者: feiji    时间: 2006-6-18 16:38
3v3是稳压二极管
开关可不用点
单片机为ATMeag8-8PI
protel电路图稍候我画一个发给你
作者: 吃素小老虎    时间: 2006-6-19 14:58
to:feiji,可以推荐一款学习用的AVR编程器吗,3v3是指的那个型号的稳压二极管,是否可以认为是3.3V的稳压管??
查到了芯片资料只有:ATmega8L-8PI(8MHZ,2.7-5.5V)和ATmega8-16PI(16MHZ,4.5-5.5V)不知feiji兄说的是那个?

[ 本帖最后由 吃素小老虎 于 2006-6-20 19:35 编辑 ]
作者: CKL    时间: 2006-6-20 15:45
feiji,能给我一份吗?
我的邮箱:ck612003@yahoo.com.hk 谢谢!
作者: feiji    时间: 2006-6-21 12:42
原帖由 吃素小老虎 于 2006-6-19 14:58 发表
to:feiji,可以推荐一款学习用的AVR编程器吗,3v3是指的那个型号的稳压二极管,是否可以认为是3.3V的稳压管??
查到了芯片资料只有:ATmega8L-8PI(8MHZ,2.7-5.5V)和ATmega8-16PI(16MHZ,4.5-5.5V)不知feiji兄说的 ...


1、就是3.3V的稳压管
2、两者都可以用,ATmega8L-8PI表示最高频率8MHz,ATmega8-16PI标识最高频率16MHz
我制作时使用的是ATmega8L-8PI,超频使用12MHz晶振(电源要求5V)。单片机也可以超频哟!!!

[ 本帖最后由 feiji 于 2006-6-21 12:55 编辑 ]
作者: feiji    时间: 2006-6-21 12:44
原帖由 CKL 于 2006-6-20 15:45 发表
feiji,能给我一份吗?
我的邮箱:ck612003@yahoo.com.hk 谢谢!



已发,请查收!
作者: CKL    时间: 2006-6-21 13:04
謝謝feiji
已收到
作者: nowhereman    时间: 2006-6-26 00:15
我也想要一份,谢谢!
qrd.mail@tom.com
作者: feiji    时间: 2006-6-26 18:16
原帖由 nowhereman 于 2006-6-26 00:15 发表
我也想要一份,谢谢!
qrd.mail@tom.com


资料已发!
作者: imzhoujian    时间: 2006-7-5 14:54
我也要

samsungccve@163.com
作者: ckyo    时间: 2006-7-7 17:07
我按这个来制作,但是怎么都不行,都是无法识别的USB设备。我用的ATMEGA8L-8PI,电压5V供电的。奇怪,很简单电路,还有那里要注意阿。

http://quattro.haje.cz/view.php?cisloclanku=2005080802
作者: zxxhan    时间: 2006-7-9 16:51
高手高手高高手~~~~~~~~
作者: MyOpq    时间: 2006-7-10 15:04
标题: 资料索取
TO:feiji
你好,谢谢你的分享,能给我一份么?
我的邮箱是single.life@163.com
谢谢!
作者: 豉椒旦    时间: 2006-7-11 09:04
原帖由 ckyo 于 2006-7-7 17:07 发表
我按这个来制作,但是怎么都不行,都是无法识别的USB设备。我用的ATMEGA8L-8PI,电压5V供电的。奇怪,很简单电路,还有那里要注意阿。

http://quattro.haje.cz/view.php?cisloclanku=2005080802


我也试制了一下,也跟楼上这位兄弟一样的情况啊.

想问一下,除了 feiji 兄之外还有没有谁做成功了的,介绍一下经验吧.

好多方法都试过了,同样的电路用另外一个摸拟 USB 到 RS232 串口转接口的程序,一烧进去就能正常运行,但是用这个 RC joystic 的程序写进去,就是无法识别的 USB 设备.:em17:
作者: 豉椒旦    时间: 2006-7-11 19:28
标题: 问题解决了
偶然的一个发现,问题解决了.

把电脑上所有其它的 USB 设备都拨下来,再插上这个 ATMEGA8L 做的 USB joystic ,电脑就认出它来了,呵呵.
作者: ckyo    时间: 2006-7-12 03:10
是阿,是这个问题,同时插入鼠标不行,但插入移动硬盘可以。
作者: wwwgwwzcn    时间: 2006-7-14 18:38
feiji,能给我一份吗?
我的邮箱:2971538@163.com 谢谢!
作者: beckham    时间: 2006-7-15 15:46
feiji兄,我也想要一份谢谢了!!!
jiney2006cn@yahoo.com.cn
作者: like-all    时间: 2006-7-16 15:05
feiji兄,我也想要一份,真是麻烦您了!!!
Like-all@163.com
作者: sdscat    时间: 2006-7-17 23:44
feiji 给我发一份吧: sdecat@163.com   谢谢了!
作者: 我是好人    时间: 2006-7-26 20:37
原帖由 feiji 于 2006-6-14 17:48 发表
需要的朋友给我发个邮件(我将提供全套资料:电路图、ASM语言源代码、hex烧片文件)
我的邮箱:wadz1@126.com

此前曾回过一个帖子(是用AT90S2313单片机制作G2并口硬件狗的),但只有一人向我索 ...


能给我一份资料吗?谢谢!shangcm@livedoor.cn
作者: jason22    时间: 2006-10-18 20:48
還有嗎,可以給一份台灣同胞嗎"
jason22a22@xuite.net
謝謝
作者: keyzheng    时间: 2006-10-19 22:41
给我也来一份
找了好久了
key_zheng.19@tom.com
作者: smartter    时间: 2006-11-4 09:42
标题: feiji兄,我也要,谢谢
feiji兄,我也要,谢谢
wanglei@yulong.com
作者: xiw47    时间: 2006-11-5 21:00
请FEIJI老兄也发一份资料到xiw47@yahoo.com.cn 谢谢!
作者: muyancheng    时间: 2006-11-6 10:24
这样的贴应该加精.
作者: jun427    时间: 2006-11-7 12:39
标题: 回复 #18 feiji 的帖子
你好!能给我一份吗?谢谢
junsheng427@126.com
作者: 核子冬天    时间: 2006-11-9 23:28
哈哈 楼主肯定是比较享受过程的人
作者: cwxjok2008    时间: 2006-11-10 23:20
原帖由 机修工 于 2006-6-13 10:19 发表
精神可佳,不过150的成本还不如买个成品了,也不会抖舵和存在不确定因数的

150能买个什么成品的模拟器啊  给我推荐下
作者: 山皮    时间: 2006-11-24 01:07
标题: 回复 #9 feiji 的帖子
feiji 兄,麻烦也给发份资料吧!先在这感谢了!
我的邮箱是:hnjinwen@163.com
作者: 梦想能飞    时间: 2006-11-24 16:41
feiji兄,发一套资料给我可以吗?谢谢
luhb66@sohu.com
作者: majsma    时间: 2006-12-13 21:03
哇~~都是高手……上面说的偶基本看不懂……
慢慢学AVR好了:em23:
作者: lnpjzg    时间: 2006-12-24 07:43
我也要一份lnppzg@hotmail.com,谢谢




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://wz.5imx.com/) Powered by Discuz! X3.3