ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:1597回复:9

pxa250中断问题(isp1161)

楼主#
更多 发布于:2004-01-15 09:28
我在调isp1161的时候,设置了其中断号为29(0x13),GPIO22下降沿触发,然后在OEMInterruptEnable()中设置
case SYSINTR_OHCI_PDD(为29,常量):
     v_pGPIOReg->GRER_x &= ~GPIO_22;
     v_pGPIOReg->GFER_x |= GPIO_22;
     v_pICReg->icmr |= INTC_GPIO80_2;(中断控制寄存器第11位)
     break;
在OEMInterruptDisable()中设置
case SYSINTR_OHCI_PDD:
    v_pGPIOReg->GFER_x &= ~GPIO_22;
    v_pGPIOReg->GRER_x &= ~GPIO_22;
    break;
在OEMInterruptDone()中设置
case SYSINTR_OHCI_PDD:
    v_pGPIOReg->GFER_x |= GPIO_22;
    v_pGPIOReg->GRER_x &= ~GPIO_22;
    v_pICReg->icmr |= INTC_GPIO80_2;
    break;
在OEMInterruptHandler()中设置
if(ipreg_copy & INTC_GPIO80_2)
{
    if(v_pGPIOReg->GEDR_x & GPIO_22)
    {
v_pGPIOReg->GFER_x &= ~GPIO_22;
return SYSINTR_OHCI_PDD;
    }
……
结果是SYSINTR_OHCI_PDD中断不断触发,使程序无法进行下去,请问这使为什么?还有,我如果设置此中断的icmr为INTC_USB(中断控制寄存器第12位),发现在OEMInterruptHandler中出现中断的仍然为INTC_GPIO80_2,这是为什么??

最新喜欢:

ltgbjltgbj
leo_cyl
驱动牛犊
驱动牛犊
  • 注册日期2001-08-20
  • 最后登录2009-11-02
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-15 09:53
ISP1161的中断可设为电平触发和边沿触发,而边沿触发又可设为下降沿触发和上升沿触发。不知道你设定正确了吗?
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-15 10:36
这个应该没有问题,因为驱动是philips公司提供的,而我只是要在底层设置中断,不知道你是否也是用pxa250开发,能不能把你的bsp中的kenerl中的代码发给我看看,谢谢!
leo_cyl
驱动牛犊
驱动牛犊
  • 注册日期2001-08-20
  • 最后登录2009-11-02
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-15 11:26
sorry,我用GPIO1做中断,和你的不同。
建议在OEMInterruptHandler()里清一下中断标志:
if(v_pGPIOReg->GEDR_x & GPIO_22)
{
v_pGPIOReg->GFER_x &= ~GPIO_22;
v_pGPIOReg->GEDR_x |= GPIO_22;  //清中断标志
return SYSINTR_OHCI_PDD;
}

另外GPIO_22的AF设了吗?

[编辑 -  1/15/04 by  leo_cyl]
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-15 12:50
ok,谢谢,我试试
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-15 14:29
这位兄弟,能不能把你的bsp中的kernel中的cfwxsc1.c,同目录下的intxsc1.c,fwxsc1.s发给我看看,想跟你交流一下,留个QQ或者mail什么的,我的是hytu@vintion.com,谢谢!
leo_cyl
驱动牛犊
驱动牛犊
  • 注册日期2001-08-20
  • 最后登录2009-11-02
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-15 15:09
我的BSP中OEMInterruptEnable()、OEMInterruptDisable()和OEMInterruptDone()和你一样。OEMInterruptHandler()只是简单的清中断标志就return SYSINTR_OHCI_PDD。
总的来看你底层设置没太大问题(只是没清中断标志),考虑一下其他方面的原因。
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-16 11:56
这位兄弟,我的驱动已经搞定了,但是机器速度很慢,我debug了一下,发现我定义的usb驱动在不断的触发中断,导致速度很慢,我已经更改了优先级,将其定义为200,还是不行,这是为什么
另外,能不能交换bsp看看,我的板卡的cf和cs8900,usb冲突,我想找出原因来,你留个QQ,我的是26035859,谢谢
91ming
驱动小牛
驱动小牛
  • 注册日期2001-12-03
  • 最后登录2005-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-17 10:40
cf卡我做过,可以交流,我已经在qq上联系你了。
不断挖掘、开拓希望
qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-20 15:53
sorry,我用GPIO1做中断,和你的不同。
建议在OEMInterruptHandler()里清一下中断标志:
if(v_pGPIOReg->GEDR_x & GPIO_22)
{
v_pGPIOReg->GFER_x &= ~GPIO_22;
v_pGPIOReg->GEDR_x |= GPIO_22;  //清中断标志
return SYSINTR_OHCI_PDD;
}

另外GPIO_22的AF设了吗?

[编辑 -  1/15/04 by  leo_cyl]
"另外GPIO_22的AF设了吗?"
这个需要怎么设?
游客

返回顶部