Board logo

标题: 有用过JB8/JB16做USB的吗?我的程序只产生复位中断啊。 [打印本页]

作者: koukou147    时间: 2007-7-6 18:21     标题: 有用过JB8/JB16做USB的吗?我的程序只产生复位中断啊。

我的程序是网上公开的JB16 BDM程序,但硬件做好后接上USB线,USB中断服务程序只产生SUSPEND/RESUM中断和复位中断,没有EP0接收中断或SETUP中断。
我现在不知道是硬件问题还是软件问题,是不是在接收除复位中断外其它中断前先要在PC上装好驱动?
初学USB,还望大虾们多多指教。多谢啦!!!
这是USB初始化代码。
void usb_init(void) {
usb_ep0_dcntT=0xff; /* special meaning - means no transmission in progress */
usb_ep0_dcntR=0; /* no data to receive */
usb_ep2_dcntT=0; /* no data to transmit */
usb_ep2_dcntR=0; /* no data to receive */
led_timer=0;
led_state=LED_ON;
LED_INIT; /* usb interrupt drives the LED, so make sure it is initialised */
UADDR = UADDR_USBEN_MASK; /* enable the USB module, assign address to the default value (0) */
UIR0 = UIR0_RXD2IE_MASK | UIR0_RXD0IE_MASK | UIR0_TXD2IE_MASK | UIR0_TXD0IE_MASK | UIR0_EOPIE_MASK; /* enable Rx&Tx interupts on EP0 & EP2, enable end of frame interrupt */
UCR0 = 0; /* reset EP0 */
UCR1 = 0; /* reset EP1 */
UCR2 = 0; /* reset EP2 */
UCR4 = 0; /* normal operation */
UCR3 = UCR3_TX1STR_MASK | UCR3_PULLEN_MASK; /* clear TX1ST & enable internal pull-up */
USB_State = US_POWERED; /* must be powered when running this code... */
}
作者: koukou147    时间: 2007-7-7 09:40

没有人遇到过这个问题么,好几天都郁闷ing。
作者: seuafu2005    时间: 2007-7-9 10:39

中断产生和PC端软件没有关系。你的初始化没有什么大的问题,但是连接了USB以后,产生复位中断后的程序是怎么写的?有没有把EP0放开?在你的初始化里面EP0没有使能。
另外,USB所有中断是共用一个中断向量的,在中断后要记得标志位及时清零
作者: koukou147    时间: 2007-7-10 10:56

谢谢斑主,问题解决啦。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0