完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我这边在开发电机过程中发现相电压波形异常,进而查看TC367侧的PWM输出,最终发现在GPT中断下驱动PWM输出会导致定时器发生时延,时延为一条指令对应3us,于是编写了简易测试代码论证如下,其中T3定时器重载值为60us
观察IO翻转电平,时间为18us,timer的周期变为了60+18us,平均一条setDutyCycle指令为3us时间,将setDutyCycle置于非ISR代码中,测量该指令的消耗时间为ns级别,远远小于3us: PWM使用的是GTM的ATOM生成并不使用PWM中断,Timer使用GPT的T2/3/4,现象均相同。在Timer中断内生成PWM的操作是非法的吗?还是二者模块的子模块在某些情况下冲突。 |
|
相关推荐
2个回答
|
|
我不觉得是操作非法,一般来说电机控制的三相PWM的duty cycle的值载入都会在时刻到达后由shadow register直接写入来提高响应速度。所以我们都推荐用GTM TOM/ATOM或者CCU6模块进行操作。
GPT timer我们一般不建议作为电机三相控制的输出。在非ISR的区间下,toggle pin区间执行的代码可能会被其他打断,以至于超过正常setDutyCycle指令的执行时间。你可以尝试下在toggle 区间加上IfxCpu_disableInterrupts看看是否有变化 |
|
|
|
根据您提供的信息,TC367在GPT中断下驱动PWM输出导致定时器发生时延的问题,可以尝试以下几种解决方案:
1. 优化中断服务程序(ISR):确保ISR尽可能高效,避免在ISR中执行耗时较长的操作。将耗时较长的操作移至非ISR代码中执行。 2. 使用DMA(直接内存访问):如果可能,使用DMA来处理PWM输出,以减少CPU的负担。这样可以避免在ISR中处理PWM输出,从而减少时延。 3. 调整定时器配置:尝试调整定时器的重载值和周期,以减小时延。同时,可以考虑使用更高频率的时钟源,以提高定时器的精度。 4. 分离PWM生成和定时器中断:将PWM生成与定时器中断分离,避免在中断服务程序中直接生成PWM。可以在中断服务程序中设置PWM的参数,然后在非ISR代码中生成PWM。 5. 使用多任务调度:如果可能,使用多任务调度来管理PWM生成和定时器中断。这样可以确保PWM生成和定时器中断之间的执行顺序,从而减少时延。 6. 检查硬件设计:检查硬件设计是否满足PWM输出和定时器中断的要求。确保硬件设计没有导致时延的问题。 7. 升级固件或软件库:检查是否有固件或软件库的更新,这些更新可能包含了针对此类问题的修复。 总之,解决TC367在GPT中断下驱动PWM输出导致定时器发生时延的问题需要从多个方面进行考虑。尝试上述解决方案,找到适合您项目的最佳方法。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
362 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6268 浏览 2 评论
4106 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3632 浏览 9 评论
1231 浏览 8 评论
458浏览 2评论
270浏览 2评论
376浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6274浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
456浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 15:35 , Processed in 0.685541 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号