楼主: FSL_TICS_MAHUI

[分享] Kinetis芯片常见技术问题(不断更新中...)

[复制链接]

该用户从未签到

131

主题

835

帖子

0

金牌会员

Rank: 6Rank: 6

积分
10021
最后登录
1970-1-1
发表于 2013-4-15 14:30:53 | 显示全部楼层

RE:Kinetis芯片常见技术问题(不断更新中...)

Cool!! Freescale FAE团队!!
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

86

帖子

0

新手上路

Rank: 1

积分
130
最后登录
1970-1-1
发表于 2013-4-15 14:52:02 | 显示全部楼层

RE:Kinetis芯片常见技术问题(不断更新中...)

这个版块越来越好啦!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

35

帖子

0

新手上路

Rank: 1

积分
49
最后登录
1970-1-1
发表于 2013-4-16 08:47:13 | 显示全部楼层

回复:Kinetis芯片常见技术问题(不断更新中...)

回复第 6 楼 于2013-04-15 22:14:34发表:
=======================计时器模块========================== 

希望定时器使能后能够在指定条件下禁止,我使用了如下语句:
... ...
PIT->CHANNEL[3].TCTRL|=(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//使能定时器及中断
... ...
if(条件1)
{
PIT->CHANNEL[3].TCTRL&=~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//禁止定时器及中断

}
 
貌似上面无法在‘条件1’ 下禁止定时器(测试过条件1为真时,程序已经进入该语句),这样不对吗?谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

30

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
发表于 2013-4-16 13:25:11 | 显示全部楼层

回复:Kinetis芯片常见技术问题(不断更新中...)

这样试试看:
PIT->CHANNEL[3].TCTRL&=(~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK));
回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
 楼主| 发表于 2013-4-16 13:26:13 | 显示全部楼层

回复:Kinetis芯片常见技术问题(不断更新中...)

回复第 13 楼 于2013-04-16 16:47:13发表:
回复第 6 楼 于2013-04-15 22:14:34发表:
=======================计时器模块========================== 

希望定时器使能后能够在指定条件下禁止,我使用了如下语句:
... ...
PIT->CHANNEL[3].TCTRL|=(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//使能定时器及中断
... ...
if(条件1)
{
PIT->CHANNEL[3].TCTRL&=~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//禁止定时器及中断

}
 
貌似上面无法在‘条件1’ 下禁止定时器(测试过条件1为真时,程序已经进入该语句),这样不对吗?谢谢!
 

我自己做了个小的测试程序,使用如下语句是可以关闭PIT 计时器的。
 PIT_TCTRL0 &= ~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);
具体信息请参考附件中的代码。
测试平台: TWR-K40X256 板子, 芯片PK40 100MHz, mask set: 0M33Z。
由于0M33Z芯片PIT模块有一个bug,所以在中断服务程序中,需要在清掉中断标志时,再次读取PIT某个寄存器。
PIT中断服务程序如下:
/*
** ###################################################################
**
**  The interrupt service routine(s) must be implemented
**  by user in one of the following user modules.
**
**  If the "Generate ISR" option is enabled, Processor Expert generates
**  ISR templates in the CPU event module.
**
**  User modules:
**      ProcessorExpert.c
**      Events.c
**
** ###################################################################*/
PE_ISR(pit0_isr)
{
// NOTE: The routine should include actions to clear the appropriate
//       interrupt flags.
 int temp;
 

    PIT_TFLG0 |= PIT_TFLG_TIF_MASK;
 temp = PIT_TCTRL0; 
    GPIOC_PTOR |= (0x1

TWR-K40X256-PIT.zip

238.8 KB, 下载次数: 14, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

47

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
115
最后登录
1970-1-1
发表于 2013-4-16 13:59:19 | 显示全部楼层

RE:Kinetis芯片常见技术问题(不断更新中...)

非常值得一看的帖子~
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

86

帖子

0

新手上路

Rank: 1

积分
130
最后登录
1970-1-1
发表于 2013-4-16 19:45:07 | 显示全部楼层

RE:Kinetis芯片常见技术问题(不断更新中...)

我在测试KL25内部晶振(4Mhz快速时钟)时,官方手册标注4Mhz,然而实测只有略>2Mhz,请问,这个偏差是设计问题还是手册标注有误?
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

35

帖子

0

新手上路

Rank: 1

积分
49
最后登录
1970-1-1
发表于 2013-4-16 22:47:56 | 显示全部楼层

回复:Kinetis芯片常见技术问题(不断更新中...)

回复第 14 楼 于2013-04-16 21:25:11发表:
这样试试看:
PIT->CHANNEL[3].TCTRL&=(~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK));
 
谢谢,效果一样,我改了判断方式,可以关断定时器了。但这个问题所在还是不很明白,我在下面给FAE的回复中说明了。
 
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

35

帖子

0

新手上路

Rank: 1

积分
49
最后登录
1970-1-1
发表于 2013-4-16 23:31:10 | 显示全部楼层

回复:Kinetis芯片常见技术问题(不断更新中...)

<div style="padding:5px;border:1px dashed #ccc;">回复第 15 楼 于2013-04-16 21:26:13发表:
回复第 13 楼 于2013-04-16 16:47:13发表:
回复第 6 楼 于2013-04-15 22:14:34发表:
=======================计时器模块========================== 

希望定时器使能后能够在指定条件下禁止,我使用了如下语句:
... ...
PIT->CHANNEL[3].TCTRL|=(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//使能定时器及中断
... ...
if(条件1)
{
PIT->CHANNEL[3].TCTRL&=~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);//禁止定时器及中断

}
 
貌似上面无法在‘条件1’ 下禁止定时器(测试过条件1为真时,程序已经进入该语句),这样不对吗?谢谢!
 

我自己做了个小的测试程序,使用如下语句是可以关闭PIT 计时器的。
 PIT_TCTRL0 &= ~(PIT_TCTRL_TEN_MASK|PIT_TCTRL_TIE_MASK);
具体信息请参考附件中的代码。
测试平台: TWR-K40X256 板子, 芯片PK40 100MHz, mask set: 0M33Z。
由于0M33Z芯片PIT模块有一个bug,所以在中断服务程序中,需要在清掉中断标志时,再次读取PIT某个寄存器。
PIT中断服务程序如下:
/*
** ###################################################################
**
**  The interrupt service routine(s) must be implemented
**  by user in one of the following user modules.
**
**  If the "Generate ISR" option is enabled, Processor Expert generates
**  ISR templates in the CPU event module.
**
**  User modules:
**      ProcessorExpert.c
**      Events.c
**
** ###################################################################*/
PE_ISR(pit0_isr)
{
// NOTE: The routine should include actions to clear the appropriate
//       interrupt flags.
 int temp;
 

    PIT_TFLG0 |= PIT_TFLG_TIF_MASK;
 temp = PIT_TCTRL0; 
    GPIOC_PTOR |= (0x1

PIT.ppt

193.5 KB, 下载次数: 14, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
 楼主| 发表于 2013-4-17 11:01:05 | 显示全部楼层

RE:Kinetis芯片常见技术问题(不断更新中...)

你好,PIT控制函数应该没有问题,你需要调试一下你的代码,看看是否存在运行PTI3_Disable函数后很快再次运行PIT3_Enable函数。这样会造成PIT计数器关闭不了的假象。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-27 04:06 , Processed in 0.100331 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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