HT46R064B/065B/066B
PFD 功能
PFD(Programmable Frequency Divider)提供了一个可编程分频器,适用于像蜂鸣器驱动或者
其它需要精确频率的场合。
PFD 功能的时钟源是定时/计数器溢出信号,由 CTRL0 中的 PFDCS 来控制。该时钟源可以来自
定时/计数器 0 或者定时/计数器 1。输出频率的控制可以通过设置适当值到预分频器和定时寄存器来
达到要求的分频比。计数器将开始从预置值开始向上计数,直到满,此时,将产生一个溢出信号,
导致 PFD 输出改变状态。然后,计数器将自动从预置寄存器中加载预置值,并且继续向上计数。
如果 CTRL0 寄存器已经选择 PFD 功能,为了能对蜂鸣器输出进行操作,端口 A 控制寄存器 PAC
的设置是至关重要的,需要设置 PFD 引脚为输出。PA1 需要设置高来激活 PFD。输出数据位可以用
来作为 PFD 输出的开关控制位。注意,如果输出数据位清零,PFD 输出将一直输出低。
如果使用晶体振荡器作为系统时钟,通过该方法能产生非常准确的频率。
PFD 功能
输入/输出接口
当定时/计数器运行在计数或者脉冲宽度测量模式下,定时/计数器需要使用外部定时器引脚以
确保正确的动作。由于该引脚是共用引脚,因此需要正确的将其配置为定时/计数器输入引脚。这可
以通过定时/计数器控制寄存器的模式选择位来选择是计数模式或者脉冲宽度测量模式。此外,相应
的端口控制寄存器位需要被设置为高,来确保该引脚是作为输入脚。即使该引脚用作定时/计数器输
入,任何连接到这个引脚的上拉电阻将仍然是有效的。
编程注意事项
当定时/计数器工作在定时器模式时,内部的系统时钟作为定时器的时钟源,因此与单片机所有
运算都能同步。在这个模式下,当定时器寄存器溢出时,微控制器将产生一个内部中断信号,使程
序进入相应的内部中断向量。对于脉冲宽度测量模式,定时器时钟源同样使用内部的系统时钟,然
而,只有正确的逻辑条件出现在定时器输入引脚时,定时器才开始运行。当这个外部事件没有和内
部定时器时钟同步时,只有当下一个定时器时钟到达时,单片机才会看到这个外部事件,因此在测
量值上可能有小的差异,需要程序设计者在程序应用时加以注意。同样的情况发生在定时器设置为
外部事件计数模式时,它的时钟来源是外部事件,与内部系统时钟或者定时器时钟不同步。
当读取定时/计数器值或写数据到预置寄存器时,计数时钟会被禁止以避免发生错误,但这样做
可能会导致计数错误,所以程序设计者应该考虑到这点。在第一次使用定时/计数器之前,要仔细确
认有没有正确地设定初始值。中断控制寄存器中的定时器使能位需要正确的设置,否则相应定时/
计数器内部中断仍然无效。定时/计数器控制寄存器中的触发边沿选择、定时/计数器工作模式和时
钟源控制位也需要正确的设定,以确保定时/计数器按照应用需求而正确的配置。在定时/计数器打
开之前,需要确保先载入定时/计数器寄存器的初始值,这是因为在上电后,定时/计数器寄存器中
的初始值是未知的。定时/计数器初始化后,可以使用定时/计数器控制寄存器中的使能位来打开或
关闭定时器。
当定时/计数器产生溢出,中断控制寄存器中相应的中断请求标志将置位。若中断允许,将会依
次产生一个中断信号。不管中断是否允许,在省电状态下,定时/计数器的溢出也会产生唤醒。这种
情况可能发生在外部信号变化的计数模式中。定时/计数器向上计数直至溢出并唤醒系统。若在省电
模式下,不需要定时器中断唤醒系统,可以在执行“HALT”指令之前将相应中断请求标志位置位。
Rev 1.00
2011-04-13
44