日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Freescale 9S12 系列單片機(jī)應(yīng)用筆記(ECT 模塊) 5

          Freescale 9S12 系列單片機(jī)應(yīng)用筆記(ECT 模塊) 5

          作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏

          實(shí)驗(yàn)5:初識(shí)輸入捕捉功能

          所謂輸入捕捉,簡(jiǎn)單的說(shuō)就是感應(yīng)輸入引腳PTx上的電平的變化,如果發(fā)現(xiàn)電平變化,則:

          本文引用地址:http://yuyingmama.com.cn/article/201611/318818.htm

          lTCNT計(jì)數(shù)器的值被保存到到輸入捕捉寄存器TCx中,狀態(tài)標(biāo)志位被置1

          l如果中斷允許,則向CPU發(fā)出中斷請(qǐng)求

          ECT模塊可以捕捉到的電平變化包括上升沿、下降沿或任意沿。簡(jiǎn)單的說(shuō)就是可以捕捉任意一種變化,功能還是很強(qiáng)悍的。

          TCx寄存器(TimerInputCapture/OutputCompare0-7)

          在介紹輸出比較功能時(shí)已經(jīng)提到過(guò)。在這里,用來(lái)記錄外部事件發(fā)生時(shí)TCNT的值。通過(guò)讀取兩次相鄰事件TCx的值就可以計(jì)算出兩次事件的間隔時(shí)間了。

          TCTL3/TCTL4寄存器(TimerControlRegister3/4)

          定時(shí)器控制寄存器TCTL3和TCTL4中的EDGxB和EDGxA位決定通道x有效跳變邊沿是上升沿、下降沿或任意跳變。具體如何設(shè)置參見(jiàn)表格2的說(shuō)明。

          表格2輸入捕捉跳變邊沿類型

          EDGxB

          EDGxA

          類型

          0

          0

          禁止

          0

          1

          上升沿

          1

          0

          下降沿

          1

          1

          任意跳變

          圖14TCTL3/TCTL4寄存器

          TCxH寄存器(TimerInputCaptureHoldingRegisters0-3)

          當(dāng)開(kāi)啟輸入捕捉功能時(shí),對(duì)應(yīng)事件發(fā)生時(shí)TCNT的值會(huì)被拷貝到TCx寄存器中。對(duì)于輸入捕捉的前4個(gè)通道,在這個(gè)拷貝發(fā)生之前還要完成一件事情,就是將TCx的值拷貝到TCxH中。因此,當(dāng)輸入捕捉中斷發(fā)生時(shí),TCx中存儲(chǔ)的是發(fā)生當(dāng)前事件時(shí)的TCNT的值,TCxH中存放的則是上一次事件發(fā)生時(shí)TCNT的值。這兩個(gè)值的差可以計(jì)算出兩次事件間隔的時(shí)間。

          程序中還要使用到的寄存器包括TIOS寄存器(TimerInputCapture/OutputCompareSelect)、TSCR1寄存器(TimerSystemControlRegister1)、TFLG1寄存器(MainTimerInterruptFlag1)和TIE寄存器(TimerInterruptEnableRegister)。在前面的介紹中已經(jīng)提到過(guò)這些寄存器了,這里就不重復(fù)了。

          下面是例子程序的部分代碼,功能很簡(jiǎn)單。連續(xù)捕捉十次上升沿對(duì)應(yīng)的TCNT,然后計(jì)算周期。

          #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; // 檢測(cè)上升沿

          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; //關(guān)閉中斷
          }
          }

          信號(hào)源還是采用 USBee AX,利用通道7 輸出的 7.8125KHz 方波。

          串口傳上來(lái)的數(shù)據(jù)為:10486

          簡(jiǎn)單計(jì)算一下:T = 10486*1/8192.0/10 = 0.128 ms

          f : 1/T = 7.815 KHz

          說(shuō)明測(cè)量的結(jié)果還是很準(zhǔn)確的。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