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