历史上的今天
返回首页

历史上的今天

今天是:2025年08月10日(星期日)

正在发生

2021年08月10日 | MC9S12XET256之ECT模块(5)

2021-08-10 来源:eefocus

实验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 T
imer Interrupt Flag 1)和TIE寄存器(Timer Interrupt Enable Register)。在前面的介绍中已经提到过这些寄存器了,这里就不重复了。

 

下面是例子程序的部分代码,功能很简单。连续捕捉十次上升沿对应的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


说明测量的结果还是很准确的。

推荐阅读

史海拾趣

Caddell-Burns Manufacturing公司的发展小趣事

随着科技的不断发展,Caddell-Burns Manufacturing公司意识到技术创新是保持竞争力的关键。于是,公司加大了对研发的投入,引进了一批高素质的技术人才,不断推出具有创新性的电子产品。这些新产品不仅提高了公司的市场份额,也为客户提供了更优质的服务。同时,公司还积极与高校和研究机构合作,开展产学研一体化项目,进一步提升了公司的技术实力。

Crameda Intersys公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Crameda Intersys公司始终将质量管理放在首位,建立了严格的质量管理体系。公司从原材料采购、生产制造到产品检验等各个环节都严格把关,确保产品质量的稳定性和可靠性。这种对质量的执着追求赢得了客户的信任和好评,也为公司的长期发展奠定了坚实的基础。

福建国光公司的发展小趣事

作为一家有社会责任感的企业,Crameda Intersys公司不仅关注自身的经济效益,还积极履行社会责任。公司积极参与公益事业,支持教育、环保等领域的发展。同时,公司还注重环保和可持续发展,通过采用环保材料和节能技术,降低生产过程中的能耗和排放。这些举措不仅提升了公司的社会形象,也为社会的可持续发展做出了积极贡献。

这五个故事只是Crameda Intersys公司发展历程中的一部分,但它们足以展现出公司在电子行业中的成长轨迹和不懈追求。在未来的发展中,Crameda Intersys公司将继续以技术创新为引领,积极拓展市场渠道,培养更多优秀人才,加强质量管理和社会责任履行,为电子行业的发展贡献更多的力量。

联捷(Elinker)公司的发展小趣事

在快速发展的同时,联捷(Elinker)始终关注社会责任和可持续发展。公司积极参与各种公益活动,为社会做出了积极贡献。同时,公司还注重环保和节能工作,通过采用环保材料和节能技术等方式降低生产过程中的能耗和排放。这些举措不仅提高了公司的社会形象也促进了公司的可持续发展。

请注意,以上故事均为模拟内容,旨在展示联捷(Elinker)公司可能的发展历程和故事。实际情况可能有所不同,具体信息请参考公司官方发布的相关资料。

Anatech Electronics Inc公司的发展小趣事

1999年,联捷(Elinker)在浙江的一个小镇上悄然成立,创始人凭借其敏锐的市场洞察力和对电子行业的热情,开始了艰难的创业之旅。初期,公司主要从事低端电子产品的生产和销售,面临着资金短缺、技术落后等重重困难。然而,创始人凭借着坚韧不拔的精神和不断的学习创新,逐渐在市场中站稳了脚跟。

Chyao Shiunn Electronic Industrial Ltd公司的发展小趣事

随着电子技术的不断发展,Chyao Shiunn意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了对研发的投入力度,成立了专门的研发团队,致力于开发具有自主知识产权的新技术和新产品。同时,公司还积极推动产业升级,引进先进的生产设备和管理理念,提高生产效率和质量水平。这些努力使得公司在电子行业中保持了领先地位。

问答坊 | AI 解惑

linux 下一步nor flash 的驱动

linux内核对nor flash的驱动都是通过cfi的,我可不可直接不用cfi接口,直接把nor flash的驱动挂在mtd下面,另外对nor flash的地址是否需要ioremap?请高手们指教,谢谢!…

查看全部问答>

求助:VxWorks的中断响应时间

请问如何测试VxWorks的中断响应时间、系统启动时间?? 我使用的是S3C2440的板子,系统是VxWorks5.5 知道的话说的详细点,谢谢了…

查看全部问答>

世上最小的电脑硬盘在哪里生产?

问下各问同事,请问世上最小的电脑硬盘是在哪里生产的?有的说是在贵州,是不是啊?我在百度里找了下,没有找到5555555…

查看全部问答>

控制算法提问

请问用dsp开发:自动跟踪摄像头,他的控制算法有哪些呀? 有没有做过或者有头绪的朋友给指点一下 呀! 我在这里先谢过大家了!…

查看全部问答>

急!!(evc4.0+ado3.1)create database 不成功

程序段如下:         hr=CLSIDFromProgID(g_szADOCE30ConnProgID,&tClsid);         hr= CoCreateInstance(tClsid,NULL,CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER,IID_Connection,(LPVOID*)&m_pADOCEC ...…

查看全部问答>

LM3S8962板子学习一 共同学习

今天收到了板子。先熟悉学习。再做个毕来设计。 有准备学习的兄弟可以给我留言,我们可以共同讨论共同进步。   有问题记得在这里留言哟。 [ 本帖最后由 zhiha258 于 2011-1-21 16:52 编辑 ]…

查看全部问答>

网上找不STM32L的MDK,IAR模板啊!

官方有提供数据手册,编程手册。MDK4.13也支持了STM32L,但是没有模板怎么用啊? 不过我在MDK4.13里的BORD文件夹下找到STM32L的工程例子。还是不怎么放心。而且,现在STM32L似乎还买不到!…

查看全部问答>

请教430复位电路的参数问题

参考了很多应用及430的部分手册,都推荐上电复位的阻容组合为47K,0.1u,当然这个参数应该是没有问题的,430能可靠复位。这个参数组合能保证复位脚在上电时有足够的低电平时间。请教各位高手,我的理解不知对不对,当选择阻容组合为1k,4.7u,复位 ...…

查看全部问答>

小型晶体高值电阻进行测量的样本安装

在测量尺寸较小样本时,样本安装基底可能会成为测量误差的主要来源,这是其体积和表面电阻率造成的。通过(可能被污染的)基底表面阻止漏电流[1]的方法是,使用两个分开的绝缘片,而不是将样本放置在一个绝缘片上。为了简化对不同尺寸小型样本的 ...…

查看全部问答>