/* * interrupts.c * * Created on: 21 рту. 2023 у. * Author: seklyuts */ #include #include "f28x_project.h" #include"frm_uart.h" #include "gpio_init.h" #include "i2c_init.h" #include "timer_base.h" volatile uint16_t AutoChange = 0; volatile uint16_t PWM_out = 0; volatile uint16_t PWM_motor = PERIOD_2; uint16_t Fault = 0, Fault_fix = 0, Ready = 0; // // epwm1_isr - EPWM1 ISR // __interrupt void epwm1_isr(void) { // if(AutoChange) pwm_AutoChange(1); // else EPwm1Regs.CMPA.bit.CMPA = PWM_out; // // Clear INT flag for this timer // EPwm1Regs.ETCLR.bit.INT = 1; TimerBaseTimeoutInc(); MainTimerBaseTimeoutInc(); // // Acknowledge this interrupt to receive more interrupts from group 3 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; } // // epwm2_isr - EPWM2 ISR // __interrupt void epwm2_isr(void) { Gpio20out(1); // if(AutoChange) pwm_AutoChange(2); // else EPwm2Regs.CMPA.bit.CMPA = PERIOD_MOTOR - PWM_motor; // GpioDataRegs.GPADAT.bit.GPIO0 = 1; FMSTR_enable_set(); // // Clear INT flag for this timer // EPwm2Regs.ETCLR.bit.INT = 1; Gpio20out(0); // // Acknowledge this interrupt to receive more interrupts from group 3 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; // GpioDataRegs.GPADAT.bit.GPIO0 = 0; } // // epwm3_isr - EPWM3 ISR // __interrupt void epwm3_isr(void) { // if(AutoChange) pwm_AutoChange(3); // else EPwm3Regs.CMPA.bit.CMPA = PERIOD_MOTOR - PWM_motor; // // Clear INT flag for this timer // EPwm3Regs.ETCLR.bit.INT = 1; // // Acknowledge this interrupt to receive more interrupts from group 3 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; } __interrupt void epwm4_isr(void) { // if(AutoChange) pwm_AutoChange(4); // else EPwm4Regs.CMPA.bit.CMPA = PERIOD_MOTOR - PWM_motor; // // Clear INT flag for this timer // EPwm4Regs.ETCLR.bit.INT = 1; // // Acknowledge this interrupt to receive more interrupts from group 3 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; } __interrupt void epwm5_isr(void) { Ready = GpioDataRegs.GPADAT.bit.GPIO19; Fault = !GpioDataRegs.GPADAT.bit.GPIO18; if(Fault || Fault_fix) { EPwm5Regs.CMPA.bit.CMPA = PERIOD_BRAKE; PWM_out = 0; if(Fault)Fault_fix = 1; } else { // if(AutoChange) pwm_AutoChange(5); // else EPwm5Regs.CMPA.bit.CMPA = PERIOD_BRAKE - PWM_out; } // // Clear INT flag for this timer // EPwm5Regs.ETCLR.bit.INT = 1; // // Acknowledge this interrupt to receive more interrupts from group 3 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; } __interrupt void epwm6_isr(void) { // if(AutoChange) pwm_AutoChange(6); // else EPwm6Regs.CMPA.bit.CMPA = PERIOD_BRAKE - PWM_out; // // Clear INT flag for this timer // EPwm6Regs.ETCLR.bit.INT = 1; // // Acknowledge this interrupt to receive more interrupts from group 3 // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; } // // InitEPwm1Example - Initialize EPWM1 configuration //