<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 凌陽61單片機之定時器

          凌陽61單片機之定時器

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          時基信號發(fā)生器:
          時間基準(zhǔn)信號,簡稱時基信號,來自于32768Hz實時時鐘,通過頻率選擇組合而成。時基信號發(fā)生器的選頻邏輯TMB1,為TimerA的時鐘源B提供各種頻率選擇信號,并為中斷系統(tǒng)提供中斷源(IRQ6)信號。此外,時基信號發(fā)生器還可以通過分頻產(chǎn)生2Hz、4Hz、1024Hz、2048Hz以及4096Hz的時基信號,為中斷系統(tǒng)提供各種實時中斷源(IRQ4和IRQ5)信號。
          時基信號發(fā)生器通過對P_Timebase_Setup(寫)($700EH)單元的編程寫入來進行選頻操作。
          定時器/計數(shù)器:
          SPCE061A提供了兩個16位的定時/計數(shù)器:TimerA和TimerB。TimerA為通用計數(shù)器;TimerB為多功能計數(shù)器。TimerA的時鐘源由時鐘源A和時鐘源B進行“與”操作而形成;TimerB的時鐘源僅為時鐘源A。
          定時器發(fā)生溢出后會產(chǎn)生一個溢出信號(TAOUT/TBOUT)。一方面,它會作為定時器中斷信號傳輸給CPU中斷系統(tǒng);另一方面,它又會作為4位計數(shù)器計數(shù)的時鐘源信號,輸出一個具有4位可調(diào)的脈寬調(diào)制占空比輸出信號APWMO或BPWMO(分別從IOB8 和IOB9輸出),可用來控制馬達或其它一些設(shè)備的速度。此外,定時器溢出信號還可以用于觸發(fā)ADC輸入的自動轉(zhuǎn)換過程和DAC輸出的數(shù)據(jù)鎖存。
          向定時器的P_TimerA_Data(讀/寫)($700AH)單元或P_TimerB_Data(讀/寫)($700CH)單元寫入一個計數(shù)值N后,選擇一個合適的時鐘源,定時器/計數(shù)器將在所選的時鐘頻率下開始以遞增方式計數(shù)N,N+1,N+2,…0xFFFE,0xFFFF。當(dāng)計數(shù)達到0xFFFF后,定時器/計數(shù)器溢出,產(chǎn)生中斷請求信號,被CPU響應(yīng)后送入中斷控制器進行處理。同時,N值將被重新載入定時器/計數(shù)器并重新開始計數(shù)。
          時鐘源A和時鐘源C是高頻時鐘源(從圖中可以看出,時鐘源A和時鐘源C的結(jié)構(gòu)是相同的),來自帶鎖相環(huán)的晶體振蕩器輸出Fosc;時鐘源B的頻率來自32768Hz實時時鐘系統(tǒng),也就是說,時鐘源B可以作為精確的計時器。例如,2Hz定時器可以作為實時時鐘的時鐘源。
          時鐘源A和時鐘源B的組合,為TimerA提供了多種計數(shù)速度。若以ClkA作為門控信號,‘1’表示允許時鐘源B信號通過,而‘0’則表示禁止時鐘源B信號通過。例如,如果時鐘源A為“1”,TimerA時鐘頻率將取決于時鐘源B;如果時鐘源A為“0”,將停止TimerA的計數(shù)。EXT1和EXT2為外部時鐘源。
          定時/計數(shù)器控制的寄存器:
          這是最重要的,單片機的操作說白了就是對寄存器的操作,不管是8位、16位還是32位。
          P_Timebase_Setup(寫)($700EH)
          時基信號發(fā)生器通過對P_Timebase_Setup(寫)($700EH)單元的編程寫入來進行選頻操作。
          P_Timebase_Clear(寫)($700FH)
          TimerA的數(shù)據(jù)單元,用于向16位預(yù)置寄存器寫入數(shù)據(jù)(預(yù)置計數(shù)初值)或從其中讀取數(shù)據(jù)。在寫入數(shù)值以后,計數(shù)器便會在所選擇的頻率下進行加一計數(shù),直至計數(shù)到0xFFFF產(chǎn)生溢出。溢出后P_TimerA_Data中的值將會被重置,再以置入的值繼續(xù)加一計數(shù)。
          P_TimerA_Data(讀/寫)($700AH)
          TimerA的數(shù)據(jù)單元,用于向16位預(yù)置寄存器寫入數(shù)據(jù)(預(yù)置計數(shù)初值)或從其中讀取數(shù)據(jù)。在寫入數(shù)值以后,計數(shù)器便會在所選擇的頻率下進行加一計數(shù),直至計數(shù)到0xFFFF產(chǎn)生溢出。溢出后P_TimerA_Data中的值將會被重置,再以置入的值繼續(xù)加一計數(shù)。
          P_TimerA_Ctrl(寫)($700BH)
          TimerA的控制單元如表5.3所示。用戶可以通過設(shè)置該單元的第0~5位來選擇TimerA的時鐘源(時鐘源A、B)。設(shè)置該單元的第6~9位(如表2.13所示),TimerA將輸出不同頻率的脈寬調(diào)制信號,即對脈寬占空比輸出APWMO進行控制。
          P_TimerB_Data(讀/寫)($700CH)
          TimerB的數(shù)據(jù)單元,用于向16位預(yù)置寄存器寫入數(shù)據(jù)(預(yù)置計數(shù)初值)或從其中讀取數(shù)據(jù)。寫入數(shù)據(jù)后,計數(shù)器就會以設(shè)定的數(shù)值往上累加直至溢出。計數(shù)初值的計算方法和TimerA相同。
          P_TimerB_Ctrl(寫)($700DH)
          TimerB的控制單元(如表5.7所示)。用戶可以通過設(shè)置該單元的第0~2位來選擇TimerB的時鐘源。設(shè)置第6~9位,TimerB將輸出不同頻率的脈寬調(diào)制信號,即對脈寬占空比輸出BPWMO進行控制。
          定時/計數(shù)器設(shè)置的C函數(shù):
          SPCE061.lib中提供了相應(yīng)的API函數(shù)如下所示:
          函數(shù)原型:
          void Set_TimerA_Data(unsigned int);
          void Set_TimerB_Data(unsigned int);
          功能說明 預(yù)置計數(shù)器初值
          用法
          Set_TimerA_Data(TimerA_Data);
          Set_TimerB_Data(TimerB_Data);
          參數(shù)
          TimerA_Data = 0xFFFF – (Source A & Source B Frequency) / Desired Frequency
          TimerB_Data = 0xFFFF – (Source C Frequency) / Desired Frequency
          函數(shù)原型
          unsigned int Get_TimerA_Data(void);
          unsigned int Get_TimerB_Data(void);
          功能說明 讀計數(shù)器的值
          用法
          TimerA_Data = Get_TimerA_Data();
          TimerB_Data = Get_TimerB_Data();
          函數(shù)原型
          void Set_TimerA_Ctrl(unsigned int);
          void Set_TimerB_Ctrl(unsigned int);
          功能說明 選擇時鐘源頻率和占空比
          用法
          Set_TimerA_Ctrl(TimerA_Ctrl_Data);
          Set_TimerB_Ctrl(TimerB_Ctrl_Data);
          參數(shù)
          TimerA_Ctrl_Data = Source A + Source B Frequency + Duty Cycle
          TimerB_Ctrl_Data = Source C Frequency + Duty Cycle



          關(guān)鍵詞: 凌陽61單片機定時

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();