diff --git a/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp b/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp index e8b1dfb..8c2c456 100644 Binary files a/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp and b/Projects/epwm_test_biss_c_cpu2/Start_rfm.pmp differ diff --git a/Projects/epwm_test_biss_c_cpu2/src/fault.c b/Projects/epwm_test_biss_c_cpu2/src/fault.c index 78d2a89..3390f0b 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/fault.c +++ b/Projects/epwm_test_biss_c_cpu2/src/fault.c @@ -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; diff --git a/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c b/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c index 85e0fe6..7f10054 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c +++ b/Projects/epwm_test_biss_c_cpu2/src/frmmstr_run.c @@ -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; } } diff --git a/Projects/epwm_test_biss_c_cpu2/src/temperature.c b/Projects/epwm_test_biss_c_cpu2/src/temperature.c index 287b210..90fb73f 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/temperature.c +++ b/Projects/epwm_test_biss_c_cpu2/src/temperature.c @@ -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; } } diff --git a/Projects/epwm_test_biss_c_cpu2/src/temperature.h b/Projects/epwm_test_biss_c_cpu2/src/temperature.h index f1dfc4c..ab4ae81 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/temperature.h +++ b/Projects/epwm_test_biss_c_cpu2/src/temperature.h @@ -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_ */ diff --git a/Projects/epwm_test_biss_c_cpu2/src/vector.c b/Projects/epwm_test_biss_c_cpu2/src/vector.c index cfeb919..6a46c52 100644 --- a/Projects/epwm_test_biss_c_cpu2/src/vector.c +++ b/Projects/epwm_test_biss_c_cpu2/src/vector.c @@ -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: