实验5:初识输入捕捉功能
所谓输入捕捉,简单的说就是感应输入引脚PTx上的电平的变化,如果发现电平变化,则:
l TCNT计数器的值被保存到到输入捕捉寄存器TCx中,状态标志位被置 1
l 如果中断允许,则向CPU发出中断请求
ECT 模块可以捕捉到的电平变化包括上升沿、下降沿或任意沿。简单的说就是可以捕捉任意一种变化,功能还是很强悍的。
TCx 寄存器(Timer Input Capture/Output Compare 0-7)
在介绍输出比较功能时已经提到过。在这里,用来记录外部事件发生时TCNT的值。通过读取两次相邻事件 TCx 的值就可以计算出两次事件的间隔时间了。
TCTL3/TCTL4 寄存器(Timer Control Register 3/4)
定时器控制寄存器TCTL3和TCTL4中的EDGxB和EDGxA位决定通道 x 有效跳变边沿是上升沿、下降沿或任意跳变。具体如何设置参见表格 2 的说明。
表格 2 输入捕捉跳变边沿类型
EDGxB |
EDGxA |
类型 |
0 |
0 |
禁止 |
0 |
1 |
上升沿 |
1 |
0 |
下降沿 |
1 |
1 |
任意跳变 |
图 14 TCTL3/TCTL4 寄存器
TCxH寄存器(Timer Input Capture Holding Registers 0-3)
当开启输入捕捉功能时,对应事件发生时TCNT的值会被拷贝到TCx 寄存器中。对于输入捕捉的前4个通道,在这个拷贝发生之前还要完成一件事情,就是将TCx 的值拷贝到TCxH中。因此,当输入捕捉中断发生时,TCx 中存储的是发生当前事件时 的TCNT 的值,TCxH 中存放的则是上一次事件发生时TCNT 的值。这两个值的差可以计算出两次事件间隔的时间。
程序中还要使用到的寄存器包括TIOS寄存器(Timer Input Capture/Output Compare Select)、TSCR1寄存器(Timer System Control Register 1)、TFLG1寄存器(Main Timer Interrupt Flag 1)和TIE寄存器(Timer Interrupt Enable Register)。在前面的介绍中已经提到过这些寄存器了,这里就不重复了。
下面是例子程序的部分代码,功能很简单。连续捕捉十次上升沿对应的TCNT,然后计算周期。
#include
#include "derivative.h" /* derivative-specific definitions */
#include "sci.h"
void ECTInit(void)
{
TIOS_IOS0 = 0; // channel 0 as output compare
TIE_C0I = 1; // 使能 channel 0 中断
TCTL4_EDG0A = 1;
TCTL4_EDG0B = 0; // 检测上升沿
TSCR1_TEN = 1; //timer enable
}
unsigned short buf[11];
char flag;
void main(void)
{
long interval = 0;
char i;
SCIInit();
SCISetBaudRate (SCI0, 9600, 8192000L);
ECTInit();
EnableInterrupts;
flag = 0;
for(;;)
{
if(flag == 1)
{
for( i = 0; i < 10; i++)
{
interval += buf[i+1] - buf[i];
}
SCIPutShort(SCI0, interval >> 16);
SCIPutShort(SCI0, interval & 0xffff);
}
_FEED_COP(); /* feeds the dog */
} /* loop forever */
}
interrupt VectorNumber_Vtimch0 void ECT_0_ISR(void)
{
static int i = 0;
TFLG1 = TFLG1_C0F_MASK; //clear channel 0 interrupt flag
buf[i++] = TC0;
if (i == 11)
{
flag = 1;
i = 0;
TIE_C0I = 0; //关闭中断
}
}
信号源还是采用 USBee AX,利用通道7 输出的 7.8125KHz 方波。
串口传上来的数据为:10486
简单计算一下:T = 10486*1/8192.0/10 = 0.128 ms
f : 1/T = 7.815 KHz
说明测量的结果还是很准确的。
上一篇:Freescale 9S12 系列单片机应用笔记(ECT 模块) 4
下一篇:Freescale 9S12 系列单片机应用笔记(ECT 模块) 3
推荐阅读最新更新时间:2024-03-16 14:53
设计资源 培训 开发板 精华推荐
- 下载有礼|精华课件汇编:泰克半导体器件的表征及可靠性研究交流会暨吉时利测试测量年度研讨会
- 泰克示波器旅行指南 更高带宽、更低噪声、更多通道
- 了解Keithley 4200-SCS参数分析仪,下载技术文章,抽奖赢礼!
- 答题有礼: 寻觅可靠的触控、手势控制解决方案?快来认识新一代AVR DA单片机
- 借助 Microchip 生态系统中的 PIC® 和 AVR® 单片机开启嵌入式到云端之旅 系列在线研讨会
- 有奖直播:瑞萨电子 R-Car 先进驾驶辅助系统方案
- Intel最新物联网解决方案,抢先阅读,下载有惊喜
- 知否知否 应是更多汽车方案
- TI 最新CapTIvate™ 触控微控制器技术直播开始报名喽!报名参与有礼呦!
- 有奖技术直播:Keysight量子计算测量方案线上研讨会