增强型定时器模块(ECT) ECT功能相当于高速的I/O口,由一个4位预分频器、一个16位自由运行计数器,8个16位IC/OC通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
TEN | TSWAI | TSFRZ | TFFCA | 0 | 0 | 0 | 0 |
TSCR1 寄存器是定时器模块的总开关,它决定模块是否启动以及在中断等待、BDM 方式下的行为,还包括标志的管理方式。TEN:定时器使能位,此外它还控制定时器的时钟信号源。要使用定时器模块的 IC/OC 功能,必须将 TEN 置位。
0:定时器/计数器被禁止,有利于降低功耗。
1:定时器/计数器使能,正常工作
2、计时器系统控制寄存器 2(TSCR2)
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
TOI | 0 | 0 | 0 | TCRE | PR2 | PR1 | PR0 |
TOI:定时器/计时器溢出中断使能。
0:中断被禁止。
PR2,PR1,PR0:计数器预分频选择。
这三位所决定的分频因子如下表所示。分频因子选择
PR2 | PR1 | PR0 | PrescaleFactor | ||||
0 | 0 | 0 | 1 | ||||
0 | 0 | 1 | 2 | ||||
0 | 1 | 0 | 4 | ||||
0 | 1 | 1 | 8 | ||||
1 | 0 | 0 | 16 | ||||
1 | 0 | 1 | 32 | ||||
1 | 1 | 0 | 64 |
3、控制寄存器(TCTLl-TCTL4)
TCTLl-TCTL4 分为两组,分别对 IC 和 OC 电路进行设定,每组 16 个二进制位,每两个二进制位管理一个通道。其中 TCTLl、TCTL2 设定各个 OC 通道 匹配时的动作,包括切断 OC 与输出引脚的联系,而 TCTL3、TCTL4 设定 IC 响 应引脚的何种动作,包括禁止 IC 的响应。
TCTL3 寄存器偏移量:$000A
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
EDG7B | EDG7A | EDG6B | EDG6A | EDG5B | EDG5A | EDG4B | EDG4A |
TCTL4 寄存器偏移量:$000B
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
EDG3B | EDG3A | EDG2B | EDG2A | EDG1B | EDG1A | EDG0B | EDG0A |
可在任何时候读或写。
各个控制位的作用如下:
EDGnB、EDGnA 输入捕捉边沿控制位,这 8 对控制位(EDG7B、EDG7A—EDG0B、EDG0A)对输入捕捉的边沿检测电路进行设置。当二者同时为 0 时,IC 与输入引脚断开。
输入捕捉边沿检测电路设置
CnF:IC/OC 通道中断请求标志。
0:上次清除标志以来,IC/OC 通道没有有效动作。
1:IC/OC 通道已经出现动作。
以下是一段程序
void init_ECT(void)
{
TSCR2_PR = 3; // M_clock分频8
TIOS_IOS6 = 0; // T6口捕捉场同步信号
TCTL3_EDG6A = 1; // 场同步信号捕捉沿设置
TCTL3_EDG6B = 1; // 同时捕捉上升沿、下降沿
TIOS_IOS5 = 0; // T5口捕捉行同步信号
TCTL3_EDG5A = 1; // 行同步信号捕捉沿设置
TCTL3_EDG5B = 0; // 捕捉上升沿
TIE_C6I = 1; // 场同步信号中断禁止,由串口命令控制
TIE_C5I = 0; // 行同步信号中断禁止,在每一场中断中打开
TSCR1_TEN = 1; // 启动定时器
return;
}
// 场同步中断
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 14 T6OddEven(void) //场同步中断
{
}
// 行同步中断
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 13 T5RowSyn(void) //T5视频采集行同步中断
{
}
EDGnB | EDGnA | 边沿检测电路设置 |
0 | 0 | 禁止捕捉 |
0 | 1 | 捕捉上升沿 |
1 | 0 | 捕捉下降沿 |
1 | 1 | 上升沿下降沿均捕捉 |
4 IC/OC 选择寄存器(TIOS)
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
IOS7 | IOS6 | IOS5 | IOS4 | IOS3 | IOS2 | IOS1 | IOS0 |
TIOS 寄存器用于指定各个通道的功能,即工作于 IC 还是 OC 方式。当某位 IOSn=0 时,对应的通道 n 为输入捕捉(1C)通道,否则当 IOSn=1 时,通道 n为输出比较(OC)通道。其中的各位可以在任何时候写入或读出。
5 计时器中断使能寄存器(TIE)
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
C7I | C6I | C5I | C4I | C3I | C2I | C1I | C0I |
如果将 TIE 中的某位清 0,相应的标志位就不能引起硬件中断。如果被置 1,相应的标志位就可以引起中断。
6主定时器中断标志寄存器(TFLG1、TFLG2)
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
C7F | C6F | C5F | C4F | C3F | C2F | C1F | C0F |
TFLG1 对应 8 个 IC/OC 通道,当某 CnF=1 时说明对应的 IC/OC 通道有动作,表明该通道有中断事件发生
ECT实际上是一个16位的可编程计数器,它的基本时钟频率可以通过预分频器设置,用于产生波形输出,测量输入波形,统计脉冲个数,可以作为定时中断功能和独立时钟基准。
下面介绍一下用到的寄存器
1、定时器/计数器系统控制寄存器 1(TSCR1)