28335的中断函数里面如何用输入电压控制pwm占空比

2019-07-15 18:54发布

新人在做一个ad采集电压并用pwm波输出的一个程序,现已将ad模块和pwm模块设置好了,想在ad中断函数里面写入采集的电压来控制pwm波的占空比,但总是写的不合适,想请大神们给点建议。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
pomelo511
2019-07-16 03:56
ElecFans王岑 发表于 2017-4-18 17:33
你可以把你写的不合适的代码上传上来给其他工程师看一下,好让别人找到你的问题出在哪。

__interrupt void  adc_isr(void)
{
  Vi[ii] =(((float)AdcRegs.ADCRESULT0)*3/65520);

if(ii == 10)
    {
         ii = 0;
         Vaverage=0;

         for(jj=0;jj<10;jj++)
         {
                 Vaverage=Vaverage+Vi[jj];//求出直流偏置量

         }
         Vaverage=(Vaverage/10);



                          ek=Uinput-Vaverage;              //PI调节
                          uk=uk1+kp1*(ek-ek1)+ki1*ek;
                          ek1=ek;


                       if(uk>=300)uk=300;
                           if(uk<=0)uk=0;
                          uk1=uk;
                           D1=uk;
                  //EPwm4Regs.CMPA.half.CMPA=D1;//逆变桥是低有效,D的值越大,



    }

ii++;

  // Reinitialize for next ADC sequence
  AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1
  AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;       // Clear INT SEQ1 bit
  PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;   // Acknowledge interrupt to PIE

  return;
}
这是adc的中断函数处

   kk=ii=0;
   Uinput=8;
   kp1=0.1;ki1=0.3;
   kp2=0.1;ki2=0.3;
   ek=ek1=0;
   uk=0;
   uk1=250;
   Iinput=0.5;
这是参数
但是我不想用pi控制
有没有什么方法能把电压和占空比联系起来的

一周热门 更多>