您的位置 首页 产品

Freescale 9S12 系列单片机使用笔记(ECT 模块) 5

实验5:初识输入捕捉功能所谓输入捕捉,简单的说就是感应输入引脚PTx上的电平的变化,如果发现电平变化,则:lTCNT计数器的值被保存到到输…

试验5:初识输入捕捉功用

所谓输入捕捉,简略的说便是感应输入引脚PTx上的电平的改变,假如发现电平改变,则:

lTCNT计数器的值被保存到到输入捕捉寄存器TCx中,状况标志位被置1

l假如中止答应,则向CPU宣布中止请求

ECT模块能够捕捉到的电平改变包含上升沿、下降沿或恣意沿。简略的说便是能够捕捉恣意一种改变,功用仍是很强悍的。

TCx寄存器(TimerInputCapture/OutputCompare0-7)

在介绍输出比较功用时现已提到过。在这儿,用来记载外部工作产生时TCNT的值。经过读取两次相邻工作TCx的值就能够核算出两次工作的间隔时刻了。

TCTL3/TCTL4寄存器(TimerControlRegister3/4)

定时器操控寄存器TCTL3和TCTL4中的EDGxB和EDGxA位决议通道x有用跳变边缘是上升沿、下降沿或恣意跳变。详细怎么设置拜见表格2的阐明。

表格2输入捕捉跳变边缘类型

EDGxB

EDGxA

类型

0

0

制止

0

1

上升沿

1

0

下降沿

1

1

恣意跳变

图14TCTL3/TCTL4寄存器

TCxH寄存器(TimerInputCaptureHoldingRegisters0-3)

当舱位输入捕捉功用时,对应工作产生时TCNT的值会被劳动到TCx寄存器中。关于输入捕捉的前4个通道,在这个劳动产生之前还要完结一件工作,便是将TCx的值劳动到TCxH中。因而,当输入捕捉中止产生时,TCx中存储的是产生当时工作时的TCNT的值,TCxH中寄存的则是上一次工作产生时TCNT的值。这两个值的差能够核算出两次工作间隔的时刻。

程序中还要使用到的寄存器包含TIOS寄存器(TimerInputCapture/OutputCompareSelect)、TSCR1寄存器(TimerSystemControlRegister1)、TFLG1寄存器(MainTimerInterruptFlag1)和TIE寄存器(TimerInterruptEnableRegister)。在前面的介绍中现已提到过这些寄存器了,这儿就不重复了。

下面是比如程序的部分代码,功用很简略。接连捕捉十次上升沿对应的TCNT,然后核算周期。

#include /* common defines and macros */
#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

阐明丈量的成果仍是很精确的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/264185.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部