基于AT90S8515的定时计数器
扫描二维码
随时随地手机看文章
AVR单片机的型号不同,定时/计数器的数量也不同。下面以AT90S8515单片机为例,介绍AVR单片机的定时/计数器。
AT90S8515有一个8位定时/计数器TCNTO和一个16位的定时/计数器TCNT1。二者均可对晶振时钟CK、预定比例器时钟源、或外部引脚脉冲进行计数。
AT90S8515的预定比例器将晶振时钟CK进行8、64、256和1024分频,分别为TCNTO、TCNT1提供不同频率的时钟源,包括:CK、CK/8、CK/64、CK/256、CK/1024、外部源EXTO、EXTI和停止。定时/控制寄存器TCCRO控制TCNTO的时钟源,TCCRIA、TCCRIB控制TCNT1的时钟源。定时/计数器溢出标志位在TIFR寄存器中,中断使能位在TIMSK寄存器中。
一、8位定时/计数器TCNTO
1.TCNTO控制寄存器-TCCROTCCRO的I/O寄存器地址为$33(RAM地址为$53),复位时值为O。
TCCRO的低3位CS02、CS01、CSOO为TCNTO的时钟源选择位(对应关系如下表),高5位未用。
若用TO脚作时钟源,须对数据方向控制寄存器进行相应设置。
2.定时/计数器TCNTOTCNTO的地址为$32($52),复位时值为O。
TCNTO是可读写的加计数器。若向TCNTO写入时时钟源正在工作,则数据写入后继续计数。
二、16位定时/计数器TCNT1
1.TCNT1有两个输出比较寄存器OCRIA、OCRIB,用于与TCNT1的计数值进行比较。输出比较功能包括:比较匹配后的计数器清O,及比较匹配输出引脚上的各种操作。
TCNT1可用于8位、9位、10位的脉冲调制器。在此模式下,定时器和OCR1A、OCR1B具有集中脉冲双抗误操作独立的PWM能力。
TCNT1具有输入捕获功能,由输入捕获引脚ICP上的信号激活。捕获信号的设置由TCNTI的控制寄存器TCCR1B来定义。模拟比较器也可触发该捕获事件。
TCNT1具有输入捕获噪声消除器。如果该功能允许,则在输入捕获事件激活前需要4次以上的采样监测,输入引脚信号以XTAL的时钟频率被采样。
2.控制寄存器A-TCCRA TCCRA的地址为$2F($4F),复位时值为O,各位定义如下:
COMMlA1、COMMIAO为比较A输出模式选择,决定TCNT1在与OCRIA比较匹配之后的输出引脚事件。输出引脚事件影响OC1A,即输出比较A(见上表)。
由于其对I/O口的可替换功能,此I/O口的方向控制位必须设为l,以便对输出引脚进行控制。
COMM1B1、COMM1BO为比较B输出模式选择,决定TCNT1在与OCRIB比较匹配之后的输出引脚OCIB的事件(见上表)。
在PWM模式下,上述4位的功能不同(见PWM模式下的定时计数器1)。
改变以上四位时,必须清除TIMSK中的中断使能位来禁止输出比较器中断l,否则将发生中断。
PWM11、PWM10为脉冲宽度调制器选择位(见下表)。
3.控制寄存器B-TCCRBTCCRB地址为$2E($4E),复位时值为O,各位定义如下: