音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

有沒(méi)有用過(guò)LPC2104的捕獲啊!我怎么捕獲的數(shù)值跳變很大啊

作者:usbfd 欄目:ARM技術(shù)
有沒(méi)有用過(guò)LPC2104的捕獲!我怎么捕獲的數(shù)值跳變很大啊
這是初始化
/****************************************************************************
【功能說(shuō)明】Time捕獲初始化
****************************************************************************/
void Time0_cap(void)
{
    T0PR    =2;
    T0CCR    =0;
    T0EMR    =0; //無(wú)匹配輸出
    T0MCR    =3;    //匹配中斷,復(fù)位,HOLD
    T0IR    =0xff;
    T0TCR    =1;
    T0MR0    =3125;    //匹配625uS
    
    T1PR    =2; //    (Fpclk/4)3分頻        15M/3  5M/0.2us
    T1CCR    =6; //    上升!沿捕獲,事件中斷
    T1EMR    =0;    //  無(wú)匹配輸出
    T1MCR    =1; //  匹配中斷
    T1IR    =0xff;
    T1TCR    =1; //  E T0
    T1MR0    =0xffffffff;    //溢出中斷
    
}
這是中斷程序,匹配一次都沒(méi)發(fā)生過(guò)
/***************************************************
**      周期計(jì)數(shù)
***************************************************/
void __irq IRQ_T1cap(void)     // T1捕獲中斷到向量中斷1(5)
{
uint32    i;//,bakVIC;

    //bakVIC         = VICIntEnable;        // 備份當(dāng)前VICIntEnable的值
    //VICIntEnClr = (1<<4);    // 禁止當(dāng)前優(yōu)先級(jí)中斷及低優(yōu)先級(jí)中斷

    i            =T1IR;
       T1IR        =0xff;
    
       if((i&0x1)==1)
       {
           WattInp++;
           T1MR0    +=freq_sample;
           //U0THR    ='M';
       }
       if((i&0x10)==0x10)                                                
       {
           freqcount        &=0x7;
           freqtime[freqcount]    =T1CR0;//50Hz/200k
           freqcount++;
           if((freqcount%2)==1)
           IOCLR        =(1<<9);//TEST
           else    IOSET        =(1<<9);//TEST
    }
    //VICIntEnable = bakVIC;
       VICVectAddr = 0x00;    
}
一開(kāi)始我輸入的是50HZ,測(cè)p0.9是25HZ很準(zhǔn),但數(shù)值跳變大!
然后我用T0中斷信號(hào)直接給t1.0捕獲,數(shù)值還是跳變

2樓: >>參與討論
robinsun
我的程序
/********************************************************************************
  文件: timer.c
  說(shuō)明:將跟timer相關(guān)的脈沖輸入驅(qū)動(dòng)函數(shù)寫在本文件中
  原理:定時(shí)器有2個(gè)32位定時(shí)器,分別具有4路捕獲輸入÷4路比較匹配輸出。定時(shí)器是增量計(jì)數(shù)的,但
       上溢時(shí)不會(huì)產(chǎn)生中斷標(biāo)志,而只能通過(guò)比較匹配或者捕獲輸入產(chǎn)生中斷標(biāo)志。
       脈沖輸入的頻率測(cè)量方法:測(cè)量一定脈沖所用的時(shí)間。
       常用數(shù)字頻率測(cè)量方法有M法、T法和M/T法。M法是在給定的閘門時(shí)間內(nèi)測(cè)量被測(cè)信號(hào)的脈沖個(gè)數(shù),
       進(jìn)行換算得出被測(cè)信號(hào)的頻率。這種測(cè)量方法的測(cè)量精度取決于閘門時(shí)間和被測(cè)信號(hào)頻率。
       當(dāng)被測(cè)信號(hào)頻率較低時(shí)將產(chǎn)生較大誤差,除非閘門時(shí)間取得很大。所以這種方法比較適合測(cè)量
       高頻信號(hào)的頻率。T法是通過(guò)測(cè)量被測(cè)信號(hào)的周期然后換算出被測(cè)信號(hào)的頻率。這種測(cè)量方法的
       測(cè)量精度取決于被測(cè)信號(hào)的周期和計(jì)時(shí)精度,當(dāng)被測(cè)信號(hào)頻率較高時(shí),對(duì)計(jì)時(shí)精度的要求就很高。
       這種方法比較適合測(cè)量頻率較低的信號(hào)。M/T法具有以上兩種方法的優(yōu)點(diǎn),它通過(guò)測(cè)量被測(cè)信號(hào)
       數(shù)個(gè)周期的時(shí)間然后換算得出被測(cè)信號(hào)的頻率,可兼顧低頻與高頻信號(hào),提高了測(cè)量精度。
  編寫者: robinsun
  版本控制:
    ----------------------------------------------------------------------------
    版本號(hào)        日期                修改內(nèi)容                        修改者
    ----------------------------------------------------------------------------
    1.0        2004.12.30            初稿                        robinsun
    ----------------------------------------------------------------------------
********************************************************************************/
//定義是否打印調(diào)試語(yǔ)句,定義了就打印
//#define _PRINT_DEBUG 1
#define _TIMER_C

#include "config.h"
#include "include\timer.h"
#include "include\serial.h"

/******************************************
* 名稱    :  void Timer_Init(void)
* 功能描述:  脈沖輸入部分的初始化,一開(kāi)始設(shè)置為輸入捕獲,同步測(cè)量脈沖
* 輸入?yún)⒘?  無(wú)
* 輸出參量:  無(wú)
* 調(diào)用子程:  無(wú)
* 使用方法:
--------------—*/
void Timer0_Init(void)
{
    T0PR=99;                //設(shè)定定時(shí)器0的分頻為100分頻,的10592HZ
                            //采用11.0592M.html">11.0592M晶振,采用PLL部件,F(xiàn)cclk=Fosc×4,外圍時(shí)鐘采用復(fù)位默認(rèn)的Fpclk/4
                            //計(jì)數(shù)時(shí)鐘頻率=Fpclk/(N+1)
    T0MCR=0x03;             //匹配通道0匹配中斷并復(fù)位T0TC
    T0MR0=11.0592;         
    T0TCR=0x03;
    T0TCR=0x01;             //啟動(dòng)復(fù)位
}


/******************************************
* 名稱    :  void Timer_Init(void)
* 功能描述:  定時(shí)器0中斷服務(wù)程序
* 輸入?yún)⒘?  無(wú)
* 輸出參量:  無(wú)
* 調(diào)用子程:  無(wú)
* 使用方法:  最后將脈沖的數(shù)據(jù)輸出到全局變量
--------------—*/
void __irq  IRQ_Timer1(void)
{   
    uint32 TempCapTime;                                                                                   
   PluseNum++;

   if( (IO0SET&LEDCON) == 0 ) IO0SET = LEDCON;     //進(jìn)行LED4的取反控制 控制LED4點(diǎn)亮
      else  IO0CLR = LEDCON;                            // 控制LED4熄滅          
/*
   Prints("PUSH ");
   Puthexbyte(PluseNum>>8);
   Puthexbyte(PluseNum);
   Prints("\r\n");*/
   if(PluseNum==PULSE_TEST_NUM)                  //如果脈沖的的個(gè)數(shù)到了規(guī)定的5個(gè)
   {
         TempCapTime=T1CR3;                         //暫存輸入捕獲時(shí)鐘
         TempCapTime=TempCapTime-CapTime;           //計(jì)算出5個(gè)脈沖的間隔時(shí)間
         Puthexbyte(TempCapTime>>8);
      Puthexbyte(TempCapTime);
         PluseFreq=5*110592/TempCapTime;
         Prints("\r\n");
         Puthexbyte(PluseFreq);
         Prints("\r\n");
      T1CCR |= (1<<9);                           //cap1.3上上升沿跳變將TC內(nèi)容裝入CR3
      T1CCR &= (0xFFFF-(1<<10));
      PluseNum=0;
      T1TC=0;
      DISABLE_TIMER_INT;
   }
   else
   {      
         CapTime=T1CR3;                             //將輸入捕獲寄存器的數(shù)據(jù)讀出來(lái)
        /* Puthexbyte(CapTime>>24);
      Puthexbyte(CapTime>>16);
         Puthexbyte(CapTime>>8);
  &
3樓: >>參與討論
usbfd
謝謝!
謝謝!我現(xiàn)在發(fā)現(xiàn)了,原來(lái)定時(shí)器時(shí)間問(wèn)題
    T1PR    =2; //    (Fpclk/4)3分頻        15M/3  5M/0.2us
    T1CCR    =6; //    上升!沿捕獲,事件中斷
    T1EMR    =0;    //  無(wú)匹配輸出
    T1MCR    =1; //  匹配中斷
    T1IR    =0xff;
    T1TCR    =1; //  E T0
    T1MR0    =0xffffffff;    //溢出中斷
我設(shè)的應(yīng)該是多長(zhǎng)時(shí)間計(jì)數(shù)器加一。『孟癫粚(duì)哦
Fcclk/60M  Fpclk/15M 

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
“cann't open the communication"
請(qǐng)教周工:
為什么2114這么脆弱??????
請(qǐng)問(wèn)周工:用2214作板的問(wèn)題
lpc2200 ad轉(zhuǎn)換問(wèn)題
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)