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

📄 example_281xevpwm.c

📁 采样AD 并得出PWM 有些地方还不是很好 请多关照
💻 C
字号:

#include "DSP281x_Device.h" 
#include "DSP281x_Examples.h" 

  
  interrupt void adc_isr(void);

 Uint16   AdcData=0;
 Uint16  count,m=0;
 long  int i=0;

  void Adc_Init()
  { 
    AdcRegs.ADCTRL3.bit.ADCCLKPS = 5;			// ADCCLK=7.5Mhz
	AdcRegs.ADCTRL1.bit.ACQ_PS = 2; 			// Acq Time=3ADC CLK

	AdcRegs.ADCTRL1.bit.CPS = 0;                //不分频
	AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;           //级联模式
  	AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0;     // 通道数为1

    AdcRegs.ADCCHSELSEQ1.bit.CONV00 =0x3;    //选择ADCIN3

   	AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1;  // Enable EVASOC to start SEQ1
   	AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;  // Enable SEQ1 interrupt (every EOS)
    //EvaRegs.GPTCONA.bit.T1TOADC = 1;
  }

 /*void Adc_PowerUP()

 {	AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;	// Power up bandgap/reference circuitry
	for(i=0;i<1000000;i++){}                  // Delay before powering up rest of ADC
	AdcRegs.ADCTRL3.bit.ADCPWDN = 1;		// Power up rest of ADC
    for(i=0;i<10000;i++){}        
 }*/



   void EVA_Timer()

  {
   EvaRegs.GPTCONA.all=0;
   EvaRegs.T1PR=1000;//
 //  EvaRegs.EXTCONA.bit.INDCOE=1;

    EvaRegs.GPTCONA.all=0x81;//比较输出低有效
   EvaRegs.GPTCONA.bit.T1TOADC=1;//下溢中断 开AD
  // EvaRegs.GPTCONA.bit.T1PIN=1;//比较中断 
  
   EvaRegs.T1CNT=0;
   EvaRegs.T1CON.all=0x1742;//增计数 开定时器  开比较中断


 /*  EvaRegs.T2PR=18;
   //EvaRegs.T2PR=0x9895;
   EvaRegs.GPTCONA.bit.T2PIN=1;//比较中断
   EvaRegs.T2CNT=0x0000;
   EvaRegs.T2CON.all=0x1742;*/
  }


 void main(void)
  {   

     
   InitSysCtrl();//初始化
   EALLOW;
   SysCtrlRegs.HISPCP.all=0x3;//设置时钟频率为25MHz
   EDIS;
   DINT;  //关中断
   IER = 0x0000;
   IFR = 0x0000;

   InitPieCtrl();
   InitPieVectTable();

  InitAdc();
   EVA_Timer();
   Adc_Init();
  count=0;

 EALLOW;
     PieVectTable.ADCINT=&adc_isr;
   EDIS; 
  
   PieCtrlRegs.PIEIER1.bit.INTx6=1;

   IER|=M_INT1;

   EINT;
   ERTM;

  
   
   while (1)
    {
    }
}


interrupt void adc_isr(void)
{  count=0;
  m++;
    AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)                                                        
     {} 
 AdcData=AdcRegs.ADCRESULT0>>4; 

	if(AdcData>=4095)
	{AdcData=4095;}
    if(AdcData<=0)
	{AdcData=0;}
  while(AdcData<=4095&&AdcData>2047)
  {
    EvaRegs.T2CMPR=(int16)(AdcData--)*18/4095;}
  
  while(AdcData<=2047&&AdcData>0)
   { EvaRegs.T2CMPR=(int16)(AdcData++)*18/4095;}

//  EvaRegs.T2CMPR=AdcData*18/4095;

 AdcRegs.ADCTRL2.bit.RST_SEQ1=1;
 AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;
 PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
   return;
}




 







  

⌨️ 快捷键说明

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