在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            凌陽61單片機之定時器

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



            評論


            技術專區(qū)

            關閉