收藏 分享(赏)

第22讲_PWM与定时器.ppt

上传人:fmgc7290 文档编号:8306138 上传时间:2019-06-19 格式:PPT 页数:56 大小:1.82MB
下载 相关 举报
第22讲_PWM与定时器.ppt_第1页
第1页 / 共56页
第22讲_PWM与定时器.ppt_第2页
第2页 / 共56页
第22讲_PWM与定时器.ppt_第3页
第3页 / 共56页
第22讲_PWM与定时器.ppt_第4页
第4页 / 共56页
第22讲_PWM与定时器.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、第二十二讲 PWM与定时器,河南大学 计算机与信息工程学院 授课人:金勇,联系电话:13598785920 Email:,计算机专业核心课程之一,S3C2410内部的PWM定时器,PWM 周期恒定,高电平宽度(占空比)可调的方波脉冲(Pulse Width Modulation),5个16位定时器;定时器0定时器3具有输出PWM(脉宽调制)脉冲信号的功能;, 定时器0内部有“死区”产生器,可用于驱动大电流设备;,所谓利用“死区”驱动大电流设备,是指需要交替开、关两台设备时,能保证前一台设备关掉后,经过一段时间间隙、即所谓“死区”后,再开通后一台设备,保证不会出现两台设备同时打开,哪怕是瞬间的同

2、时打开。,每个定时器按减计数方式工作,当减到0时,可选择自动重装模式,也可选择单次触发模式。,S3C2410内部的PWM定时器,内部结构,时钟信号的选择,时钟源PCLK的分频处理,PCLK主时钟信号作为定时器原始的时钟信号,分别经过两个8位预分频器(预分频器0和预分频器1)进行分频,分频值的取值范围为:1256。有两个时钟信号除法器,分别称为除法器0和除法器1。除法器0接收预分频器0的输出信号,除法器1接收预分频器1的输出信号。两个除法器各自输出4种信号,分别是对预分频器输出信号的2、4、8、16分频信号。,每个定时器前端有一个5选1的多路开关,分别称为时钟多路器0、时钟多路器1、时钟多路器2

3、、时钟多路器3、时钟多路器4。时钟多路器0与时钟多路器1可选择接通5种信号(除法器0输出的4种分频信号和TCLK0信号)之一分别作为定时器0与定时器1的输入时钟信号;时钟多路器2、时钟多路器3与时钟多路器4可选择接通5种信号(除法器1输出的4种分频信号和TCLK1信号)之一分别作为定时器2、定时器3与定时器4的输入时钟信号。,时钟信号的选择,时钟信号分频处理与选择的实现,两个分频器中的分频值通过配置寄存器TCFG0实现,每个时钟多路器选择哪一种输入时钟信号,通过配置寄存器TCFG1实现。,时钟信号的选择,输出PWM波形,(1) 16位计数器TCNTn(n=0、1、2、3、4),减法计数器,从某

4、初值开始减计数,减到0时,可以重装初值。,(2)计数缓冲寄存器TCNTBn(n=0、1、2、3),TCNTn的重装值,当TCNTn减计数到0时, TCNTBn TCNTn,(3)比较寄存器TCMPn(n=0、1、2、3),用于控制PWM波形的高电平宽度,TCNTn TCMPn,定时器输出低电平;TCNTn TCMPn,定时器输出高电平;,在定时器输出可以选择接反相器,此时,输出电平的控制刚好相反:TCNTn TCMPn,定时器输出高电平;TCNTn TCMPn,定时器输出低电平;,输出PWM波形,比较寄存器TCMPn,(4)比较缓冲寄存器TCMPBn(n=0、1、2、3),用于加载TCMPn,

