您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > S3C2410PWM定时器
12.1回顾S3C2410时钟信号及用途:FCLK、PCLK、HCLK、UCLKS3C2410片内的总线:AHB、APBS3C2410的看门狗控制器编程步骤初始化看门狗控制器时钟设置、输出类型设置:给WTCON相应位赋值;计数器初始值设定:给WTCNT相应位赋值;数据寄存器赋值:给WTDAT相应位赋值;如果把看门狗作为一个普通的定时器使用,还必须把看门狗定时中断处理程序填入中断向量表中,并把相关的中断控制寄存器初始化;使能看门狗控制寄存器:给WTCON相应位赋值;12.2S3C2410PWM定时器S3C2410PWM定时器概述;S3C2410PWM定时器的操作;S3C2410PWM定时器相关的寄存器;S3C2410PWM定时器的应用编程。12.3教学要求了解PWM及死区的作用掌握S3C2410PWMTimer工作原理掌握利用S3C2410PWMTimer输出PWM波形的操作方法与编程步骤12.4PWM脉冲的作用现在有这样个问题:让你设计一个电路能够任意调节灯泡的亮度,该怎样做呢?12.5脉冲宽度调制(PWM)脉冲宽度调制(PWM),是英文“PulseWidthModulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。12.6S3C2410Timer部件概述S3C2410芯片内部拥有5个16位的Timer部件Timer0、Timer1、Timer2、Timer3具有脉宽调制(pwm)功能,具有PWM脉冲输出引脚;Timer4仅作定时器用,不具有PWM功能,没有输出引脚;Timer0有一个死区(deadzone)发生器。每个Timer部件所需的计数时钟信号均需系统提供的pclk时钟两次“变速”(预分频和再分频)所得。Timer0、Timer1共享一个8位的预分频器,共享一个4位的再分频器;Timer2、Timer3、Timer4共享另一个8位预分频器,共享另外一个4位的再分频器;详见S3C2410datasheet12.7S3C2410Timer部件概述5个Time部件最核心的东西仍然是一个脉冲减一计数器:TCNTnTCMPnTCNTBnTCMPBnToutn周期宽度输出的脉冲的宽度可以调节,所以称为PWM脉冲TCMPBn*比较器TCNTBn*计数时钟周期n=0,1,2,3黄颜色部分为Timer4的模块,因为其没有脉冲输出,仅仅是一个普通的定时器而已定时中断12.8S3C2410Timer部件的操作Time4因为没有脉冲输出,所以其操作比较简单:减一计数器TCNT4溢出时产生定时中断,同时TCNTB4中的值会复制到TCNT4中开始下一轮计数。初始化;while(1){脉冲计数;if(TCNTn==TCMPn)Toutn=~Toutn;if(TCNTn==0)发定时中断请求;if(TCNT==-1){Toutn=~Toutn;TCNTn=TCNTBn;TCMPn=TCMPBn;}}n=0,1,2,3,右图为工作原理的伪代码描述12.9S3C2410Timer部件的操作下图:为s3c2410定时器的操作图(Figure10.2Timeroperations)“开始位=1”表示启动定时器开始计数;“手动更新位=1”表示将计数缓冲寄存器TCNTBn中的内容复制到计数寄存器TCNTn,比较缓冲寄存器TCMPBn中的内容复制到比较寄存器TCMPn“自动重载=1”表示计数器溢出时会自动将计数缓冲寄存器TCNTBn中的内容复制到计数寄存器TCNTn,比较缓冲寄存器TCMPBn中的内容复制到比较寄存器TCMPn12.10S3C2410Timer部件的操作12.11S3C2410Timer部件的操作注意:程序不能直接对TCNTn进行读写,若但一定要读其中的数据,可以读TCNTOn在程序中,TCNTn和TCMPn的值可以在初始化时(定时器开启前)手动更新(手动更新位置1);在溢出时自动重载(自动重载位置1)反转器位关闭时,Toutn的初始电平为高电平;反之则反之。•反转位一旦变化,TOUT电平立即发生变化12.12S3C2410Timer部件的操作Timer0死区功能开启时的效果是Tout0和nTout0不会同时出现高电平,如果Tout0和nTout0用于控制两个不能同时开关器件,则这两个电器不会同时开闭。12.13Timer寄存器共有6种、17个寄存器•TCNTBn---Timern计数初值寄存器(计数缓冲寄存器),16位•TCMPBn---Timern比较寄存器(比较缓冲寄存器),16位•TCNTOn---Timern计数读出寄存器,16位RegisterAddressR/WDescriptionResetValueTCFG00x51000000R/W配置寄存器00x00000000TCFG10x51000004R/W配置寄存器10x00000000TCON0x51000008R/W控制寄存器0x00000000TCNTBn0x510000xxR/W计数初值寄存器(5个)0x0000TCMPBn0x510000xxR/W比较寄存器(4个)0x0000TCNTOn0x510000xxR观察寄存器(5个)0x0000S3C2410Timer相关的寄存器12.14•Deadzonelength---死区宽度设置位•其值N为:0~255,以timer0的工作时钟为单位•死区宽度为:(N+1)×timer0的1次计数时间•Prescaler1---timer2、3、4的预分频值•其值N为:0~255•输出频率为:PCLK÷(N+1)•Prescaler0---timer0、1的预分频值•其值N为:0~255•输出频率为:PCLK÷(N+1)TCFG0---预分频器配置寄存器31……2423……1615……87……0保留(为0)DeadzonelengthPrescaler1Prescaler012.15TCFG1---DMA模式与分频选择寄存器•DMAmode---DMA通道选择设置位•0000:不使用DMA方式,所有通道都用中断方式•0001:选择timer00010:选择timer1•0011:选择timer20100:选择timer3•0101:选择timer4011X:保留•MUX4~MUX0---timer4~timer0分频值选择•0000:1/20001:1/4•0010:1/80011:1/16•01XX:选择外部TCLK0、1(对timer0、1是选TCLK0,对timer4、3、2是选TCLK1)31…2423…2019…1615…1211…87…43…0保留(为0)DMAmodeMUX4MUX3MUX2MUX1MUX012.16•TL4~TL0---计数初值自动重装控制位•0:单次计数•1:计数器值减到0时,自动重新装入初值连续计数。•TUP4~TUP0---计数初值手动装载控制位。•0:不操作1:立即将TCNTBn中的计数初值装载到计数寄存器TCNTn中。•说明:如果没有执行手动装载初值,则计数器启动时无初值。121110987…543210TR2TL1TO1TUP1TR1保留DZETL0TO0TUP0TR0TCON---定时器控制寄存器31…2322212019181716151413保留TL4TUP4TR4TL3TO3TUP3TR3TL2TO2TUP212.17•TR4~TR0---TIMER4~TIMER0运行控制位•0:停止1:启动对应的TIMER•TO3~TO0---TIMER4~TIMER0输出控制位•0:正相输出1:反相输出•DZE---TIMER0死区操作控制位•0:禁止死区操作1:使能死区操作121110987…543210TR2TL1TO1TUP1TR1保留DZETL0TO0TUP0TR0TCON定时器控制寄存器(续)31…2322212019181716151413保留TL4TUP4TR4TL3TO3TUP3TR3TL2TO2TUP212.18(1)按照前面初始化定时器;设置TCNTBn=160(50+110),TCMPBn=110;手动装入初值后,又重设TCNTBn=80,TCMPBn=40,自动重装初值开启;(2)启动定时器,按第一个初值计数;(3)与第一个比较值相同,输出取反;(4)第一次计数结束,自动重装初值80、40;(5)在第一次中断处理程序又重设TCMPBn=60;(6)与第二个比较值相同,输出取反;(7)第二次计数结束,自动重装初值80、60;(8)在第二次中断处理程序禁止自动重装初值,准备结束计数;(9)与第三个比较值相同,输出取反;(10)第三次计数结束,不再计数。50110404020601234679105TOUTn8定时器产生PWM操作例子12.19S3C2410的定时器控制器编程举例例:编写一程序,利用S3C2410定时器产生PWM信号,驱动实验板上蜂鸣器鸣叫。设S3C2410的PCLK为50MHz。见参考代码PWMTIMER12.2020小结(1)写TCFG0,设置计数时钟的预分频值和Timer0死区宽度;(2)写TCFG1,选择各个定时器的分频值和DMA、中断服务;(3)对TCNTBn和TCMPBn分别写入计数初值和比较值(4)写TCON,设置计数初值自动重装和手动装载(5)再写TCON,清除手动装载初值位、设置输出反转位、启动计数。PWM定时器初始化方法12.21思考题1.PWM及死区的作用?2.S3C2410定时器工作原理?3.S3C2410定时器计数器和比较器,是由哪个寄存器实现重载?以及重载的方法有哪些?12.22本周小课预习内容如何使用单片机凑音乐,自我网上学习音乐简谱知识,什么是音符、音长及相关符号的含义,能基本会看简谱?实验板上蜂鸣器控制端口对应的是哪个定时器的PWM信号输出?S3C2410PWM定时器如何开启(即回答哪个位让它开始定时计数),自动更新位和手动更新位是哪个寄存器的第几位以及他们作用是什么?S3C2410PWM定时器计数器和比较器的重载寄存器分别是?设PCLK为50MHz,则如何设置可使S3C2410的PWM定时器工作时钟频率约为1MHz?在此时钟频率下让PWM定时器产生987Hz的PWM信号,又如何设置呢?12.23下周大课预习内容S3C2410实时时钟RTC(REALTIMECLOCK)数据手册S3C2410.PDF第17章RTC
本文标题:S3C2410PWM定时器
链接地址:https://www.777doc.com/doc-2856690 .html