嵌入式体系结构及接口技术:S3C2410X PWM定时器_第1页
嵌入式体系结构及接口技术:S3C2410X PWM定时器_第2页
嵌入式体系结构及接口技术:S3C2410X PWM定时器_第3页
嵌入式体系结构及接口技术:S3C2410X PWM定时器_第4页
嵌入式体系结构及接口技术:S3C2410X PWM定时器_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

定时器/计数器简称定时器,其作用主要包括产生各种时间间隔、记录外部事件的数量等,是计算机中最常用、最基本的部件之一。10.1S3C2410XPWM定时器1

10.1.1PWM定时器概述S3C2410X的PWM定时器有5个16位定时器,其中定时器0、定时器1、定时器2与定时器3具有脉冲宽度调制(PWM)功能定时器4仅供内部定时而没有输出引脚定时器0具有死区生成器,可以控制大电流设备10.1S3C2410XPWM定时器2

10.1.1PWM定时器概述10.1S3C2410XPWM定时器3

10.1.1PWM定时器概述定时器0和1共享一个8位的预分频器,定时器2、3、4共享另一个8位预分频器。每个定时器有一个时钟分频器,可以生成5种不同的分频信号(1/2、1/4、1/8、1/16和外部时钟TCLK)。每个定时器都从时钟分频器接收时钟信号可编程8位预分频器根据存储在TCFG0和TCFG1中的数据对PCLK进行分频。10.1S3C2410XPWM定时器4

10.1.1PWM定时器概述当定时器使能后,定时器计数缓冲寄存器(TCNTBn,Thetimercountbufferregister)把计数初值下载到递减计数器中。定时器比较缓冲寄存器(TCMPBn)把其初始值下载到比较寄存器中,并将该值和递减计数器的值进行比较。这种基于TCNTBn和TCMPBn的双缓冲特性使定时器在频率和占空比变化时产生稳定的输出。10.1S3C2410XPWM定时器5

10.1.1PWM定时器概述每个定时器有一个专用的由定时器时钟驱动的16位递减计数器。当递减计数器为零时,定时器中断请求生成通知CPU定时器操作已经完成。当定时器计数器达到0,相应的TCNTBn的值也自动装载到递减计数器中以继续下一个操作。但是,如果定时器停止了,例如在定时器运行模式下通过对TCONn的定时器使能位清零,则TCNTBn的值不会装载到计数器中。TCMPBn的值用于脉宽调制。当递减计数器的值和定时器控制逻辑中的比较寄存器的值匹配时,定时器控制逻辑改变输出电平。因此,比较寄存器决定了PWM输出的开启时间。10.1S3C2410XPWM定时器6

10.1.1PWM定时器概述基本定时器操作:10.1S3C2410XPWM定时器7

10.1.1PWM定时器概述死区功能用于电源设备的PWM控制。这个功能允许在一个设备关闭和另一个设备开启之间插入一个时间间隔,用于防止两个设备同时被启动。TOUT0是定时器0的输出,nTOUT0是TOUT0的反转信号。如果死区功能被使能,TOUT0和nTOUT0的输出波形就变成了TOUT0_DZ和nTOUT0_DZ。nTOUT0_DZ在TOUT1脚上产生。在死区间隔内,TOUT0_DZ和nTOUT0_DZ就不会同时翻转了。10.1S3C2410XPWM定时器8

10.1.1PWM定时器概述10.1S3C2410XPWM定时器9

10.1.1PWM定时器概述10.1S3C2410XPWM定时器10

10.1.2PWM定时器的寄存器(17个)1、定时器配置寄存器0(TFCG0:0x51000000)定时器输入时钟频率=PCLK/{prescalervalue+1}/{dividervalue}{prescalervalue}=1~255;{dividervalue}=2、4、8、1610.1S3C2410XPWM定时器11

10.1.2PWM定时器的寄存器2、定时器配置寄存器1(TCFG1)定时器配置寄存器1主要用于DMA通道选择,PWM定时器的

MUX输入。10.1S3C2410XPWM定时器12

10.1.2PWM定时器的寄存器3、定时器控制寄存器(TCON)定时器控制寄存器主要用于自动重载、定时器自动更新、定时器启停、输出翻转控制等。10.1S3C2410XPWM定时器13

TCON:10.1S3C2410XPWM定时器14

10.1.2PWM定时器的寄存器4、定时器n计数缓冲寄存器(TCNTBn)该寄存器用于PWM定时器的时间计数10.1S3C2410XPWM定时器15

10.1.2PWM定时器的寄存器5、定时器n比较缓冲寄存器(TCMPBn)该寄存器用于PWM波形输出占空比的设置10.1S3C2410XPWM定时器16

