011第十一章脉波宽度调变Pulse Width Modulation.docx

上传人:b****4 文档编号:2962881 上传时间:2022-11-16 格式:DOCX 页数:21 大小:134.68KB
下载 相关 举报
011第十一章脉波宽度调变Pulse Width Modulation.docx_第1页
第1页 / 共21页
011第十一章脉波宽度调变Pulse Width Modulation.docx_第2页
第2页 / 共21页
011第十一章脉波宽度调变Pulse Width Modulation.docx_第3页
第3页 / 共21页
011第十一章脉波宽度调变Pulse Width Modulation.docx_第4页
第4页 / 共21页
011第十一章脉波宽度调变Pulse Width Modulation.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

011第十一章脉波宽度调变Pulse Width Modulation.docx

《011第十一章脉波宽度调变Pulse Width Modulation.docx》由会员分享,可在线阅读,更多相关《011第十一章脉波宽度调变Pulse Width Modulation.docx(21页珍藏版)》请在冰豆网上搜索。

011第十一章脉波宽度调变Pulse Width Modulation.docx

011第十一章脉波宽度调变PulseWidthModulation

第十一章脈波寬度調變(PulseWidthModulation)

11-1、簡介

脈波寬度調變(PulseWidthModulation,(PWM))基本的控制原理是根據輸入信號的大小,調整輸出脈波的寬度,而此脈波的頻率為固定。

如圖11-1(a)所示是一個正弦波的正半週波形,若取樣點如圖11-1(a)所示,根據取樣值的大小,來決定脈波的寬度。

因此就可以得到如圖11-1(b)所示的脈衝列。

圖11-1:

PWM基本控制原理

 

PWM的輸出時序如圖11-2所示。

PWM輸出有兩個名詞需要注意到:

Period和DutyCycle。

當PWM輸出由此次變High到下一次變High的時間稱為Period;而PWM輸出保持在High

(1)的時間除以Period,稱呼它為PWM的DutyCycle。

圖11-2:

PWM輸出時序圖

11-2、ET44M210的PWM

ET44M210微控制器提供兩組16位元解析度的PWM輸出。

PWM0是連接到PORTA的Bit7,PWM1是連接到PORTC的Bit5。

因為ET44M210微控制器的PWM輸出是16位元的解析度,因此DutyCycle是由2個暫存器所決定:

DutyCycleHighByte(DT0H;DT1H)和DutyCycleLowByte(DT0L;DT1L)。

DT0H:

DT0L是針對PWM0所設定的暫存器;DT1H:

DT1L是針對PWM1所設定的暫存器,統稱為DTX。

另外ET44M210也定義了一組16位元的DutyCycleLatch暫存器,DutyCycleLatch暫存器是由2個暫存器所決定:

DutyCycleLatchHighByte(DL0H;DL1H)和DutyCycleLatchLowByte(DL0L;DL1L)。

DL0H:

DL0L是針對PWM0所設定的暫存器;DL1H:

DL1L是針對PWM1所設定的暫存器,統稱為DLX。

DutyCycleLatch暫存器是唯讀的暫存器。

PWM的Period也是由2個暫存器所決定:

PeriodHighByte(PRD0H;PRD1H)和PeriodLowByte(PRD0L;PRD1L)。

PRD0H:

PRD0L是針對PWM0所設定的暫存器;PRD1H:

PRD1L是針對PWM1所設定的暫存器,統稱為PRDX。

在ET44M210內部有2個與PWM有關的16位元計數器:

TMR0和TMR1。

TMR0是針對PWM0所設定的計數器;TMR1是針對PWM1所設定的計數器,統稱為TMRX。

當PWM啟動之後,SystemClock就會送到TMRX開始上數,此時會將PWM輸出接腳設為1,在此同時會分別與DLX與PRDX做比較;當TMRX的值等於DLX的值時,PWM輸出接腳會設為0。

當TMRX的值等於PRDX的值時,會將PWM輸出接腳設為1,並且將TMRX清除為0,同時PWM的中斷旗標也會設為1。

當TMRX被清除為0的同時,會將DTX的值Latch在DLX內。

Note:

當要改變Period時必須先將PWM的功能Disable。

DutyCycle的計算公式入下所示:

DutyCycle=(DTX+1)×(2∕FSCO)

FSCO=SystemClock

Period的計算公式入下所示:

Period=(PRDX+2)×(2∕FSCO)

FSCO=SystemClock

 

如圖11-3所示為PWM的功能方塊圖。

圖11-3:

PWM功能方塊圖

 

11-3、與PWM相關的暫存器

Ø中斷旗標暫存器(InterruptFlagRegister)–INTF(0x11)

7

6

5

4

3

2

1

0

ADIF

RBFIF

PWM1IF

PWM0IF

EINT1F

EINT0F

TCCOF

FRCOF

 

✓Bit4~Bit5(PWM0IF&PWM1IF):

PWM中斷旗標:

當TMRX等於PRDX時,中斷條件成立,此位元設為1。

以軟體指令清除。

 

ØPWMDutyCycle暫存器(PWMDuty)–DT0L(0x21)/DT0H(0x22)&DT1L(0x27)/DT1H(0x28)

DT0L

7

6

5

4

3

2

1

0

DT07

DT06

DT05

DT04

DT03

DT02

DT01

DT00

DT0H

7

6

5

4

3

2

1

0

DT0F

DT0E

DT0D

DT0C

DT0B

DT0A

DT09

DT08

DT1L

7

6

5

4

3

2

1

0

DT17

DT16

