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

📄 ad.c

📁 TI2812DSP芯片采用EVA(事件管理器)产生SVPWM例程
💻 C
字号:

#include "DSP28_Device.h"
#include "IQmathLib.h"
#include "clarke.h"
#include "svgen_dq.h"
#include "qep.h"
#define COMCONA     *((volatile int *)0x7411) 
float	a1[16];
unsigned int a2=0;
float	adclo=0.0;
_iq tempX;
//_iq   u,u1,u2,u3,u4,u5,u6,a1,a2,a3;
int m,j,k,a5,a6;
CLARKE clarke1 = CLARKE_DEFAULTS;
SVGENDQ svgen_dq1 = SVGENDQ_DEFAULTS;
QEP qep1 = QEP_DEFAULTS;
void display();
interrupt void Eva_PDPINT_isr(void);
#define	PI				3.141592654
int led2[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};
int num[5]={0,0,0,0,0};
int str,no,sl,l,kl;
// Prototype statements for functions found within this file.


void main(void)
{
  //  m=0;
//	j=0;
//	k=0;
//	l=0;
	InitSysCtrl();
/*u=_IQatan2PU(_IQ(0.1),_IQ(0.5));*/
//u6=_IQsinPU(_IQ(0.1));  //0.006度 0.0001
/*u=_IQ(-0.1);
   tempX = _IQmpy(_IQ(5), _IQ(0.1));
clarke1.as = u;
clarke1.bs = tempX;
clarke1.calc(&clarke1);
u1 = clarke1.ds;
u2 = clarke1.qs;
svgen_dq1.Ualfa = u1;
svgen_dq1.Ubeta = u2;
svgen_dq1.calc(&svgen_dq1);
u3 = svgen_dq1.Ta;
u4 = svgen_dq1.Tb;
u5 = svgen_dq1.Tc; */
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
    
	InitPieCtrl();


	InitPieVectTable();	
	 
   EALLOW;
		GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 0;
		GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7 = 0;
		GpioMuxRegs.GPAMUX.bit.TDIRA_GPIOA11 = 0;
		GpioMuxRegs.GPAMUX.bit.TCLKINA_GPIOA12 = 0;
		GpioMuxRegs.GPAMUX.bit.C1TRIP_GPIOA13 = 0;
		GpioMuxRegs.GPAMUX.bit.C2TRIP_GPIOA14 = 0;
		GpioMuxRegs.GPAMUX.bit.C3TRIP_GPIOA15 = 0;
		GpioMuxRegs.GPBMUX.all = 0x0000;
		GpioMuxRegs.GPADIR.bit.GPIOA6 = 1;
		GpioMuxRegs.GPADIR.bit.GPIOA7 = 1;
		GpioMuxRegs.GPADIR.bit.GPIOA11 = 0;
		GpioMuxRegs.GPADIR.bit.GPIOA12 = 0;
		GpioMuxRegs.GPADIR.bit.GPIOA13 = 0;
		GpioMuxRegs.GPADIR.bit.GPIOA14 = 0;
		GpioMuxRegs.GPADIR.bit.GPIOA15 = 0;
		GpioMuxRegs.GPBDIR.all = 0x1D00;
		GpioMuxRegs.GPDMUX.bit.T1CTRIP_PDPA_GPIOD0 = 0;
     //   GpioMuxRegs.GPDDIR.bit.GPIOD0=0;
        GpioMuxRegs.GPDQUAL.all = 0x40;//0x40;
	
	EDIS;
InitEv();
	GpioDataRegs.GPADAT.bit.GPIOA7=0;
 for(sl=0;sl<5;sl++)
{ 
   
   for(no=0;no<8;no++)
	 { 
	  GpioDataRegs.GPADAT.bit.GPIOA6=0;   // the clock  ?????
	 asm (" NOP");
	  GpioDataRegs.GPADAT.bit.GPIOA7=1;
     asm (" NOP");
      GpioDataRegs.GPADAT.bit.GPIOA6=1;
	   asm (" NOP");
      
      }
	  
  }

 l=241;
 display();


	 
 /*   str=led2[2];
  for(no=0;no<8;no++)
	 { 
	  GpioDataRegs.GPADAT.bit.GPIOA6=0;   // the clock  ?????
	 asm (" NOP");
	  GpioDataRegs.GPADAT.bit.GPIOA7=str&0x01;
     asm (" NOP");
      GpioDataRegs.GPADAT.bit.GPIOA6=1;
	   asm (" NOP");
      str=str>>1;
      }
	 
*/
 
	EvaRegs.EVAIMRA.bit.PDPINTA = 1;
  EvaRegs.EVAIFRA.bit.PDPINTA = 1;
	EALLOW;                          
      
		PieVectTable.PDPINTA = &Eva_PDPINT_isr; 
      //  PieVectTable.CAPINT3 = &Eva_timer2         
   EDIS;


    // Enable INT14 which is connected to CPU-Timer 2:
	IER |= M_INT1;
		PieCtrl.PIEIER1.bit.INTx1 = 1;
		qep1.init(&qep1);
	
	//KickDog();--
    // Enable global Interrupts and higher priority real-time debug events:
	
//	EINT;   // Enable Global interrupt INTM
//	ERTM;	// Enable Global realtime interrupt DBGM
        

	for(;;)
	{	 
	    
	   /*        for(m=350;m<=360;m++)
			   {  
			  if(m==360)
			    m=0;
              
					j=m+120;
				    	if(j>360)
				    	j=j-360;
				    	k=m+240;
					if(k>360)
					k=k-360;
				
				
		 	      a1=_IQsin(_IQ(m*2*PI/360));
					a2=_IQsin(_IQ(j*2*PI/360));
					a3=_IQsin(_IQ(k*2*PI/360));
				
		
		//		a5=m*0.71111;
		//		a6=j*0.71111;
		//	    a1=_IQ(sintab256[a5]);
		//	    a2=_IQ(sintab256[a6]);
			    
					clarke1.as = a1;
                    clarke1.bs = a2;
                    clarke1.calc(&clarke1);
				     
				     
				     	u1 = clarke1.ds;
                        u2 = clarke1.qs;
                        svgen_dq1.Ualfa = u1;
                        svgen_dq1.Ubeta = u2;
                        svgen_dq1.calc(&svgen_dq1);
						u3 = svgen_dq1.Ta;
                        u4 = svgen_dq1.Tb;
                        u5 = svgen_dq1.Tc; 
		
		
			}
		 */
			KickDog();
			display();
			
	}
} 	

