阅读:1542回复:12
关于写数据时被中断的问题
我得usb中断是低优先级的,如果我在向usb写数据的时候被其他的中断打断,是不是写数据就会出错啊?我发现,如果没有被中断,发送的数据是对的,可是如果有中断进来的话,上位机接收到的数据不对。我看了看d12的资料,上面只是说了cpu从usb读数据的时候可以被中断,没有说向usb写数据的时候也可以被中断,请问有没有人处理过这样的问题啊?
|
|
沙发#
发布于:2003-08-03 09:42
是可以被中断的,如果使用会编写的那要注意中断现场的保护,还有就是在高优先级的中断中不要改变usb端点的地址指针,因为端点用的是fifo,只能是依次后移的。
|
|
板凳#
发布于:2003-08-03 09:53
你是不是武汉的?
我不是给你说过了吗?在程序中加个数据指针就行了。 |
|
|
地板#
发布于:2003-08-05 08:43
是可以被中断的,如果使用会编写的那要注意中断现场的保护,还有就是在高优先级的中断中不要改变usb端点的地址指针,因为端点用的是fifo,只能是依次后移的。 这么说我就得给usb的端点分配一个地址指针?这个指针只能是这个端点用了?我这里倒是有两个数据指针dptr的,不过这样做起来有点麻烦,我再高优先级的中断里面保护了地址指针,这还不够吗? |
|
地下室#
发布于:2003-08-05 08:45
你是不是武汉的? 我是武汉的,不过我好像还是第一次在驱网见到你了,请指教,在程序中加个数据指针是什么意思啊? |
|
5楼#
发布于:2003-08-05 12:00
我想再问一个问题了,我想在对usb芯片初始化完成,但是还没有开始枚举的时候就向端点写数据,然后初始化完了就开始读数,怎么我这样做的就是不行呢?是不是一定要枚举成功之后才能向端点里面写数据阿?
|
|
6楼#
发布于:2003-08-16 15:32
哎呀,怎么没有人理我那?我得就是这里出问题了,写数据就是不能被中断,真是急死人了!
|
|
7楼#
发布于:2003-08-16 18:44
只要你配置并使能了端点后就可以往里面写数据了。
|
|
8楼#
发布于:2003-08-16 20:51
哦,这个问题我已经解决了,我想知道怎么我在向端点里面写数据的时候,被其他的中断中断了,这时候就出现了错误了呢?不是说可以被中断的吗?我发现中断后,传上去的数据有一部分全是0,我怀疑是不是中断后端点的指针自动向后移了,因为每次端点里面的数据被读出来之后,就被清零了。请问你们有没有出过这样的问题呢?我得端点的指针都保护了啊。如果usb写数不能被中断的话,那么很多问题就不好解决了。
|
|
9楼#
发布于:2003-08-17 10:39
端点指针?
端点只有一个地址呀,只要你往地址里写就行了,那来的指针呢,会不会是你中断返回后写到端点里的数本来就是0呢? 我可以明确的告诉你,写USB端点的过程是可以被高一级的中断打断的,这一点你不用怀疑了。 |
|
10楼#
发布于:2003-08-18 08:37
我知道这一点是不用怀疑的阿,你以前就告诉我了,可是我这里就是不行啊,读了几个数据就不行了,不知道是不是我得下位机太忙了,高一级的中断不断地被响应,轮到usb的时间几乎很少,每56us才19us,而我这里向端点写64B需要大约90US的时间了,是不是usb上位机等太久了,所以导致上位机没有反应?我得分析就是这样子的,不知道是不是啊?因为用示波器测的就是如果usb不被中断的话,其他的中断的周期就不对,这说明是usb的送数影响了其他的中断了,是把?
|
|
11楼#
发布于:2003-08-18 09:32
你其它的中断是干什么用的?
|
|
12楼#
发布于:2003-08-18 09:44
是两个定时器,用来送50HZ的交流波形的,每周波360点,所以每两个点之间的时间间隔是55.6us,这两个定时器处理完之后,大约只有19us的时间可以用来处理usb的了,所以,每次向usb写数64B的话,要被中断好几次,我怀疑就是这里出了问题
|
|