This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335-Q1: 28335 ePWM同時關斷

Part Number: TMS320F28335-Q1

我需要兩個ePWM波形

ePWM1可放大縮小,但ePWM2須維持固定大小,並與ePWM1同時關斷

兩個訊號Duty不同,但在同一時間關斷

因為令    EPwm2Regs.CMPA.half.CMPA = Vc1-0.1*1499;  (EPwm2中GPIO3是GPIO2的反向訊號)

因此目前是 ePWM1 GPIO0為主要訊號,可使ePWM2 GPIO3可在GPIO0關斷前導通一段時間,但GPIO3在GPIO0關斷時仍繼續導通

需要的是GPIO3與GPIO0同時關斷

或者是能有甚麼方式可以控制這樣的訊號

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "DSP28x_Project.h"
typedef struct
{
volatile struct EPWM_REGS *EPwmRegHandle;
Uint16 EPwm_CMPA_Direction;
Uint16 EPwm_CMPB_Direction;
Uint16 EPwmTimerIntCount;
Uint16 EPwmMaxCMPA;
Uint16 EPwmMinCMPA;
Uint16 EPwmMaxCMPB;
Uint16 EPwmMinCMPB;
}
EPWM_INFO;
void InitEpwm1(void);
__interrupt void adc_isr(void);
__interrupt void epwm_isr(void);
int count = 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • GPIO0是怎么关断的?对GPIO1和GPIO2上的输出有要求吗?

  • GPIO0是依照回授訊號與內部3V三角波比較出來

    後續有成功了,換成使用deadTime控制GPIO0和GPIO2兩者間的大小控制的,一開始deadTime寫在另一個中斷程式,改至與PI補償同一個副程式中即可

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    __interrupt void epwm_isr(void)
    {
    Vc = 800;
    Vc1 = Vc + count;
    S3Duty = (((1-D0DT)*1499) - DeadTime);
    S4DBR = Vc1 - D0DT*1499;
    if(Vc1 >= EPWM1_MAX_CMPA)
    {
    Vc1 = 1050;
    }
    if(Vc1 <= EPWM1_MIN_CMPA)
    {
    Vc1 = 700;
    }
    Verror1 = Verror;
    Vc_last = Vc1;
    EPwm1Regs.CMPA.half.CMPA = Vc1;
    EPwm2Regs.CMPA.half.CMPA = S3Duty;
    EPwm3Regs.CMPA.half.CMPA = Vc1;
    EPwm1Regs.ETCLR.bit.INT = 1;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

x 出现错误。请重试或与管理员联系。