S3C2410有5个16位的定时器;0、1、2、3有PWM(Pulse Width Modulation)功能,timer4有一个没有输出的内部timer;timer0有一个dead-zone发生器。
Timer0和1共用一个8位的prescaler,timer2、3、4共用另外一个;每个timer有一个divider(1/2、1/4、1/8、1/16和 PCLK),每个timer从divider那里接收自己的时钟信号;8位的prescaler是可编程的,并且根据TCFG0和TCFG1中的值来对PCLK进行分频。
当timer使能后,TCNTBn(timer count buffer register)将一个初始值放入down-counter中;TCMPBn(timer compare buffer register)将一个初始值放入一个比较寄存器来与递减值作比较。这种双缓冲的设计使得当频率和占空比发生变化时, timer能够产生稳定的输出 。
每个timer都有一个16bit的down-counter,它们由timer clock驱动;当down counter到达0时,产生中断请求来通知CPU定时器操作完成,对应的TCNTBn中的值被自动加载到down-counter中来进行下一个操作。但是,如果timer停止了,比如说,清除了TCONn中的使能位,TCNTBn中的值将不会加载到counter。
TCMPBn被用作PWM;当down-counter的值符合比较寄存器中的值时,timer控制逻辑改变输出水平;因而比较寄存器决定PWM的turn-on或turn-off时间。
8bit prescaler和4bit divider构成如下输出:
关于寄存器
Timer1、2、3、4……..