SPV210定时器的PMW定时器2

1、预分频器和分频器

(1)两级分频器是串联(级联)的,所以两级分频器的分频数是相乘的。

(2)两级分频的系数分别在TCFG0和TCFG1两个寄存器中设置。

(3)预分频器有两个,prescaler0为timer0和timer1共用;prescaler1为timer2,3,4共用;两个prescaler都是8个bit位,因此prescaler Value范围是0~255;所以预分频器分频值的范围为1~256(分频值=prescaler+1)。

(4)分频器实质是一个MUX开关,多选一开关,决定了走哪个分频系数路线。可以有1/2,1/4,1/8,1/16等

(5)计算可知,两级分频下来,分频最小为1/2,最大分频是1/256/16(1/4096)

(6)在PCLK_PSYS为66MHz的情况下(默认时钟设置就是66MHz的),此时两级分频后的时钟范围为0.03us到62.061us;再结合TCNTB的值设置(范围1~2^32)值,可知最长可定时时间为266548.27s。

2、TCNT&TCMP、TCNTB&TCMPB

(1)TCNT和TCNTB是相对的,TCNTB是有地址的寄存器,供程序员操作;TCNT在内部和TCNTB相对应,它没有寄存器地址,程序员不能编程访问这个寄存器。

(2)TCNT寄存器功能就是用来减1的,它内部不能读写;我们向TCNT中写通过TCNTB往进写;读取TCNT寄存器中的值要通过读取相对应的TCNTO寄存器。

(3)工作流程就是:我们事先算好TCNT寄存器中开始减的那个数(譬如300),然后将它写入到TCNTB寄存器中,在启动timer前,将TCNTB寄存器中(有一位寄存器专门用来刷数据过去的),刷数据过去后开始启动定时器计时;在计时工程中如果想知道TCNT寄存器中的值减到多少,可以通过读取对应的TCNTO寄存器得知。

3、自动重载和双缓冲(auto-reload and double buffering)

(1)定时器工作的时候,一次定时算一个工作循环。定时器默认是单个循环工作的,也就是说定时一次,计时一次,到期中断一次就完了。下次如果还要再定时中断,需要另外设置。

(2)现实中用定时器来做的时候往往是循环的,最简单最笨的方法就是写代码反复重置定时器寄存器的值(在每次中断处理isr中再次给TCNTB中赋值,再次刷到TCNT中再次启动定时器),早期的51单片机就是这个样子;现在高级Soc中的定时器已经默认内置了这种循环定时模式,就叫自动装载(auto-reload)机制。

(3)自动装载机制就是当定时器初始化好开始计时后就再不用管了,他一个周期到了后会自己从TCNTB中再次装载值到TCNT中,再次启动定时器开始下个循环。

(4)定时功能只需要TCNT、TCNTB两个即可;TCNTO寄存器用来做做一些捕获计时;TCMPB用来生成PWM波形

猜你喜欢

转载自blog.csdn.net/weixin_40405692/article/details/81487026
今日推荐