• 沒有找到結果。

带专用定时器的输出比较

在文檔中 的 64/80/100 引脚 (頁 161-171)

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第 159 页

PIC24FJ256GB110 系列

PIC24FJ256GB110 系列

DS39897B_CN 第 160 页

初稿

 2009 Microchip Technology Inc.

13-1:

输出比较框图 (16 位模式)

OCxR

比较器

OCxTMR OCxCON1 OCxCON2

OC 输出和

OCx 中断

OCx 引脚(1)

OCxRS 比较器

故障逻辑 匹配事件

匹配事件

触发和 同步逻辑

时钟 选择

递增

复位 OC 时钟源

触发和 同步源

复位 匹配事件

OCFA/OCFB OCTSELx

SYNCSELx TRIGSTAT TRIGMODE OCTRIG

OCMx OCINV OCTRIS FLTOUT FLTTRIEN FLTMD ENFLT0 OCFLT0

1: OCx 输出必须在使用前分配给可用的 RPn 引脚。更多信息,请参见第 9.4 节 “外设引脚选择”。

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第 161 页

PIC24FJ256GB110 系列

13.2 比较器工作原理

在比较模式下(图13-1),输出比较模块可配置为产生 单次脉冲或连续脉冲;也可以在每个定时器事件时重复 翻转输出引脚。

要为比较操作设置模块:

1. 将OCx 输出配置为可用外设引脚选择引脚之一。

2. 计算OCxR 和 (对于双比较模式) OCxRS 占空 比寄存器所需的值:

a) 确定指令时钟周期时间。考虑定时器源的外 部时钟频率(如果使用)和定时器预分频比 的设置。

b) 计算从定时器起始值 (0000h)到输出脉冲 的上升沿所需的时间。

c) 根据所需的脉冲宽度和到脉冲上升沿的时间 计算出现脉冲下降沿的时间。

3. 将上升边沿值写入 OCxR,将下降边沿值写入 OCxRS。

4. 将定时器周期寄存器PRy的值设置为等于或大于 OCxRS 中的值。

5. 为相应的比较操作设置OCM2:OCM0位(= 0xx)。

6. 对于触发模式操作,将OCTRIG 置 1 可使能触发 模式。置1 或清零 TRIGMODE 配置触发操作,置 1 或清零 TRIGSTAT 选择硬件或软件触发。对于 同步模式,清零OCTRIG。

7. 设置SYNCSEL4:SYNCSEL0 位以配置触发或同 步 源。如 果 需 要 自 由 运 行 定 时 器 操 作,将 SYNCSEL 位设置为

00000

(无同步/ 触发源)。

8. 用 OCTSEL2:OCTSEL0 位选择时基源。如果需 要,将使能比较时基进行计数的选定定时器的 TON 位置 1。同步模式操作在时基使能时启动;

触发模式操作在触发源事件发生时启动。

对于32 位级联操作,以下步骤也是必需的:

1. 为两个寄存器(OCyCON2<8>和OCxCON2<8>)

设置OC32 位。先使能偶数编码的模块,以确保 模块同时启动。

2. 清零偶数模块的OCTRIG 位 (OCyCON2)使模 块运行于同步模式。

3. 为OCy 配置所需的输出和故障设置。

4. 通过将OCTRIS 位清零将 OCx 的输出引脚强制 为输出状态。

5. 如果需要触发模式操作,用 OCTRIG

(OCxCON2<7>)、TRIGSTAT(OCxCON2<6>)

和SYNCSEL(OCxCON2<4:0>)位配置 OCx 中 的触发选项。

6. 先为OCy,再为 OCx 配置所需的比较或 PWM 工作模式 (OCM<2:0>)。

根据选择的输出模式,该模块将把OCx 引脚保持在它的 默认状态,并在OCxR 和定时器匹配时强制转换到相反 状态。在双比较模式下,OCx 在 OCxRS 与定时器值发 生匹配时强制回到其默认状态。OCxIF 中断标志位在单 比较模式下发生OCxR 匹配后,以及双比较模式下的每 次OCxRS 匹配后,都会置 1。

单次触发脉冲事件只发生一次,但只需重写OCxCON1 寄存器的值即可重复。连续脉冲事件会无限继续,直到 被终止。

PIC24FJ256GB110 系列

DS39897B_CN 第 162 页

初稿

 2009 Microchip Technology Inc.

13.3 脉宽调制 (PWM)模式

