跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT SDK
  4. Demo_PWM_同一个周期内立即更新占空比

Demo_PWM_同一个周期内立即更新占空比

已定时 已固定 已锁定 已移动 YT SDK
demoetmrpwm
11 帖子 3 发布者 481 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • qinzhaoQ 离线
    qinzhaoQ 离线
    qinzhao
    写于 最后由 编辑
    #1
    1. 背景
      特殊应用场合出现同一个周期内,更新两次占空比,SDK自带DEMO会更新不进去
    2. 需求
    3. 芯片系列:MC0,MD,ME,LE
    4. 功能需求描述
    5. 特殊应用场合出现同一个周期内,更新两次占空比,无法更新
    6. 代码包:MCAL x.x.x/SDK x.x.x/RegCode
    7. 编译器:IAR/Keil/Gcc
    8. 解决方案描述
      1.模拟同一个周期内多次更新占空比,去掉原demo里的两次更新占空比之间的延时
      c8f56cfb-50db-449d-bfc7-c602e62a00d2-image.png [图片]
      此时PWM输出为第一次占空比设置的0%占空比。
      2.将原来regisiter loading Opportunity配置的synchronized with counter matching MOD改为synchronized with register loading trigger source。
    9. 示例说明
      2.将PWM设置为软触发更新
      [图片]
      3.在代码中将eTMR_DRV_SetLdok()函数改为eTMR_DRV_SyncWithSoftTrigger(ETMR_INST)
    int main(void)
    {
        /* USER CODE BEGIN 1 */
        /* USER CODE END 1 */ 
        Board_Init();
        /* USER CODE BEGIN 2 */
        /* PWM is generated when eTMR enable, the duty cycle is configured in the initial function */
        eTMR_DRV_Enable(ETMR_INST);
        OSIF_TimeDelay(10);
    
        /* The following code shows how to switch the different duty cycle */
        /* channel 2 duty cycle is 50% */
        eTMR_DRV_UpdatePwmChannel(ETMR_INST, ETMR_CHANNEL_INDEX0, 0x4000U, 0);
        /* channel 3 duty cycle is 75% */
        eTMR_DRV_UpdatePwmChannel(ETMR_INST, ETMR_CHANNEL_INDEX1, 0x6000U, 0);
        eTMR_DRV_SetLdok(ETMR_INST);
        OSIF_TimeDelay(10);
    
        /* channel 2 duty cycle is 100%, here is the workaround for 100% duty cycle
         * when channel is right align, value0 is configured as 0
         */
        g_etmrBase[ETMR_INST]->CH[ETMR_CHANNEL_INDEX0].VAL0 = 0;
        g_etmrBase[ETMR_INST]->CH[ETMR_CHANNEL_INDEX0].VAL1 = g_etmrBase[ETMR_INST]->MOD + 1;
        /* channel 3 duty cycle is 100% 
         * when channel is left/center/asymmetrical align, value0 is configured as 1
         */
        g_etmrBase[ETMR_INST]->CH[ETMR_CHANNEL_INDEX1].VAL0 = 1;
        g_etmrBase[ETMR_INST]->CH[ETMR_CHANNEL_INDEX1].VAL1 = g_etmrBase[ETMR_INST]->MOD + 1;
        eTMR_DRV_SetLdok(ETMR_INST);
        OSIF_TimeDelay(10);
    
        /* channel 2 duty cycle is 0 */
        eTMR_DRV_UpdatePwmChannel(ETMR_INST, ETMR_CHANNEL_INDEX0, 0, 0);
        /* channel 3 duty cycle is 0 */
        eTMR_DRV_UpdatePwmChannel(ETMR_INST, ETMR_CHANNEL_INDEX1, 0, 0);
        ***eTMR_DRV_SyncWithSoftTrigger(ETMR_INST);***
        //OSIF_TimeDelay(10);
    
        /* channel 2 duty cycle is 0x6000 */
        eTMR_DRV_UpdatePwmChannel(ETMR_INST, ETMR_CHANNEL_INDEX0, 0x6000U, 0);
        /* channel 3 duty cycle is 0x4000 */
        eTMR_DRV_UpdatePwmChannel(ETMR_INST, ETMR_CHANNEL_INDEX1, 0x4000U, 0);
        ***eTMR_DRV_SyncWithSoftTrigger(ETMR_INST);***
        /* USER CODE END 2 */
    
        /* Infinite loop */
        /* USER CODE BEGIN WHILE */
        while (1)
        {
            /* USER CODE END WHILE */
            /* USER CODE BEGIN 3 */
        }
        /* USER CODE END 3 */
    }
    

    可以输出最新的更新的占空比值,不再需要等到COUNTER值等于MOD值更新。
    输出波形:
    ee999e18-4555-403b-8f5e-639d3219371c-image.png [图片]
    5. 工程代码
    8b54813e-6ed9-4df8-9464-81756d2f7667-Etmr_Pwm_Demo.zip

    1 条回复 最后回复
    0
    • z1009591161Z 离线
      z1009591161Z 离线
      z1009591161
      写于 最后由 编辑
      #2

      通过Ozone看占空比寄存器,此方法确实可以实现在一个周期内更改两次占空比,实际输出占空比为最后一次更改的占空比。

      1 条回复 最后回复
      0
      • qinzhaoQ 离线
        qinzhaoQ 离线
        qinzhao
        写于 最后由 编辑
        #3

        在示例说明里,增加YCT配置PWM软触发的图片:image.png

        TungDoT 1 条回复 最后回复
        0
        • TungDoT 离线
          TungDoT 离线
          TungDo
          在 回复了 qinzhao 最后由 编辑
          #4

          qinzhao Hi there, could you please give me the link of this configure tool?

          1 条回复 最后回复
          0
          • qinzhaoQ 离线
            qinzhaoQ 离线
            qinzhao
            写于 最后由 编辑
            #5

            帖子附件里有,下面是链接:
            https://yt-static-media.oss-cn-hangzhou.aliyuncs.com/nodebb/24/e818fe45-5516-4885-a8ad-225aeb4c86ae.zip

            1 条回复 最后回复
            0
            • qinzhaoQ 离线
              qinzhaoQ 离线
              qinzhao
              写于 最后由 编辑
              #6

              The link in pdf.云途开发生态介绍.pdf

              TungDoT 2 条回复 最后回复
              0
              • TungDoT 离线
                TungDoT 离线
                TungDo
                在 回复了 qinzhao 最后由 编辑
                #7

                qinzhao do you have another version in english?

                1 条回复 最后回复
                0
                • TungDoT 离线
                  TungDoT 离线
                  TungDo
                  在 回复了 qinzhao 最后由 编辑
                  #8

                  qinzhao many thanks for your support!

                  1 条回复 最后回复
                  0
                  • qinzhaoQ 离线
                    qinzhaoQ 离线
                    qinzhao
                    写于 最后由 编辑
                    #9

                    download link:https://account.ytmicro.com/#/login,
                    After registering and logging in, you can download it.

                    TungDoT 1 条回复 最后回复
                    0
                    • TungDoT 离线
                      TungDoT 离线
                      TungDo
                      在 回复了 qinzhao 最后由 编辑
                      #10

                      qinzhao Do I need to pay any fees to use the YTC tool?

                      1 条回复 最后回复
                      0
                      • qinzhaoQ 离线
                        qinzhaoQ 离线
                        qinzhao
                        写于 最后由 编辑
                        #11

                        ytc tools are free

                        1 条回复 最后回复
                        0

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YCT离线License申请流程

                        帮助没办法联网的电脑使用YCT

                      • YT CONFIG TOOL调查问卷

                        帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                      • demo
                        12
                        can
                        9
                        lin stack
                        6
                        yt-link
                        5
                        vscode
                        3
                        adc模块
                        2
                        i2c
                        2
                        uuid
                        2
                        Online Users
                        DavidBLD
                        DavidBL
                        kasselK
                        kassel
                        • 登录

                        • 登录或注册以进行搜索。
                        • 第一个帖子
                          最后一个帖子
                        0
                        • 版块
                        • 最新
                        • 标签
                        • 热门