📄 inv_initial.c
字号:
// TI File $Revision: /main/2 $
// Checkin $Date: June 23, 2010 15:37:05 $
//###########################################################################
//
// FILE: pv20k_Initial.c
//
// TITLE: Variables Initialization & Support Functions.
//
//###########################################################################
// $TI Release: DSP2803x C/C++ Header Files V1.10 $
// $Release Date: June 23, 2010 $
//###########################################################################
#include "DSP280x_Device.h" // DSP2803x Headerfile Include File
#include "DSP280x_Examples.h" // DSP2803x Examples Include File
#include "Global.h"
#define F48HZ 4800;
#define F50HZ 5000;
void vClearCnt(void);
void vSetDatForSt(void);
void vGetPidOutLim(void);
extern const Uint16 uiCalDatTab[17];
extern const Uint16 uiHalfCarrTab[17];
/*void vClrRam(void)
{
Uint16 *ramptr;
#ifdef _DEBUG
for (ramptr = (Uint16 *)0x8e00; ramptr <(Uint16 *)0x91fa; ramptr++)
{
*ramptr = 0;
}
#endif
#ifdef _RELEASE
for (ramptr = (Uint16 *)0x8000; ramptr <(Uint16 *)0x83fa; ramptr++)
{
*ramptr = 0;
}
#endif
}
*/
void vInitUserData(void)
{
SetPara.uiPidObj = 1; // for test
SetPara.uiMinFreq = F50HZ; // for test
SetPara.uiUoutSet = 380; // for test
SetPara.uiPreVolt = 0; // for test
SetPara.uiKp = 40; // for test
SetPara.uiKi = 10; // for test
SetPara.uiKd = 0; // for test
SetPara.uiPidT = 150; // for test
SetPara.uiPidHi = 99; // for test
SetPara.uiPidLo = 20; // for test
SetPara.uiErrGap = 30;
// SetPara.uiErrGap1 = 30; //for test
RunState.uiRunning = STOP;
RunState.uiSoftStart = 0;
RunState.uiRun = STOP;
PidRegs.lKp = (int32)SetPara.uiKp;
PidRegs.lKi = (int32)SetPara.uiKi;
PidRegs.lKd = (int32)SetPara.uiKd;
OutputVar.uiCurrFreq = SetPara.uiMinFreq;
OutputVar.uiTargetFreq = F50HZ;
OutputVar.uiTargetVolt = SetPara.uiUoutSet;
OutputVar.uiCurrVolt = SetPara.uiPreVolt;
vGetPidOutLim();
vSetDatForSt();
// vClearCnt();
// RunState.uiRun = 0xAAAA; // for test
}
void vSetDatForSt(void)
{
// Prepare for next start
RunState.uiSwitchNum = SWITCH_16KHZ;
// Get half carrier period and electric angle
PhaseSector.uiPrdHCarr = uiHalfCarrTab[RunState.uiSwitchNum];
PhaseSector.uiCalDat = uiCalDatTab[RunState.uiSwitchNum];
// Initial period register
EPwm1Regs.TBPRD = PhaseSector.uiPrdHCarr;
EPwm1Regs.CMPA.half.CMPA = PhaseSector.uiPrdHCarr;
EPwm1Regs.CMPB = PhaseSector.uiPrdHCarr;
EPwm2Regs.TBPRD = PhaseSector.uiPrdHCarr;
EPwm2Regs.CMPA.half.CMPA = PhaseSector.uiPrdHCarr;
EPwm2Regs.CMPB = PhaseSector.uiPrdHCarr;
EPwm3Regs.TBPRD = PhaseSector.uiPrdHCarr;
EPwm3Regs.CMPA.half.CMPA = PhaseSector.uiPrdHCarr;
EPwm3Regs.CMPB = PhaseSector.uiPrdHCarr;
// Initial PhaseSector
PhaseSector.ulPhaseSum = 0;
PhaseSector.ulPhaseNew = (PhaseSector.uiPrdHCarr * PhaseSector.uiCalDat) >> 2;
OutputVar.uiCurrFreq = SetPara.uiMinFreq;
OutputVar.uiCurrVolt = SetPara.uiPreVolt;
PhaseSector.uiVfCoeff = OutputVar.uiCurrVolt * PhaseSector.uiPrdHCarr / SetPara.uiUoutSet;
}
//void vClearCnt(void)
//{
// Clear sample registers of output current and voltage, fault count
//}
void vGetPidOutLim(void)
{
OutputVar.uiPidOutMax = SetPara.uiPidHi * SetPara.uiUoutSet / 100;
OutputVar.uiPidOutMin = SetPara.uiPidLo * SetPara.uiUoutSet / 100;
}
//===========================================================================
// End of file.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -