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

📄 dsp281x_evintrupt.c

📁 许继的2812开发全套驱动程序,很全很实用的.rar
💻 C
字号:
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"   // DSP281x Examples Include File
#include "IQMathLib.h"


extern struct KEY_VARS KeyVars;
// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here:	
    // If local ISRs are used, reassign vector addresses in vector table as
    // shown in Step 5


int get_key(void)
{
    char key;

	OUTCS1 = 0x2c;
	LCD_NOP;
	OUTCS1 = 0xa8;
    LCD_NOP;
   	key = KEYADD;
	LCD_NOP;
	OUTCS1 = 0x2c;
	LCD_NOP;
	OUTCS1 = 0x6c;
	LCD_NOP;
	
	if( (key &= 0xff) ) {
	    KeyVars.buf[KeyVars.top++] = key;
	}
	
	return key;
	

}            


interrupt void eva_t2ufint_isr(void)
{
    unsigned int  CHA7 , CHA6 , CHA5 , CHA4;
    int temp;
    char key;
    
	// Note: To be safe, use a mask value to write to the entire
	// EVAIFRA register.  Writing to one bit will cause a read-modify-write
	// operation that may have the result of writing 1's to clear 
	// bits other then those intended. 
    EvaRegs.EVAIFRB.bit.T2UFINT = 1;


//---- read the sample values-----------------------------
//Vs
	CHA7 = AdcRegs.ADCRESULT0;
	temp=CHA7>>4;	
	

//Ic

	CHA6 = AdcRegs.ADCRESULT1;
	temp=CHA6>>4;
	

//Il

	CHA5 = AdcRegs.ADCRESULT2;
	temp=CHA5>>4;
	
	
//Udc		

	CHA4 = AdcRegs.ADCRESULT3;
	temp=CHA4>>4;	
		
	if(KeyVars.delay_timer > 100)
	{
	 	if( get_key() ) {
	 		KeyVars.delay_timer = 0;
	 	}
	}
	
	KeyVars.delay_timer ++;
	
	if(KeyVars.delay_timer  > 200)
	{
		KeyVars.delay_timer =200;
	}
//------------------------------------------------	
    
    // Acknowledge interrupt to recieve more interrupts from PIE group 3
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP3;
}


/***trace the phase and frequency of the system voltage***/
interrupt void eva_capint1_isr(void)
{
    // Note: To be safe, use a mask value to write to the entire
	// EVAIFRC register.  Writing to one bit will cause a read-modify-write
	// operation that may have the result of writing 1's to clear 
	// bits other then those intended. 
    EvaRegs.EVAIFRC.all = BIT0;
    	
		
	// Acknowledge interrupt to recieve more interrupts from PIE group 3
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP3;
}

interrupt void eva_capint2_isr(void)
{
    // Note: To be safe, use a mask value to write to the entire
	// EVAIFRC register.  Writing to one bit will cause a read-modify-write
	// operation that may have the result of writing 1's to clear 
	// bits other then those intended. 
    EvaRegs.EVAIFRC.all = BIT1;
	
	
	
	// Acknowledge interrupt to recieve more interrupts from PIE group 3
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP3;
}

//** communication software module
interrupt void sciarxint_isr(void)
{
/*	switch(SciaVars.i)
	{
	case 0:SciaVars.xxx[SciaVars.i]=SciaRegs.SCIRXBUF.bit.RXDT;break;	
	case 1:SciaVars.xxx[SciaVars.i]=SciaRegs.SCIRXBUF.bit.RXDT;break;
	case 2:SciaVars.xxx[SciaVars.i]=SciaRegs.SCIRXBUF.bit.RXDT;break;
	case 3:SciaVars.xxx[SciaVars.i]=SciaRegs.SCIRXBUF.bit.RXDT;break;
	case 4:SciaVars.xxx[SciaVars.i]=SciaRegs.SCIRXBUF.bit.RXDT;break;
    }
    SciaVars.i++;
*/    
       
    //When a maskable interrupt is acknowledged, only the IFR bit is cleared
	//automatically. The flag bit in the corresponding peripheral control register
	//is not cleared. If an application requires that the control register flag
	//be cleared, the bit must be cleared by software.
	SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1;
	// Acknowledge interrupt to recieve more interrupts from PIE group 9
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
}

interrupt void scibrxint_isr(void)
{

	char test;
	test = ScibRegs.SCIRXBUF.bit.RXDT;
    
    //When a maskable interrupt is acknowledged, only the IFR bit is cleared
	//automatically. The flag bit in the corresponding peripheral control register
	//is not cleared. If an application requires that the control register flag
	//be cleared, the bit must be cleared by software.
	ScibRegs.SCIFFRX.bit.RXFFINTCLR = 1;
	// Acknowledge interrupt to recieve more interrupts from PIE group 9
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
}

//*** MMI software module
interrupt void xnmi_isr(void)
{
	int temp;
	temp=INCS3 & 0x3f; // short-circuit fault protection
	if(temp!=0x3f)
		{
			EvaRegs.COMCONA.bit.FCOMPOE = 0; // set full compare output in Hi-Z state	
		}
	else
		{
		}
}


⌨️ 快捷键说明

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