10.1.2PWM定时器的寄存器S3C2410X的PWM定时器具有双缓冲功能,能在不停止当前定时器运行的情况下,重载下次运行的参数。10.1S3C2410XPWM定时器17

10.1.3PWM定时器操作示例操作PWM定时器输出下图的PWM波型:10.1S3C2410XPWM定时器18

10.1.3PWM定时器操作示例(1)使能自动重载功能。设置TCNTBn值为160(50+110),TCMPn值为110。置位手动更新位(将TCNTBn和TCMPBn的值加载到TCNTn和TCMBn),配置反转位。然后设置TCNTBn

和TCMPBn分别等于80(40+40)和40。(2)将手动更新位设为0,将反转位设为off,使能自动重载功能,置位启动位。定时器会在分辨率内的一段延迟后开始递减计数。(3)当TCNTn和TCMPn的值相等的时候,TOUTn输出电平由低变高。(4)当TCNTn的值等于0的时候产生中断,并把TCNTBn和TCMPBn的值自动装入TCNTn和TCMPn。10.1S3C2410XPWM定时器19

10.1.3PWM定时器操作示例(5)在中断服务程序中,将TCNTBn和TCMPBn分别设置为80和60。(6)当TCNTn和TCMPn的值相等的时候,TOUTn输出电平由低变高。(7)当TCNTn的值等于0的时候产生中断,并把TCNTBn和TCMPBn的值自动装入TCNTn和TCMPn。(8)在中断服务子程序中,禁止自动重载和中断请求来停止定时器。10.1S3C2410XPWM定时器20

10.1.3PWM定时器操作示例(9)当TCNTn和TCMPn的值相等的时候,TOUTn输出电平由低变高。(10)TCNTn的值等于0。但自动重载被禁止,所以不再进行重载操作,定时器停止运行。(11)不再产生新的中断。10.1S3C2410XPWM定时器21

直流电机中的PWM等效电路10.1S3C2410XPWM定时器22

10.2.1S3C2410X看门狗定时器概述看门狗定时器是微控制器受到干扰进入错误状态后,使系统在一定时间间隔内复位。与定时器和PWM定时功能不同,看门狗定时器需要不停地接受信号或重新设置计数值,保持计数值不为0。一旦一段时间内接收不到信号或计数值到0,看门狗将发出复位信号系统或产生中断。S3C2410处理器的看门狗的特性:1)通用的中断方式的16位定时器;2)当计数器减到0时,产生128个PCLK周期的复位信号。10.2S3C2410X看门狗定时器23

10.2.1S3C2410X看门狗定时器概述10.2S3C2410X看门狗定时器预分频器分频器计数器数据寄存器24

10.2.2看门狗定时器寄存器10.2S3C2410X看门狗定时器25

10.2.2看门狗定时器寄存器10.2S3C2410X看门狗定时器26

10.2.3看门狗定时器程序编写目标:利用S3C2410X看门狗定时器实现10次1秒钟定时。10.2S3C2410X看门狗定时器#include"2410lib.h"void__irq

watchdog_int(void);staticvolatileINT8Tf_ucSecondNo;voidwatchdog_test(void);intmain(){ /*Initials3c2410'sClock,MMU,Interrupt,PortandUART*/

sys_init();

watchdog_test(); while(1) { }}27

10.2.3看门狗定时器程序编写目标:利用S3C2410X看门狗定时器实现10次1秒钟定时。10.2S3C2410X看门狗定时器voidwatchdog_test(void){

uart_printf("\n

WatchDogTimerTestExample\n");

uart_printf("10seconds:\n");

ClearPending(BIT_WDT); //clearinterruptpendingbit

pISR_WDT=(unsigned)watchdog_int; //InitializeWDTinterrupthandlerentry

rWTCON=((PCLK/1000000-1)<<8)|(3<<3)|(1<<2);//(0<<5)| //1M,1/128,enableinterrupt

rWTDAT=7812; //1M/128=7812

rWTCNT=7812;

rWTCON|=(1<<5); //启动看门狗定时器28

10.2.3看门狗定时器程序编写目标:利用S3C2410X看门狗定时器实现10次1秒钟定时。10.2S3C2410X看门狗定时器

rINTMOD&=~(BIT_WDT);

rINTMSK&=~(BIT_WDT);

while((f_ucSecondNo)<11);

rINTMSK|=BIT_WDT; //maskwatchdogtimerinterrupt

uart_printf("end.\n");}29

10.2.3看门狗定时器程序编写目标:利用S3C2410X看门狗定时器实现10次1秒钟定时。10.2S3C2410X看门狗定时器void__irq

watchdog_int(void){

ClearPending(BIT_WDT);

f_ucSecondNo++;

if(f_ucSecondNo<11)

uart_printf("%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论