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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4378|回復: 0
打印 上一主題 下一主題
收起左側

DSP之時鐘與定時器之二通用定時器

[復制鏈接]
跳轉到指定樓層
樓主
ID:88957 發表于 2017-5-21 18:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

C55x DSP片內有兩個2通用定時器,利用定時器可向CPU產生周期性中斷或向DSP片外的器件提供周期信號。其中TMS320VC5503/5507/5509/5510 DSP提供的是2個20位通用定時器.
1 結構框圖
20位的定時器由兩部分組成:一個4位的預定標器(PSC)和一個16位的主計數器(TIM)。
定時器有兩個計數寄存器(PSC,TIM)和兩個周期寄存器(TDDR,PRD),在定時器初始化過程中,周期寄存器的內容拷貝到計數寄存器中。
2 工作原理
    定時器的工作時鐘可以來自DSP內部的CPU時鐘,也可以來自引腳TIN/TOUT。
    定時器控制寄存器(TCR)中的字段FUNC可以確定時鐘源和TIN/TOUT引腳的功能,這樣定時器的工作模式包括以下幾種:
當FUNC=00b時,TIN/TOUT為高阻態,時鐘源是內部時鐘(CPU時鐘)。
當FUNC=01b時,TIN/TOUT為定時器輸出,時鐘源是內部時鐘(CPU時鐘)。
當FUNC=10b時,TIN/TOUT為通用輸出,時鐘源是內部時鐘(CPU時鐘)。
當FUNC=11b時,TIN/TOUT為定時器輸入,時鐘源是外部時鐘。
     在定時器中,預定標器由輸入時鐘驅動,PSC在每個輸入時鐘周期減1,當其減到0時,TIM減1,當TIM減到0,定時器向CPU發送一個中斷請求(TINT)或向DMA控制器發送同步事件。定時器發送中斷信號或同步事件信號的頻率可用下式計算:
    TINT頻率 = 輸入時鐘頻率 /  (TDDR + 1) * (PRD+1)
    通過設置TCR中的自動重裝控制位ARB,可使定時器工作于自動重裝模式,當TIM減到0,重新將周期寄存器(TDDR,PRD)的內容拷貝到計數寄存器(PSC,TIM)中,繼續定時。
每個定時器包括4個寄存器,即定時器預定標寄存器PRSC、主計數寄存器TIM、主周期寄存器PRD和定時器控制寄存器TCR。
3 使用方法
在定時器的工作過程中,要注意以下因素對定時器的影響。
1.初始化定時器
通用定時器的初始化過程如下:
(1)停止計時(TSS=1),定時器裝載使能(TLB=1),  并將周期寄存器(TIM,PSC)的內容拷貝到計數寄存器(PRD,TDDR);
(2)將預定標計數周期數寫入TDDR;
(3)將主計數器周期數裝入PRD;
(4)關閉定時器裝載(TLB=0),啟動計時(TSS=0)。
2.停止/啟動定時器
利用時鐘控制寄存器中的TSS位可以停止或啟動定時器。
TSS=1,停止計時
TSS=0,啟動計時
3.DSP復位
DSP復位后定時器的寄存器將按照如下規則復位:
l停止定時(TSS=1);
預定標計數器值為0;
主計數器值為FFFFh;
定時器不進行自動重裝(ARB=0);
idle指令不能使定時器進入省電模式;
仿真時遇到軟件斷點定時器立即停止工作;
TIN/TOUT為高阻態,時鐘源是內部時鐘(FUNC=00b)。
4 通用定時器的應用
如果使用芯片支持庫函數對通用定時器進行編程,則必須包含頭文件csl_timer.h。
        首先定義通用定時器句柄和配置結構:
TIMER_Handle hTimer;
TIMER_Config Config_TIMER = {
0X0310,
/*; 載入 TCR0t:
; IDLE_EN = 0 (不允許空閑狀態)
; FUNC = 00b (引腳為高阻態)
; TLB = 0 (TLB 被清除)
; FREE = 1 (遇到斷點時時鐘不停止)
; PWID = 00b (脈沖延遲一個 CPU 時鐘周期)
; ARB = 1 (當TIM計數到0時重新載入TIM和
; PSC)
; TSS = 1 (停止計數器)
; C/P = 0 (引腳輸出為脈沖模式)
; POLAR = 0 (引腳信號開始為低)
; 其他為0
*/
0X197,
/* prd = 407 */
0X0007
/*  prsc = 7 TDDR=7 */
//; 計數器每 3264(408*8) 個時鐘周期輸出:
};
接下來打開句柄:
hTimer = TIMER_open(TIMER_DEV0,0);//設置計數器0,中斷20K/s
          調用定時器配置函數對計數器初始化:
TIMER_config(hTimer,&Config_TIMER);
          調用定時器開始函數使定時器開始工作:
TIMER_start(hTimer);
           如果在程序中需要暫時停止定時器計數可以調用定時器停止函數:
TIMER_stop(hTimer);
           當使能定時器中斷時,則當定時中斷發生時將運行定時中斷服務程序:
interrupt void Timer0_Isr()
{
……
}
5 通用定時器的調試
通用定時器可以產生定時中斷,或者作為DMA同步事件來同步DMA傳送,如果將通用定時器的輸出從通用定時器引腳引出,也可以為系統的其他部分提供定時。
        通用定時器的調試步驟如下:
設定通用定時器的時鐘源,通用定時器的時鐘源可以是CPU時鐘,也可由外部信號提供,如果選擇外部時鐘,則需要將這個信號從TIN/TOUT引腳引入,應當注意此時TIN/TOUT引腳將不能夠作為定時器輸出使用;
正確設置定時器寄存器值,使定時器開始工作;
在定時器中斷服務程序中設置斷點,看能否進入定時中斷,如果定時器的時鐘源是CPU時鐘,這時也可以將定時器信號從TIN/TOUT引腳輸出,通過示波器檢測定時器輸出是否正常


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃 | 久久久综合网 | 国产精品99久久久精品免费观看 | 天天干天天爱天天操 | 免费看国产精品视频 | 免费国产一区二区视频 | 国产精品亚洲视频 | 日韩在线视频免费观看 | 国产精品久久久久久久久图文区 | 九九九久久国产免费 | 久久国产高清视频 | 日日夜夜天天久久 | 91 久久| 日本一本在线 | 成人在线看片 | 国产成人免费网站 | av天天澡天天爽天天av | 成人av在线网站 | 日韩一区二区三区在线 | 四虎网站在线观看 | 午夜视频免费在线观看 | 午夜视频大全 | 国产美女久久 | 精品欧美二区 | 蜜臀久久99精品久久久久久宅男 | 夜夜爽99久久国产综合精品女不卡 | 久久久国产精品 | 成人自拍视频网站 | 妞干网视频 | 久久国产亚洲 | 美女一级a毛片免费观看97 | 高清一区二区三区 | 综合一区 | 成人综合视频在线 | 网站国产| 日韩久草 | 国产电影一区二区 | 亚洲一区二区av | 国产1页 | 亚洲va在线va天堂va狼色在线 | 久久国产精品偷 |