5、当TCNTn减计数到0时:TCNTBn TCNTnTCMPBn TCMPn,TCMPn中的数值确定了定时器输出PWM波形的高(或低电平)的宽度。TCMPn器中的数值由TCMPBn的数值加载,因此,TCMPBn的数值用于PWM(脉宽调制)。,输出PWM波形,当需要通过定时器的输出引脚向外输出PWM波形时,必须在定时器控制器TCON中设置允许自动重装、设置TCNTBnTCMPBn,当定时器的计数器减计数到0时,TCNTBn中的数值加载到TCNTn中作为计数初值,TCMPBn中的数值加载到TCMPn中,同时,定时器引脚为低电平(假设输出未接反向器)。计数器开始减计数,当减到TCNTn = TCMPn

6、时,定时器输出引脚翻转为高电平。计数器继续减计数,当减到0时,TCNTBn中的数值重新加载到TCNTn中、TCMPBn的数值重新加载到TCMPn中、定时器输出引脚重新翻转为低电平开始新的计数器周期。由此在输出引脚产生PWM波形。,(5) PWM输出实现,输出PWM波形,PWM波形的周期由TCNTBn中的数值确定;PWM波形的高电平宽度由TCMPBn中的数值确定。,输出PWM波形,中断请求或DMA请求,(1)中断请求,每个定时器在硬件结构上都是按减计数方式工作的16位计数器,由时钟信号驱动计数,当减计数到0时,产生中断请求,通知CPU定时器工作完毕,同时,自动将TCNTBn中的数值加载到TCNT

7、n中继续进行下一次操作。,PWM定时器能在每个特定时间产生DMA请求,产生DMA请求时,保持请求信号为低电平直到接收到应答信号ACK为止。当定时器接收到ACK信号时,置请求信号无效。5个定时器的每一个都能产生DMA请求。通过设置TCFG1寄存器中的DMA模式位来确定哪一个定时器产生DMA请求。如果一个定时器被配置为DMA模式,将不会产生中断请求,其他的定时器正常产生中断请求。,(2)DMA请求,中断请求或DMA请求,DMA模式配置和DMA/中断操作,DMA请求时序图,双缓冲特性,定时器0定时器3中有计数器TCNTn和计数缓冲寄存器TCNTBn,用于控制PWM输出波形的有比较寄存器TCMPn和比

8、较缓冲寄存器TCMPBn,当修改TCNTBn和TCMPBn中的数值时,新的数值只有当前计数周期结束,既计数器TCNTn减计数到0时才会分别加载到计数器TCNTn中和比较寄存器TCMPn中。这种双缓冲区特性使得当定时器输出频率和占空比改变时,保证定时器输出的最后一个脉冲波形为前一时刻TCNTBn和TCMPBn中设定数值所确定的波形。,读取计数器TCNTn中的数值,计数器TCNTn在工作过程中,可以通过计数观察寄存器TCNTOn读取当前的计数值。,参数配置,输入时钟频率的配置,其中,预分频值 = 0255,通过配置定时器配置寄存器TCFG0实现。除数 = 2,或4,或8,或16,通过配置定时器配置

9、寄存器TCFG1实现。,定时器配置寄存器TCFG0,定时器配置寄存器TCFG1,定时器配置寄存器TCFG1,当系统主时钟信号PCLK=66.5MHz时,通过配置TCFG0、TCFG1可以获得的最小时钟周期/频率、最大时钟周期/频率、最大定时时间间隔。,参数配置,【例】:系统时钟PCLK=60MHz,要求T0T4的计数时钟频率依次为200KHz、100KHz、50KHz、25KHz、TCLK1,不选择死区输出形式,不产生DMA请求。,根据题意,需要配置TCGF0和TCGF1两个寄存器实现要求,若两个预分频器的预分频值取14,计数器输入时钟频率分别等于200KHz、100KHz、50KHz、25K