void display()
  {   
    //  l=speed1.speed_rpm1;
	
     // l=1450;
	   l++;
      num[0]=10; 
      num[1]=(int)(l/1000);
	  num[2]=(int)((l-num[1]*1000)/100);
	  num[3]=(int)((l-num[1]*1000-num[2]*100)/10);
	  num[4]=(int)(l-num[1]*1000-num[2]*100-num[3]*10);
	  qep1.calc(&qep1);
	 // l++;
  for(sl=0;sl<5;sl++)
  {   
      //?????????1(2,3)??0?,???0,???????  ?????
	  //?????????
      kl=num[sl];
	    str=led2[kl];
 
	  for(no=0;no<8;no++)
	 { 
	  GpioDataRegs.GPADAT.bit.GPIOA6=0;   // the clock  ?????
	 asm (" NOP");
	  GpioDataRegs.GPADAT.bit.GPIOA7=str&0x01;
     asm (" NOP");
      GpioDataRegs.GPADAT.bit.GPIOA6=1;
	  asm (" NOP");
      str=str>>1;
	  }
   }
 
  }


interrupt void Eva_PDPINT_isr(void)
{
  EvaRegs.EVAIFRA.bit.PDPINTA = 1;  //clear interrupt flags
   PieCtrl.PIEACK.bit.ACK1 = 1;  //clear PIEACK flags
   
   l++;
   
   
}
/**/
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

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