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.

[参考译文] TMS320F28069:使用 PWM 驱动三相半波桥整流器的三个 SCR#39的栅极脉冲。

Guru**** 1993015 points
Other Parts Discussed in Thread: TMS320F28069
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/824032/tms320f28069-driving-gate-pulse-of-three-scr-s-of-three-phase-halfwave-bridge-rectifier-using-pwm

器件型号:TMS320F28069

您好!

我正在使用 TMS320F28069并研究 TMS320F28069的 ePWM 模块、我想为三相半波桥式整流器的三个 SCR 生成栅极脉冲。

因此、将使用"过零检测器"、根据 ZCD 的输出、我将触发栅极脉冲。

请建议我正确的流速来驱动栅极脉冲,以及使用哪个 ePWM 模块来实现它。

谢谢你  

您的忠实客户

Mihir Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、遗憾的是、Mihir、您必须确定要用于控制系统的输出和控制方案。  

    关于要使用哪些 PWM 模块的主题、我可能能够提供一些有用的输入。 该器件的同步链非常简单、ePWM1依次连接到 ePWM2和 ePWM3、依此类推。 如果您想同步3个不同的 PWM 模块、我建议连续选择3个、例如1、2、3或4、5、6。 如果您选择1、3、4个可以同步、但 PWM 2将永远无法与除 PWM1以外的任何其他 PWM 同步、从而减少了稍后修复系统中错误的机会。

    此外、在选择发送同步脉冲的"主"PWM 模块时、您需要选择最慢的 PWM 信号。 这将避免同步脉冲在从 PWM 模块的周期完成之前复位从 PWM 模块的问题。

    祝你好运。
    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    因此、我想生成7毫秒的 ePWM 来发出 SCR 栅极脉冲。

    有可能吗?

    谢谢你

    您的忠实客户  

    Mihir Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、您可以。 这是一个非常长的脉冲、因此您应该了解 PWM 的计数器和比较寄存器只有16位宽。 以90MHz 运行 TBCLK、您将需要近700、000个时钟周期、这不适合16b 寄存器。

    您有2个选项。

    1. 使用 eCAP 模块的 APWM 模式、该模式支持32位寄存器。
    2. 将输入时钟减慢至 TBCTR。

    我建议您阅读本文档中有关操作限定符的部分。  http://www.ti.com/lit/pdf/spruh18 

    观看下面签名中的视频也可能有助于您更好地大致了解 PWM 模块。

    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    非常感谢您、我将介绍该信息并让您了解状态。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    我在1、2、3上生成了三个 PWM。

    但是,我没有收到中断,我已经附上了代码,请仔细检查,告诉我哪里出错了。

    谢谢你

    您的忠实客户  

    Mihir Dave

    ///--------------------------------------
    //文件:DeadBandPWM-Main.c
    //(死区被应用于 UP、单边不对称波形、
    在 EPWM2A 和 EPWM2B 上具有独立//调制)
    //
    说明:该程序设置 EV TIMER2以生成具有
    一定数量死区的互补// PWM 波形。观察
    //相对使用 ePWM2A 和 ePWM2B 引脚的示波器观察波形。
    
    //-为了改变 PWM 频率、用户应该改变
    //"周期"的值。
    //- PWM 波形可由"设置操作"下的寄存器重新配置。
    //-要观察其他 PWM 引脚、应
    正确设置相关的 PWM 时钟和 GPIO MUX 配置//设置(在 ePWM_Sym-DevInit_F28xxx.c 中)。
    // 有关更多详细信息、请在
    TI.com 上搜索 SPRU791.PDF (TMS320x28xx、// 28xxx 增强型脉宽调制器模块)。
    //
    //目标:TMS320F2806x 或 TMS320F2803x 系列(F28069)
    //
    //../../-----------
    //$TI 发行版:$V1.0
    //$发行 日期:$2010年1月11日- VSC
    //../../-----------
    //
    //请阅读-有关此项目的有用说明
    
    //尽管此项目由多个文件组成,但最重要的是:
    //-"DeadBandPWM.c"、此文件
    //-应用程序初始化、外设配置
    //-应用程序管理
    //-较慢的后台代码循环和任务调度
    //"DeadBandPWM-DevInit_F28xxx.c"
    //-器件初始化、例如时钟、PLL、WD、 GPIO 映射
    //-外设时钟启用
    //其他文件通常用于支持和将寄存器定义为 C
    //结构。 一般而言、这些文件不需要更改。
    //"F2806X_RAM_DeadBandPWM.CMD"或"F2806X_FLASH_DeadBandPWM.CMD"
    //-将程序和数据空间分配到器件的存储器映射中。
    //"F2806x_Headers_nonBIOS.cmd"和"F2806x_GlobalVariableDefs.c"
    //-将寄存器结构分配到数据存储器中。 这些寄存器结构是
    //在外设头中定义的,包括(F2806x_ADC.h,...)
    ///////---------------
    
    
    #include "PeripheralHeaderIninclude.h"
    #include "F2806X_ePWM_define.h"//初始
    化的有用定义#include "F2806x_examples.h"// F2806x 示例包含文件
    #include "F2806x_Device.h" // F2806x 头文件包含文件
    #include "DSP28x_Project.h" //器件头文件和示例包括文件
    #include "piccolo_lcd.h"
    
    #define 总线电压1240
    
    
    ///%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    //函数原型
    ///%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    void DeviceInit(void);
    void InitFlash(void);
    void Memcopy(UINT16 * SourceAddr、UINT16* SourceEndAddr、UINT16* DestAddr);
    //void initpwm34();
    unsigned int VVL=0;
    //*********
    void InitEPwm1Gpio (void);
    void InitEPwm2Gpio (void);
    void InitEPwm3Gpio (void);
    typedef 结构
    {
    volatile struct ePWM_regs * EPwmRegHandle;
    uint16 ePWM_CMPA_DIRECTION;
    uint16 ePWM_CMpa_uint16;uintmEPwmEP_uint16;uintmEPwmEP_uintmEP16
    
    
    uint16 EPwmMinCMPA;
    uint16 EPwmMaxCMPB;
    uint16 EPwmMinCMPB;
    }ePWM_INFO;
    
    void InitEPwm1Examples(void);
    void InitEPwm2Example (void);
    void InitEPwm3Example (void);
    __interrupt void epwm1_ISR (void);
    __interrupt void epwm2_ISR (void);
    __interrupt void epwm3_ISR (void);
    void update_compare (ePWM_info*);
    unsigned int jooj=0;
    
    //此示例中使用的全局变量
    ePWM_info epwm1_info;
    ePWM_info epwm2_info;
    ePWM_info epwm3_info;
    
    //为每个计时
    器配置周期#define EPWM1_TIMER_TBPRD 2000 //周期寄存
    器#define EPWM1_MAX_CMPRD 1950
    #define EPWM1_MIN_CMPA 50
    #define EPWM1_MAX_CMPB 1950
    #define EPWM1_MIN_CMPB 50
    
    #define EPWM2_TIMER_TBPRD 2000 //周期寄存
    器#define EPWM2_MAX_CMPA 1950
    #define EPWM2_MIN_CMPA 50
    #define EPWM2_MAX_CMPB 1950
    #define EPWM2_MIN_CMPB 50
    
    #define EPWM3_TIMER_TBPRD 2000 //周期寄存
    器#define EPWM3_MAX_CMPA 950
    #define EPWM3_MIN_CMPA 50
    #define EPWM3_MAX_CMPB 1950
    #define EPWM3_MIN_CMPB 1050
    
    //跟踪比较值移动
    的方式#define ePWM_CMP_UP 1
    #define ePWM_CMP_DOWN 0
    //
    
    
    
    
    //#define DELAY_US (a) DSP28x_usDelay (((( 长双精度) A * 1000.0L)/(长双精度) CPU_RATE)- 9.0L)/5.0L)
    
    ///%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    //主代码-从此处开始
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    void main (void)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    {
    
    //=================================================
    //初始化-常规
    //=================================================
    
    DeviceInit();//器件寿命支持和 GPIO 多路复用器设置
    
    
    //仅在从闪存运行时使用
    //请注意变量闪存由编译器(-d 闪存)
    #ifdef 闪
    存//将时间关键代码和闪存设置代码复制到 RAM
    // RamfuncsStart、RamsLoadEnd、 和 RamfuncsRunStart
    //符号由链接器创建。 请参阅链接器文件。
    Memcopy (&RamfuncsLoadStart、&RamfuncsLoadEnd、&RamfuncsRunStart);
    
    //调用闪存初始化以设置闪存等待状态
    //此函数必须驻留在 RAM vcxz
    InitFlash ()中;//调用闪存包装程序初始化函数
    #endif //(FLASH)
    
    
    InitEPwm1Gpio ();
    EP3Gpio();EPm3Inpio()。
    
    
    
    
    清除所有中断并初始化 PIE 矢量表:
    //禁用 CPU 中断
    DINT;
    
    //将 PIE 控制寄存器初始化为默认状态。
    //默认状态是禁用所有 PIE 中断并
    清除标志//。
    //此函数位于 F2806x_PIECTRL.c 文件中。
    InitPieCtrl();
    
    //禁用 CPU 中断并清除所有 CPU 中断标志:
    IER = 0x0000;
    IFR = 0x0000;
    
    //使用指向 shell 中断
    //服务例程(service routinese, ISR)的指针初始化 PIE 矢量表。
    //这将填充整个表,即使在
    本示例中未使用中断//也是如此。 这对于调试很有用。
    //可以在 F2806x_DefaultIsr.c 中找到 shell ISR 例程
    //此函数可在 F2806x_PieVect.c 中找到
    InitPieVectTable();
    
    //此示例中使用的中断被重新映射到
    这个文件中的// ISR 函数。
    EALLOW;//这是写入 EALLOW 受保护寄存
    器 PieVectTable.EPWM1_INT =&epwm1_ISR 所必需的;
    PieVectTable.EPWM2_INT =&epwm2_ISR;
    PieVectTable.EPWM3_INT =&epwm3/ISR;
    
    EDIS;//禁用写入 EALLOW 受保护寄存器
    
    
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
    EDIS;
    
    InitEPwm1Examples();
    DELAY_US (500);
    InitEPwm2Examples();
    DELAY_US (500);
    InitEPwm3Examples();
    
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
    EDIS;
    
    //步骤4. 初始化所有器件外设:
    //此函数可在 F2806X_InitPeripherals.c
    中找到// InitPeripherals ();//此示例不需要
    
    
    //步骤5。 特定于用户的代码、启用中断:
    
    //在 PIE 中启用 ADCINT1
    PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
    PieCtrlRegs.PIEIER3.bit.INTx2 = 1;
    PieCtrlRegs.PIEIER3.bit.INTx3 = 1;
    IER |=M_INT3;//启用 CPU 中断1
    EINT;//启用全局中断 INTM
    ERTM;//启用全局实时中断 DBGM
    while (1)
    {
    VVL=EPwm1Regs.TBCTR;
    jooj=VVL;
    if (jooj<40000){
    
    
    GpioDataRegs.GPBSET.BIO58 = 1;
    
    
    
    }否则{
    EALLOW;
    GpioDataRegs.GPBCLEAR.bit.GPIO58=1;
    
    
    }
    
    
    
    }
    
    
    
    
    
    
    
    
    
    
    Ctrl_interrupt void epwm1_ISR (void)
    {
    //更新 CMPA 和 CMPB 值
    update_compare (&epwm1_info);
    
    //清除此计时器
    的 INT 标志 EPwm1Regs.ETCLR.bit.INT = 1;
    
    
    //确认此中断以接收来自组3
    PieRegs.PIEPACK_all
    的更多中断;}
    
    _interrupt void epwm2_ISR (void)
    {
    
    //更新 CMPA 和 CMPB 值
    update_compare (&epwm2_info);
    
    //清除此计时器
    的 INT 标志 EPwm2Regs.ETCLR.bit.INT = 1;
    
    //确认此中断以接收来自组3
    的更多中断 PieCtrlRegs.Pwm2Regs.Pch_isc
    
    
    (void
    
    
    和 Cepm3_isr
    = 3);//确认此中断
    
    //清除此计时器
    EPwm3Regs.ETCLR.BIT.INT 的 INT 标志= 1;
    
    //确认此中断以接收来自组3
    的更多中断 PieCtrlRegs.PIEACK.ALL = PIEACK_Group3;
    }
    
    void InitEPwm1Examples()
    {
    
    //设置 TBCLK EPwm1Regs.PTIFF.TBRD=
    0xTBIT_CTLDFF.TBIT.COUNT = 0xTBIT_UFFFF.TBRD/计数
    //设置定时器周期
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
    EPwm1Regs.TBPHS.Half.TBPHS = 0x0000; //相位为0
    EPwm1Regs.TBCTR = 0x0000; //清除计数
    器 EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0x00;//时钟与 SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV = 0x04;
    
    //设置影子寄存器在0 EPwm1Regs.SHDWCTL.bit.EPCMDRP.1RCMPA.SET
    
    
    
    
    
    
    = 0;/EPWCMDR.CMPA.RCMPA.MODCMPO.RCMPO.RCMPO.RCMP1.M1= 0;EP1RCMPA.MODCMPA.RCMPADCMPO.RCMPO.RCMPO.RCMPO.RCMPO.RCMPO.RCMP1.M1= 0 = 0 = EP1RCMPO.EP1RCMPO.EP1RCMPO.EP1RCMPADCMPO.EP1RCMPA.MODCMPO.ECC.EP_RCMPADCMPADCMPADCMPO.RCMPADCMPADCMP1.MODCMPO.RCMPO.RCMPO.EM
    //设置比较 B 值
    
    //设置操作
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; //在零
    EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR 上设置 PWM1A; //在事件 A 上清除 PWM1A,向上计数
    
    EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; //在零
    EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR 上设置 PWM1B; //清除事件 B 上的 PWM1B,向上计数
    
    //中断,其中我们将更改比较值
    EPwm1Regs.ETSEL.bit.INTSEL = et_CTR_zero; //选择零事件
    EPwm1Regs.ETSEL.bit.INTEN 上的 INT = 1; //启用 INT
    EPwm1Regs.ETPS.bit.INTPRD = et_3rd; //生成第3个事件的 INT
    
    //信息此示例用于跟踪
    // CMPA/CMPB 值
    移动的方向,允许的最小值和最大值以及
    //指向正确 ePWM 寄存
    器 epwm1_info.ePWM_CMPA_DIRECTION = ePWM_CMP_UP 的指针; //首先增大 CMPA & CMPB
    epwm1_info.ePWM_CMPB_Direction = ePWM_CMP_UP;
    epwm1_info.EPwmTimerIntCount = 0; //将中断计数器
    epwm1_info.EPwmRegHandle =&EPwm1Regs; //设置 EPWM 模块
    epwm1_info.EPwmMaxCMPA = 0xFFFE; //设置最小值/最大值 CMPA/CMPB 值
    epwm1_info.EPwmMinCMPA = 0x50;
    epwm1_info.EPwmMaxCMPB = 0xFFFE;
    epwm1_info.EPwmMinCMPB = 0x50;
    
    }
    
    void InitEPwm2Examples()
    {
    //设置
    寄存器= 0xTBDP.CTL
    = 0xTb.Tb.Tb.Rtb.Tb.Rtb = 0xTb.Tb.Tb.Tb.Tb.Tbd //设置定时器周期
    EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
    EPwm2Regs.TBPHS.Half.TBPHS = 0x0000; //相位为0
    EPwm2Regs.TBCTR = 0x0000; //清除计数
    器 EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0x00;//时钟与 SYSCLKOUT
    EPwm2Regs.TBCTL.bit.CLKDIV 的比值= 0x05;
    
    //设置
    
    影子寄存器在0 EPwm2Regs.SHDWCTL.bit.EPCMOCC.EP2RP.AMCC.AMPCRP.OCC.RCMDR.RCMTL.RCMPO.RCMTL.RCMPO.RCMTL.RCMPO.RCMTL.RCMPO.RCMTL.RCMTL.RCMTL.RCMTL.RCMPO.RCMTL.RCMTL.RCMTL.RCMPO=0
    
    
    
    = 0 = 0 = 0;//设置为0 = 0 = EP2RCMOCC_OCC_OCC_OCC.OCC.OCC.RCMOCC.OCC.OCC.RCMOCC.OCT.
    //设置比较 A 值
    EPwm2Regs.CMPB = EPWM2_MAX_CMPB; //设置比较 B 值
    
    //设置操作
    EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR; //在周期
    EPwm2Regs.AQCTLA.bit.CAU = AQ_SET 时清除 PWM2A; //在事件 A 上设置 PWM2A、向上计数
    
    EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR; //在周期
    EPwm2Regs.AQCTLB.bit.CBU = AQ_SET 时清除 PWM2B; //在事件 B 上设置 PWM2B,向上计数
    
    //中断,其中我们将更改比较值
    EPwm2Regs.ETSEL.bit.INTSEL = et_CTR_zero; //选择零事件
    EPwm2Regs.ETSEL.bit.INTEN 上的 INT = 1; //启用 INT
    EPwm2Regs.ETPS.bit.INTPRD = et_3rd; //生成第3个事件的 INT
    
    //信息此示例用于跟踪
    // CMPA/CMPB 值
    移动的方向,允许的最小值和最大值以及
    //指向正确 ePWM 寄存
    器的指针 epwm2_info.ePWM_CMPA_DIRECTION = ePWM_CMP_UP;//开始增加 CMPA epwm2_cmp_info.ePWM_ePWM_DIRECTION
    = ePWM_CMP_DOWN;//开始增加 CMpm_CMpm_CMpM_CMpM_CMpM_CMpM_B 方向 //并减小 CMPB
    epwm2_info.EPwmTimerIntCount = 0; //将中断计数器
    epwm2_info.EPwmRegHandle =&EPwm2Regs; //设置 ePWM 模块
    epwm2_info.EPwmMaxCMPA = 0xFFFE 的指针; //设置最小值/最大值 CMPA/CMPB 值
    epwm2_info.EPwmMinCMPA = 0x50;
    epwm2_info.EPwmMaxCMPB = 0xFFFE;
    epwm2_info.EPwmMinCMPB = 0x50;
    
    }
    
    void InitEPwm3Examples()
    {
    
    
    //设置 TBCLk_info.EPwtb.EPwtb = 0xtb.rtb.prd
    计数;}void InitEPwmCRTb.Tb.Tb.Tb.Tb.Tb.Tb.Tb.Tb.Tb.Tb.Rtb
    = 0xTb. //设置定时器周期
    EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
    EPwm3Regs.TBPHS.Half.TBPHS = 0x0000; //相位为0
    EPwm3Regs.TBCTR = 0x0000; //清除计数
    器 EPwm3Regs.TBCTL.bit.HSPCLKDIV = 0x00;//时钟与 SYSCLKOUT
    EPwm3Regs.TBCTL.bit.CLKDIV = 0x06;
    
    //设置影子寄存器加载于0 EPwm3Regs.SHDWCTL.bit.EPCMDRC.WCMDRP.=
    
    
    
    
    
    
    0;EP3CMDRC.WCMDRP.WCMDRP.WCMDRP.= 0;EP3RCMPO.EP_ADCMDRP.CMDRP.WCMPA.SET
    = 0 EP3RCMPO.EP_OCC.EP3RCMPO.EP_ADCMPA.MODCMPO.= 0;EP3RCMPO.EP_OCC.EP3RCMPO.EP_EP_EPCMPADCMPO.CMPADCMPADCMPADCMPO.= 0 = 0 = EP3RCMPADCMPADCMPADCMPADCMPADCMPADCMPADCMPADCMPADCMPAD.EP3RCMPAD.EP_EP_O //设置比较 B 值
    
    //设置操作
    EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; //在事件 B 上设置 PWM3A、向上计数
    EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR; //在事件 B 上清除 PWM3A,向上计数
    
    EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE; //将 EPWM3B 切换为零
    
    //中断,其中我们将更改比较值
    EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; //选择零事件
    EPwm3Regs.ETSEL.bit.INTEN 上的 INT = 1; //启用 INT
    EPwm3Regs.ETPS.bit.INTPRD = et_3rd; //在发生第三个事件时生成 INT
    
    //首先增大比较 A 并减小比较 B
    epwm3/info.ePWM_CMPA_Direction = ePWM_CMP_UP;
    epwm3/info.ePWM_CMPB_Direction = ePWM_CMPB_DOWN;
    //在0
    epwm3_info.EPwmTimerfp = 0xEPwmf3
    ;EPwm_CMPB_0= 0xEPmcm3 regnf3;EPwm_EPwmfm = 0xEPwmcm2 = 0xEPwmfm
    
    
    
    epwm3/info.EPwmMinCMPB = EPWM3_min_CMPB;
    }
    
    void update_compare (ePWM_info * ePWM_info)
    {
    
    
    //每隔10次中断、如果
    (ePWM_INFO->EPwmTimerIntCount = 10)
    {、请更改 CMPA/CMPB 值
    ePWM_INFO->EPwmTimerIntCount = 0;
    
    //如果我们增加 CMPA,请检查是否
    //我们达到了最大值。 如果不是、请增大 CMPA
    //否则、更改方向并减小 CMPA
    if (ePWM_INFO->ePWM_CMPA_DIRECTION == ePWM_CMP_UP)
    {
    if (ePWM_INFO->EPwmRegHandle->CMPA.half.CMPA < ePWM_INFO->EPwmMaxCMPA)
    {
    ePWM_INFO->EPwmRegHandle->CMPA.half-CMPA++;
    }
    其他
    {
    ePWM_INFO->ePWM_CMPA_DIRECTION = ePWM_CMP_DOWN;
    ePWM_INFO->EPwmRegHandle->CMPA.half-CMPA-;
    }
    }
    
    //如果我们降低了 CMPA,请检查是否
    //我们达到最小值。 如果不是、请减小 CMPA
    //否则,更改方向并增加 CMPA
    其他
    {
    if (ePWM_INFO->EPwmRegHandle->CMPA.half.CMPA =ePWM_INFO->EPwmMinCMPA)
    {
    ePWM_INFO->ePWM_CMPA_DIRECTION = ePWM_CMP_UP;
    ePWM_INFO->EPwmRegHandle->CMPA.half-CMPA++;
    }
    其他
    {
    ePWM_INFO->EPwmRegHandle->CMPA.half-CMPA-;
    }
    }
    
    //如果我们增加 CMPB,请检查是否
    //我们达到了最大值。 如果不是、则增加 CMPB
    //否则、更改方向并减小 CMPB
    if (ePWM_INFO->ePWM_CMPB_DIRECTION == ePWM_CMP_UP)
    {
    if (ePWM_INFO->EPwmRegHandle->CMPB < ePWM_INFO->EPwmMaxCMPB)
    {
    ePWM_INFO->EPwmRegHandle->CMPB++;
    }
    其他
    {
    ePWM_INFO->ePWM_CMPB_DIRECTION = ePWM_CMP_DOWN;
    ePWM_INFO->EPwmRegHandle->CMPB--;
    }
    }
    
    //如果我们降低 CMPB,请检查是否
    //我们达到最小值。 如果不是、减小 CMPB
    //否则、更改方向并增加 CMPB
    
    其他
    {
    if (ePWM_INFO->EPwmRegHandle->CMPB =ePWM_INFO->EPwmMinCMPB)
    {
    ePWM_INFO->ePWM_CMPB_DIRECTION = ePWM_CMP_UP;
    ePWM_INFO->EPwmRegHandle->CMPB++;
    }
    其他
    {
    ePWM_INFO->EPwmRegHandle->CMPB--;
    }
    }
    
    否则
    {
    ePWM_INFO->EPwmTimerIntCount++;
    }
    
    return;
    }
    
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mihir、

    在螺母外壳中:

    1. 设置中断矢量表
    2. 配置 PIE
    3. 启用您希望使用的 PWM 中断
    4. 启用全局中断
    5. 在接收到中断后、您需要对其进行确认

    以下专题讨论会将更详细地介绍这一点。

    https://training.ti.com/c2000-f2806x-microcontroller-workshop?cu=1137791

    如果您想了解此器件上的中断矢量、应查看 TRM 并详细讨论此主题。

    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    谢谢,我会尝试,并返回结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mihir、

    你有什么幸运吗?

    谢谢、
    Cody