TI中文支持网
TI专业的中文技术问题搜集分享网站

MSPM0G3507: 定时器周期捕获问题

Part Number:MSPM0G3507

您好,目前采用定时器周期捕获的方法对PWM进行捕获。现象为,若定时器周期>PWM周期,可以正常捕获。但定时器周期<PWM周期,会导致捕获值保持为loadvalue。我的理解是,如果出现定时器周期小于pwm周期,假设捕获值为70000,那我不应该得到的是70000-65535吗?目前结果是65535。 定时器在边沿触发时,会将counter值置0,但不应该会影响到

DL_Timer_getCaptureCompareValue得到的值吧。

void CAPTURE_0_INST_IRQHandler(void){
    switch (DL_Timer_getPendingInterrupt(CAPTURE_0_INST)) {
        case DL_TIMER_IIDX_CC0_UP:{
                // DL_Timer_setTimerCount(CAPTURE_0_INST, 0);
            capture_value = DL_Timer_getCaptureCompareValue(CAPTURE_0_INST, 0);
           count = CAPTURE_0_INST-> COUNTERREGS.CTR;
        }break;
        case DL_TIMER_IIDX_ZERO:{
            // DL_Timer_setTimerCount(CAPTURE_0_INST, 0);
        }
       

        break;
        default:
            break;
    }

} 这是目前的中断处理,得到的capture_value总是65535,(65535为capture定时器的loadvalue值)
Eirwen:

已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

,

Daniel:

您好

似乎您遇到的是 DEVICE ERR_01 (器件勘误表 https://www.ti.com/lit/er/slaz742b/slaz742b.pdf)

请参阅 SDK 中的 timx_timer_mode_capture_duty_and_period_LP_MSPM0G3507_nortos_ticlang、获取该错误的权变措施。

,

PandaFeng:

这种处理方式似乎只能处理短周期的pwm捕获,如果PWM周期过长,超过捕获定时器周期,并不能很好的工作

,

Daniel:

您好

在计时器0中断中添加计数。 它将告诉您计时器在捕获信号之前已运行了多少个周期。 然后、计算信号周期时、加上周期时间。 那么您可以得到它。

,

PandaFeng:

如果产生Zero事件中断,会将捕获寄存器改为0

,

Daniel:

您好

我在我这边尝试过、我仍然可以获得正常捕获寄存器值而不是零。

,

PandaFeng:

您好,麻烦发一下您的测试例程,我这边始终遇到这个问题

,

Daniel:

您好

嗯、我不知道我还能做些什么来帮助你。 我无法在我这边重现您的问题。

赞(0)
未经允许不得转载:TI中文支持网 » MSPM0G3507: 定时器周期捕获问题
分享到: 更多 (0)