4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1542回复:12

关于写数据时被中断的问题

楼主#
更多 发布于:2003-08-02 15:54
我得usb中断是低优先级的,如果我在向usb写数据的时候被其他的中断打断,是不是写数据就会出错啊?我发现,如果没有被中断,发送的数据是对的,可是如果有中断进来的话,上位机接收到的数据不对。我看了看d12的资料,上面只是说了cpu从usb读数据的时候可以被中断,没有说向usb写数据的时候也可以被中断,请问有没有人处理过这样的问题啊?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-03 09:42
是可以被中断的,如果使用会编写的那要注意中断现场的保护,还有就是在高优先级的中断中不要改变usb端点的地址指针,因为端点用的是fifo,只能是依次后移的。
maxipeiz
驱动小牛
驱动小牛
  • 注册日期2003-01-28
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-03 09:53
你是不是武汉的?
我不是给你说过了吗?在程序中加个数据指针就行了。
天高任鸟飞
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-05 08:43
是可以被中断的,如果使用会编写的那要注意中断现场的保护,还有就是在高优先级的中断中不要改变usb端点的地址指针,因为端点用的是fifo,只能是依次后移的。


这么说我就得给usb的端点分配一个地址指针?这个指针只能是这个端点用了?我这里倒是有两个数据指针dptr的,不过这样做起来有点麻烦,我再高优先级的中断里面保护了地址指针,这还不够吗?
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-05 08:45
你是不是武汉的?
我不是给你说过了吗?在程序中加个数据指针就行了。


我是武汉的,不过我好像还是第一次在驱网见到你了,请指教,在程序中加个数据指针是什么意思啊?
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-05 12:00
我想再问一个问题了,我想在对usb芯片初始化完成,但是还没有开始枚举的时候就向端点写数据,然后初始化完了就开始读数,怎么我这样做的就是不行呢?是不是一定要枚举成功之后才能向端点里面写数据阿?
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-16 15:32
哎呀,怎么没有人理我那?我得就是这里出问题了,写数据就是不能被中断,真是急死人了!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-16 18:44
只要你配置并使能了端点后就可以往里面写数据了。
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-16 20:51
哦,这个问题我已经解决了,我想知道怎么我在向端点里面写数据的时候,被其他的中断中断了,这时候就出现了错误了呢?不是说可以被中断的吗?我发现中断后,传上去的数据有一部分全是0,我怀疑是不是中断后端点的指针自动向后移了,因为每次端点里面的数据被读出来之后,就被清零了。请问你们有没有出过这样的问题呢?我得端点的指针都保护了啊。如果usb写数不能被中断的话,那么很多问题就不好解决了。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-08-17 10:39
端点指针?
端点只有一个地址呀,只要你往地址里写就行了,那来的指针呢,会不会是你中断返回后写到端点里的数本来就是0呢?
我可以明确的告诉你,写USB端点的过程是可以被高一级的中断打断的,这一点你不用怀疑了。
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-08-18 08:37
我知道这一点是不用怀疑的阿,你以前就告诉我了,可是我这里就是不行啊,读了几个数据就不行了,不知道是不是我得下位机太忙了,高一级的中断不断地被响应,轮到usb的时间几乎很少,每56us才19us,而我这里向端点写64B需要大约90US的时间了,是不是usb上位机等太久了,所以导致上位机没有反应?我得分析就是这样子的,不知道是不是啊?因为用示波器测的就是如果usb不被中断的话,其他的中断的周期就不对,这说明是usb的送数影响了其他的中断了,是把?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-08-18 09:32
你其它的中断是干什么用的?
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-08-18 09:44
是两个定时器,用来送50HZ的交流波形的,每周波360点,所以每两个点之间的时间间隔是55.6us,这两个定时器处理完之后,大约只有19us的时间可以用来处理usb的了,所以,每次向usb写数64B的话,要被中断好几次,我怀疑就是这里出了问题
游客

返回顶部