應(yīng)廣PMS154C(1)--11位PWM輸出
概述
????作者在以前已經(jīng)講解完P(guān)MS171B端口輸出高低電平,PWM輸出,在所用的PMS154C芯片有個(gè)為11位PWM輸出,就寫(xiě)個(gè)11位PWM例程,方便大家快速上手。
????這里選用8PIN的單片機(jī)進(jìn)行開(kāi)發(fā),引腳如下圖所示,選取7號(hào)管腳進(jìn)行開(kāi)發(fā)。
????若使用PA5輸出PWM,需要上拉電阻。


PMS171B之PWM配置

????pwmg0c寄存器是配置PWMG0控制,所以需要開(kāi)啟OWMG0,同時(shí)輸出到PA0,時(shí)鐘選擇IHRC,故配置如下。

????pwmg0s寄存器是配置PWMG0分頻。

????上述寄存器為計(jì)數(shù)寄存器和占空比寄存器。
PWM計(jì)算與配置

? ? 在本文中我們?cè)O(shè)置輸出為38kHz,三分之一占空比的PWM載波,根據(jù)上圖公式,F(xiàn)為16M,需要輸出PWM 為38kHz,故:
????38k = 16M÷[P * (K+1) * CB]
? ?求得[P * (K+1) * CB]需要等于421,設(shè)置P分頻為1,即pwms[6:5]=00,設(shè)置K為4,即pwms[4:0]=0100,所以CB為84,即Counter_Bount[10:1]=00 0101 0100,代碼配置如下。

????由上圖可知,計(jì)時(shí)器Counter_Bount[10:0] = {pwmgxcubh[7:0], 所以Counter_Bount[10:0] = 000 1010 1000,轉(zhuǎn)化為十進(jìn)制為168。
????占空比可通過(guò)修改Duty[10:0]來(lái)改變,Duty_Bound[10:0] = {pwmgxdth[7:0],pwmgxdtl[7:5]} ,如果需要設(shè)置三分之一的占空比,即168/3=56,所以Duty[10:0] = 000 0011 1000,pwmgxdth[7:0]配置為0000 0111,pwmgxdtl[7:5]配置為000,如下。
11位PWM輸出完整代碼
????演示效果
????如下圖所示,頻率為37.6kHz,占空比為33.83%,配置成功。
