完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于PWM,使用主定时器产生,并在每秒定时器中进行周期和占空比的修改。 目前发现在每秒修改的时候,即使周期和占空比数据不变,输出的波形也会变化。
需要确认的是,在定时器关闭,更新占空比后,再开启。计数值是继续还是从0开始? 我是否需要在关闭的时候,先获取计数值,再在更新占空比后,讲计数值写回,再开启定时器。 这样是否可以从上次继续。 同时关闭开启是否保持之前电平,是否需要检查电平,在和初始电平一致的时候,进行改写? 有没有建议? 进一步测试: 尝试改写周期的时候。我先将原周期和当前计数值读取到全局变量, 随后根据新的周期值,等比例缩放计数值。 将新周期和缩放的计数值写入定时器,目的是让PWM在原来为完成的波形继续输出。 但是实际测试,重开后,PWM从0开始,计数值感觉没有被写入。 PWMPeriod_OLD=R32_TMR3_CNT_END; //读取当前周期 Current_Count=TMR3_GetCurrentCount(); //读取当前计数值 PWMPREIOD=Meter_PWM_Pam(Meter_Imp_const3,TempPower); //计数新周期 TMR3_PWMCycleCfg( PWMPREIOD ); //写新周期 NEW_PWM_COUNT=PWMPREIOD; NEW_PWM_COUNT=NEW_PWM_COUNT*Current_Count/PWMPeriod_OLD;//根据周期,等比例缩放计数值,保持剩余计数在周期的中占比不变 TMR3_Disable(); R32_TMR3_COUNT=NEW_PWM_COUNT; //更新计数值 TMR3_PWMActDataWidth( PWMPREIOD/2 ); // 占空比 50%, 修改占空比必须暂时关闭定时器 TMR3_Enable(); R32_TMR3_COUNT=NEW_PWM_COUNT; //更新计数值 感觉这语句没有效果。 是否这个寄存器无法写入。开启后,默认从0开始计数 尝试赋值计数,放在开启定时器后,马上改写,也是不行。 询问专家,是否无法改变这个当前计数值这个寄存器? 因为在之前其他M0中可以实现这个功能。 否则在每次改写周期的时候,会有一个明细的宽度加长。 |
|
相关推荐
1个回答
|
|
定时器关闭,再开启, 定时器cnt值从0开始;
更新定时器的周期(period) 建议在定时器的CNT 刚过0时候更新, 如果同时更新占空比(dutycycle),需要先更新占空比(dutycycle),再更新周期(period) 因为占用比的更新,是写fifo,fifo只有当定时器从0 开始时候,才会被加载进去, 这意味着, 可以这样去更新占空比,和周期,这样可以大大避免切换时候引起的抖动: uint32_t period= should_set; uint32_t dutycycle= period/2; while(R32_TMR3_COUNT>20); //wait if timer cnt > 20 TMR3_PWMActDataWidth(dutycycle); //update dutycycle to fifo while(R32_TMR3_COUNT<21); //wait while(R32_TMR3_COUNT>20); //wait if timer cnt > 20 TMR3_PWMCycleCfg(period); //update period 另外注意: 1,上诉代码加入放在ram中运行会比放在flash中 抖动弱; 2,原则上,上述代码不可被打断; |
|
|
|
只有小组成员才能发言,加入小组>>
239 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2716 浏览 2 评论
2234 浏览 1 评论
287浏览 7评论
请问一下CH573的PA9引脚用作TMR0功能可以做输入捕获用来进行红外解码吗?
1265浏览 7评论
BLE-Dongle与CH9141-A核心板进行双向透传,无法接收到串口数据怎么解决?
473浏览 7评论
459浏览 6评论
605浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-6 18:16 , Processed in 0.965996 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191