исправлен баг с работой при отключении питания с датчика токов (обработка ошибок)
This commit is contained in:
parent
5e0cbb504a
commit
fc2bf9f42c
@ -10,6 +10,7 @@
|
|||||||
#include "pwm_init.h"
|
#include "pwm_init.h"
|
||||||
#include "sdfm.h"
|
#include "sdfm.h"
|
||||||
#include "f2838x_sdfm_drivers.h"
|
#include "f2838x_sdfm_drivers.h"
|
||||||
|
#include "gpio_init.h"
|
||||||
|
|
||||||
|
|
||||||
void InitPerif(void)
|
void InitPerif(void)
|
||||||
@ -22,16 +23,7 @@ void InitPerif(void)
|
|||||||
SdfmInitGpio();
|
SdfmInitGpio();
|
||||||
SdfmInitEnable();
|
SdfmInitEnable();
|
||||||
|
|
||||||
EALLOW;
|
GpioInit();
|
||||||
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;
|
|
||||||
|
|
||||||
// Clear all interrupts and initialize PIE vector table:
|
// Clear all interrupts and initialize PIE vector table:
|
||||||
// Disable CPU interrupts
|
// Disable CPU interrupts
|
||||||
|
|||||||
@ -59,7 +59,7 @@ void PWMAllInit(void)
|
|||||||
|
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
|
|
||||||
for(i = 2; i<=5; i++)
|
for(i = 2; i<=6; i++)
|
||||||
{
|
{
|
||||||
PWMInit(i, PERIOD);
|
PWMInit(i, PERIOD);
|
||||||
}
|
}
|
||||||
@ -78,7 +78,7 @@ void PWMInitGpio(void)
|
|||||||
InitEPwm3Gpio();
|
InitEPwm3Gpio();
|
||||||
InitEPwm4Gpio();
|
InitEPwm4Gpio();
|
||||||
InitEPwm5Gpio();
|
InitEPwm5Gpio();
|
||||||
// InitEPwm6Gpio();
|
InitEPwm6Gpio();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PWMInitEnable(void)
|
void PWMInitEnable(void)
|
||||||
@ -88,7 +88,7 @@ void PWMInitEnable(void)
|
|||||||
CpuSysRegs.PCLKCR2.bit.EPWM3=1;
|
CpuSysRegs.PCLKCR2.bit.EPWM3=1;
|
||||||
CpuSysRegs.PCLKCR2.bit.EPWM4=1;
|
CpuSysRegs.PCLKCR2.bit.EPWM4=1;
|
||||||
CpuSysRegs.PCLKCR2.bit.EPWM5=1;
|
CpuSysRegs.PCLKCR2.bit.EPWM5=1;
|
||||||
// CpuSysRegs.PCLKCR2.bit.EPWM6=1;
|
CpuSysRegs.PCLKCR2.bit.EPWM6=1;
|
||||||
CpuSysRegs.PCLKCR2.bit.EPWM11=1;
|
CpuSysRegs.PCLKCR2.bit.EPWM11=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ void PWMInit(uint16_t Num, uint16_t Period)
|
|||||||
//
|
//
|
||||||
// Setup TBCLK
|
// 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.PHSEN = TB_DISABLE; // Disable phase loading
|
||||||
EPwmRegs[Num]->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
|
EPwmRegs[Num]->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
|
||||||
EPwmRegs[Num]->TBCTL.bit.CLKDIV = TB_DIV1;
|
EPwmRegs[Num]->TBCTL.bit.CLKDIV = TB_DIV1;
|
||||||
@ -161,7 +161,7 @@ void PWMInit(uint16_t Num, uint16_t Period)
|
|||||||
// Active Low PWMs - Setup Deadband
|
// Active Low PWMs - Setup Deadband
|
||||||
//
|
//
|
||||||
EPwmRegs[Num]->DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
|
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]->DBCTL.bit.IN_MODE = DBA_ALL;
|
||||||
EPwmRegs[Num]->DBRED.bit.DBRED = EPWM_DB;
|
EPwmRegs[Num]->DBRED.bit.DBRED = EPWM_DB;
|
||||||
EPwmRegs[Num]->DBFED.bit.DBFED = 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.INTSEL = ET_CTR_ZERO; // Select INT on Zero event
|
||||||
EPwmRegs[Num]->ETSEL.bit.INTEN = 1; // Enable INT
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -10,8 +10,8 @@
|
|||||||
#include"frm_uart.h"
|
#include"frm_uart.h"
|
||||||
|
|
||||||
|
|
||||||
volatile Uint16 AutoChange = 1;
|
volatile Uint16 AutoChange = 0;
|
||||||
volatile Uint16 PWM_out = PERIOD_2;
|
volatile Uint16 PWM_out = 0;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -40,7 +40,7 @@ __interrupt void epwm2_isr(void)
|
|||||||
{
|
{
|
||||||
if(AutoChange) pwm_AutoChange(2);
|
if(AutoChange) pwm_AutoChange(2);
|
||||||
else EPwm2Regs.CMPA.bit.CMPA = PWM_out;
|
else EPwm2Regs.CMPA.bit.CMPA = PWM_out;
|
||||||
GpioDataRegs.GPADAT.bit.GPIO10 = 1;
|
// GpioDataRegs.GPADAT.bit.GPIO0 = 1;
|
||||||
FMSTR_enable_set();
|
FMSTR_enable_set();
|
||||||
//
|
//
|
||||||
// Clear INT flag for this timer
|
// 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
|
// Acknowledge this interrupt to receive more interrupts from group 3
|
||||||
//
|
//
|
||||||
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
|
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);
|
if(AutoChange) pwm_AutoChange(3);
|
||||||
else EPwm3Regs.CMPA.bit.CMPA = PWM_out;
|
else EPwm3Regs.CMPA.bit.CMPA = PWM_out;
|
||||||
GpioDataRegs.GPADAT.bit.GPIO11 = 1;
|
|
||||||
//
|
//
|
||||||
// Clear INT flag for this timer
|
// 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
|
// Acknowledge this interrupt to receive more interrupts from group 3
|
||||||
//
|
//
|
||||||
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
|
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
|
||||||
GpioDataRegs.GPADAT.bit.GPIO11 = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__interrupt void epwm4_isr(void)
|
__interrupt void epwm4_isr(void)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user