阅读:997回复:2
为什么单步走就可以,全速跑起来就不可以呢
我现在按照WLY76说的过程
先是一些初始化,使能地址和端口此时GL灯亮,然后重新连接 GL灯灭。然后读中断寄存器!!! 第一个问题就处在这里。。。如果我全速跑,。。。到这里。。。 就进中断I_st=0x40,而且进去之后程序就超时。如果单步走就没问题.然后读出来的i_st就是0xc1. 接下来在单步走。。一直走到get_descriptor()这个函数 第二个问题就又出现了。。我再单步走。就走不下去了。也时超时 我想出现第二个问题可能是因为我单步执行可能错过了发送描述符 的时间,主机不认。但是如果全速跑的话,更差。。。请问可能问题处在什么地方???? 还有我读中断寄存器后,,int引脚也不能变高啊。。。。 什么原因阿!!!!! :( :( :( :( :( :( |
|
最新喜欢:![]() |
沙发#
发布于:2004-08-27 00:25
to jrmforever
"还有我读中断寄存器后,,int引脚也不能变高啊。。。。" 引用D12资料的一句话: 命令F4h 该命令指示中断的来源通过读端点最后处理状态寄存器将端点中断位位(0-5) 清零其它位在读中断寄存器后被清零。 不知道你有没有读最后处理状态寄存器? 还要注意的是,如果主机发get descriptor没有收到回应的话,它会继续多发两次,总共3次,也就是说如果你没有正确回应的话,D12将会有3个控制输出的中断。如果你请完中断寄存器后再遇到控制输出中断的话,现象就是“INT引脚不变高” |
|
板凳#
发布于:2004-08-26 20:09
进入中断处理函数后要关中断,出来时要开中断
|
|