请选择 进入手机版 | 继续访问电脑版
查看: 1243|回复: 6

[求助] MC56F82748 计时器、定时器的PRIMARY COUNT SOURCE

[复制链接]

该用户从未签到

2

主题

4

帖子

0

金豆

新手上路

Rank: 1

积分
30
最后登录
2016-5-5
发表于 2016-1-2 22:43:58 | 显示全部楼层 |阅读模式
Hi Freescale's FAE.
我正在学习飞MC56F82748的定时器,看到控制寄存器里面的Primary count source分别可以选择Counter 0 input pin....Counter 3 input pin,  counter 0 output.....counter 3 output 和IP BUS clock,
我的问题是Counter 0 input pin是指芯片外部连接脚TA0还是什么?还有就是counter 0 output 是从哪来的?
请各位帮忙解答下。谢谢!

最佳答案

markmarkmark 发表于 2016-1-3 11:40 按照我的理解和根据一些实例,我总结为 Counter 0/1/2/3 input pin为DSP硬件连接I/O脚,如TA0/TA1/TA2/TA ... 根据你的例子,理解是对的。但是,定时器的输入可以是通过内部的互 ...
无标题.png
回复

使用道具 举报

该用户从未签到

3

主题

555

帖子

2

金豆

金牌会员

Rank: 6Rank: 6

积分
1343
最后登录
2018-10-23
发表于 2016-1-3 09:57:09 | 显示全部楼层
我用的是MC56F8346的DSP。根据我的理解,这个Count0/1/2/3input pin和Count0/1/2/3 output pin,分别指的是定时器的输入和输出(一般有两组定时器模块A和B,每组又有4个16位定时器。每个定时器有主级输入和次级输入以及一个输出。同一个定时器模块的4个定时器可以共享他们的外部输入。)在芯片们内部还有一个crossbar(或者别的名称)的内部互联模块,可以把其他功能模块的输出与定时器相连作为定时器的输入。当然,定时器也可以直接接外部的信号,如接外部脉冲信号测量其频率。

评分

参与人数 1金豆 +2 收起 理由
NXP管管 + 2

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

4

帖子

0

金豆

新手上路

Rank: 1

积分
30
最后登录
2016-5-5
 楼主| 发表于 2016-1-3 11:40:10 | 显示全部楼层
disheng4688 发表于 2016-1-3 09:57
我用的是MC56F8346的DSP。根据我的理解,这个Count0/1/2/3input pin和Count0/1/2/3 output pin,分别指的是 ...

按照我的理解和根据一些实例,我总结为
Counter 0/1/2/3 input pin为DSP硬件连接I/O脚,如TA0/TA1/TA2/TA3,通过硬件脚输入脉冲信号到定时器,
Counter 0/1/2/3 output 为定时器产生的PWM,然后定时器产生的PWM作为另一个定时器的计数时钟源。



// (See Processor Expert PulseAccumulator bean.)
// This example uses TMRA1 to count pulse (actually counts rising edges of the pulse)
// from an external source (TA3).
//
void Pulse_Init(void)
{
/* TMRA1_CTRL: CM=0,PCS=3,SCS=0,ONCE=0,LENGTH=0,DIR=0,Co_INIT=0,OM=0 */
setReg(TMRA1_CTRL,0x0600); /* Set up mode */
/* TMRA1_SCTRL: TCF=0,TCFIE=0,TOF=0,TOFIE=0,IEF=0,IEFIE=0,IPS=0,INPUT=0,
Capture_Mode=0,MSTR=0,EEOF=0,VAL=0,FORCE=0,OPS=0,OEN=0 */
setReg(TMRA1_SCTRL,0x00);
setReg(TMRA1_CNTR,0x00); /* Reset counter register */
setReg(TMRA1_LOAD,0x00); /* Reset load register */
setRegBitGroup(TMRA1_CTRL,CM,0x01); /* Run counter */
}

TMRA1计数在I/O脚TA3输入的脉冲。所以把Counter 3 input pin(外部I/O脚TA3输入的信号)作为TMRA1的PRIMARY COUNT SOURCE.