DT15

DT14

DT13

DT12

DT11

DT10

DT1H

7

6

5

4

3

2

1

0

DT1F

DT1E

DT1D

DT1C

DT1B

DT1A

DT19

DT18

DT0H:

:

DT0L是PWM0輸出的DutyCycle。

DT1H:

:

DT1L是PWM1輸出的DutyCycle。

ØPWMPeriod暫存器(PWMPeriod)–PRD0L(0x23)/PRD0H(0x24)&PRD1L(0x29)/PRD1H(0x2A)

PRD0L

7

6

5

4

3

2

1

0

PRD07

PRD06

PRD05

PRD04

PRD03

PRD02

PRD01

PRD00

PRD0H

7

6

5

4

3

2

1

0

PRD0F

PRD0E

PRD0D

PRD0C

PRD0B

PRD0A

PRD09

PRD08

PRD1L

7

6

5

4

3

2

1

0

PRD17

PRD16

PRD15

PRD14

PRD13

PRD12

PRD11

PRD10

PRD1H

7

6

5

4

3

2

1

0

PRD1F

PRD1E

PRD1D

PRD1C

PRD1B

PRD1A

PRD19

PRD18

PRD0H:

:

PRD0L是PWM0輸出Period。

PRD0H:

:

PRD0L是PWM1輸出Period。

ØPWMDutyCycleLatch暫存器(PWMDutyLatch)–DL0L(0x25)/DL0H(0x26)&DL1L(0x2B)/DL1H(0x2C)

DL0L

7

6

5

4

3

2

1

0

DL07

DL06

DL05

DL04

DL03

DL02

DL01

DL00

DL0H

7

6

5

4

3

2

1

0

DL0F

DL0E

DL0D

DL0C

DL0B

DL0A

DL09

DL08

DL1L

7

6

5

4

3

2

1

0

DL17

DL16

DL15

DL14

DL13

DL12

DL11

DL10

DL1H

7

6

5

4

3

2

1

0

DL1F

DL1E

DL1D

DL1C

DL1B

DL1A

DL19

DL18

DL0H:

:

DL0L是PWM0輸出DutyCycleLatch暫存器。

DL1H:

:

DL1L是PWM1輸出DutyCycleLatch暫存器。

Note:

這是唯讀的暫存器

 

Ø週邊功能致能控制暫存器(PeripheralsEnableControl)–PRIE(0x80)

7

6

5

4

3

2

1

0

SPIE

USBE

WME

ADE

PWM1E

PWM0E

TCCE

FRCE

此暫存器控制是否啟用週邊功能。

當設為0時,表示不啟用該週邊功能,當設為1時,表示啟用該週邊功能。

✓Bit2(PWM0E):

脈寬調變0(PWM0)功能致能位元。

✓Bit3(PWM1E):

脈寬調變1(PWM1)功能致能位元。

 

Ø中斷功能致能控制暫存器(InterruptsEnableControl)–INTE(0x81)

7

6

5

4

3

2

1

0

GIE

RBFIE

PWM1IE

PWM0IE

EINT1E

EINT0E

TCCOE

FRCOE

此暫存器控制是否啟用中斷功能。

當設為0時,表示不啟用中斷功能,當設為1時,表示啟用中斷功能。

✓Bit4(PWM0IE):

脈寬調變(PWM0)一個週期完成中斷功能致能位元。

✓Bit5(PWM1IE):

脈寬調變(PWM1)一個週期完成中斷功能致能位元。

 

Ø脈寬調變控制暫存器(PWMControlRegister)–PWMCR(0x98)

7

6

5

4

3

2

1

0

-

-

-

-

S_PWM1

S_PWM0

-

-

✓Bit2(S_PWM0):

SelectedPWM0outputenable

此位元是設定PWM0輸出致能位元。

當設為0時,表示DisablePWM0輸出,當設為1時,表示EnablePWM0輸出。

✓Bit3(S_PWM1):

SelectedPWM1outputenable

此位元是設定PWM1輸出致能位元。

當設為0時,表示DisablePWM1輸出,當設為1時,表示EnablePWM1輸出。

✓Bit0,Bit1andBit4~Bit7:

保留

 

11-4、程式範例

1.實習1-PWM喇叭音效控制實習

Ø動作說明

程式使用PWM功能,使喇叭發出聲音。

Ø硬體連接

此範例使用ET44M210的實驗電路板。

Ø程式說明

此範例使用PWM功能,

PWM0:

DutyCycle=(DTX+1)×(2∕FSCO)=(33)×(2∕6MHz)=11μs。

Period=(PRDX+2)×(2∕FSCO)=(259)×(2∕6MHz)=86μs。

PWM1:

DutyCycle=(DTX+1)×(2∕FSCO)=(33)×(2∕6MHz)=11μs。

Period=(PRDX+2)×(2∕FSCO)=(1030)×(2∕6MHz)=343μs。

程式一開始先起始PWM設定:

清除PWM相關暫存器,設定PWM暫存器的值。

主程式只需等待PWM中斷發生。

Note:

由於實驗電路板的喇叭是連接到PWM1,因此PWM0並不需要Enable。

Ø流程圖

 

 

Ø程式碼

 

 

PWM01.dt中副程式及程式區段說明

 

PWM01.dt程式共包含了5個副程式及程式區段,依照程式的撰寫順序有:

PWM:

、EXIT:

、CLR_PWM1_FLAG:

、INITIAL:

、PWM_START:

為了方便讀者閱讀瞭解,針對程式中所定義的LAB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1