From e00e3daaffbcad4e501cf820ae9294808820d8ea Mon Sep 17 00:00:00 2001 From: Eugene Date: Tue, 5 Sep 2023 17:45:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=A8=D0=98=D0=9C=20=D0=B2=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BE=20=D1=81=D1=85=D0=B5=D0=BC=D0=BE=D0=B9=20=D0=92=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=20=D1=87=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=20=D0=BD=D0=B5=D0=B7=D0=B0=D0=B2=D0=B8=D1=81?= =?UTF-8?q?=D0=B8=D0=BC=D1=8B=D1=85=20=D0=BA=D0=B0=D0=BD=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=20100=20=D0=BA=D0=93=D1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/epwm_test/Start_rfm.pmp | Bin 4763 -> 5823 bytes Projects/epwm_test/src/gpio_init.c | 5 +++ Projects/epwm_test/src/i2c_init.c | 8 ++++ Projects/epwm_test/src/i2c_init.h | 13 +++++++ Projects/epwm_test/src/pwm_init.c | 44 +++++++++++++++------- Projects/epwm_test/src/pwm_init.h | 13 ++++--- Projects/epwm_test/src/pwm_interrupts.c | 47 +++++++++++++++++------- Projects/epwm_test/src/sdfm.c | 4 +- Projects/epwm_test/src/spi_init.c | 10 +++++ Projects/epwm_test/src/spi_init.h | 15 ++++++++ 10 files changed, 127 insertions(+), 32 deletions(-) create mode 100644 Projects/epwm_test/src/i2c_init.c create mode 100644 Projects/epwm_test/src/i2c_init.h create mode 100644 Projects/epwm_test/src/spi_init.c create mode 100644 Projects/epwm_test/src/spi_init.h diff --git a/Projects/epwm_test/Start_rfm.pmp b/Projects/epwm_test/Start_rfm.pmp index 28561d36c4569be268a77c3741ced0dd2db29fb9..9ba808c6dfe57b9496d672eab6be53da142478cf 100644 GIT binary patch delta 622 zcmYjOJxe1|6uo!eWM*EROiV;Kiyt__4;EK4emAZQ3o06-5kX5$vFnPu5sfIQ%fPm7 z<1K9!5p3Kv7K^qD7WUfN*!dT{W6Vni=FU0iopZVO%~AVxw`d0YLYyG((-}TtAN|#? zv7c*dB;=!qUQKp;?b}9f<$I6k34Vbe^s7~U>(_GOSpZav!`xzAQ4S zGeuX9RUZN5Ti1fCKN#oG8>0tjhW2!;_-Gdp4RRxC$~vxe!N|<^_In{$J#O$eD(pN%xe|06%q=C6>=1cDikRpip4)rYkc<= DE;^3P delta 288 zcmdn5J6n}mmVtdE^HN5}lap66K4!F-+{?6|(Go~5+kBO!hH-K==O#w}$$DI_T>K3} z9*O1IVTKBm&vV8B1@CZq0ZDakPas*y-3cUrb5COAnJmaHI*FNO@^YSHes%^X24)5p z26hGx22KX9$-2A}j8c=`c-TBPRD = Period; // Set timer period @@ -146,7 +152,7 @@ void PWMInit(uint16_t Num, uint16_t Period) // // Setup compare // - EPwmRegs[Num]->CMPA.bit.CMPA = Period/2; + // // Set actions @@ -161,10 +167,22 @@ 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; //DB_ACTV_HI - independ + if(Independed) + { + EPwmRegs[Num]->CMPA.bit.CMPA = Period; + EPwmRegs[Num]->DBCTL.bit.POLSEL = DB_ACTV_HI; //DB_ACTV_HI - independ + EPwmRegs[Num]->DBRED.bit.DBRED = 0; + EPwmRegs[Num]->DBFED.bit.DBFED = 0; + } + else + { + EPwmRegs[Num]->CMPA.bit.CMPA = Period/2; + EPwmRegs[Num]->DBCTL.bit.POLSEL = DB_ACTV_HIC; + EPwmRegs[Num]->DBRED.bit.DBRED = EPWM_DB; + EPwmRegs[Num]->DBFED.bit.DBFED = EPWM_DB; + } EPwmRegs[Num]->DBCTL.bit.IN_MODE = DBA_ALL; - EPwmRegs[Num]->DBRED.bit.DBRED = EPWM_DB; - EPwmRegs[Num]->DBFED.bit.DBFED = EPWM_DB; + // EPwm1_DB_Direction = COUNT_UP; // diff --git a/Projects/epwm_test/src/pwm_init.h b/Projects/epwm_test/src/pwm_init.h index 1009be8..83d0221 100644 --- a/Projects/epwm_test/src/pwm_init.h +++ b/Projects/epwm_test/src/pwm_init.h @@ -9,14 +9,17 @@ #define SRC_PWM_INIT_H_ -#define PERIOD 5000 -#define EPWM_DB 300 -#define PERIOD_2 PERIOD/2 -#define PWM_MAX PERIOD - EPWM_DB +#define PERIOD_BRAKE 500 +#define PERIOD_MOTOR 5000 +#define EPWM_DB 150 +#define PERIOD_2 PERIOD_MOTOR/2 +#define PWM_MAX PERIOD_MOTOR - EPWM_DB #define PWM_MIN EPWM_DB +#define INDEPENDED 1 +#define COMPLIMENTARY 0 -void PWMInit(uint16_t Num, uint16_t Period); +void PWMInit(uint16_t Num, uint16_t Period, uint16_t Independed); void PWMInitGpio(void); void PWMInitEnable(void); void PWMInitInterruptEn(void); diff --git a/Projects/epwm_test/src/pwm_interrupts.c b/Projects/epwm_test/src/pwm_interrupts.c index 1ed3db7..fb8b1d0 100644 --- a/Projects/epwm_test/src/pwm_interrupts.c +++ b/Projects/epwm_test/src/pwm_interrupts.c @@ -8,10 +8,12 @@ #include "f28x_project.h" #include "pwm_init.h" #include"frm_uart.h" - +#include "gpio_init.h" volatile Uint16 AutoChange = 0; volatile Uint16 PWM_out = 0; +volatile Uint16 PWM_motor = PERIOD_2; +Uint16 Fault = 0, Fault_fix = 0; // @@ -19,8 +21,9 @@ volatile Uint16 PWM_out = 0; // __interrupt void epwm1_isr(void) { - if(AutoChange) pwm_AutoChange(1); - else EPwm1Regs.CMPA.bit.CMPA = PWM_out; +// if(AutoChange) pwm_AutoChange(1); +// else + EPwm1Regs.CMPA.bit.CMPA = PWM_out; // // Clear INT flag for this timer @@ -38,8 +41,10 @@ __interrupt void epwm1_isr(void) // __interrupt void epwm2_isr(void) { - if(AutoChange) pwm_AutoChange(2); - else EPwm2Regs.CMPA.bit.CMPA = PWM_out; + Gpio0out(1); +// if(AutoChange) pwm_AutoChange(2); +// else + EPwm2Regs.CMPA.bit.CMPA = PERIOD_MOTOR - PWM_motor; // GpioDataRegs.GPADAT.bit.GPIO0 = 1; FMSTR_enable_set(); // @@ -52,6 +57,7 @@ __interrupt void epwm2_isr(void) // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; // GpioDataRegs.GPADAT.bit.GPIO0 = 0; + Gpio0out(0); } // @@ -59,8 +65,9 @@ __interrupt void epwm2_isr(void) // __interrupt void epwm3_isr(void) { - if(AutoChange) pwm_AutoChange(3); - else EPwm3Regs.CMPA.bit.CMPA = PWM_out; +// if(AutoChange) pwm_AutoChange(3); +// else + EPwm3Regs.CMPA.bit.CMPA = PERIOD_MOTOR - PWM_motor; // // Clear INT flag for this timer @@ -76,8 +83,9 @@ __interrupt void epwm3_isr(void) __interrupt void epwm4_isr(void) { - if(AutoChange) pwm_AutoChange(4); - else EPwm4Regs.CMPA.bit.CMPA = PWM_out; +// if(AutoChange) pwm_AutoChange(4); +// else + EPwm4Regs.CMPA.bit.CMPA = PERIOD_MOTOR - PWM_motor; // // Clear INT flag for this timer // @@ -91,8 +99,20 @@ __interrupt void epwm4_isr(void) __interrupt void epwm5_isr(void) { - if(AutoChange) pwm_AutoChange(5); - else EPwm5Regs.CMPA.bit.CMPA = PWM_out; + Fault = !GpioDataRegs.GPADAT.bit.GPIO18; + if(Fault) + { + EPwm5Regs.CMPA.bit.CMPA = 0; + PWM_out = 0; + Fault_fix = 1; + } + else + { +// if(AutoChange) pwm_AutoChange(5); +// else + EPwm5Regs.CMPA.bit.CMPA = PERIOD_BRAKE - PWM_out; + } + // // Clear INT flag for this timer // @@ -107,8 +127,9 @@ __interrupt void epwm5_isr(void) __interrupt void epwm6_isr(void) { - if(AutoChange) pwm_AutoChange(6); - else EPwm6Regs.CMPA.bit.CMPA = PWM_out; +// if(AutoChange) pwm_AutoChange(6); +// else + EPwm6Regs.CMPA.bit.CMPA = PERIOD_BRAKE - PWM_out; // // Clear INT flag for this timer // diff --git a/Projects/epwm_test/src/sdfm.c b/Projects/epwm_test/src/sdfm.c index fe3f4b8..01f86ad 100644 --- a/Projects/epwm_test/src/sdfm.c +++ b/Projects/epwm_test/src/sdfm.c @@ -7,6 +7,7 @@ #include "f28x_project.h" #include "f2838x_sdfm_drivers.h" +#include "gpio_init.h" // // Defines // @@ -147,7 +148,7 @@ __interrupt void Sdfm1_ISR(void) { static uint16_t loopCounter1 = 0; - + Gpio1out(1); // // Wait for result from all the filters (SDIFLG) // @@ -195,6 +196,7 @@ __interrupt void Sdfm1_ISR(void) // Acknowledge this __interrupt to receive more __interrupts from group 5 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP5; + Gpio1out(0); } //Sdfm_clearFlagRegister diff --git a/Projects/epwm_test/src/spi_init.c b/Projects/epwm_test/src/spi_init.c new file mode 100644 index 0000000..d72276d --- /dev/null +++ b/Projects/epwm_test/src/spi_init.c @@ -0,0 +1,10 @@ +/* + * spi_init.c + * + * Created on: 5 сент. 2023 г. + * Author: seklyuts + */ + + + + diff --git a/Projects/epwm_test/src/spi_init.h b/Projects/epwm_test/src/spi_init.h new file mode 100644 index 0000000..0e3e119 --- /dev/null +++ b/Projects/epwm_test/src/spi_init.h @@ -0,0 +1,15 @@ +/* + * spi_init.h + * + * Created on: 5 сент. 2023 г. + * Author: seklyuts + */ + +#ifndef SRC_SPI_INIT_H_ +#define SRC_SPI_INIT_H_ + + + + + +#endif /* SRC_SPI_INIT_H_ */