您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 请教:如何同时开timer0 PWM和PPI中断
本帖共有849个阅读者
发表帖子 发表投票 回复主题
请教:如何同时开timer0 PWM和PPI中断
bh99(论坛新手)
bh99
头衔:社区公民
帮派:无帮无派
帖数:25
金钱:337
积分:41
注册时间:2012/4/24
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
请教:如何同时开timer0 PWM和PPI中断

我简单的把timer0 pwm 代码和 cmos 代码结合在一起,不成功:PPI中断没有运行:

void Init_Interrupts(void)
{
    *pSIC_IAR0 = 0xffffffff;
    //*pSIC_IAR1 = 0xffffffff;   //这句代码一打开,PPI中断就不运行了,不能显示640*480那句提示了
    *pSIC_IAR2 = 0xfffffff4;                    
    register_handler(ik_ivg11, TIMER0_ISR);        
    *pSIC_IMASK = 0x00010000;
    
    *pSIC_IAR0 = *pSIC_IAR0 & 0xffffffff | 0x00000000;    
    *pSIC_IAR1 = *pSIC_IAR1 & 0xffffffff | 0x00000001;    
    *pSIC_IAR2 = *pSIC_IAR2 & 0xffffffff | 0x00000000;                                                        
    register_handler(ik_ivg8, DMA0_PPI_ISR);        

    *pSIC_IMASK= *pSIC_IMASK & 0xffffffff | 0x00000100; //原来这里直接是 =0x100;    
}

EX_INTERRUPT_HANDLER(TIMER0_ISR)
{
    *pTIMER_STATUS = 0x0001;
    //printf("timer0 interrupt !\n");
}

EX_INTERRUPT_HANDLER(DMA0_PPI_ISR)
{    
        *pDMA0_IRQ_STATUS = 0x1;  
        *pPPI_CONTROL &= 0xfffe;
        printf( "\nSuccess Capture One Frame:  640 * 480\n");
        printf( "                 YUYV422(YUV422) Format\n" );
        printf( "                 The data address is 0 \n" );
}



「该帖子被 bh99 在 2012-12-15 20:55:28 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/12/15 20:38:30
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

代码逻辑上没有什么问题。但建议你将void Init_Interrupts(void)函数中的两次初始化中断寄存器整合为一次初始化,相同的寄存器没有必要写两便。

PPI中断消失可能是timer0中断过快影响了PPIDMA中断。你把TIMER0的周期改的足够大,看是否有PPI中断。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/12/16 20:05:18
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159244 Call, 1 Queries, Processed in 0.015625 second(s),