富士通MB95F636H輸出PWM


富士通MB95F636H輸出PWM


終於畢業了,想想要不是畢設導師不讓我實習,我可能也不會進入這一行。還好之前做過一些競賽,所以逃脫導師魔爪后很快就找到了一份單片機的工作。

PWM

進入公司的第一個任務是做軟啟動,就是讓電機慢慢轉起來。學過單片機的可能馬上就能想到,這不就是單片機嗎!然后我就屁顛屁顛的去看這款富士通636H的數據手冊了。

PPG

手冊上說636H芯片使用PPG輸出PWM波。然后萬事找百度,好像只有富士通的單片機有PPG。。。好在官方給出了說明。

The 8/16-bit PPG is an 8-bit reload timer module that uses pulse output control based on timer operation to perform PPG output. The 8/16-bit PPG also operates in cascade (8 bits + 8 bits) as 16-bit PPG.

用我蹩腳的英語翻譯一下大概意思是,8位/ 16位PPG是一個8位重載定時器模塊,它使用基於定時器操作的脈沖輸出控制來執行PPG輸出。 8位/ 16位PPG也以16位PPG級聯(8位+ 8位)。

然后看他如何產生PWM,和一般產生PWM的方法是一樣的!

PPG生成PWM波

寄存器配置

這款單片機一共有3個通道,6個輸出,分別是PPG00、PPG01、PPG10、PPG11、PPG20、PPG21,下圖顯示了各個寄存器的功能。

各個寄存器功能

PPS寄存器用來配置PWM周期,PDS寄存器用來配置PWM的占空比,即占空比=PDS/PPS。PPGS和REVC的每一位都代表一個輸出,即bit0表示PPG00,bit1表示PPG01,以此類推。當PPGS對應的位為1時啟動該輸出的計數,即開啟PWM模式。REVC表示輸出是否反相,對應位為1則該輸出反相,否則不反相。

PC寄存器是最重要的寄存器。PCn1和PCn0的配置略有不同,畢竟PCn1是能成為16位PPG高位的存在。

下圖是PCn1配置寄存器的各位功能,其中bit6和bit7無意義。

這里寫圖片描述

下圖展示了PCn0的各個位的功能。

這里寫圖片描述

配置好這些寄存器就能輸出PWM波了。

PC11 = 0x0b;
PPS11 = 100;
PDS11 = 20;
REVC_REV11 = 0;
PPGS_PEN11 = 1;

上述代碼就演示了如何利用PPG11輸出一個8分頻,占空比為20%的PWM波。
需要注意的是,636H提供了兩套引腳輸出PPG。對SYSC_PPGSEL進行配置。下圖顯示了不同的配置對應的引腳 。

不同配置對應的不同引腳

利用定時器產生PWM

雖然產生了PWM,用示波器看也沒問題,但是!驅動不了電機!看了原理圖,不知道是不是一段高電平,一段PWM所以無法驅動原因。可是板子都打好了,我又不能改引腳,怎么辦。只能自己造PWM了啊。

其實自己造PWM很簡單,就是使用定時器,在定時器中翻轉點評就可以了,我寫了兩種方法。

第一種,定義一個短時間t的定時器,然后定義進入多少次定時器為一個周期。比如定義100次為一個周期,前20次輸出高電平,后80次輸出低電平,那么該PWM的周期就為100×t,占空比為20%。這種方法的優點是無需重復配置定時器,缺點是無法實現無級調節占空比。

第二種,進入定時器中斷后輸出高電平,然后配置定時器時間,改變下一次進入定時器中斷的時間,下一次進入定時器中斷后輸出低電平,然后重新配置定時器時間。比如這一次進入定時器,先置高電平,然后配置定時器時間為20ms,下一次進入定時器中斷后置低電平,然后配置80ms,這樣就能產生一個周期為100ms,占空比為20%的PWM波了。這種方法的優點是能夠實現無級調節占空比,缺點是每次都需要重新配置定時器,有些單片機在定時器運行過程中是無法更改定時器配置的。

經過測試,第一種方法能夠完美實現軟啟動的要求,第二種方法會使燈先亮,然后變暗再緩緩變亮,分析原因可能是發光二極管導通電壓比較大,而第一種方法一開始就輸出比較大的占空比(5次中斷為一周期,最低也有20%的占空比),所以沒有這種現象。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com