查看: 4560|回复: 9

[已解决] MKE04Z128VLD4芯片,边沿对齐PWM方式,CnV 寄存器更新问题

[复制链接]

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
发表于 2018-6-25 09:36:47 | 显示全部楼层 |阅读模式
MKE04Z128VLD4芯片,开发环境CodeWarrior for MCU 11,使用Processor Expert编程。用Init_FTM进行配置,FTM设置为边沿对齐PWM方式,
FTMEN = 0,CLKS[1:0] ≠ 0:0,CnV 寄存器应该是“CnV 寄存器在对CnV 寄存器采取写入操作且FTM 计数器从MOD 更改为CNTIN 之后更新”,
MOD 寄存器更新应该是一样的。
但是,在程序中先对MOD 寄存器赋值,再对CnV 寄存器赋值,发现MOD 寄存器可以更新,CnV 寄存器有时可以更新,有时不能更新。这是什么原因?

最佳答案

dahe2012 发表于 2018-7-2 08:32 顶起来,等待高手解答 楼主你好,你把你代码发过来,我这边没有你这颗芯片,所以可能会在KE06上面去试,不过模块是一样的。 ...
回复

使用道具 举报

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
 楼主| 发表于 2018-6-25 15:55:59 | 显示全部楼层
后来发现,CnV寄存器有时不能更新,跟通道中断使能开了有关,如果通道中断不开,改为定时器溢出中断使能,CnV寄存器更新就正常。这是什么原因,有什么办法解决?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24883
最后登录
2025-7-20
发表于 2018-6-26 09:47:37 | 显示全部楼层
楼主你好,请看下手册中关于CnV寄存器更新的条件:
当: • CLKS[1:0] ≠ 0:0, and • FTMEN = 0
更新情况:
• If the selected mode is Output Compare, then CnV register is updated on the
next FTM counter change, end of the prescaler counting, after CnV register
was written.
• If the selected mode is EPWM, then CnV register is updated after CnV
register was written and the FTM counter changes from MOD to CNTIN.
If
the FTM counter is at free-running counter mode then this update occurs
when the FTM counter changes from 0xFFFF to 0x0000.

• If the selected mode is CPWM, then CnV register is updated after CnV
register was written and the FTM counter changes from MOD to (MOD –
0x0001).

也就是说,这个and的条件也满足之后,才能更新。我估计你没更新的时候,应该是这个and的counter条件还没满足。
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
 楼主| 发表于 2018-6-26 10:23:44 | 显示全部楼层
小恩GG 发表于 2018-6-26 09:47
楼主你好,请看下手册中关于CnV寄存器更新的条件:
当: • CLKS[1:0] ≠ 0:0, and • FTMEN = 0
更新情况 ...

版主你好!
定时器一直在工作,也就是说,counter会从MOD值变为CNTIN。我对MOD和CnV寄存器只赋值一次,就没有再赋值。发现MOD值可以更新,CnV值有时不能更新。MOD和CnV的更新方式是相同的,MOD能更新,CnV也应该能更新。
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24883
最后登录
2025-7-20
发表于 2018-6-26 15:23:45 | 显示全部楼层
dahe2012 发表于 2018-6-26 10:23
版主你好!
定时器一直在工作,也就是说,counter会从MOD值变为CNTIN。我对MOD和CnV寄存器只赋值一次,就 ...

你修改的时候是MOD和CnV一起修改的吗?如果不修改MOD, 只修改CnV,是否有问题?
另外,你的中断里面做了什么动作?如果不加中断肯定没问题,加了中断就不对,是吧?
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
 楼主| 发表于 2018-6-28 14:02:13 | 显示全部楼层
小恩GG 发表于 2018-6-26 15:23
你修改的时候是MOD和CnV一起修改的吗?如果不修改MOD, 只修改CnV,是否有问题?
另外,你的中断里面做了 ...

只修改CnV,也是一样的问题,CnV寄存器有时不能更新。测试的时候在通道中断中只是判断一下通道中断标志,如果通道中断标志为1,则清零。如果通道中断关闭,CnV更新正常。如果将通道中断关闭,使能溢出中断,CnV更新也正常。结论就是:通道中断对CnV更新有影响。这个问题该如何解决?
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
 楼主| 发表于 2018-6-29 11:29:47 | 显示全部楼层
dahe2012 发表于 2018-6-28 14:02
只修改CnV,也是一样的问题,CnV寄存器有时不能更新。测试的时候在通道中断中只是判断一下通道中断标志, ...

版主能否帮忙验证一下?
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
 楼主| 发表于 2018-6-30 08:41:03 | 显示全部楼层
dahe2012 发表于 2018-6-28 14:02
只修改CnV,也是一样的问题,CnV寄存器有时不能更新。测试的时候在通道中断中只是判断一下通道中断标志, ...

有大侠知道原因吗?还是芯片本身有问题
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

36

帖子

0

注册会员

Rank: 2

积分
190
最后登录
2021-7-17
 楼主| 发表于 2018-7-2 08:32:19 | 显示全部楼层
dahe2012 发表于 2018-6-30 08:41
有大侠知道原因吗?还是芯片本身有问题

顶起来,等待高手解答
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24883
最后登录
2025-7-20
发表于 2018-7-2 13:31:30 | 显示全部楼层
dahe2012 发表于 2018-7-2 08:32
顶起来,等待高手解答

楼主你好,你把你代码发过来,我这边没有你这颗芯片,所以可能会在KE06上面去试,不过模块是一样的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 00:29 , Processed in 0.111428 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表