在PWM 模式下,输出比较模块可配置为产生边沿对齐 或中心对齐的脉冲波形。所有PWM 操作都是双重缓冲 的 (缓冲寄存器在模块内部,未映射到SFR 空间)。

要将输出比较模块配置为PWM 工作模式:

1. 为某个可用的外设引脚选择引脚配置OCx 输出。

2. 计算所需的占空比,并将其装入OCxR 寄存器。

3. 计算所需的周期,并将其装入 OCxRS 寄存器。

4. 通过将 0x1F 写入 SYNCSEL<4:0>

(OCxCON2<4:0>)选择当前 OCx 作为触发 / 同 步源。

5. 通过写入 OCTSEL2<2:0> (OCxCON<12:10>)

位来选择时钟源。

6. 如果需要的话,允许定时器和输出比较模块的中 断。如果要使用 PWM 故障引脚,则必须设置输 出比较中断。

7. 在OCM<2:0>(OCxCON1<2:0>)位中选择所需 的PWM 模式。

8. 如果选择定时器作为时钟源,则应设置TMRy 预 分频值,并通过将TON (TxCON<15>)位置 1 使能时基。

13-2:

输出比较框图 (双重缓冲,

16 位 PWM 模式)

注: 该外设包含可能需要由外设引脚选择配 置的输入和输出功能。更多信息,请参见 第

9.4 节 “外设引脚选择”。

OCxR 缓冲器

比较器

OCxTMR OCxCON1 OCxCON2

OC 输出和

OCx 中断

OCx 引脚

OCxRS 缓冲器 比较器

故障逻辑 匹配

触发和 匹配 同步逻辑

时钟 选择

递增

复位 OC 时钟源

触发和 同步源

复位

匹配事件

OCFA/OCFB OCTSELx

SYNCSELx TRIGSTAT TRIGMODE OCTRIG

OCMx OCINV OCTRIS FLTOUT FLTTRIEN FLTMD ENFLT0 OCFLT0 OCxR

OCxRS

事件 事件

计满返回 计满返回/ 复位

计满返回/ 复位

1: OCx 输出必须在使用前分配给可用的 RPn 引脚。更多信息,请参见第 9.4 节 “外设引脚选择”。

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第 163 页

PIC24FJ256GB110 系列

13.3.1 PWM 周期

PWM 周期可通过写入 PRy (定时器周期寄存器)来指 定。可使用公式13-1 计算 PWM 周期。

公式

13-1:

计算

PWM 周期

(1)

13.3.2 PWM 占空比

PWM 占空比是通过写 OCxRS 和 OCxR 寄存器指定的。

可以在任何时候写 OCxRS 和 OCxR 寄存器,但是在 PRy 和 TMRy 发生匹配 (即周期结束)前占空比值不 会被锁存。这可以为PWM 占空比提供双重缓冲,对于 PWM 的无毛刺操作是极其重要的。

PWM 占空比有一些重要的边界参数,包括:

• 如果 OCxR、OCxRS 和 PRy 中都装入 0000h,则 OCx 引脚将保持低电平 (占空比为 0%)。

• 如果 OCxRS 大于 PRy,则引脚将保持高电平(占 空比为100%)。

请参见例13-1 了解 PWM 模式时序的详细信息。表 13-1 和表13-2 给出了器件分别以 4 MIPS 和 10 MIPS 工作 时,所对应的PWM 频率和分辨率的示例。

公式

13-2:

计算最大

PWM 分辨率

(1)

13-1: PWM 周期和占空比计算

(1) 注: 如果PRy 的值为 N,则会使 PWM 周期为

N + 1 个时基计数周期。例如,如果写入 PRy 寄存器的值为 7,则将产生包含 8 个时 基周期的周期。

PWM 周期 = [(PRy) + 1] • TCY • ( 定时器预分频值 ) PWM 频率 = 1/[PWM 周期 ]

其中:

1: 基于 T

CY = TOSC * 2,打盹模式和 PLL 被 禁止。

( )

最大PWM 分辨率(位)=

FCY

FPWM • ( 定时器预分频值 ) log10

log10(2) 位

1: 基于 F

CY = FOSC/2,打盹模式和 PLL 被禁止。

1. 确定对应于所需的 PWM 频率 52.08 kHz 的定时器周期寄存器值,其中 FOSC = 8 MHz, PLL (32 MHz 器件时钟速 率)和Timer2 预分频比设置为 1:1。

TCY = 2 * TOSC = 62.5 ns

PWM 周期 = 1/PWM 频率 = 1/52.08 kHz = 19.2µs PWM 周期 = (PR2 + 1) • TCY • (Timer 2 预分频值 ) 19.2µs = (PR2 + 1) • 62.5 ns • 1

PR2 = 306

2. 在PWM 频率为 52.08 kHz 且器件的时钟速率为 32 MHz 时,计算占空比的最大分辨率:

PWM 分辨率 = log10(FCY/FPWM)/log102) 位

= (log10(16 MHz/52.08 kHz)/log102) 位

= 8.3 位

1: 基于 T

CY = 2 * TOSC;打盹模式和PLL 被禁止。

PIC24FJ256GB110 系列

DS39897B_CN 第 164 页

初稿

 2009 Microchip Technology Inc.

13-1: 4 MIPS 时的 PWM 频率和分辨率示例 (F

CY

= 4 MHz)

(1)

13-2: 16 MIPS 时的 PWM 频率和分辨率示例 (F

CY

= 16 MHz)

(1)

PWM 频率 7.6 Hz 61 Hz 122 Hz 977 Hz 3.9 kHz 31.3 kHz 125 kHz

定时器预分频比 8 1 1 1 1 1 1

周期寄存器值 FFFFh FFFFh 7FFFh 0FFFh 03FFh 007Fh 001Fh

分辨率 (位) 16 16 15 12 10 7 5

1: 基于 F

CY = FOSC/2,打盹模式和 PLL 被禁止。

PWM 频率 30.5 Hz 244 Hz 488 Hz 3.9 kHz 15.6 kHz 125 kHz 500 kHz

定时器预分频比 8 1 1 1 1 1 1

周期寄存器值 FFFFh FFFFh 7FFFh 0FFFh 03FFh 007Fh 001Fh

分辨率 (位) 16 16 15 12 10 7 5

1: 基于 F

CY = FOSC/2,打盹模式和 PLL 被禁止。

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第 165 页

PIC24FJ256GB110 系列

寄存器

13-1: OCxCON1:输出比较 x 控制寄存器 1

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0

— — OCSIDL OCTSEL2 OCTSEL1 OCTSEL0 — —

bit 15 bit 8

R/W-0 U-0 U-0 R/W-0, HCS R/W-0 R/W-0 R/W-0 R/W-0 ENFLT0 — — OCFLT0 TRIGMODE OCM2(1) OCM1(1) OCM0(1)

bit 7 bit 0

图注: HCS = 硬件清零 / 置 1 位

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15-14 未实现:读为

0

bit 13

OCSIDL: 在空闲模式下停止输出比较 x 的控制位 1 = 输出比较 x 在 CPU 空闲模式下停止工作 0 = 输出比较 x 在 CPU 空闲模式下继续工作

bit 12-10

OCTSEL2:OCTSEL0:输出比较 x 定时器选择位

111 = 系统时钟 110 = 保留 101 = 保留 100 = Timer1 011 = Timer5 010 = Timer4 001 = Timer3 000 = Timer2

bit 9-8 未实现:读为

0

bit 7

ENFLT0:故障 0 输入使能位 1 = 使能故障 0 输入 0 = 禁止故障 0 输入

bit 6-5 未实现:读为

0

bit 4

OCFLT0:PWM 故障条件状态位

1 = 发生了 PWM 故障条件 (仅可用硬件清零)

0 = 未发生 PWM 故障条件 (仅当 OCM<2:0> = 111

时,才使用该位)

bit 3

TRIGMODE:触发状态模式选择位

1 = 当 OCxRS = OCxTMR 时, TRIGSTAT (OCxCON2<6>)被清零,或用软件清零 0 = TRIGSTAT 只能用软件清零

bit 2-0

OCM2:OCM0:输出比较 x 模式选择位

(1)

111 = OCx 输出中心对齐的 PWM 信号

(2)

110 = OCx 输出边沿对齐的 PWM 信号

(2)

101 = 双比较连续脉冲模式:初始化 OCx 引脚为低电平,在连续周期内 OCxR 和 OCxRS 匹配时翻转 OCx

状态

100 = 双比较单次触发模式:初始化OCx引脚为低电平,在一个周期内OCxR和OCxRS匹配时翻转OCx

状态

011 = 单比较连续脉冲模式:比较事件使 OCx 引脚的电平连续翻转

010 = 单比较单次触发模式:初始化 OCx 引脚为高电平,比较事件强制 OCx 引脚为低电平 001 = 单比较单次触发模式:初始化 OCx 引脚为低电平,比较事件强制 OCx 引脚为高电平 000 = 输出比较通道禁止

1: OCx 输出必须也配置给可用的 RPn 引脚。更多信息,请参见第 9.4 节 “外设引脚选择”。

2: OCFA 引脚控制 OC1-OC4 通道; OCFB 引脚控制 OC5-OC9 通道。 OCxR 和 OCxRS 仅在 PWM 模式下

是双重缓冲的。

PIC24FJ256GB110 系列

DS39897B_CN 第 166 页

初稿

 2009 Microchip Technology Inc.

寄存器

13-2: OCxCON2:输出比较 x 控制寄存器 2

R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 R/W-0

FLTMD FLTOUT FLTTRIEN OCINV — — — OC32

bit 15 bit 8

R/W-0 R/W-0 HS R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 OCTRIG TRIGSTAT OCTRIS SYNCSEL4 SYNCSEL3 SYNCSEL2 SYNCSEL1 SYNCSEL0

bit 7 bit 0

图注: HS = 硬件置 1 位

R = 可读位 W = 可写位 U = 未实现位,读为 0

-n = POR 时的值 1 = 置 1 0 = 清零 x = 未知

bit 15

FLTMD: 故障模式选择位

1 = 故障模式将保持到故障源消除,并且对应的 OCFLT0 位用软件清零 0 = 故障模式将保持到故障源消除,并且新的 PWM 周期开始

bit 14

FLTOUT: 故障结果位

1 = 发生故障时 PWM 输出驱动为高电平 0 = 发生故障时 PWM 输出驱动为低电平

bit 13

FLTTRIEN: 故障输出状态选择位

1 = 发生故障时引脚强制为输出 0 = 引脚 I/O 状况不受故障影响

bit 12

OCINV: OCMP 反相位

1 = OCx 输出反相 0 = OCx 输出不反相

bit 11-9 未实现:读为

0

bit 8

OC32:级联两个 OC 模块使能位 (32 位操作)

1 = 使能级联模块工作 0 = 禁止级联模块工作

bit 7

OCTRIG:OCx 触发 / 同步选择位 1 = 用 SYNCSELx 位指定的源触发 OCx 0 = 用 SYNCSELx 位指定的源同步 OCx

bit 6

TRIGSTAT: 定时器触发状态位

1 = 定时器源已触发并正在运行 0 = 定时器源未触发,保持清零

bit 5

OCTRIS: OCx 输出引脚方向选择位

1 = OCx 引脚呈现三态

0 = 输出比较外设 x 与 OCx 引脚相连

1: 绝不要通过选择该模式或其他相当的 SYNCSEL 设置将 OC 模块用作它自己的触发源。

2: 只用这些输入作为触发源,从不用作同步源。

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第 167 页

PIC24FJ256GB110 系列

bit 4-0

SYNCSEL4:SYNCSEL0:触发 / 同步源选择位 11111 = 该 OC 模块

(1)

11110 = 输入捕捉 9

(2)

11101 = 输入捕捉 6

(2)

11100 = CTMU

(2)

11011 = A/D

(2)

11010 = 比较器 3

(2)

11001 = 比较器 2

(2)

11000 = 比较器 1

(2)

10111 = 输入捕捉 4

(2)

10110 = 输入捕捉 3

(2)

10101 = 输入捕捉 2

(2)

10100 = 输入捕捉 1

(2)

10011 = 输入捕捉 8

(2)

10010 = 输入捕捉 7

(2)

1000x = 保留

01111 = Timer 5 01110 = Timer 4 01101 = Timer 3 01100 = Timer 2 01011 = Timer 1 01010 = 输入捕捉 5

(2)

01001 = 输出比较 9

(1)

01000 = 输出比较 8

(1)

00111 = 输出比较 7

(1)

00110 = 输出比较 6

(1)

00101 = 输出比较 5

(1)

00100 = 输出比较 4

(1)

00011 = 输出比较 3

(1)

00010 = 输出比较 2

(1)

00001 = 输出比较 1

(1)

00000 = 不与任何其他模块同步

寄存器

13-2: OCxCON2:输出比较 x 控制寄存器 2

1: 绝不要通过选择该模式或其他相当的 SYNCSEL 设置将 OC 模块用作它自己的触发源。

2: 只用这些输入作为触发源,从不用作同步源。

在文檔中 的 64/80/100 引脚 (頁 161-171)