2010-第7章_嵌入式定时部件课件.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2010-第7章_嵌入式定时部件课件

90%?90% ?90% ?90% 90%=? =59% ??? 第7章 定时部件 7.1 定时部件的原理 7.2 看门狗定时器 7.4 Timer部件 定时原理 若编程设置定时/计数器为定时工作方式时,则N位计数器的计数脉冲来源于内部系统时钟,并经过M分频。每个计数脉冲使计数器加1或减1,当N位计数器里的数加到0或减到0时,则会产生一个“回0信号”,该信号有效时表示N位计数器里的当前值是0。 定时原理 因为系统时钟的频率是固定的,其M分频后所得到的计数脉冲频率也就是固定的,因此通过对该频率脉冲的计数就转换为定时,实现了定时功能。 计数原理 若编程设置定时/计数器为计数方式 则N位计数器的计数脉冲来源于外部事件产生的脉冲信号。有一个外部事件脉冲,计数器加1或减1,直到N位计数器中的值为0,产生“回0信号”。 7.2 看门狗定时器 看门狗定时器的作用 当系统程序出现功能错乱,引起系统程序死循环时,能中断该系统程序的不正常运行,恢复系统程序的正常运行。 7.4 Timer部件 主要用于提供定时功能,脉宽调制(PWM)功能; 适用于需要一定的频率的脉冲、一定时间间隔的定时信号的场合。 7.4 Timer 定时器 定时器计数缓冲寄存器TCNTBn—减法计数器TCNTn 定时器比较缓冲寄存器TCMPBn—比较寄存器TCMPn 当减法计数器减到0时,发生中断,同时,TCNTBn值会自动重载入减法计数器。(除非定时器被终止)。 TCMPBn的值用于脉宽调制,当减法计数器值与比较寄存器值相等时,定时器控制逻辑改变输出电平,因此,比较寄存器决定PWM输出的高电平时间(或低电平时间)。 当TCNTn=0时,自动重载操作将TCNTBn的值复制到TCNTn中。 当TCNTn=0,且自动重载不使能,定时器停止。 7.4 Timer定时器操作 PWM脉冲频率由TCNTBn决定,PWM脉冲宽度由TCMPBn的值决定。 如果要得到一个较低的脉冲宽度,,减少TCMPBn的值即可。反之,则增加TCMPBn的值。 如果输出反转器被使能,则增加和减少的结果也将是反转的。 方法1:关闭自动加载位。然后,TOUT的电平变为高,定时器在TCNTn递减计数到0时停止。(推荐使用) 方法2:通过将定时器的启动/停止位清0来停止定时器工作。如果TCNTn≤TCMPn,输出高电平。如果TCNTn≥TCMPn,则输出低电平。 方法3:TOUTn可以通过设置TCON中的反转器的ON/OFF位来设置 死区发生器用于对大功率设备进行PWM控制。 用于在一个设备的断开和另一个设备的闭合之间插入一个时间间隙——两个开关设备不能同时被打开。 7.4.4 定时器应用编程-实验10 void Test_TimerInt(void) { variable0 = 0;variable1 = 0;variable2 = 0;variable3 = 0;variable4 = 0; rINTMSK = ~(BIT_TIMER4 | BIT_TIMER3 | BIT_TIMER2 | BIT_TIMER1 | BIT_TIMER0); pISR_TIMER0 = (int)Timer0Done; pISR_TIMER1 = (int)Timer1Done; pISR_TIMER2 = (int)Timer2Done; pISR_TIMER3 = (int)Timer3Done; pISR_TIMER4 = (int)Timer4Done; Uart_Printf(\n[Timer 0,1,2,3,4 Interrupt Test]\n\n); rTCFG0 = rTCFG0 ~(0xffffff) | 0xff | 0xff8; //Dead zone=0,Prescaler1=255(0x0f),Prescaler0=255(0x0f) rTCFG1 =rTCFG1 ~(0xffffff) | 0x001233; //All interrupt,Mux4=1/2,Mux3=1/4,Mux2=1/8,Mux1=1/16,Mux0=1/16 rTCNTB0 = 30000; rTCNTB1 = 30000; rTCNTB2 = 30000; rTCNTB3 = 30000; rTCNTB4 = 30000; rTCMPB0 = 15000; rTCMPB1 = 15000; rTCMPB2 = 15000; rTCMPB3 = 15000;

文档评论(0)

baa89089 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档