Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1547回复:15

USBN9604怎么清中断?

楼主#
更多 发布于:2004-05-17 21:32
我读了MAEV之后发现中断管脚已然有信号,似乎它自己不能清中断,但我找遍了datasheet都没有发现怎么清中断,高手指点!
jtrambo
驱动牛犊
驱动牛犊
  • 注册日期2004-03-09
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-18 08:00
我也在用9604做东西,dsp5402+9604
我还在软调中,还没硬调
我觉得可能要把MAEV中置位的那个位的相应的那个寄存器读了才有用吧,我也只是空想想,还没开始试。
不只你做到哪一步了,要向你多讨教了
现在我对9604有个问题
MCNTRL中的INTOC1-0的几个选择是什么意思,push-pull,open drain
是什么意思,望赐教。
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-18 09:22
如果发送中断时,usbn9604的中断是一直保持的,也就是说如果是低电平为中断,那么usbn9604的中断线一直为低,你必须在中断处理程序中用屏蔽中断的方法来时电平恢复。一般的maev,altev,rxev等寄存器是表示中断时间的,很多都是读清除的,还有一些需要读其他寄存器清楚的。

至于 “MCNTRL中的INTOC1-0的几个选择是什么意思,push-pull,open drain”表示选择中断信号是低电平输出,还是高电平输出,也就是控制和mcu连接的中断线是高电平有效,还是低电平有效,当然这要看你的mcu的中断输入脚允许哪种中断电平输入。
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-18 09:47
多谢两位,那就是说把MAEV里相应的寄存器读一下就可以清除了?比如收到的是个ALT事件中断,就去把ALTEV读了之后就可以清楚中断管脚上的信号了吧?
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-18 10:27
读寄存器器只是清除寄存器的值,要清除中断管脚的信号,必须在中断处理程序中,执行以下步骤,1。读取usbn9604的mask寄存器值,保存在变量中,2。设置mask的值为0x00(清除中断信号),3。处理中断,4。把保存的mask的值,重新写入mask中,恢复中断。
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-18 10:51
MAMSK设置为零就可以将中断管脚上的信号清除掉了?那可不可以简化成这样:因为开放哪几个中断是由我自己决定的,所以我的收到中断之后就将MAMSK清零,中断处理完之后再将在INIT过程里写入MAMSK的值重新写进MAMSK,开放中断。因为我觉得MAMSK的值在运行中不会自己改变吧?
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-18 10:52
可以。
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-18 16:17
现在又发现,初始化完成之后,即使不将9604跟usb口连接起来,它依然会产生中断信号,并且读MAEV发现是ALT事件,再读ALTEV发现是WAKEUP事件,这些都正常吧?我想不通的是为什么不和pc连起来它也会产生中断信号呢?
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-19 10:10
自己顶啊,防止沉了
liumda
驱动小牛
驱动小牛
  • 注册日期2002-01-23
  • 最后登录2012-07-16
  • 粉丝0
  • 关注0
  • 积分76分
  • 威望48点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-19 12:25
9604不跟usb口连接,它依然会产生中断信号

这个肯定是你的硬件设计有问题,好好查查你的硬件。
You Happy,So I Happy!
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-19 14:09
我在MCNTRL里面设置的是高电平为中断信号
硬件设计会是哪里有问题呢?我在收到高电平之后会清中断,中断管脚的确会被拉低啊。9604不会由于自身的状态改变引起中断?比如我收到的ALT事件?
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-19 17:21
发表于: 2004/5/18 - 16:17
现在又发现,初始化完成之后,即使不将9604跟usb口连接起来,它依然会产生中断信号,并且读MAEV发现是ALT事件,再读ALTEV发现是WAKEUP事件,这些都正常吧?我想不通的是为什么不和pc连起来它也会产生中断信号呢?
 
--------------------------------------------------------------
产生ALT事件是对得啊。是不是一定要和PC连才会产生我就不知道了。我得用得是USB供电,所以无法测到你那种情况。
不过你可以试着望下做啊,我当时也是产生了很多得ALT中断,进行了相应得处理,简单得几个寄存器设置就可以了。然后就没有理它。
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-19 22:01
多谢耐心解答!
USB供电就是我们普通常见的那种吧,直接连USB口的?
现在就在一直向下写,但是由于对9604的工作过程不是很清楚,所以写的不踏实。它的datasheet上好像很多说得都不怎么清楚,我都是参考着NS的那个demo程序来写的。
liumda
驱动小牛
驱动小牛
  • 注册日期2002-01-23
  • 最后登录2012-07-16
  • 粉丝0
  • 关注0
  • 积分76分
  • 威望48点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-05-20 08:36
你用示波器测试一下9604的INT脚,看是不是一直为高?是不是没有变化?

你用的什么设备?  51+USB?
You Happy,So I Happy!
Xranger
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-08-06
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-05-21 14:26
示波器怎么捕捉这么快的信号?
我用的是FPGA+USBN9604,我让程序在设置完MCNTRL之后停了一下,测出INT脚为低电平,设置完ATTACH_NODE之后又测了一下,INT为高电平,然后读MAEV发现中断是ALT事件,再读ALTEV为0x42,是RESET和WKUP事件,现在正在写ALT的事件处理部分
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-05-21 15:41
usbn9604得事件寄存器是读清除得,你如果可以读到不同得ALTEV中断,说明是产生了不同的中断。从你的现象看中断这部分应该没有问题了,把SD3,SD5,WAKEUP,RESET等alt中断处理了,应该就可以了。
我当时做的时候,一般开始的时候要连续二十多个个ALT中断产生。
然后会进入列举过程。
游客

返回顶部