本应用笔记介绍如何设置和使用MAXQ®系列微控制器中的定时器B来生成所需的PWM波形。该操作将要求启用比较功能。该说明包括供参考的源代码。
介绍
MAXQ微控制器有三种类型的定时器:定时器0、定时器1和定时器2。定时器B是定时器1的增强版本,经过修改以支持不同的输入时钟预缩放和设置/复位/比较输出功能。本应用笔记详细介绍了如何设置和使用定时器B生成所需波形。包括源代码示例以供参考。
定时器B寄存器及其使用
MAXQ内核通过一组特殊功能寄存器(SFR)配置定时器B:
TBCN—定时器B控制寄存器
TBV — 定时器 B 值寄存器
TBR — 定时器 B 重新加载/捕获寄存器
待定—定时器B比较寄存器
定时器B控制寄存器:待定
定时器B控制寄存器为16位宽,读写不受限制。在所有形式的重置中,它被清除到 0000h。以下是寄存器位配置的简要说明。
位 0:CP/RLD 位用于设置定时器 B 的捕获或重新加载模式。当此位设置为 1 时,计时器 B 处于捕获模式。当此位清除为 0 时,计时器 B 处于重新加载模式。
位 1:ETB 位用于启用定时器 B 中断。将此位设置为 1 将启用来自计时器 B TFB 和 EXFB 标志的中断。
位 2:TRB 位用于启用定时器 B 操作。
位 3:EXENB 位用于启用负事务的 TBB 引脚上的捕获/重新加载功能。在启用输出比较功能的情况下,在自动重新加载模式 (CP/RLD = 0) 下工作时(此模式稍后会很重要),启用 TBB 输入功能 (EXENB = 1) 将允许比较输出负转换以设置 EXFB 标志。但是,由于外部负边缘检测,不会发生重新加载。
位 4:DCEN 位用于启用定时器 B 的倒计时选项。与TBB引脚配合使用,该位控制定时器B计数的方向。将此位设置为 1 会导致定时器 B 在引脚 TBB 为 1 时向上计数,如果引脚 TBB 为 0,则计数。当此位为 0 时,计时器 B 始终计数。启用定时器 B 的比较模式功能后,定时器 B 的上/下计数控制将根据比较模式设置在内部进行控制。在比较模式下,DCEN 位控制定时器是斜坡上升和复位 (DCEN = 0),还是上升和下降 (DCEN = 1)。
位5:TBOE位用于使能TBA引脚上的时钟输出功能。
位 6:EXFB 位用于标记 TBB 引脚上发生负事务的时间。如果 CP/RLD = 0、DCEN = 0 和 TBCS:TBCR = 00b,则每当计时器 B 溢出或下溢时,此位也会切换。
位 7:TFB 位用于在计时器 B 溢出或下溢时设置标志。
第 8-10 位:TBPS2:0用作应用于定时器B时钟的系统时钟输入的预分频器:
定时器 B 时钟 = 系统时钟/(2**(2*TBPS2:0))
TBPS2:0 = 11xb 的值是保留的。
位 11-12:如果 TBCS:TBCR<>00b,则 TBCS:TBCR 位用于在比较模式下配置计时器 B。这些比较模式位定义了几个条件:TBB引脚上是否使能PWM/比较模式输出功能;初始输出起始状态是什么;以及比较模式输出功能是否有效。
位 14-13:保留位
位 15:C/TB 位用于确定定时器 B 是用作定时器还是计数器。
定时器B值寄存器:TBV
定时器B值寄存器是一个16位寄存器,在所有形式的复位时被清除到0000h。此寄存器是不受限制的读/写,用于加载和读取 16 位定时器 B 值。
定时器B捕获/重新加载寄存器:TBR
定时器B捕获/重新加载寄存器是一个16位寄存器,在所有形式的复位时都清除到0000h。此寄存器是无限制的读/写,用于在定时器B配置为捕获模式时捕获TBV值。当定时器B配置为自动重装模式时,此寄存器也用作16位重装值。
定时器B比较寄存器:待定
定时器B比较寄存器是一个16位寄存器,在所有复位形式时都清除到0000h。此寄存器是不受限制的读/写,用于在定时器B在比较模式下运行时将TBC与TBV值进行比较。
定时器B的操作模式
定时器B可通过在定时器B控制寄存器中设置CP/RLD位配置为捕获或重新加载模式。TBCS:TBCR<>00b 的值会将定时器 B 设置为比较模式。没有必要同时配置定时器B捕获模式(CP/RLD=1)和PWM比较输出模式,但是,这不是预期的定时器B操作模式。定时器B也可以配置为比较模式,其中有三种不同的比较功能:复位,设置和切换。
以下部分回顾了在这些不同操作模式下配置计时器 B 的方法。
拍摄模式
定时器B控制寄存器的位0 CP/RLD确定定时器B是使用捕获模式还是重新加载模式。如果控制寄存器的位1 EXENB为3,则将此位设置为1会导致在TBB定时器引脚上检测到下降沿时发生定时器B捕获。将位 3 EXENB 设置为 0 会导致定时器 B 忽略 TBB 引脚上的所有外部事件。捕获的值将加载到重新加载寄存器 TBR 中。
重新加载模式
如果 EXENB 为 0,则清除 CP/RLD 位为 1 会导致在定时器 B 溢出或在 TBB 上检测到下降沿时发生自动重新加载。如果启用了比较功能,则可以通过更改重载(TBR)和比较(TBC)寄存器中的值来修改输出波形的频率和占空比。这样,MAXQ处理器就可以产生脉宽调制(PWM)波形。
比较模式
仅当比较模式位的值不同于 0 时,并且建议计时器 B 处于重新加载模式时,才会启用比较模式。PWM输出可以有选择地使能,起始极性可以反转,具体取决于这些位的值。频率和占空比的限制由选择作为源的时钟(即系统或备用时钟)的频率和所选的时钟除数决定。如上所述,有三种比较模式(SET、RESET和TOGGLE),具有TBB引脚的预定义初始状态。
当 CP/RLD = 0(重新加载模式)和 TBCS:TBCR 的值分别为 01 时,选择比较复位模式。在此模式下,TBB 将在 TBC 匹配时重置并设置为 0000h。根据TBR和TBC寄存器之间的相对值以及上/下计数,定时器将生成不同的PWM波形。如果计时器 B 未实现 TBC,则它只会设置为 0000h。在这种模式下,TBB引脚的初始值为低电平。
当 CP/RLD = 0(重载模式)和 TBCS:TBCR 的值分别为 10 时,选择比较 SET 模式。在此模式下,TBB 将设置在 TBC 匹配并设置为 TBR。根据TBR和TBC寄存器之间的相对值以及上/下计数,定时器将生成不同的PWM波形。如果计时器 B 未实现 TBC,则它只会在 TBR 上重置。在这种模式下,TBB引脚的初始值为高电平。
当 CP/RLD = 0(重新加载模式)和 TBCS:TBCR 的值分别为 11 时,选择比较切换模式。在此模式下,TBB 将打开 TBC 匹配(TBR 或 0000h 除外)。根据TBR和TBC寄存器之间的相对值以及上/下计数,定时器将生成不同的PWM波形。如果计时器 B 未实现 TBC,则它只会打开 TBR 匹配。在这种模式下,TBB引脚的初始值保持不变。
切换模式的初始状态取决于之前的 SET 或 RESET 模式。这意味着要建立特定的启动状态,TBCS:TBCR 位应在从比较禁用更改为比较切换模式时暂时配置为设置或重置。
如上所述,我们对这种用于在定时器B的TBB引脚上产生PWM的比较模式特别感兴趣。PWM波形在很大程度上取决于TBR和TBC之间的相对值(有或没有TBC寄存器)以及DCEN位的值(表1)。
比较模式下定时器B的PWM波形
不带待定寄存器的定时器 B
对于 SET 和 RESET 模式,TBC 比较匹配可能导致的引脚设置/复位永远不会发生。用户只能定义在启用定时器时生效的起始引脚状态。仍然会发生相应 RESET 和 SET 模式的引脚设置或清除操作。对于切换模式,TBR 将用于产生 50% 占空比 PWM。请参阅表 1 和图 1。
待定:TBCR | 功能 | 初始状态(如果 TBR = 0) |
00 | 无(比较禁用) | 无变化 |
01(重置) | 设定在 0000h | 低 |
10 (套) | 在TBR匹配时重置 | 高 |
11(切换) | 打开 TBR 匹配 | 无变化 |
图1.
设置或清除TBB引脚,分别定时为TBR+1和TBR,用于复位和设置操作。
在周期 50*TBR + 2 处为切换模式生成 2% 占空比。
示例 1:自定时器开启后 1 秒后设置 TBB 引脚(使用 RESET 比较模式)。
定时器B的频率:根据12MHz系统时钟计算定时器B频率。
使用DCEN = 0的复位比较模式来设置TBB引脚。
使用以下公式计算TBR的值以延迟1秒:
示例代码:
move TB2CN,#000H ; Reset Timer B move TB2CN,#0C00H ; Timer B clock = system clock/256 ; and in compare RESET mode move TB2R, #46874 ; Set reload value of Timer 2 TBR = 46874 move TB2V, #0001H ; Reset TBV=0x01 just to avoid set ; operation on 0000h move TB2CN.2,#1 ; Start Timer B to generate PWM
示例 2:生成一个 1MHz 波形,占空比为 50%,低电平(使用切换比较模式)。(请参阅图 2。
定时器B的频率:根据12MHz系统时钟计算定时器B频率。
使用DCEN = 0的切换比较模式来设置TBB引脚。
使用以下公式计算所需PWM频率为1MHz的TBR值:
示例代码:
move TB3CN,#000H ; Reset Timer B move TB3CN,#0800H ; Configure Timer B clock in RESET ; Compare mode to start LOW move TB3CN,#1800H ; Timer B clock = system clock ; and in compare TOGGLE mode with DCEN =0 move TB3R, #5 ; Set reload value of Timer 3 TB3R = 5 move TB3V, #000H ; Reset TBV=0x00 move TB3CN.2,#1 ; Start Timer B to generate PWM
图2.
设置或清除TBB引脚,定时分别为2 × TBR和TBR,用于复位和设置操作。
在周期 50 TBR ×为 TOGGLE 模式生成 4% 占空比。
示例3:在1μs延迟后复位TBB引脚(使用SET比较模式)。
定时器B的频率:根据12MHz系统时钟计算定时器B频率。
使用DCEN = 1的设置比较模式来设置TBB引脚。
使用以下公式计算TBR的值以延迟1μs:
示例代码:
move TB3CN,#000H ; Reset Timer B move TB3CN,#1010H ; Timer B clock = system clock ; and in compare SET mode with DCEN = 1 move TB3R, #12 ; Set reload value of Timer 3 TB3R = 12 move TB3V, #000H ; Reset TBV = 0x00 move TB3CN.2,#1 ; Start Timer B to generate PWM
示例 4:生成一个 1MHz 波形,占空比为 50%,高电平(使用切换比较模式)。
定时器B的频率:根据12MHz系统时钟计算定时器B频率。
使用DCEN = 1的切换比较模式来设置TBB引脚。
使用以下公式计算所需PWM频率为1Mhz的TBR值:
示例代码:
move TB2CN,#000H ; Reset Timer B move TB2CN,#01000H ; Configure Timer B clock in SET ; Compare mode to start HIGH move TB2CN,#1810H ; Timer B clock = system clock ; and in compare TOGGLE mode with DCEN=1 move TB2R, #3 ; Set reload value of Timer 2 TB2R = 3 move TB2V, #000H ; Reset TBV = 0x00 move TB2CN.2,#1 ; Start Timer B to generate PWM
带待定寄存器的定时器 B
当TBC寄存器在计数范围(TBC< TBR)内时,SET和RESET比较功能通过使用TBR重载值来改变频率,基本上提供了相同的功能。切换比较模式允许 50% 占空比 PWM 波形。当TBC寄存器超出范围(TBC> TBR)或在TBC = TBR和TBC = 0的特殊情况下,SET和RESET功能允许定时器清除或设置TBB引脚。请参阅表 2 和图 3。
待定:TBCR | 功能 | 初始状态(如果 TBR = 0) |
00 | 无(比较禁用) | 无变化 |
01(重置) | 在待定匹配时重置,设置为 0000h | 低 |
10 (套) | 在待定匹配时设置,在TBR匹配时重置 | 高 |
11(切换) | 打开待定匹配(TBR 或 0 除外) | 无变化 |
图3.
TBC > TBR:设置或清除相应复位和设置模式的 TBB 引脚。切换模式已禁用。
TBC = TBR 或 TBC = 0:请参阅注释1,2和3在下面的示例 8 之后。
TBR <待定:PWM 产生的占空比和周期如下所示:
设置模式 = (TBR - 待定)/(TBR + 1),周期为 TBR + 1
复位模式 = 待定/(TBR + 1),周期为 TBR + 1
切换模式 = 50%,周期为 2 × TBR + 2
示例 5:生成一个 32kHz 波形,占空比为 50%,从高电平开始(使用 SET 比较模式)。
定时器B的频率:这与12MHz系统时钟相同。
使用 DCEN = 0 的 SET 比较模式生成此波形。
使用以下公式计算所需PWM频率为32kHz的TBR和TBC值:
占空比 = (TBR - TBC)/(TBR + 1) = 50% => TBC = 186
示例代码:
move TB0CN,#1000H ; Configure Timer B clock as same as ; system clock and in compare SET mode move TB0C, #00186 ; set compare value of Timer 0 TBC = 186 move TB0R, #00372 ; Set reload value of Timer 0 TBR=372 move TB0V, #0000H ; Reset TBV=0x00 move TB0CN.2,#1 ; Start Timer B to generate PWM
示例 6:生成 512Hz 波形,占空比为 50%,起始为低电平(使用切换模式)。(请参阅图 4。
定时器B的频率:这与12MHz系统时钟相同。
使用DCEN = 0的切换比较模式生成此波形。
使用以下公式计算PWM频率为512Hz的TBR和TBC的值:
占空比 = 50%,不受待定 < 11717 的影响
move TB1CN,#0800H ; Configure Timer B clock in RESET ; Compare mode to start LOW move TB1CN,#1800H ; Configure Timer B clock as same as ; system clock and in compare TOGGLE mode move TB1C, #005000 ; Set compare value of Timer 1 TBC = 5000 move TB1R, #011717 ; Set reload value of Timer 1 TBR = 11717 move TB1V, #0000H ; Reset TBV=0x00 move TB1CN.2,#1 ; Start Timer B to generate PWM
图4.
TBC > TBR:设置或清除相应复位和设置模式的 TBB 引脚。切换模式已禁用。
TBC = TBR 或 TBC = 0:请参阅注释1,2和3在实施例8之后。
TBC < TBR:PWM 的周期为 2 × TBR,占空比定义如下:
设置模式 = (TBR - 待定)/(2 × TBR)
复位模式 = 待定/(2 × TBR)
切换模式 = 待定/TBR(高启动)或(TBR - 待定)/TBR(低启动)4
示例7:生成一个32kHz波形,占空比为30%,从低电平开始(使用复位比较模式)。
定时器B的频率:3MHz或系统时钟/4。
使用DCEN = 1的RESET比较模式生成此波形。
使用以下公式计算PWM波形的频率:
占空比 = 待定/(2 × TBR) = 30% => 待定 = 29
示例代码:
move TB0CN,#0910H ; Configure Timer B clock in system ; clock/4, in compare RESET mode, and ; DCEN = 1 move TB0C, #00029 ; Set compare value of Timer 0 TBC = 29 move TB0R, #00049 ; Set reload value of Timer 0 TBR = 49 move TB0V, #0000H ; Reset TBV = 0x00 move TB0CN.2,#1 ; Start Timer B to generate PWM
示例 8:生成 512Hz 波形,占空比为 40%,从高电平开始(使用切换模式)。
定时器B的频率:这与12MHz系统时钟相同
使用DCEN = 1的切换比较模式生成此波形。
使用以下公式计算PWM频率为512Hz的TBR和TBC的值:
占空比 = 40% 或 TBC/TBR = 0.4 => TBC = 4687
示例代码:
move TB1CN,#01000H ; Configure Timer B clock in SET ; compare mode to start HIGH move TB1CN,#1810H ; Configure Timer B clock as same as ; system clock in compare TOGGLE mode ; and DCEN = 1 move TB1C, #004687 ; Set compare value of Timer 1 TBC = 4687 move TB1R, #011718 ; Set reload value of Timer 1 TBR=11718 move TB1V, #0000H ; Reset TBV = 0x00 move TB1CN.2,#1 ; Start Timer B to generate PWM
笔记:
1当输出比较功能配置为 SET 模式时,配置 TBC = TBR 将禁用 TBC 比较匹配操作。当TBC = TBR时,计时器不会设置。
2当输出比较功能配置为复位模式时,配置 TBC = 0 将禁用 TBC 比较复位操作。当 TBC = 0 时,计时器不会重置。
3当输出比较功能配置为切换模式时,配置 TBC = 0 或 TBC = TBR 将禁用切换功能。输出PWM将为低电平或高电平,具体取决于TBB引脚的初始启动状态。
4切换模式的初始状态取决于之前的 SET 或 RESET 模式。这意味着当从“比较禁用”更改为“比较切换模式”以建立特定的启动状态时,TBCS:TBCR 位应暂时配置为设置(启动高电平)或重置(启动低电平)。
例子
以上所有示例均在带有定时器B的MAXQ微控制器上执行。该器件有四个定时器 B,其中定时器 0 和 1 具有 TBC 寄存器,定时器 2 和 3 没有。时钟运行在大约12Mhz。
附加说明
当处于DCEN = 1的比较模式下时,无论TBB引脚的当前值如何,定时器始终计数。计时器之所以这样工作,是因为计数方向是在内部控制的。
正常的计数范围将在 0000h 到 TBR 之间进行计数,从 TBR 到 0000h 进行倒计时。注意:与其他计时器一样,此计数从TBR到0FFFFh和从0FFFFh到TBR不同。
三个源时钟预分频器位 (TBPS2:0) 将预标度值设置为 2**(N × 2),其中 N = 0、1、2、3、4 和 5,应用于定时器B 源时钟。
结论
MAXQ微控制器中的定时器B可以提供不同的PWM波形,这取决于TBC和TBR寄存器的相对值以及DCEN位的状态。定时器 B 将在有或没有比较寄存器待定的情况下工作。表1和表2分别总结了不带TBC比较寄存器和带TBC比较寄存器的定时器B输出功能。图1至图4显示了每种特定配置下定时器B引脚TBB上的典型PWM波形。对于所有情况,用户都可以使用定义的公式确定PWM周期和占空比。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !