阅读:1547回复:15
USBN9604怎么清中断?
我读了MAEV之后发现中断管脚已然有信号,似乎它自己不能清中断,但我找遍了datasheet都没有发现怎么清中断,高手指点!
|
|
沙发#
发布于:2004-05-18 08:00
我也在用9604做东西,dsp5402+9604
我还在软调中,还没硬调 我觉得可能要把MAEV中置位的那个位的相应的那个寄存器读了才有用吧,我也只是空想想,还没开始试。 不只你做到哪一步了,要向你多讨教了 现在我对9604有个问题 MCNTRL中的INTOC1-0的几个选择是什么意思,push-pull,open drain 是什么意思,望赐教。 |
|
板凳#
发布于:2004-05-18 09:22
如果发送中断时,usbn9604的中断是一直保持的,也就是说如果是低电平为中断,那么usbn9604的中断线一直为低,你必须在中断处理程序中用屏蔽中断的方法来时电平恢复。一般的maev,altev,rxev等寄存器是表示中断时间的,很多都是读清除的,还有一些需要读其他寄存器清楚的。
至于 “MCNTRL中的INTOC1-0的几个选择是什么意思,push-pull,open drain”表示选择中断信号是低电平输出,还是高电平输出,也就是控制和mcu连接的中断线是高电平有效,还是低电平有效,当然这要看你的mcu的中断输入脚允许哪种中断电平输入。 |
|
地板#
发布于:2004-05-18 09:47
多谢两位,那就是说把MAEV里相应的寄存器读一下就可以清除了?比如收到的是个ALT事件中断,就去把ALTEV读了之后就可以清楚中断管脚上的信号了吧?
|
|
地下室#
发布于:2004-05-18 10:27
读寄存器器只是清除寄存器的值,要清除中断管脚的信号,必须在中断处理程序中,执行以下步骤,1。读取usbn9604的mask寄存器值,保存在变量中,2。设置mask的值为0x00(清除中断信号),3。处理中断,4。把保存的mask的值,重新写入mask中,恢复中断。
|
|
5楼#
发布于:2004-05-18 10:51
MAMSK设置为零就可以将中断管脚上的信号清除掉了?那可不可以简化成这样:因为开放哪几个中断是由我自己决定的,所以我的收到中断之后就将MAMSK清零,中断处理完之后再将在INIT过程里写入MAMSK的值重新写进MAMSK,开放中断。因为我觉得MAMSK的值在运行中不会自己改变吧?
|
|
6楼#
发布于:2004-05-18 10:52
可以。
|
|
7楼#
发布于:2004-05-18 16:17
现在又发现,初始化完成之后,即使不将9604跟usb口连接起来,它依然会产生中断信号,并且读MAEV发现是ALT事件,再读ALTEV发现是WAKEUP事件,这些都正常吧?我想不通的是为什么不和pc连起来它也会产生中断信号呢?
|
|
8楼#
发布于:2004-05-19 10:10
自己顶啊,防止沉了
|
|
9楼#
发布于:2004-05-19 12:25
9604不跟usb口连接,它依然会产生中断信号
这个肯定是你的硬件设计有问题,好好查查你的硬件。 |
|
|
10楼#
发布于:2004-05-19 14:09
我在MCNTRL里面设置的是高电平为中断信号
硬件设计会是哪里有问题呢?我在收到高电平之后会清中断,中断管脚的确会被拉低啊。9604不会由于自身的状态改变引起中断?比如我收到的ALT事件? |
|
11楼#
发布于:2004-05-19 17:21
发表于: 2004/5/18 - 16:17
现在又发现,初始化完成之后,即使不将9604跟usb口连接起来,它依然会产生中断信号,并且读MAEV发现是ALT事件,再读ALTEV发现是WAKEUP事件,这些都正常吧?我想不通的是为什么不和pc连起来它也会产生中断信号呢? -------------------------------------------------------------- 产生ALT事件是对得啊。是不是一定要和PC连才会产生我就不知道了。我得用得是USB供电,所以无法测到你那种情况。 不过你可以试着望下做啊,我当时也是产生了很多得ALT中断,进行了相应得处理,简单得几个寄存器设置就可以了。然后就没有理它。 |
|
12楼#
发布于:2004-05-19 22:01
多谢耐心解答!
USB供电就是我们普通常见的那种吧,直接连USB口的? 现在就在一直向下写,但是由于对9604的工作过程不是很清楚,所以写的不踏实。它的datasheet上好像很多说得都不怎么清楚,我都是参考着NS的那个demo程序来写的。 |
|
13楼#
发布于:2004-05-20 08:36
你用示波器测试一下9604的INT脚,看是不是一直为高?是不是没有变化?
你用的什么设备? 51+USB? |
|
|
14楼#
发布于:2004-05-21 14:26
示波器怎么捕捉这么快的信号?
我用的是FPGA+USBN9604,我让程序在设置完MCNTRL之后停了一下,测出INT脚为低电平,设置完ATTACH_NODE之后又测了一下,INT为高电平,然后读MAEV发现中断是ALT事件,再读ALTEV为0x42,是RESET和WKUP事件,现在正在写ALT的事件处理部分 |
|
15楼#
发布于:2004-05-21 15:41
usbn9604得事件寄存器是读清除得,你如果可以读到不同得ALTEV中断,说明是产生了不同的中断。从你的现象看中断这部分应该没有问题了,把SD3,SD5,WAKEUP,RESET等alt中断处理了,应该就可以了。
我当时做的时候,一般开始的时候要连续二十多个个ALT中断产生。 然后会进入列举过程。 |
|