查看: 3187|回复: 9

[已解决] KL02捕获占空比问题(已解决)

[复制链接]

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
发表于 2014-12-22 10:46:27 | 显示全部楼层 |阅读模式
本帖最后由 xiaoming1021 于 2014-12-22 14:36 编辑

我用的是KL02芯片做的捕获占空比程序。占空比捕获的值是正确的。但是当我把占空比由一个数值变道0的时候,就会出现占空比不为0而是一个固定值。程序硬件调试图如下。

这是正常情况378代表占空比百分之37.8

这是正常情况378代表占空比百分之37.8
标志位都已经清零。
我知道答案 目前已有9人回答

这是当我把占空比降到0的时候值就不变了。

这是当我把占空比降到0的时候值就不变了。
回复

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2014-12-22 10:47:54 | 显示全部楼层
378代表占空比为百分之37.8。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-22 11:48:01 | 显示全部楼层
楼主仿真的时候,有没有配置TMPX_CONF[DBGMODE] =11?
也就是在debug模式下,TMPcounter继续运行,否则counter是停止的。
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2014-12-22 11:59:56 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-12-22 11:48
楼主仿真的时候,有没有配置TMPX_CONF[DBGMODE] =11?
也就是在debug模式下,TMPcounter继续运行,否则count ...

  TPM0_CONF = (uint32_t)((TPM0_CONF & (uint32_t)~(uint32_t)(
               TPM_CONF_CSOT_MASK |
               TPM_CONF_GTBEEN_MASK
              )) | (uint32_t)(
               TPM_CONF_CROT_MASK |
               TPM_CONF_CSOO_MASK |
               TPM_CONF_DBGMODE(0x03);//这里已经设置了
不是这个问题就是当我占空比为0的时候

c0v和c1v寄存器的值不变了还清除不掉。

c0v和c1v寄存器的值不变了还清除不掉。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-22 13:08:57 | 显示全部楼层
xiaoming1021 发表于 2014-12-22 11:59
TPM0_CONF = (uint32_t)((TPM0_CONF & (uint32_t)~(uint32_t)(
               TPM_CONF_CSOT_MASK |
  ...

你捕获应该是按照上升沿或者下降沿捕获对吧。
那么,如果你把占空比写为0的时候,你的PWM波形就不会出现上升沿或者下降沿,这样你的捕获机构不能被触发,也就不会有捕获事件发生,你的CnV当然不会有新值,这里的值还是上次捕获的值在里面。
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2014-12-22 13:12:06 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-12-22 13:08
你捕获应该是按照上升沿或者下降沿捕获对吧。
那么,如果你把占空比写为0的时候,你的PWM波形就不会出现 ...

那我如何清除那里的值。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-22 13:34:46 | 显示全部楼层
xiaoming1021 发表于 2014-12-22 13:12
那我如何清除那里的值。

In input capture mode, any write to a CnV register is ignored.
所以,你可以禁止TPM,重新配置下capture功能,这个值应该会被清掉
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2014-12-22 13:37:44 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-12-22 13:34
In input capture mode, any write to a CnV register is ignored.
所以,你可以禁止TPM,重新配置下capt ...

好的我试试!
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2014-12-22 14:36:02 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-12-22 13:34
In input capture mode, any write to a CnV register is ignored.
所以,你可以禁止TPM,重新配置下capt ...

可以了
  SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;                                   
  TPM0_SC = (TPM_SC_CMOD(0x00) | TPM_SC_PS(0x00)); /* Stop the counter and clear the interrupt flag */
  TPM0_C0SC = TPM_CnSC_CHF_MASK;                                   
  TPM0_C1SC = TPM_CnSC_CHF_MASK;                                   
  TPM0_C0V  = 0x00;
  TPM0_C1V  = 0x00;
停止之后我将两个通道赋值为0就清掉了。感觉你的耐心的回答!
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-22 18:13:55 | 显示全部楼层
xiaoming1021 发表于 2014-12-22 14:36
可以了
  SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;                                   
  TPM0_SC = (TPM_SC_ ...

不客气,后续有问题,欢迎继续发帖交流。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-20 13:27 , Processed in 0.112876 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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