另外一个例子:
// (See Processor Expert PulseStream bean.)
// This example generates six 10ms pulses, from TA1 output.
// Assuming the chip is operating at 60 MHz.
//
// To do this, timer 3 is used to generate a clock with a period of 10ms.
//
// Timer 1 is used to gate these clocks and count the number of pulses that have
// been generated.
//
void PulseStream_Init(void)
{
// Select IP_bus_clk/16 as the clock source for Timer A3
/* TMRA3_CTRL: CM=0,PCS=0x0C,SCS=0,ONCE=0,LENGTH=1,DIR=0,Co_INIT=0,OM=3 */
setReg(TMRA3_CTRL,0x1823); /* Set up mode */
/* TMRA3_SCTRL: TCF=0,TCFIE=0,TOF=0,TOFIE=0,IEF=0,IEFIE=0,IPS=0,INPUT=0,
Capture_Mode=0,MSTR=0,EEOF=0,VAL=0,FORCE=0,OPS=0,OEN=0 */
setReg(TMRA3_SCTRL,0x00);
setReg(TMRA3_LOAD,0x00); /* Reset load register */
setReg(TMRA3_COMP1,37500); /* (16 * 37500 ) / 60e6 = 0.01 sec */
/* TMRA3_CSCTRL: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,
TCF2EN=0,TCF1EN=0,TCF2=0,TCF1=0,CL2=0,CL1=0 */
setReg(TMRA3_CSCTRL,0x00); /* Set up comparator control register */
// Timer 3 output is the clock source for this timer.
/* TMRA1_CTRL: CM=0,PCS=7,SCS=0,ONCE=1,LENGTH=1,DIR=0,Co_INIT=0,OM=7 */
setReg(TMRA1_CTRL,0x0E67); /* Set up mode */
/* TMRA1_SCTRL: TCF=0,TCFIE=0,TOF=0,TOFIE=0,IEF=0,IEFIE=0,IPS=0,INPUT=0,
Capture_Mode=0,MSTR=0,EEOF=0,VAL=0,FORCE=0,OPS=0,OEN=1 */
setReg(TMRA1_SCTRL,0x01);
setReg(TMRA1_CNTR,0x00); /* Reset counter register */
setReg(TMRA1_LOAD,0x00); /* Reset load register */
setReg(TMRA1_COMP1,0x04); /* Set up compare 1 register */
// set to interrupt after the last pulse
/* TMRA1_CSCTRL: ??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,
TCF2EN=0,TCF1EN=1,TCF2=0,TCF1=0,CL2=0,CL1=0 */
setReg(TMRA1_CSCTRL,0x40); /* Set up comparator control register */
// Finally, start the counters running
setReg(TMRA3_CNTR,0); /* Reset counter */
setRegBitGroup(TMRA3_CTRL,CM,0x01); /* Run source clock counter */
setRegBitGroup(TMRA1_CTRL,CM,0x01); /* Run counter */
}
这个例子中,TMRA3产生一个10ms周期的脉冲,然后TMRA3的输出(Counter 0 output(不是来自外部I/O脚的脉冲))作为TMRA1的primary source


不知道我的理解是否正确。谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

555

帖子

2

金豆

金牌会员

Rank: 6Rank: 6

积分
1343
最后登录
2018-10-23
发表于 2016-1-3 15:39:01 | 显示全部楼层
markmarkmark 发表于 2016-1-3 11:40
按照我的理解和根据一些实例,我总结为
Counter 0/1/2/3 input pin为DSP硬件连接I/O脚,如TA0/TA1/TA2/TA ...

根据你的例子,理解是对的。但是,定时器的输入可以是通过内部的互连模块(CROSSBAR)连接其他功能模块的(比如,正交解码模块,PWM模块等)输出而作为定时器的输入的。
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

4

帖子

0

金豆

新手上路

Rank: 1

积分
30
最后登录
2016-5-5
 楼主| 发表于 2016-1-3 15:53:30 | 显示全部楼层
disheng4688 发表于 2016-1-3 15:39
根据你的例子,理解是对的。但是,定时器的输入可以是通过内部的互连模块(CROSSBAR)连接其他功能模块的 ...

OK,明白了,谢谢你!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2018-11-2 10:17
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    9

    主题

    359

    帖子

    1

    金豆

    高级会员

    Rank: 4

    积分
    834
    最后登录
    2018-11-2
    发表于 2016-1-3 21:49:12 | 显示全部楼层
    disheng4688 发表于 2016-1-3 15:39
    根据你的例子,理解是对的。但是,定时器的输入可以是通过内部的互连模块(CROSSBAR)连接其他功能模块的 ...

    应该是SYNC这个信号可以通过Xbar到其他模块吧
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-1-2 15:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    帖子

    2

    金豆

    新手上路

    Rank: 1

    积分
    11
    最后登录
    2019-1-2
    发表于 2019-1-2 16:07:54 | 显示全部楼层
    DSC 的內部有個 XBAR(CrossBar),透過 XBAR 可以將 Counter Source 接到 Counter 的 Input 引腳、其他 Counter 的 Output 或者 IP Bus 的 Clock

    评分

    参与人数 1金豆 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    初次登入,簽!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2019-1-22 08:28 , Processed in 0.152614 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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