阅读:1597回复:9
pxa250中断问题(isp1161)
我在调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,这是为什么?? |
|
最新喜欢:ltgbj |
沙发#
发布于:2004-01-15 09:53
ISP1161的中断可设为电平触发和边沿触发,而边沿触发又可设为下降沿触发和上升沿触发。不知道你设定正确了吗?
|
|
板凳#
发布于:2004-01-15 10:36
这个应该没有问题,因为驱动是philips公司提供的,而我只是要在底层设置中断,不知道你是否也是用pxa250开发,能不能把你的bsp中的kenerl中的代码发给我看看,谢谢!
|
|
地板#
发布于: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] |
|
地下室#
发布于:2004-01-15 12:50
ok,谢谢,我试试
|
|
5楼#
发布于:2004-01-15 14:29
这位兄弟,能不能把你的bsp中的kernel中的cfwxsc1.c,同目录下的intxsc1.c,fwxsc1.s发给我看看,想跟你交流一下,留个QQ或者mail什么的,我的是hytu@vintion.com,谢谢!
|
|
6楼#
发布于:2004-01-15 15:09
我的BSP中OEMInterruptEnable()、OEMInterruptDisable()和OEMInterruptDone()和你一样。OEMInterruptHandler()只是简单的清中断标志就return SYSINTR_OHCI_PDD。
总的来看你底层设置没太大问题(只是没清中断标志),考虑一下其他方面的原因。 |
|
7楼#
发布于:2004-01-16 11:56
这位兄弟,我的驱动已经搞定了,但是机器速度很慢,我debug了一下,发现我定义的usb驱动在不断的触发中断,导致速度很慢,我已经更改了优先级,将其定义为200,还是不行,这是为什么
另外,能不能交换bsp看看,我的板卡的cf和cs8900,usb冲突,我想找出原因来,你留个QQ,我的是26035859,谢谢 |
|
8楼#
发布于:2004-01-17 10:40
cf卡我做过,可以交流,我已经在qq上联系你了。
|
|
|
9楼#
发布于:2005-01-20 15:53
sorry,我用GPIO1做中断,和你的不同。"另外GPIO_22的AF设了吗?" 这个需要怎么设? |
|