исправлен баг с работой при отключении питания с датчика токов (обработка ошибок)

This commit is contained in:
Eugene 2023-09-05 09:54:02 +03:00
parent 5e0cbb504a
commit fc2bf9f42c
3 changed files with 14 additions and 22 deletions

View File

@ -10,6 +10,7 @@
#include "pwm_init.h"
#include "sdfm.h"
#include "f2838x_sdfm_drivers.h"
#include "gpio_init.h"
void InitPerif(void)
@ -22,16 +23,7 @@ void InitPerif(void)
SdfmInitGpio();
SdfmInitEnable();
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 0;
GpioCtrlRegs.GPAGMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPAGMUX1.bit.GPIO11 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO11 = 1;
GpioDataRegs.GPADAT.bit.GPIO10 = 0;
GpioDataRegs.GPADAT.bit.GPIO11 = 0;
EDIS;
GpioInit();
// Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts

View File

@ -59,7 +59,7 @@ void PWMAllInit(void)
uint16_t i;
for(i = 2; i<=5; i++)
for(i = 2; i<=6; i++)
{
PWMInit(i, PERIOD);
}
@ -78,7 +78,7 @@ void PWMInitGpio(void)
InitEPwm3Gpio();
InitEPwm4Gpio();
InitEPwm5Gpio();
// InitEPwm6Gpio();
InitEPwm6Gpio();
}
void PWMInitEnable(void)
@ -88,7 +88,7 @@ void PWMInitEnable(void)
CpuSysRegs.PCLKCR2.bit.EPWM3=1;
CpuSysRegs.PCLKCR2.bit.EPWM4=1;
CpuSysRegs.PCLKCR2.bit.EPWM5=1;
// CpuSysRegs.PCLKCR2.bit.EPWM6=1;
CpuSysRegs.PCLKCR2.bit.EPWM6=1;
CpuSysRegs.PCLKCR2.bit.EPWM11=1;
}
@ -133,7 +133,7 @@ void PWMInit(uint16_t Num, uint16_t Period)
//
// Setup TBCLK
//
EPwmRegs[Num]->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
EPwmRegs[Num]->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwmRegs[Num]->TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
EPwmRegs[Num]->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwmRegs[Num]->TBCTL.bit.CLKDIV = TB_DIV1;
@ -161,7 +161,7 @@ void PWMInit(uint16_t Num, uint16_t Period)
// Active Low PWMs - Setup Deadband
//
EPwmRegs[Num]->DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwmRegs[Num]->DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwmRegs[Num]->DBCTL.bit.POLSEL = DB_ACTV_HIC; //DB_ACTV_HI - independ
EPwmRegs[Num]->DBCTL.bit.IN_MODE = DBA_ALL;
EPwmRegs[Num]->DBRED.bit.DBRED = EPWM_DB;
EPwmRegs[Num]->DBFED.bit.DBFED = EPWM_DB;
@ -171,7 +171,7 @@ void PWMInit(uint16_t Num, uint16_t Period)
//
EPwmRegs[Num]->ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event
EPwmRegs[Num]->ETSEL.bit.INTEN = 1; // Enable INT
EPwmRegs[Num]->ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event
EPwmRegs[Num]->ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1 event
}

View File

@ -10,8 +10,8 @@
#include"frm_uart.h"
volatile Uint16 AutoChange = 1;
volatile Uint16 PWM_out = PERIOD_2;
volatile Uint16 AutoChange = 0;
volatile Uint16 PWM_out = 0;
//
@ -40,7 +40,7 @@ __interrupt void epwm2_isr(void)
{
if(AutoChange) pwm_AutoChange(2);
else EPwm2Regs.CMPA.bit.CMPA = PWM_out;
GpioDataRegs.GPADAT.bit.GPIO10 = 1;
// GpioDataRegs.GPADAT.bit.GPIO0 = 1;
FMSTR_enable_set();
//
// Clear INT flag for this timer
@ -51,7 +51,7 @@ __interrupt void epwm2_isr(void)
// Acknowledge this interrupt to receive more interrupts from group 3
//
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
GpioDataRegs.GPADAT.bit.GPIO10 = 0;
// GpioDataRegs.GPADAT.bit.GPIO0 = 0;
}
//
@ -61,7 +61,7 @@ __interrupt void epwm3_isr(void)
{
if(AutoChange) pwm_AutoChange(3);
else EPwm3Regs.CMPA.bit.CMPA = PWM_out;
GpioDataRegs.GPADAT.bit.GPIO11 = 1;
//
// Clear INT flag for this timer
//
@ -71,7 +71,7 @@ __interrupt void epwm3_isr(void)
// Acknowledge this interrupt to receive more interrupts from group 3
//
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
GpioDataRegs.GPADAT.bit.GPIO11 = 0;
}
__interrupt void epwm4_isr(void)