Learning ADSP-TS201系列--定时计数器Timer
原创作品,转载请注明原作者及地址!
by 飞鸿惊雪
http://blog.csdn.net/niyufeng
1 Learning ADSP-TS201系列--重要参考
2 Learning ADSP-TS201系列--EZ-KIT Lite评估板硬件资源
3 Learning ADSP-TS201系列--Flag Pins按键和LED灯
4 Learning ADSP-TS201系列--Interrupt PinLearning ADSP-TS201系列--定时计数器Timer
ADSP-TS201的定时器使用S-BUS,该时钟频率为:SOCCLK = CCLK/2。

在电路板背面,默认只焊接了一个电阻,因此SCLKRAT=001,PLL为5!
CCLK = 500MHz;
SOCCLK = 250MHz;
1/250MHz = 4 x e-9 s = 4ns;
如果每0.4秒中断一次,则需要计数0.4s / 4ns = 100000000次。


1 置位INCTL寄存器中的TMRxRN位,开始定时计数;
2 这时TMRINxH/L ==》 TIMERxH/L
3 TMRxRN清零则暂停定时计数;再置位又会继续定时计数;
4 只有改变初始寄存器TMRINxH/L的值才会改变TIMERxH/L值;上面的TMRxRN位不会影响TIMERxH/L值!
5 当定时器x发生中断时,锁存器ILATx中的高优先级INT_TIMERxLP,低优先级INT_TIMERxHP都会置位,或者清零。(最终使用不同的优先级在于IMASK的设置!)
涉及到中断的主要有以下这几个寄存器:ILAT,IMASK,PMASK,以及SQCTL下的GIE位控制全局中断,和INTCTL控制IRQ3-0的触发方式、TIME1-0的启动。
ILAT,IMASK,PMASK这三者“相与”指明了正在执行的中断为哪一个。
ILAT:中断锁存寄存器,只要发生中断相应位置1;
IMASK:中断屏蔽寄存器,只有置1才允许响应相应的中断;
PMASK:锁存正在执行的中断,如果允许中断嵌套,只有在高于目前PMASK位的中断才可以响应。

注意:我们本次要试验定时器,就在(H)寄存器中!





1 INTCTL控制IRQ3-0的触发方式。
2 INTCTL中断控制寄存器的TMRxRN位来控制计数器的启动(1)和停止(0);
复位后TMRxRN位为0,计数器不工作。

SQCTL下的SQCTL_GIE位控制全局中断。
SQCTL还有两个别名SQCTLST和SQCTLCL。
TMRINxH/L表示初始值
TIMERxH/L表示当前运行值