10、Hz,将这两个条件带入下式:可以得到T0T3的除数值分别为2、4、8、16,即多路器0选择2分频;多路器1选择4分频;多路器2选择8分频;多路器3选择16分频;多路器4选择TCLK1。据此配置TCFG0和TCFG1:,TCFG031:24=0x00 ;保留位 TCFG023:16=0x00 ;死区长度 TCFG015:8=14=0x0E ;预分频值取14 TCFG07:0=14=0x0E ;预分频值取14 整个TCFG0配置为:TCFG031:0=0x0E0E,【例】:系统时钟PCLK=60MHz,要求T0T4的计数时钟频率依次为200KHz、100KHz、50KHz、25KHz、TCLK1,

11、不选择死区输出形式,不产生DMA请求。,TCFG131:24=0x00 ;保留位 TCFG123:20=0x0 ;DMA模式 TCFG119:16=0100B=0x4 ;外部TCLK1 TCFG115:12=0011B=0x3 ;16分频 TCFG111:8=0010B=0x2 ;8分频 TCFG17:4=0001B=0x1 ;4分频 TCFG13:0=0000B=0x0 ;2分频 整个TCFG1配置为:TCFG131:0=0x43210,【例】:系统时钟PCLK=60MHz,要求T0T4的计数时钟频率依次为200KHz、100KHz、50KHz、25KHz、TCLK1,不选择死区输出形式,不

12、产生DMA请求。,编程配置:TCFG0 EQU 0x51000000TCFG1 EQU 0x51000004LDR R0,=TCFG0LDR R1,=0xE0ESTR R1,R0LDR R0,=TCFG1LDR R1,=0x43210STR R1,R0,PWM输出占空比配置,通过配置TCNTBn来确定定时器输出频率,通过配置TCMPBn来确定定时器PWM输出波形的占空比。5个定时器都有TCNTBn,定时器0定时器3有TCMPBn。,【例】:T0T3通过各自输出引脚向外输出脉冲波形,占空比分别为80%、60%、40%和20%,脉冲周期均为1000个输入时钟周期。,根据题意。TCNTB0TCNTB

13、3均设置为:(TCNTB0TCNTB3)=1000(0x3E8) ;输出频率 TCMPB0=800(0x320) ;占空比80%TCMPB1=600(0x258) ;。60%TCMPB2=400(0x190) ;。40%TCMPB3=200(0xC8) ;。20%,编程确定:TCNTB0 EQU 0x5100000CTCNTB1 EQU 0x51000018TCNTB2 EQU 0x51000024TCNTB3 EQU 0x51000030,TCMPB0 EQU 0x51000010TCMPB1 EQU 0x5100001CTCMPB2 EQU 0x51000028TCMPB3 EQU 0x5

14、1000034LDR R0,=TCNTB0LDR R1,=0x3E8 ;输出频率 MOV R2,#0x4 ;TCNTB0TCNTB3设置 L1STR R1,R0,12SUBS R2,R2,#1BNE L1LDR R0,=TCMPB0,LDR R1,=0x320 ;占空比80%STR R1,R0LDR R0,=TCMPB1LDR R1,=0x258 ;占空比60%STR R1,R0LDR R0,=TCMPB2LDR R1,=0x190 ;占空比40%STR R1,R0LDR R0,=TCMPB3LDR R1,=0xC8 ;占空比20%STR R1,R0,定时器操作的控制,定时器的控制通过定时器控

15、制寄存器TCON实现。,(1) 计数值自动重装控制在定时器控制寄存器TCON中,每个定时器都有自动重装控制位,如果将该位置1,就设置了允许自动重装使能,当TCNTn减计数到0时,自动将TCNTBn中的数值重装到TCNTn中。如果自动重装控制位置0,则禁止自动重装。,(2)手动更新控制在定时器控制寄存器TCON中,每个定时器都有手动更新控制位,如果将该位置1,就实现了手动更新操作。手动更新操作分别实现将TCNTBn中的数值加载到TCNTn中、将TCMPBn中的数值加载到TCMPn中,不用等到TCNTn中的数值减计数到0。手动更新用于首次启动定时器,直接通过TCNTBn和TCMPBn加载TCNTn

16、和TCMPn。,(3)启动/停止控制在定时器控制寄存器TCON中,每个定时器都有启动/停止控制位,如果将该位置1,定时器开始工作;如果将该位置0,定时器停止工作。,定时器操作的控制,(4)输出电平控制定时器0定时器3的输出可以选择不接反相器或接反相器,接或不接其输出电平的相位刚好相反。在定时器控制寄存器TCON中,有接/不接控制位,置0该位为不接;置1该位为接。,定时器操作的控制,定时器操作,双缓冲与自动重装操作,S3C2410A的PWM定时器具有双缓冲特性,这使得改变重装值时只会影响下一次定时器的操作,并不会停止当前的定时器操作。因此,尽管设置了新的定时器计数值,当前定时器计数器仍会按原有的

17、计数初值减计数到0完成。,定时器的计数初值写入计数缓冲寄存器TCNTBn中,当前的计数值可以从计数观察寄存器TCNTOn中读出。如果读计数缓冲寄存器TCNTBn,读出的并不是当前的计数值而是定时器下一次计数的重装初始值。,(1) TCNTBn = 150 时,设置自动重装使能,启动计数,TCNTn从初始值150开始减计数;,定时器操作,(2)TCNTn还没有减到0时,设置了TCNTBn = 100,由于此时TCNTn 0,所以TCNTBn = 100这个新的重装值不能立即加载到TCNTn,TCNTn仍会从初始值150减计数,直至减到0,完成第一个计数周期;,(3)第一个计数周期结束时,此时重装

18、值TCNTBn = 100,所以在第二个计数周期里,TCNTn完成100个减计数;,(4)第二个计数周期结束时,重装值TCNTBn = 100,所以在第三个计数周期里,TCNTn仍然完成100个减计数;,(5)在第三个计数周期结束时,由于重装值TCNTBn已经设置为TCNTBn = 200,所以在第四个计数周期里,TCNTn完成200个减计数。,每当TCNTn减计数到0时,都会产生中断请求。,初始化定时器时进行手动更新操作和配置反相器,初始化定时器时要进行手动更新操作和配置好反相器,按减计数方式工作的计数器减到0时将发生自动重装操作,但首次重装发生之前TCNTn的初始值还未定义过,在这种情况下

19、,要通过设置手动更新位的方法将TCNTBn中的初始值加载到TCNTn中。启动定时器的顺序如下:,(1)将初始值写入到TCNTBn和TCMPBn中。 (2)将定时器的手动更新位设置为1,建议同时配置好反相器位。 (3)将定时器的启动位设置为1启动定时器,同时,将手动更新位清0。,如果定时器被强制停止,TCNTn中仍然保存着原来的计数值,而没有从TCNTBn中重装。如果要TCNTBn加载一个新的计数值,那么也要采用手动更新的方式。,注意,无论何时,无论定时器是否处于工作状态,反向器开关状态的改变将直接导致定时器输出TOUTn的逻辑电平的改变,因此最好反向器的开关位用手动更新的方式配置。,初始化定时

20、器时进行手动更新操作和配置反相器,【例】定时器2的基本操作控制,定时器2基本操作举例示意图,上图说明了对定时器2进行自动重装控制、手动更新控制、启动控制时对TCNT2、TCMP2、TOUT2及中断请求状态的影响。,(1) 命令1设置:TCNTB2 = 3、TCMPB2 = 1、自动重装使能、不接反相器、进行手动更新,不启动;,【例】定时器2的基本操作控制,编程:TCON EQU 0x51000008CMD1 EQU 0x0000A000 ;定时器2自动重装使能、不接反相器、进行手动更新、不启动TCNTB2 EQU 0x51000024TCMPB2 EQU 0x51000028LDR R0,=T

21、CNTB2MOV R1,#0x3STR R1,R0 LDR R0,=TCMPB2MOV R1,#0x1STR R1,R0,【例】定时器2的基本操作控制,MOV R0,=TCONMOV R1,CMD1STR R1,R0,由于命令一进行了手动更新,TCNTB2立即加载到TCNT2中,使TCNT2 = 3;TCMPB2立即加载到TCMP2中,使TCMP2 = 1。由于没有启动定时器2,定时器输出没有接反相器,输出TOUT2保持为高电平状态。,【例】定时器2的基本操作控制,CMD2 EQU 0x00009000 ;启动定时器2,置0手动更新位MOV R0,=TCONMOV R1,CMD2STR R1,

22、R0定时器2启动后,经过一个时钟周期的延迟,TCNT2将从3开始减计数。,(2)命令2启动定时器,对应的指令:,【例】定时器2的基本操作控制,(3)命令3设置:TCNTB2 = 2、TCMPB2 = 0,对应的指令:LDR R0,=TCNTB2MOV R1,#0x2STR R1,R0LDR R0,=TCMPB2MOV R1,#0x0STR R1,R0,由于命令三发出时,定时器2已经启动,所以,只有TCNT2减计数到0时,才会用TCNTB2加载TCNT2、用TCMPB2加载TCMP2。,【例】定时器2的基本操作控制,TCNT2从3开始减计数,当减到1时,TCNT2 = TCMP2,输出TOUT2

23、从低电平翻转到高电平。,TCNT2继续减计数,当减到0时,产生中断请求。TCNT2 = 0持续一个时钟周期,开始重装TCNT2和TCMP2,根据命令3的设置,重装后,TCNT2=1、TCMP2 = 0,由于此时TCNT2 TCMP2,输出TOUT2翻转为低电平,开始新的一个计数周期。,【例】定时器2的基本操作控制,(4)命令4置0自动重装位,对应的指令:,CMD4 EQU 0x00001000 ;启动定时器2,置0手动更新位,置0自动重装位MOV R0,=TCONMOV R1,CMD4STR R1,R0,当TCNT2减计数到0时,由于TCNT2 = TCMP2,输出TOUT2翻转为高电平,同时

24、产生中断请求。由于此时禁止了自动重装,定时器2停止了计数,维持TCMP2 = 0、TCNT2 = 0、TOUT2为高电平。,【例】定时器2的基本操作控制,【例】定时器操作过程,(1)设置自动重装允许,设置TCNTBn为160(50110)和TCMPBn为110,设置手动更新位和反相器位。通过手动更新位的设置分别使得TCNTBn中的数值加载到TCNTn中,TCMPBn中的数值加载到TCMPn中。然后,再分别设置TCNTBn为80(4040),TCMPBn为40,作为下一个周期的重装值。,(2)置1启动位、清0手动更新位、置0反相器、自动重装允许,于是,定时器延迟一个时钟周期后开始按减计数方式计数

25、。,(3)当TCNTn减计数到与TCMPn中的数值相同时,TOUTn的逻辑电平从低变高。,(4)当TCNTn减计数到0,产生中断请求,同时TCNTBn的数值载入到一个临时寄存器。在下一个时钟周期,TCNTn从临时寄存器重新装入计数值(TCNTBn中的数值)。,(5)在ISR(中断服务程序)中,TCNTBn和TCMPBn被分别设置为80(2060)和60,用于下一个周期。,(6)当TCNTn减计数到与TCMPn中数值相同时,TOUTn的逻辑电平从低变高。 (7)当TCNTn减计数到0,TCNTn自动重新装人TCNTBn中的数值,同时,产生中断请求。 (8)在ISR中,设置自动重装禁止,同时禁止该定时器的中断请求,从而停止定时器工作。,(9)当TCNTn具有与TCMPn相同的数值时,TOUTn的逻辑电平从低变高。 (10)即便TCNTn减计数到0,由于自动重装被禁止了,因此TCNTn不再重装计数值,定时器停止了。 (11)没有中断请求产生。,56,课后思考,1)S3C2410的Watchdog与RTC基本工作原理及应用 2)PWM的应用,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报