阅读:1321回复:6
关于固件中断的问题
我想请教各位大虾,在中断中不是已经把数据传到usb端口了吗,在主程序中为什么还要在厂商请求中处理数据呢
另外,usb的中断源是从哪来的,是不是在应用程序发采集数据时,就使usb芯片产生中断通知单片机采集数据 :( |
|
最新喜欢:![]() |
沙发#
发布于:2003-06-05 19:37
另外一个问题是,我的中断好象是不连续的。我设了一个全局变量icounter=0,来一个中断,icounter++,在中断服务程序里,我把icounter通过端点3上传,如果第一次读的是1,第二次应该是2,可是并非如此,而是5或6,我理解的是,当数据在D12的BUFFER中时,D12INT_N应该不会产生中断才对啊?
|
|
板凳#
发布于:2003-06-05 19:16
我用的是D12的片子,固件也是用的中断方式(大家公认这种速度比较快),用的时候我发觉我中断每隔8ms产生一次,速度很慢,我不知道原因在哪里,不知道哪位大虾可以指教一下?我觉得上层应该不会有问题。是不是我的芯片初始化有问题?我初始化的程序是按照周立功的开发板的源程序?
|
|
地板#
发布于:2003-06-04 11:07
我用的不是这种芯片,不过usb的原理应该是一样的
当中断发生时,这时中断源寄存器中相应的位置位,比如setup置位,那么是setup中断,进入中断处理程序,从DATA FIFO中读取数据(8bytes),如果是要设备送回数据,比如GET_DESCRIPTOR,这时把host要求的数据写入DATA FIFO(不能超过其容量)中,使能FIFO,到这儿中断处理程序就算完成(当然这只是针对这一种情况的)。接着host会发来一个IN token,在这个IN事务中,FIFO中的数据通过电缆被送回host,这一阶段是硬件自己完成的,和程序没有关系,不过传送完成后,host会发回一个ACK信号加以确认,有些芯片在这个时候也会产生一个ACK中断(我不清楚有没有不产生ACK中断的芯片),标志着这次传输的完成,从而可以开始下一次的传输。 |
|
|
地下室#
发布于:2003-06-04 10:31
flycat0101
你好,我现在在用cy7c68013,利用gpif模式传输数据,对于来自设备的中断信号,我如何通过usb传给主机呢?请加以指点 我的qq 184355363 |
|
5楼#
发布于:2003-06-04 10:01
中断发生时一般有这几种种情况:
1。你的设备(硬件)已经收到host发来的数据(现在FIFO中),你应该处理他 2。设备已经发送完FIFO中的数据给host,这时你也要处理余下的事情,如果还有数据要送回,就把数据写入FIFO,在下一个IN事务时硬件送回数据 中断源,有一个中断寄存器,使能后,如果有中断发生,中断源寄存器中就会有相应的置位,也就知道了发生了什么中断,自然也就该作相应的处理 在固件中,应用程序是不会主动要求数据采集/发送的,只有被动的进行,也就是根据中断的情况进行 |
|
|
6楼#
发布于:2003-06-04 09:35
中断寄存器不为0的时候,D12INT_N脚为低!!可以用该脚接89c51的外部中断源,控制中断!!
|
|