5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
楼主: 小刀
打印 上一主题 下一主题

抽空做了一个usb的joystick

[复制链接]
21
 楼主| 发表于 2006-6-14 21:07 | 只看该作者
原帖由 propeller 于 2006-6-14 13:11 发表



同步帧检测可能有问题。


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

feiji兄,资料已收到,谢谢。:em24:

欢迎继续阅读楼主其他信息

22
发表于 2006-6-14 22:49 | 只看该作者
原帖由 feiji 于 2006-6-14 20:40 发表
资料已给  小刀 、yasjb  发出。

feiji兄,资料已收到,谢谢!:em26:
23
发表于 2006-6-15 12:02 | 只看该作者
高手云集,不顶不行。
24
发表于 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
25
发表于 2006-6-16 00:53 | 只看该作者
feiji大哥你的资料我也很想要,万分感激啊!
z_z_f@126.com
26
发表于 2006-6-16 07:18 | 只看该作者
支持.谢谢也给我发一份.286898638@QQ.COM.谢谢了
27
发表于 2006-6-16 08:48 | 只看该作者
feiji兄:能给我发一分吗?我已经发去了邮件:邮件地址:chzhu_0@163.com
28
 楼主| 发表于 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 编辑 ]
29
发表于 2006-6-16 14:44 | 只看该作者
资料已给 propeller 、hyx6688、吃素小老虎 、邮箱为shaoweih@pub.guangzhou.gd.cn
朋友发出。
30
发表于 2006-6-17 23:28 | 只看该作者
感谢feiji兄,不过有些东西还不清楚,比如3v3的二极管是什么型号,Button是什么开关,长开长闭还是按钮式,另外这个型号的单片机怎么看不清楚,是那个厂的,是ATmel的ATmega8L-16吗,图不太清楚能给个protel吗?

[ 本帖最后由 吃素小老虎 于 2006-6-17 23:37 编辑 ]
31
发表于 2006-6-18 16:38 | 只看该作者
3v3是稳压二极管
开关可不用点
单片机为ATMeag8-8PI
protel电路图稍候我画一个发给你
32
发表于 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 编辑 ]
33
发表于 2006-6-20 15:45 | 只看该作者
feiji,能给我一份吗?
我的邮箱:ck612003@yahoo.com.hk 谢谢!
34
发表于 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 编辑 ]
35
发表于 2006-6-21 12:44 | 只看该作者
原帖由 CKL 于 2006-6-20 15:45 发表
feiji,能给我一份吗?
我的邮箱:ck612003@yahoo.com.hk 谢谢!



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


资料已发!
39
发表于 2006-7-5 14:54 | 只看该作者
40
发表于 2006-7-7 17:07 | 只看该作者
我按这个来制作,但是怎么都不行,都是无法识别的USB设备。我用的ATMEGA8L-8PI,电压5V供电的。奇怪,很简单电路,还有那里要注意阿。

http://quattro.haje.cz/view.php?cisloclanku=2005080802
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表