阅读:1458回复:6
timer2中断一允许系统就无法识别USB设备了?
用的是CY68013,想加入Timer2中断,不允许timer2中断一切都正常,只要一允许系统就说无法识别的USB设备,帮我看一下程序什么地方出问题了!多谢
void TD_Init(void) { ... /* setup the timer 2 interrupt */ T2CON=0;//set timer2 at auto-reload mode RCAP2L=0x9F; RCAP2H=0xFB;//Autoreload counter, about 0.56ms @ 48MHz CKCON|=1<<5;//use CLKOUT/12 as source TR2 = 1; /* start timer 2 */ ET2 = 1; /* enable timer 2 interrupt一允许就出错 */ } void timer2 (void) interrupt TMR2_VECT { EP1INBUF[0] = 0x55;//下面三行去掉,不发送数据就可以了 EP1INBUF[1] = 0xaa; EP1INBC = 2; T2CON &= 0x7f;//~(1<<7); } [编辑 - 11/15/04 by bonito] |
|
沙发#
发布于:2004-11-15 09:30
在设备加载后再开中断。
|
|
板凳#
发布于:2004-11-15 12:38
你的中断可能太频繁了,干扰了设备的枚举
按照楼上说得那样,枚举完再开中断 |
|
地板#
发布于:2004-11-15 20:52
同意楼上的回答
|
|
|
地下室#
发布于:2004-11-16 15:55
你的中断可能太频繁了,干扰了设备的枚举 多谢大家的指点,我试着把中断允许方在后面,但是发现了一个更怪的问题,不开中断也会出错! void timer2 (void) interrupt TMR2_VECT { DWORD PA1; T2CON &=0x7f; //clear timer2 req Counter++; Counter>>=8;//只要加上这一句,无论是否允许timer2中断, //都会出现无法识别USB设备的情况,其实也不是 //这一句,随便写点别的,只要中断程序一长就出错 } |
|
5楼#
发布于:2004-11-18 11:35
我的也出现同样的问题,
void init_serial(void) { SCON = 0X52; PCON = 0X80 | PCON; TMOD = 0X21; // TCON = 0x69; // TCON TH1 = 0xFd; // 9600bps @ 24MHz // TR1 = 1;开这个就无法枚举了 ES = 1; } |
|
6楼#
发布于:2004-11-19 12:53
应该不会吧,usb的请求超时时间是50ms呢,是不是68013的一个bug?发mail给cypress的技术支持询问一下,或者到www.cypress.com上的knowledgebase里搜一下是否有相关的问题
|
|