当前位置: 首页 > news >正文

TMS320F28P550SJ9学习笔记14:EPWM_死区dead_baund

今日更改配置EPWM1的GPIO 0和GPIO 1可调节死区:

文章提供完整工程下载、测试效果图

目录

EPWM1初始化带死区:

主函数调用:

测试效果截图:

完整工程下载:


我的单片机平台是这个:

EPWM1初始化带死区:


Uint16 EPwm1_DB_Direction;

//EPWM_INFO epwm3_info;

// 向上向下计数 周期 = TBCLK / (TBCRD*2)
// 本初始化最终算得周期为 50kHz
void Init_Epwm1(void)//GPIO 0   GPIO 1
{
    EALLOW;
      CpuSysRegs.PCLKCR2.bit.EPWM1=1;  //使能EPWM1
      PieVectTable.EPWM1_TZ_INT = &epwm1_tzint_isr;
      //初始化EPWM引脚
      GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;    // Disable pull-up on GPIO0 (EPWM1A)
      GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;   // Configure GPIO0 as EPWM1A
      GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1;    // Disable pull-up on GPIO1 (EPWM2A)
      GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;   // Configure GPIO1 as EPWM1B
    EDIS;

    EALLOW;
      CpuSysRegs.PCLKCR0.bit.TBCLKSYNC =0;
    EDIS;

//    EALLOW;
//    //选择触发器 功能
//      EPwm1Regs.TZSEL.bit.OSHT1 = 1;
//      // Set TZA 当触发器条件满足时相关的输出强制为高电平
//      EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_HI;
//
//      // Enable TZ interrupt
//      EPwm1Regs.TZEINT.bit.OST = 1;
//    EDIS;

    EPwm1Regs.TBPRD = 6000;                       // Set timer period
    EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;           // Phase is 0
    EPwm1Regs.TBCTR = 0x0000;                     // Clear counter

    //
    // Setup TBCLK
    //
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Disable phase loading
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4;       // Clock ratio to SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4;

    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    // Load registers every ZERO
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    //
    // Setup compare
    //
    EPwm1Regs.CMPA.bit.CMPA = 3000;

    //
    // Set actions
    //
    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;            // Set PWM1A on Zero
    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR;          // Set PWM1A on Zero
    EPwm1Regs.AQCTLB.bit.CAD = AQ_SET;

    //
    // Active Low PWMs - Setup Deadband
    //
    EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LO;
    EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;
    EPwm1Regs.DBRED.bit.DBRED = 0;
    EPwm1Regs.DBFED.bit.DBFED = 0;
    EPwm1_DB_Direction = 1;

    //
    // Interrupt where we will change the Deadband
    //
    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;    // Select INT on Zero event
    EPwm1Regs.ETSEL.bit.INTEN = 1;               // Enable INT
    EPwm1Regs.ETPS.bit.INTPRD = ET_3RD;          // Generate INT on 3rd event




    EALLOW;
      CpuSysRegs.PCLKCR0.bit.TBCLKSYNC =1;
    EDIS;
      IER |= M_INT2;
      PieCtrlRegs.PIEIER2.bit.INTx1 = 1;
}

主函数调用:

 

测试效果截图:

  这幅图是同时设置超前与滞后死区:

这里可以看到只有设定DBFED  时是滞后带死区:

完整工程下载:

https://download.csdn.net/download/qq_64257614/90595942

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/125875.html

相关文章:

  • UE4 踩坑记录
  • 电脑提示“找不到mfc140u.dll“的完整解决方案:从原因分析到彻底修复
  • 【毕设通关】——文献查阅
  • 什么是iPaaS?
  • 【vue3】@click函数传动态变量参数
  • kubernetes》》k8s》》Volume 数据卷 PVC PV NFS
  • 7# 5多线-7 不会停
  • 【Python语言基础】18、多态
  • 数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411)
  • qt联动其他库实现一个客户端(本章主要是概述如何实现)
  • Python代码相关关系矩阵的三种展示热力图-条形图
  • C语言之双层for循环
  • 当一个 HTTP 请求发往 Kubernetes(K8s)部署的微服务时,整个过程流转时怎样的?
  • interfaceResidue:一款用于分析蛋白复合物“接触界面残基”的pymol插件
  • 面试题之网络相关
  • P3372 【模板】树状数组 3( 区间修改 + 区间查询 )
  • zynq sd卡初始化流程
  • mybaties plus 更新null值进入数据库
  • 【AI编程技术爆发:从辅助工具到生产力革命】
  • 博客园账户注册全流程指南(附常见问题)
  • windows安卓子系统wsa隐藏应用列表的安装激活使用
  • OpenHarmony 5.0版本视频硬件编解码适配
  • 零基础开始学习鸿蒙开发-智能家居APP离线版介绍
  • 基于PLC的采摘机械手(论文+源码)
  • 《Vue Router实战教程》12.不同的历史记录模式
  • 《Python星球日记》第22天:NumPy 基础
  • 安科瑞EMS3.0破解工业企业源网荷储一体化“用能三难”问题 帮助企业高效管理
  • 什么是TensorFlow?
  • OpenGL学习笔记(assimp封装、深度测试、模板测试)
  • 全场景赋能|燕千云打造企业级智能运维平台