当PDPINT触发时PWM输出引脚为高阻态,该如何在中断函数中拉低为低电平

2019-03-26 15:45发布

手把手教你学DSP  书中介绍PDPINT的时候有提到当PDPINTx输入一个低电平的时候,PWM引脚立刻变为高阻态,同时申请中断。为了保险起见,在中断函数中还是得将引脚电位置为低电平。
我加了这个中断,但是发现高阻态时程序对引脚输出不起改变,请问该如何修改或如何实现呢?
interrupt void PdpISR(void)
{

        EvaRegs.ACTRA.all=0x0000;       
        EvaRegs.EVAIFRC.all=BIT0;       
        PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;
}

我希望在主程序刚执行的时候PWM输出也全为低电平,所以我加了以下语句
        EALLOW;  
        GpioMuxRegs.GPAMUX.all |= 0x003F;
        EDIS;   
        EvaRegs.ACTRA.all=0x0000;

   while (EnableFlag==FALSE)
    {
      BackTicker++;
    }
但问题是如果前一次运行PDPINT被触发,重新下载程序后运行PWM引脚不会发生改变,请问该如何实现呢 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Firststep
1楼-- · 2019-03-27 01:34
<    // Waiting for enable flag set
        EALLOW;  
        GpioMuxRegs.GPAMUX.all = 0x0000;//设置为通用数字I/O口
        GpioMuxRegs.GPADIR.bit.GPIOA0=1;//设置为输出口
        GpioMuxRegs.GPADIR.bit.GPIOA1=1;
        GpioMuxRegs.GPADIR.bit.GPIOA2=1;
        GpioMuxRegs.GPADIR.bit.GPIOA3=1;
        GpioMuxRegs.GPADIR.bit.GPIOA4=1;
        GpioMuxRegs.GPADIR.bit.GPIOA5=1;
        EDIS;
        GpioDataRegs.GPASET.bit.GPIOA0=1; //设置为低电平   
        GpioDataRegs.GPASET.bit.GPIOA1=1;
        GpioDataRegs.GPASET.bit.GPIOA2=1;
        GpioDataRegs.GPASET.bit.GPIOA3=1;
        GpioDataRegs.GPASET.bit.GPIOA4=1;
        GpioDataRegs.GPASET.bit.GPIOA5=1;

   while (EnableFlag==FALSE)
    {
      BackTicker++;
    }

这样可以吗    我试了下好像还是有问题
lelee007
2楼-- · 2019-03-27 06:14
 精彩回答 2  元偷偷看……
Firststep
3楼-- · 2019-03-27 06:47
lelee007 发表于 2014-10-14 10:02
这个不知道哇,帮頂

我的设想是找到DSP封锁PWM,输出高阻态的中断程序,然后在这个语句之前使PWM强制低,这样貌似高阻态后输出也为低,但是好像找不到DSP封锁PWM的中断,资料上说PDPINTx如果被禁止的话,是不会输出高阻的,说明这不是硬件上由三态缓冲器实现的。
xklzw
4楼-- · 2019-03-27 12:32
只有软复位或者复位才可以重新启用pwm的

一周热门 更多>