新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 飛凌ok6410定時器精確控制led

        飛凌ok6410定時器精確控制led

        作者: 時間:2016-12-01 來源:網絡 收藏
        關于借鑒與版權的說明:飛凌提供的代碼有一定問題,并且部分關鍵代碼沒有解釋,我在搜集各方面資料后綜合網友指正和自己的理解,注釋了部分自己認為重要的部分。當然如果大神覺得可不注釋,也可以。此篇文章援引多家大神的微博,如需看大神原作,請百度搜索標題,此處個人見解不恰當的請各位指正。

        本文引用地址:http://www.104case.com/article/201612/324168.htm

        6410中的PWM 定時器

        1.簡單介紹 :

        S3C6410X中有5個定時器,這些定時器產生內部中斷。其中,Timer0和Timer1具有PWM功能,而Timer2,3,4沒有此功能。

        PWM具有兩種操作模式:自動裝載模式,一次觸發模式。為實現PWM功能,芯片提供了16個功能寄存器。這些功能寄存器都連接APB總線。

        定時器具有雙緩沖特性,這樣就能在不停止當前定時器操作的情況下,為下次定時器運行裝入新的數值。盡管為定時器設置了新數值,但當前的定時操作能夠成功完成。定時器從TCNTBn讀取的值是為下次延時定時用的,并不影響當前定時器的運行。當TCNTn減小到0的時候,TCNTBn的值會自動復制到TCNTn中,這就是說的自動裝載操作。定時器的當前計數值可以從定時計數觀察寄存器中TCNTOn讀取。如果TCNTn為0且從裝載也為0的話則TCNTn不在進行下次操作。

        2.定時器的電路結夠圖: 


        3.定時器架構流程。

        PCLK ---à 經過8位的預分頻器【8bit prescaler0】 --à 分頻器divider [1/1 1/2 1/4 1/81/16] -à 多路選擇器 MUX -à 邏輯控制器【比較TCMPBn和TCNTBn的數值】--à(deadzone generator ) --à時鐘

        計算公式:


        4.定時器的工作原理是什么。 


        每個定時器有32位的遞減計數器。遞減計數器的初始值由TCNTBn來加載。 當計數器的值變為0時, 定時器產生中斷信號通知cpu定時器操作完成。 當計數器的值變為0時,TCNTBn的值自動加載到遞減計數器并開始下個周期的操作。 如果定時器停止工作(比如,在定時器工作模式期間清空寄存器TCONn的定時器使能位,這樣對應的定時器就會停止工作),這時TCNTBn的值就不會加載到定時器。



        而對于PWM 功能,要用到寄存器TCMPBn,當遞減計數器down-counter的值和比較寄存器TCMPBn的值相同時,定時控制邏輯模塊就會改變輸出電平。因此比較寄存器TCMPBn決定了PWM的輸出。

        而且TCNTBn 和 TCMPBn寄存器具有雙緩沖特性,這樣就能在不停止當前定時器操作的情況下,為下次定時器運行裝入新的數值。盡管為定時器設置了新數值,但當前的定時操作能夠成功完成。

        5. 定時器的工作時序


        我說怎么在上面的第一步中突然冒出個TCNTn和TCMPn,我以為是數據手冊錯了,因為在PWM提供的16個寄存器中沒有這兩個寄存器。 那么請看下面: 

        從上面內容看出。TCNTn和TCMPn是內部的寄存器(internal registers ).而TCNTn寄存器的值可以通過讀取寄存器TCNTOn來獲得。

        6. 16個特殊功能寄存器

        7.接下來看一下飛凌提供的精確控制LED的程序。【利用定時器來精確控制LED跑馬燈,每隔1s輪詢點亮】

        #define rGPMCON (*(volatile unsigned*)(0x7F008820))

        #define rGPMDAT (*(volatileunsigned*)(0x7F008824))

        #define rGPMPUD (*(volatile unsigned*)(0x7F008828))


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 冀州市| 布尔津县| 商洛市| 麻栗坡县| 陆良县| 三台县| 文水县| 安康市| 无为县| 文山县| 上杭县| 措美县| 靖远县| 工布江达县| 东至县| 神农架林区| 松桃| 武清区| 观塘区| 昔阳县| 朝阳区| 红桥区| 临洮县| 景东| 安多县| 大足县| 治县。| 铁力市| 怀柔区| 区。| 环江| 临泉县| 武威市| 汶上县| 山阴县| 古田县| 德江县| 鄯善县| 黄山市| 凤冈县| 亚东县|