📄 dsp281x_evintrupt.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 + -