📄 eva_interrupt.c
字号:
#include "DSP28_Device.h" // DSP281x Headerfile Include File
#include "DSP28_Adc.h" // DSP281x Examples Include File
//interrupt void T1PINT_ISR(void);
//interrupt void T1UFINT_ISR(void);
//#pragma CODE_SECTION(InitFlash, "ramfuncs");
/*
#pragma CODE_SECTION(T1UFINT_ISR, "adcpage");
#pragma CODE_SECTION(T1PINT_ISR, "adcpage");
extern Uint16 adcpage_loadstart;
extern Uint16 adcpage_loadend;
extern Uint16 adcpage_runstart;
extern Uint16 ramfuncs_loadstart;
extern Uint16 ramfuncs_loadend;
extern Uint16 ramfuncs_runstart;
*/
extern void Vd_pi(void);
extern void Id_pi(void);
extern float Vd,Id,Vr,M;
Uint16 LoopCount;
Uint16 i=0;
Uint16 Current1[3];
Uint16 Current2[3];
Uint16 Voltage1[3];
Uint16 Voltage2[3];
Uint16 switch_flag;
Uint16 Softvoltage=0;
Uint16 sum1=0;
float Sum1=0.0;
Uint16 sum2=0,Sum2=0;
Uint16 sum3=0,Sum3=0;
Uint16 sum4=0;
float Sum4=0.0;
Uint16 Uinref=0;
Uint16 Add1=0;
Uint16 Add4=0;
float M_ratio;
int k;
int speed1=0;
int speed2=0;
int Time=0;
int softstart_flag=0;
void StartStop_Control(void);
void Speedcontrol(int speed1, int speed2);//速度控制函数
void ADCaverage(void);
void Delay(int Time);
void SoftStart(void);
void Switchoff(void);
void Vd_pi(void);
void Protect(void);
interrupt void T1PINT_ISR(void);
interrupt void T1UFINT_ISR(void);
//void InitFlash(void);
void ScanView(void);// 926 加
main()
{
InitSysCtrl();//系统初始化
switch_flag=1;//置关机标志
// while(GpioDataRegs.GPFDAT.bit.GPIOF13)//开关机拦截
//{ }
InitGpio(); // 输入输出端口初始化
DINT;
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl();
InitPieVectTable();
EALLOW;
PieVectTable.T1PINT = &T1PINT_ISR;//向中断向量表写入T1周期中断地址
PieVectTable.T1UFINT = &T1UFINT_ISR;//向中断向量表写入T1下益中断地址
EDIS;
InitEv();//原来位置 也不可用
InitAdc();//
// memcpy(&adcpage_runstart, &adcpage_loadstart, &adcpage_loadend-&adcpage_loadstart);
// memcpy(&ramfuncs_runstart, &ramfuncs_loadstart, &ramfuncs_loadend-&ramfuncs_loadstart);
// InitFlash(); // Call Flash Initialization to setup flash waitstates
// This function must reside in RAM
PieCtrl.PIEIER2.bit.INTx4 = 1;
PieCtrl.PIEIER2.bit.INTx6 = 1;
IER |= M_INT2; // Enable CPU Interrupt 2
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
while(1)
{
StartStop_Control();
//Switchoff();//缺少CPLD下的调试
//ADCaverage();//后加
//Protect();
ScanView();
}
}//main层
interrupt void T1PINT_ISR(void)
{
if(softstart_flag==1)
{
//ADCaverage();
Vd_pi();
Id_pi();
}
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
EvaRegs.EVAIFRA.bit.T1PINT=1;//Clear interrupt flag bit 7
PieCtrl.PIEACK.all = PIEACK_GROUP2; // Acknowledge interrupt to PIE
EINT;
return;//
}
interrupt void T1UFINT_ISR(void)
{
EvaRegs.EVAIFRA.bit.T1UFINT=1;
for(i=0;i<=3;i++)
{
Current1[i] = AdcRegs.RESULT0 >>4;//
Current2[i] = AdcRegs.RESULT1 >>4;//
Voltage1[i] = AdcRegs.RESULT2 >>4;//
Voltage2[i] = AdcRegs.RESULT3 >>4;//
}
ADCaverage();
PieCtrl.PIEACK.all = PIEACK_GROUP2; // Acknowledge interrupt to PIE
EINT;
return;//
}
void Protect()
{
if(Id>=45)
softstart_flag=0;
EvaRegs.CMPR1=0;
}
void Speedcontrol(int speed1,int speed2)
{
EvaRegs.CMPR1 = speed1;
EvaRegs.CMPR2 = speed2;
}
void ADCaverage()
{
if(i==4) //
{
for(k=0;k<=3;k++)
{
sum1=sum1+Current1[k];
sum2=sum2+Current2[k];
sum3=sum3+Voltage1[k];
sum4=sum4+Voltage2[k];
}
Add1=sum1/4;
Id=sum2*0.0033;//=Sum2*3*18/4095;//输出电流乘18和电压基准一样
Vd=sum3*0.0022;//=Sum3*3*18/4095;//输出电压
Add4=sum4/4;
// M_ratio=Sum4;//电位器调节占空比
Sum1=Add1*3/4095;//
Sum4=Add4*3/4095;//数字值变成模拟值
sum1=0;
sum2=0;
sum3=0;
sum4=0;
k=0;
i=0;
}
}
void StartStop_Control()
{
if(switch_flag==1)
{
if(GpioDataRegs.GPFDAT.bit.GPIOF13==0)
SoftStart();
}
else if(switch_flag==0)
{
if(GpioDataRegs.GPFDAT.bit.GPIOF13==1)
Delay(10000);
if(GpioDataRegs.GPFDAT.bit.GPIOF13==1)
{
switch_flag=1;
Switchoff();
}
}
}
void SoftStart()
{
GpioDataRegs.GPEDAT.bit.GPIOE2=1;//
switch_flag=0;
InitEv();//
for(Softvoltage=0;Softvoltage<=2000;Softvoltage++)
{
//Delay(5);
EvaRegs.CMPR1=Softvoltage;//Vr
EvaRegs.CMPR2=Softvoltage;//
}
softstart_flag=1; ///
}
void Switchoff()
{
GpioDataRegs.GPEDAT.bit.GPIOE2=0;//
Uinref=0;
//Speedcontrol(Uinref,Uinref);
}
void ScanView()
{
int Hnumber=0;
int Tnumber=0;
int Gnumber=0;
int Fnumber=0;
//int Temp1=0;
int Temp2=0;
float Temp3=0.0;
int Temp4=0;
Hnumber=(int)Sum1/100;
Tnumber=((int)Sum1-Hnumber)/10;
Temp2=Hnumber*100;
Temp4=Tnumber*10;
Gnumber=Sum1-Temp2-Temp4;
Temp3=Sum1-Temp2-Temp4-Gnumber;
Fnumber=Temp3*10;
if(Hnumber>0)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
if(Hnumber==1)
{
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Hnumber==2)
{
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
}
else
{
// if(Tnumber>=0)
///GpioDataRegs.GPBDAT.bit.GPIOB10=1;
///GpioDataRegs.GPBDAT.bit.GPIOB9=0;
}
if(Tnumber>0)
{
if(Tnumber==0)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==1)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==2)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==3)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==4)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==5)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==6)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==7)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Tnumber==8)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=1;
}
if(Tnumber==9)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=1;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=1;
}
}
if(Gnumber>=0)
{
if(Gnumber==0)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==1)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==2)
{
GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==3)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==4)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==5)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==6)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==7)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Gnumber==8)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=1;
}
if(Gnumber==9)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=1;
GpioDataRegs.GPBDAT.bit.GPIOB15=1;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=1;
}
}
if(Fnumber>=0)
{
if(Fnumber==0)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==1)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==2)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==3)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==4)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==5)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==6)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==7)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=1;
GpioDataRegs.GPBDAT.bit.GPIOB13=1;
GpioDataRegs.GPBDAT.bit.GPIOB14=0;
}
if(Fnumber==8)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=0;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=1;
}
if(Fnumber==9)
{GpioDataRegs.GPBDAT.bit.GPIOB10=0;
GpioDataRegs.GPBDAT.bit.GPIOB9=0;
GpioDataRegs.GPBDAT.bit.GPIOB15=0;
GpioDataRegs.GPBDAT.bit.GPIOB11=1;
GpioDataRegs.GPBDAT.bit.GPIOB12=0;
GpioDataRegs.GPBDAT.bit.GPIOB13=0;
GpioDataRegs.GPBDAT.bit.GPIOB14=1;
}
}
}
void Delay(int Time)
{
while(Time>0)
Time--;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -