измерение температуры по прерываниям только когда не вращается двигатель
This commit is contained in:
parent
d888b2bebd
commit
61f79dd914
Binary file not shown.
@ -12,7 +12,7 @@
|
||||
|
||||
|
||||
|
||||
uint16_t Fault1, Fault2, faultCounter = 0, fault_read = 0;
|
||||
uint16_t Fault1[16], Fault2[16], faultCounter = 0, fault_read = 0;
|
||||
|
||||
__interrupt void fault_isr(void)
|
||||
{
|
||||
@ -40,10 +40,10 @@ void fault_read_ports(void)
|
||||
uint16_t Fault_Bytes;
|
||||
I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 0, 0, false, &Fault_Bytes);
|
||||
I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes);
|
||||
Fault1 = Fault_Bytes;
|
||||
Fault1[faultCounter&0xF] = Fault_Bytes;
|
||||
I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 1, 0, false, &Fault_Bytes);
|
||||
I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes);
|
||||
Fault2 = Fault_Bytes;
|
||||
Fault2[faultCounter&0xF] = Fault_Bytes;
|
||||
}
|
||||
|
||||
|
||||
@ -60,10 +60,10 @@ void faultInit(void)
|
||||
|
||||
I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 0, 0, false, &Fault_Bytes);
|
||||
I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes);
|
||||
Fault1 = Fault_Bytes;
|
||||
Fault1[0] = Fault_Bytes;
|
||||
I2CWrite(I2C_FAULT_SLAVE_ADDRESS, 1, 0, false, &Fault_Bytes);
|
||||
I2CRead(I2C_FAULT_SLAVE_ADDRESS, 1, true, &Fault_Bytes);
|
||||
Fault2 = Fault_Bytes;
|
||||
Fault2[0] = Fault_Bytes;
|
||||
|
||||
EALLOW; // This is needed to write to EALLOW protected registers
|
||||
PieVectTable.XINT1_INT = &fault_isr;
|
||||
|
||||
@ -34,6 +34,13 @@ static uint16_t diod = 0;
|
||||
SciaRegs.SCICTL1.bit.SWRESET = 1;
|
||||
EDIS;
|
||||
}
|
||||
Gpio95out(Rele);
|
||||
|
||||
if(fault_read_check())
|
||||
{
|
||||
fault_read_clr();
|
||||
fault_read_ports();
|
||||
}
|
||||
|
||||
if(FMSTRIsEnable()) {
|
||||
if(counter < 100) counter++;
|
||||
@ -54,12 +61,6 @@ static uint16_t diod = 0;
|
||||
FMSTR_Poll();
|
||||
FMSTR_Recorder();
|
||||
FMSTREnableClr();
|
||||
Gpio95out(Rele);
|
||||
if(fault_read_check())
|
||||
{
|
||||
fault_read_clr();
|
||||
fault_read_ports();
|
||||
}
|
||||
// EPwm3Regs.CMPA.bit.CMPA = PWM_Vent1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,6 +14,9 @@ uint16_t TemperatureInitDone = 0;
|
||||
uint16_t temperatureTic[3] = {0,0,0};
|
||||
uint16_t Temperature_TimeMax = 160; //16mS
|
||||
|
||||
|
||||
|
||||
|
||||
__interrupt void temperature_isr(void)
|
||||
{
|
||||
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
|
||||
@ -21,6 +24,12 @@ __interrupt void temperature_isr(void)
|
||||
}
|
||||
|
||||
|
||||
void temperature_deInit(void)
|
||||
{
|
||||
TemperatureInitDone = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint16_t temperature_calc(uint16_t Imp)
|
||||
{
|
||||
@ -41,7 +50,8 @@ void temperatureTest(void)
|
||||
|
||||
if(temperatureTic[2] > Temperature_TimeMax)
|
||||
{
|
||||
Temperature = ((temperatureTic[0]-1)>>4) - 50;
|
||||
if(TemperatureInitDone) Temperature = ((temperatureTic[0]-1)>>4) - 50;
|
||||
else TemperatureInitDone = 1;
|
||||
temperatureTic[1] = TemperatureImpCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,5 +10,7 @@
|
||||
|
||||
void temperatureTest(void);
|
||||
uint16_t temperature_calc(uint16_t Imp);
|
||||
void temperatureInit(void);
|
||||
void temperature_deInit(void);
|
||||
|
||||
#endif /* SRC_TEMPERATURE_H_ */
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
#include "skvt.h"
|
||||
#include "adc_init.h"
|
||||
#include "biss.h"
|
||||
#include "temperature.h"
|
||||
|
||||
#define IMAX_A 25.0 //A
|
||||
#define IMAX (IMAX_A*BIT_MAX/FACTOR_CURRENT_MOTOR_A)
|
||||
@ -81,9 +82,11 @@ float UdcVolt = 0;
|
||||
volatile float VdcFactor = FACTOR_VDC;
|
||||
volatile uint16_t VoltProcImit = 0;
|
||||
|
||||
|
||||
void vectorFault(void)
|
||||
{
|
||||
Mode = OffMode;
|
||||
XintRegs.XINT2CR.bit.ENABLE = 1;
|
||||
}
|
||||
|
||||
void vectorControl(int16_t CurrentA, int16_t CurrentB, int16_t CurrentC, int16_t sdfmUdc)
|
||||
@ -105,6 +108,10 @@ void vectorControl(int16_t CurrentA, int16_t CurrentB, int16_t CurrentC, int16_t
|
||||
|
||||
Step = Step + Nstep;
|
||||
CurrLoop.piId.Ref = 0;
|
||||
|
||||
if(Mode) {XintRegs.XINT2CR.bit.ENABLE = 0; temperature_deInit();}
|
||||
else {XintRegs.XINT2CR.bit.ENABLE = 1;}
|
||||
|
||||
switch(Mode)
|
||||
{
|
||||
case OffMode:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user