⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 网络adc____001.txt

📁 2812ADC程序网络ADC____001.rar
💻 TXT
字号:
tms320f2812进行AD的交流采样,输入波形是从信号发生器产生,50HZ正弦波,然后经过信号调理和电平抬高,使的输入到DSP的信号为0--3V,然后在进行DSP采样;可是采样的总是不正确;通过CCS软件的graph窗口观察time-frequence 的波形图形发现波形这个问题困饶我好久了,希望哪个做过AD交流采样的大哥给点建议吧;万分感谢:老是有问题;
本程序中用了定时器1的周期中断触发AD转换;且周期为100us;

//##################################################################################################
//###############################################电压电流采样控制生成PWM波形########################
//##############################################                            ########################
//##################################################################################################
//################################################       作者:zswqq       #########################
//################################################       2007-8-8      #############################

#include "DA.h"
#include "DSP28_Device.h"
interrupt void ad(void);
interrupt void T1INT_isr(void);
Uint32  k;
Uint32 Loopcount;
Uint32 ConversionCount;
Uint32 RESULTA0[800];
Uint32 RESULTB0[800];
Uint32  comp;
float comp_ok1[4];
int const sina[]={0x0400,0x0420,0x0440,0x0460,0x0480,0x04A0,0x04BF,0x04DF,0x04FE,
0x051D,0x053C,0x055A,0x0578,0x0596,0x05B3,0x05D0,0x05ED,0x0609,0x0624,0x063F,0x0659,
0x0673,0x068C,0x06A5,0x06BC,0x06D4,0x06EA,0x0700,0x0715,0x0729,0x073C,0x074E,0x0760,
0x0771,0x0781,0x0790,0x079E,0x07AB,0x07B8,0x07C3,0x07CD,0x07D7,0x07DF,0x07E7,0x07ED,
0x07F3,0x07F7,0x07FB,0x07FD,0x07FF,0x0800,0x07FF,0x07FD,0x07FB,0x07F7,0x07F3,0x07ED,
0x07E7,0x07DF,0x07D7,0x07CD,0x07C3,0x07B8,0x07AB,0x079E,0x0790,0x0781,0x0771,0x0760,
0x074E,0x073C,0x0729,0x0715,0x0700,0x06EA,0x06D4,0x06BC,0x06A5,0x068C,0x0673,0x0659,
0x063F,0x0624,0x0609,0x05ED,0x05D0,0x05B3,0x0596,0x0578,0x055A,0x053C,0x051D,0x04FE,
0x04DF,0x04BF,0x04A0,0x0480,0x0460,0x0440,0x0420,0x0400,0x03E0,0x03C0,0x03A0,0x0380,
0x0360,0x0341,0x0321,0x0302,0x02E3,0x02C4,0x02A6,0x0288,0x026A,0x024D,0x0230,0x0213,
0x01F7,0x01DC,0x01C1,0x01A7,0x018D,0x0174,0x015B,0x0144,0x012C,0x0116,0x0100,0x00EB,
0x00D7,0x00C4,0x00B2,0x00A0,0x008F,0x007F,0x0070,0x0062,0x0055,0x0048,0x003D,0x0033,
0x0029,0x0021,0x0019,0x0013,0x000D,0x0009,0x0005,0x0003,0x0001,0x0000,0x0001,0x0003,
0x0005,0x0009,0x000D,0x0013,0x0019,0x0021,0x0029,0x0033,0x003D,0x0048,0x0055,0x0062,
0x0070,0x007F,0x008F,0x00A0,0x00B2,0x00C4,0x00D7,0x00EB,0x0100,0x0116,0x012C,0x0144,
0x015B,0x0174,0x018D,0x01A7,0x01C1,0x01DC,0x01F7,0x0213,0x0230,0x024D,0x026A,0x0288,
0x02A6,0x02C4,0x02E3,0x0302,0x0321,0x0341,0x0360,0x0380,0x03A0,0x03C0,0x03E0};


// Prototype statements for functions found within this file.


void main(void)
{

        InitSysCtrl();
    EALLOW;
            GpioMuxRegs.GPAMUX.all=0x00FF;
            GpioMuxRegs.GPADIR.all=0x00FF;
//GpioMuxRegs.GPBMUX.all=0x00FF;
        EDIS;
        DINT;
        IER = 0x0000;
        IFR = 0x0000;
        InitPieCtrl();
    InitPieVectTable();            
    InitAdc();        
        k=0;

        EALLOW;        // This is needed to write to EALLOW protected registers
        PieVectTable.ADCINT=&ad;
    PieVectTable.T1PINT=&T1INT_isr;
        EDIS;   // This is needed to disable write to EALLOW protected registers

    PieCtrl.PIEIER1.bit.INTx6=1;
        PieCtrl.PIEIER2.bit.INTx4=1;
       // Enable INT14 which is connected to CPU-Timer 2:
        IER|= M_INT1|M_INT2;
        //KickDog();--
    // Enable global Interrupts and higher priority real-time debug events:
        
        EINT;   // Enable Global interrupt INTM
        ERTM;        // Enable Global realtime interrupt DBGM
        /*while(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY==0)
                {                        

                        AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;

                }//从空闲模式启动SEQ1;*/
   Loopcount=0;
   ConversionCount=0;

//配置事件管理器EVA;
//  EvaRegs.T1CMPR=0x0d2f;
//  EvaRegs.T1PR=0x0ea6; ;
//  EvaRegs.GPTCONA.bit.T1TOADC=1;//采用定时器中断采样;
//  EvaRegs.T1CON.all=0x1042;

    EvaRegs.T1PR=0x0ea6;                                          //7266
        EvaRegs.T1CMPR=0x0d2f;                                    //6457
        EvaRegs.EVAIMRA.bit.T1PINT=1;
        EvaRegs.EVAIFRA.bit.T1PINT=1;
    EvaRegs.GPTCONA.bit.T1TOADC=1;//采用定时器中断采样;
        
        EvaRegs.CMPR1=0x0c00;                                     //6000
        EvaRegs.CMPR2=0x1400;                                     //12000
//        EvaRegs.CMPR3=0x00cf;                                   //317
    
    EvaRegs.T1CON.all=0x1042;
    EvaRegs.ACTR.all=0x0666;
    EvaRegs.DBTCONA.all=0x0000;
    EvaRegs.T1CNT=0;
    EvaRegs.COMCONA.all=0xa600;  
  while(1)
  {
    KickDog();
   Loopcount++;
  }
}


interrupt void ad(void)
{  
     RESULTA0[ConversionCount]=AdcRegs.RESULT0>>2;   
     RESULTA0[ConversionCount]+=AdcRegs.RESULT2>>2;
     RESULTA0[ConversionCount]+=AdcRegs.RESULT4>>2;
     RESULTA0[ConversionCount]+=AdcRegs.RESULT6>>2;
     RESULTA0[ConversionCount]+=AdcRegs.RESULT8>>2;
    // RESULTB0[ConversionCount]+=AdcRegs.RESULT10>>2;
    // RESULTA0[ConversionCount]+=AdcRegs.RESULT12>>2;
    // RESULTB0[ConversionCount]+=AdcRegs.RESULT14>>2;
     RESULTA0[ConversionCount]+=RESULTA0[ConversionCount]/4;
      * DA_PORT0 =RESULTA0[ConversionCount];

//    comp_ok1[ConversionCount]=((float)RESULTA0[ConversionCount])*3.0/65520.0;
  //   comp_ok2[ConversionCount]=((float)RESULTB0[ConversionCount])*3.0/65520.0;
     if(ConversionCount==799)
     {
       ConversionCount=0;
      
     }
     
     else ConversionCount++;
     
  
     
     AdcRegs.ADCTRL2.bit.RST_SEQ1=1;
     AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
     PieCtrl.PIEACK.all=PIEACK_GROUP1;
     return;
}

interrupt void T1INT_isr(void)
  {
    /* int flag;
        flag=EvaRegs.EVAIFRA.all&0x0080;
        if(flag!=0x0080)
        {
          EINT;
          return;
         }
            
   // EvaRegs.GPTCONA.all=0x2856;
   */
   if (k==799)
   k=0;
   else k++;
//   paramit_PI.realtime_u=RESULTA0[ConversionCount];//输出电压采样;
     comp=RESULTA0[ConversionCount];//输出电流采样;
  //  pid_control(¶mit_PI);//电压外环pi调节
    
    EvaRegs.CMPR1=comp;
    EvaRegs.CMPR2=comp;
   
   EvaRegs.EVAIMRA.bit.T1PINT=1;
   EvaRegs.EVAIFRA.all=BIT7;
              
   PieCtrl.PIEACK.all=PIEACK_GROUP2;
  }
  
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -