久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3571|回復: 0
收起左側

DSP2812捕獲發脈沖

[復制鏈接]
ID:135859 發表于 2016-8-3 11:20 | 顯示全部樓層 |閱讀模式




//注:脈沖輸出無論設置為高有效或是低有效,只要不啟動定時器輸出的均為高電平。

//此函數采用捕獲中斷捕獲到同步信號即發脈沖
//發脈沖時遵循以下公式:(T1CMPR比較值)+脈寬=T1PR周期,而計數初值T1CNT=觸發腳對應值,就可以確定出T1CMPR,T1CNT,T1PR三個值
//注使用事件管理器的中斷也要使能這層中斷與其它中斷不太一樣

//TXCON簡介
   //獨立的GP定時控制寄存器
                           //用來決定處于4種計數模式中的哪一種,GP定時器使用內部還是外部時鐘,使用8種預定標因子中的哪一種
                           //定時比較寄存器重載后進入哪種狀態,定時器被使能還是禁止,周期寄存器采用定時器1,2還是自身的周期寄存器
                           //周期寄存器采用定時器3,4還是自身的周期寄存器

#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
#include "math.h"

//////捕獲中斷4
interrupt void evb_cap4_isr(void);
//////捕獲中斷5
interrupt void evb_cap5_isr(void);   
//////捕獲中斷6
interrupt void evb_cap6_isr(void);
//////外部區設置
void InitXintf(void);
/////系統初始化包括系統時鐘
void InitSysCtrl(void);
/////IO口初始化
void InitGpio() ;
/////中斷
void InitPieCtrl(void);
/////中斷向量表
void InitPieVectTable(void);
/////中斷初始化
void Initinterrupt(void);
int   zhuangtai[520]=0;           

//--------------主函數-----------------------------
void main()
{
Uint16 i=0;

InitSysCtrl();//系統初始化



InitXintf();//初始化外部RAM XINTF
       

       
InitGpio();//初始化GPIO口

/////////初始化EVA
////TXCON定時器控制寄存器
////15FREE,14SOFT仿真控制位(00仿真掛起時立即停止,01仿真掛起,完成當前定時器周期后停止,10仿真掛起不影響操作,11仿真掛起不影響操作,
////13Reserved    讀操作返回0,寫操作沒有影響
////12,11TMODE 00停止/保持模式,01連續增/減計數模式,10連續遞增計數模式,11方向增/減計數模式

   EvaRegs.T1CON.all=0x9046;
   EvaRegs.T2CON.all=0x9046;             //disable time1 and timer2

/////擴展控制寄存器
    EvaRegs.EXTCONA.bit.INDCOE=1;
    EvaRegs.GPTCONA.all=0x007f;

    EvaRegs.T1PR=0x6F70;   //周期10ms  100hz
    EvaRegs.T1CMPR=0x644A;  //比較值   1ms觸發

    EvaRegs.T2PR=0x6F70;   
    EvaRegs.T2CMPR=0x644a;  
////EVB里的     
    EvbRegs.EXTCONB.bit.INDCOE=1;
    EvbRegs.GPTCONB.all=0x0052;

    EvbRegs.T3PR=0x6F70;   
    EvbRegs.T3CMPR=0x644a;  

  //////以上是與定時器相關的


///////捕獲
    EvbRegs.CAPCONB.all=0;
    //EvbRegs.CAPFIFOB.bit.CAP4FIFO=0;
    //EvbRegs.CAPFIFOB.bit.CAP5FIFO=0;
   // EvbRegs.CAPFIFOB.bit.CAP6FIFO=0;
//////捕獲中斷
    EvbRegs.EVBIFRC.bit.CAP4INT=1;
    EvbRegs.EVBIFRC.bit.CAP5INT=1;
    EvbRegs.EVBIFRC.bit.CAP6INT=1;

        EvbRegs.EVBIMRC.all=0x0007;//中斷屏蔽寄存器

    EvbRegs.T4PR=12500;
        EvbRegs.T4CNT=0x0001;

   EvbRegs.EVBIFRB.bit.T4PINT=1;
   EvbRegs.EVBIMRB.bit.T4PINT=1;
   EvbRegs.T4CON.all=0x9744;
   EvbRegs.CAPCONB.all=0x3054;



EvbRegs.T3CNT=300;
EvaRegs.T2CNT=300;
EvaRegs.T1CNT=300;
EvbRegs.T3CON.all=0x9046;
EvaRegs.T2CON.all=0x9046;
EvaRegs.T1CON.all=0x9046;
//EvaRegs.T1CON.all=0x9046;
/*       
EALLOW;//發生中斷時調用中斷函數sciaRxFifoIsr,scibRxFifoIsr
SysCtrlRegs.WDCR= 0x002F;
    EDIS;
*/       
for(i=0;i<520;i++)
zhuangtai[i]=0;

       
Initinterrupt();//初始化中斷

zhuangtai[0]=GpioDataRegs.GPADAT.all&0XC0;
               
while(1)
{

}                  


}   











interrupt void evb_cap6_isr()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
{

int  z=0;
  DINT;





EvbRegs.T3CON.all=0;

EvbRegs.T3CNT=200;


EvbRegs.T3CON.all=0x9046;


re:        EvbRegs.EVBIFRC.bit.CAP6INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP5;
EINT;
}   

interrupt void evb_cap5_isr()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
{

int  n=0;
  DINT;

EvaRegs.T2CON.all=0;

EvaRegs.T2CNT=200;



EvaRegs.T2CON.all=0x9046;


re:        EvbRegs.EVBIFRC.bit.CAP5INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP5;
EINT;
}  


interrupt void evb_cap4_isr()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
{

int  m=0;
  DINT;


EvaRegs.T1CON.all=0;


EvaRegs.T1CNT=200;

  EvaRegs.T1CON.all=0x9046;

re:        EvbRegs.EVBIFRC.bit.CAP4INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP5;
EINT;
}






void Initinterrupt(void)
{

DINT;//屏蔽全局中斷(INTM=1),置1,關中斷

    InitPieCtrl();//初始化PIE控制寄存器

    IER=0x0000;//禁止所有的CPU級中斷
    IFR=0x0000;//清除CPU級中斷標志位

    InitPieVectTable();//初始化PIE中斷向量表

//InitCpuTimers();

    EALLOW;//發生中斷時調用中斷函數sciaRxFifoIsr,scibRxFifoIsr

    EDIS;
EALLOW;
PieVectTable.CAPINT6=&evb_cap6_isr;
  PieVectTable.CAPINT4=&evb_cap4_isr;
PieVectTable.CAPINT5=&evb_cap5_isr;


EDIS;



PieCtrlRegs.PIEIER5.bit.INTx5=1;//開啟第5組中斷(捕獲的三個中斷在此組里)

      IER|=M_INT5;

       
    EINT;//使能全局中斷(INTM=0),置0,開中斷
    ERTM; //開全局實時中斷,使能中斷調試寄存器DBGM


}

void InitGpio()  //io點第二功?輸入  輸出設定
{
EALLOW;
//使薌拇嫫?
GpioMuxRegs.GPAMUX.all = 0x00FF; // 將EVA PWM 1-6 引腳配置
GpioMuxRegs.GPBMUX.all = 0x00FF; // 將EVB PWM 7-12 引腳配置




       
       

EDIS;
}

/////////////////











void InitSysCtrl(void)
{
  Uint16 i;
   EALLOW;

// 對于TMX產品,為了能夠使得片內RAM模塊M0/M1/L0/L1LH0能夠獲得最好的性能,控萍拇嫫韉奈?
// 必須使能,這些位在設備硬件仿真寄存器內。TMX是TI的試驗型產品


// 禁止看門狗模塊
   SysCtrlRegs.WDCR= 0x0068;


// 初始化PLL模塊
   SysCtrlRegs.PLLCR.all = 0x08; //如果外部晶振為20M,則SYSCLKOUT=20*1/2=10MHz

// 延時,使得PLL模塊能夠完成初始化操作
   for(i= 0; i< 5000; i++){}

// 高速時鐘預定標器和低速時鐘預定標器,產生高速外設時鐘HSPCLK和低速外設時鐘LSPCLK
   //SysCtrlRegs.LOSPCP.all = 0x00000;        // LSPCLK=10/1=10MHz
SysCtrlRegs.HISPCP.all=0x07;
SysCtrlRegs.LOSPCP.all=0x07;
// 對工程中使用到耐設進行時鐘使能
   SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
   SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;  // SCIA模塊時鐘使能
   SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;  // SCIA模塊時鐘使能
                               
   EDIS;
       


                               

       
}

//---------------------------------------------------------------------------
// KickDog:
//---------------------------------------------------------------------------
// This function resets the watchdog timer.
// Enable this function for using KickDog in the application
void InitXintf(void)
{

       
    // Example of chaning the timing of XINTF Zones.  
    // Note acutal values should be based on the hardware
    // attached to the zone - timings presented here are
    // for example purposes.

    // All Zones:
    // Timing for all zones based on XTIMCLK = SYSCLKOUT/2
    XintfRegs.XINTCNF2.bit.XTIMCLK = 0;  // XTIMCLK = SYSCLKOUT/2
    XintfRegs.XINTCNF2.bit.CLKOFF = 1;   // DISABLE XCLKOUT
        XintfRegs.XINTCNF2.bit.WRBUFF = 0;   // NO WRITE BUFFER
        XintfRegs.XINTCNF2.bit.CLKMODE = 0;  // XCLKOUT = XTIMCLK/4

        // Zone 0
        // Ignore XREADY for Zone 1 accesses
        // Change read access lead/active/trail timing
        XintfRegs.XTIMING0.bit.USEREADY = 0;
        XintfRegs.XTIMING0.bit.XSIZE = 3;                // ALWAYS WRITE TO 11BIT
        XintfRegs.XTIMING0.bit.XWRACTIVE = 3;
        XintfRegs.XTIMING0.bit.XWRTRAIL=7;
        XintfRegs.XTIMING0.bit.XWRLEAD=3;
        XintfRegs.XTIMING0.bit.XRDLEAD = 3;
        XintfRegs.XTIMING0.bit.XRDACTIVE =7;
        XintfRegs.XTIMING0.bit.XRDTRAIL = 3;




       
    XintfRegs.XBANK.bit.BCYC = 7;        
    XintfRegs.XBANK.bit.BANK = 2;
       

        // Zone 2
        // Ignore XREADY for Zone 2 accesses
        // Change read access lead/active/trail timing
        XintfRegs.XTIMING2.bit.USEREADY = 0;
        XintfRegs.XTIMING2.bit.XSIZE = 3;
        XintfRegs.XTIMING2.bit.XWRACTIVE = 3;
        XintfRegs.XTIMING2.bit.XWRTRAIL=7;
        XintfRegs.XTIMING2.bit.XWRLEAD=3;
        XintfRegs.XTIMING2.bit.XRDLEAD = 3;
        XintfRegs.XTIMING2.bit.XRDACTIVE =7;
        XintfRegs.XTIMING2.bit.XRDTRAIL = 3;
        //no Double lead/active/trial timing for Zone 2
        XintfRegs.XTIMING2.bit.X2TIMING=1;

       
XintfRegs.XINTCNF2.bit.CLKOFF = 0;//

       
}

//************************************
//         初始化PIE控制寄存器
//************************************
void InitPieCtrl(void)
{
        // 禁止PIE模塊
     PieCtrlRegs.PIECRTL.bit.ENPIE = 0;

        // 禁止PIE所有中斷
     PieCtrlRegs.PIEIER1.all = 0;
     PieCtrlRegs.PIEIER2.all = 0;
     PieCtrlRegs.PIEIER3.all = 0;       
     PieCtrlRegs.PIEIER4.all = 0;
     PieCtrlRegs.PIEIER5.all = 0;
     PieCtrlRegs.PIEIER6.all = 0;
     PieCtrlRegs.PIEIER7.all = 0;
     PieCtrlRegs.PIEIER8.all = 0;
     PieCtrlRegs.PIEIER9.all = 0;
     PieCtrlRegs.PIEIER10.all = 0;
     PieCtrlRegs.PIEIER11.all = 0;
     PieCtrlRegs.PIEIER12.all = 0;

        // 清除所蠵IEIFR的中斷標志位
     PieCtrlRegs.PIEIFR1.all = 0;
     PieCtrlRegs.PIEIFR2.all = 0;
     PieCtrlRegs.PIEIFR3.all = 0;       
     PieCtrlRegs.PIEIFR4.all = 0;
     PieCtrlRegs.PIEIFR5.all = 0;
     PieCtrlRegs.PIEIFR6.all = 0;
     PieCtrlRegs.PIEIFR7.all = 0;
     PieCtrlRegs.PIEIFR8.all = 0;
     PieCtrlRegs.PIEIFR9.all = 0;  
     PieCtrlRegs.PIEIFR10.all = 0;
     PieCtrlRegs.PIEIFR11.all = 0;
     PieCtrlRegs.PIEIFR12.all = 0;

        // 使能PIE模塊
     PieCtrlRegs.PIECRTL.bit.ENPIE = 1;
     PieCtrlRegs.PIEACK.all = 0xFFFF;
}       

//***********************************
//        初始化PIE中斷向量表
//***********************************

void InitPieVectTable(void)
{
        Uint16        i;
        Uint32 *Source = (void *) &PieVectTable;
        Uint32 *Dest = (void *) &PieVectTable;
               
        EALLOW;       
        for(i=0; i < 128; i++)
                *Dest++ = *Source++;       
        EDIS;

        // 使能PIE向量表
PieCtrlRegs.PIECRTL.bit.ENPIE = 1;       
                       
}


       
       













評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区视频在线 | 91精品国产综合久久久久久丝袜 | 国产三级一区二区三区 | 午夜精品久久久久久久久久久久久 | 亚洲日韩中文字幕一区 | 久久网站黄 | 在线91| 亚洲欧美中文日韩在线v日本 | 亚洲一区在线日韩在线深爱 | 在线欧美视频 | 国产精品久久久久一区二区三区 | 91视频大全 | 毛片韩国| 亚洲人人 | 成人欧美一区二区三区白人 | 欧美jizzhd精品欧美巨大免费 | av一级| 国产sm主人调教女m视频 | 久久高清| 中文字幕精品视频 | 国产高清自拍视频在线观看 | 日本天天操 | 午夜影院 | 国产小视频精品 | 爱综合| 五月天综合网 | 国内精品久久精品 | 麻豆亚洲| 色综合天天天天做夜夜夜夜做 | 欧美成人自拍 | 性色视频在线观看 | 免费精品久久久久久中文字幕 | 一区二区三区高清不卡 | 亚洲天堂影院 | 欧美αv| 久久精品欧美一区二区三区麻豆 | 成人在线观看免费视频 | 久久精品中文 | 九九综合 | 国产精品一区二区精品 | www.男人天堂.com |