定时器计数器原理及应用有设计题PPT讲稿.ppt
定时器计数器原理及应用有设计题第1页,共50页,编辑于2022年,星期六0 xF5计数原理(计数原理(1)计数对外部事件进行统计,外部事件以输入有效对外部事件进行统计,外部事件以输入有效 脉冲来表示脉冲来表示。计数器计数器溢出标志溢出标志TF初初 值值中断请求中断请求外部脉冲外部脉冲0 xF50 xF51S1S20 xF60 xF70 xF80 xF90 xFA0 xFB0 xFC0 xFD0 xFE0 xFF0中断开放中断响应后溢出标志清“0”当检测到有有效脉冲输入时,计数寄存器加1启动计数器工作当计数器计数溢出时的标志初值寄存器作为计数器回0时的初始值单片机的计数器用户是可以控制的(可编程的),包括计数器的启动、计数脉冲的有效方式、计数器的启动、计数脉冲的有效方式、计数器的初值、计数溢出中断请求开放或禁止初值、计数溢出中断请求开放或禁止等。第2页,共50页,编辑于2022年,星期六0 xFD0 xFF0 xFE计数器计数器0 xFA0 xF80 xF90 xFB0 xFC初初 值值计数原理(计数原理(2)比值寄存器比值寄存器比较器比较器S1S2溢出标志溢出标志TF外部脉冲外部脉冲比较匹配标志比较匹配标志S30 xF8计数器输出计数器输出OC触发触发 0 xFC0 xF810 xF910 xFA0 xFB中断请求中断请求2 2中断请求中断请求10第3页,共50页,编辑于2022年,星期六定时原理定时原理定时当计数器的计数脉冲频率恒定时,计数器所当计数器的计数脉冲频率恒定时,计数器所 记录的数值及代表了时间的概念。记录的数值及代表了时间的概念。定时功能是通过计数器的计数来实现的。定时功能是通过计数器的计数来实现的。计数器计数器溢出标志溢出标志TF初初 值值中断请求中断请求外部时钟源外部时钟源S1S2S0用于选择内部/外部时钟源S0内部时钟源内部时钟源定时器的工作原理与计数器相同,只是要求用于计数的脉冲,其频率恒定。单片机的定时器用户是可以控制(可编程)的。第4页,共50页,编辑于2022年,星期六ATmega16定时定时/计数器资源计数器资源T/C的预分频器的预分频器8位定时位定时/计数器计数器T/C0、T/C2T/C2的异步操作的异步操作PWM模式下的模式下的T/C0、T/C216位定时位定时/计数器计数器T/C1PWM模式下的模式下的T/C1第5页,共50页,编辑于2022年,星期六T/C1、0的预分频器的预分频器10位位T/C预分频器预分频器CK/8CK/64CK/256CK/1024ClearclkI/OPSR10T0T1CS10CS11CS12CS00CS01CS0200T/C1时钟源时钟源clkT1T/C0时钟源时钟源clkT0CS10CS11 预分频器的作用预分频器的作用是将系统时钟(如系统时钟为4.000MHz)按设定的比例进行分分频频,以产生不同周期的时钟clkT0、clkT1,分别作为时钟源提供给T/C0和T/C1使用。第6页,共50页,编辑于2022年,星期六8位定时位定时/计数器计数器T/C0、T/C2(1)ATmega16的定时/计数器共有3个:1个16位的定时/计数器定时/计数器1(简称T/C1)2个8位定时/计数器定时/计数器0(简称T/C0)、定时/计数器2(简称 T/C2)这3个定时/计数器各具特点:T/C0功能普通普通普通普通(8位二进制)计数计数、定时定时、PWM T/C1功能多多多多(16位二进制)计数计数、定时定时、PWM、输入捕获输入捕获 T/C2功能少少少少且特殊特殊特殊特殊(8位)定时定时(有异步定时功能,可 作为实时时钟RTC)、PWM第7页,共50页,编辑于2022年,星期六8位定时位定时/计数器计数器T/C0、T/C2(2)ATmega16的8位定时/计数器用户可以控制:TCCR0T/C0控制寄存器TCCR2T/C2控制寄存器TIMSKT/C中断屏蔽寄存器TIFRT/C中断标志寄存器TCNT0T/C0计数寄存器TCNT2T/C2计数寄存器OCR0T/C0输出比较寄存器OCR2T/C2输出比较寄存器ASSR异步模式状态寄存器第8页,共50页,编辑于2022年,星期六位6、位3:计数器计数模式,用于控制T/C0的计数和工作方式。CS02CS01CS00T/C0时钟选择时钟选择0 00 00 0无时钟源,无时钟源,T/C0停止停止0 00 01 1clkI/O(不经过分频器)(不经过分频器)0 01 10 0clkI/O/8(来自分频器)(来自分频器)0 01 11 1clkI/O/64(来自分频器)(来自分频器)1 10 00 0clkI/O/256(来自分频器)(来自分频器)1 10 01 1clkI/O/1024(来自分频器)(来自分频器)1 11 10 0外部外部T0引脚,下降沿驱动(用于计数)引脚,下降沿驱动(用于计数)1 11 11 1外部外部T0引脚,上升沿驱动(用于计数)引脚,上升沿驱动(用于计数)位7:强制输出比较,该位只在WGM位被置为非PWM模式下有效。T/C0控制寄存器 TCCR076543210 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 FOC0 位54:比较匹配输出模式,决定T/C0比较匹配发生时,输出引脚OC0(PB3)的行为方式。这是I/O的第二功能,相应的方向控制位要置“1”,以便将其配置为输出。位20:T/C0的时钟选择位,用于定义T/C0的时钟源。COM01COM00T/C0比较输出模式比较输出模式(非(非PWM模式)模式)0 00 0T/C0与输出引脚与输出引脚OC0断开断开0 01 1比较匹配发生时比较匹配发生时OC0触发触发1 10 0比较匹配发生时清零比较匹配发生时清零OC01 11 1比较匹配发生时置位比较匹配发生时置位OC0模式模式WGM01WGM00T/C0工作模式工作模式计数上限值计数上限值OCR0更新更新TOV0置位置位0 00 00 0一般模式一般模式0 xFF立即立即0 xFF1 10 01 1PWM,相位可调,相位可调0 xFF0 xFF0 x002 21 10 0CTC模式模式OCR0立即立即0 xFF3 31 11 1快速快速PWM0 xFF0 xFF0 xFF第9页,共50页,编辑于2022年,星期六T/C2控制寄存器 TCCR276543210 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20 FOC2 TCCR2的位73与TCCR0位73的作用完全相同。位20:T/C2的时钟选择位,用于定义T/C2的时钟源。其功能与T/C0有不同点,无外部计数功能无外部计数功能无外部计数功能无外部计数功能的选项。CS22CS21CS20T/C2时钟选择时钟选择0 00 00 0无时钟源,无时钟源,T/C2停止停止0 00 01 1clkT2S(不经过分频器)(不经过分频器)0 01 10 0clkT2S/8(来自分频器)(来自分频器)0 01 11 1clkT2S/32(来自分频器)(来自分频器)1 10 00 0clkT2S/64(来自分频器)(来自分频器)1 10 01 1clkT2S/128(来自分频器)(来自分频器)1 11 10 0clkT2S/256(来自分频器)(来自分频器)1 11 11 1clkT2S/1024(来自分频器)(来自分频器)第10页,共50页,编辑于2022年,星期六T/C中断屏蔽寄存器 TIMSK76543210 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 OCIE2 位7:T/C2输出比较匹配输出比较匹配中断使能,为“1”时允许中断允许中断,为“0”时禁止中断禁止中断。位6:T/C2溢出溢出中断使能,为“1”时允许中断,为“0”时禁止中断。位5:T/C1输入捕获输入捕获中断使能,为“1”时允许中断,为“0”时禁止中断。位4:T/C1输出比较输出比较A匹配匹配中断使能,为“1”时允许中断,为“0”时禁止中断。位3:T/C1输出比较输出比较B匹配匹配中断使能,为“1”时允许中断,为“0”时禁止中断。位2:T/C1溢出溢出中断使能,为“1”时允许中断,为“0”时禁止中断。位1:T/C0输出匹配输出匹配中断使能,为“1”时允许中断,为“0”时禁止中断。位0:T/C0溢出溢出中断使能,为“1”时允许中断,为“0”时禁止中断。第11页,共50页,编辑于2022年,星期六T/C中断标志寄存器 TIFR76543210 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 OCF2 位7:T/C2输出比较匹配输出比较匹配标志。当T/C2计数器TCNT2与OCR2的值匹配时,该位由硬件由硬件置置“1”。中断响应后,由硬件清由硬件清“0”,或通过对该位写写“1”来清来清“0”。位6:T/C2溢出溢出中断标志。当T/C2计数器TCNT2溢出时,该位由硬件置“1”。中断响应后,由硬件清“0”,或通过对该位写“1”来清“0”。位5:T/C1输入捕获输入捕获中断标志。当T/C1输入捕获事件发生时,该位置“1”。位4:T/C1输出比较输出比较A匹配匹配中断标志。位3:T/C1输出比较输出比较B匹配匹配中断标志。位2:T/C1溢出溢出中断标志。位1:T/C0输出比较匹配输出比较匹配中断标志。位0:T/C0溢出溢出中断标志。ATmega16的定时/计数器共有8个中断源对应8个中断标志位,这些标志位当条件满足后,由硬件置“1”,中断响应后由硬件清“0”,也可以对这些位通过软件写“1”清“0”。第12页,共50页,编辑于2022年,星期六T/C0计数寄存器 TCNT076543210 LSB MSB T/C2计数寄存器 TCNT276543210 LSB MSB T/C0、T/C2是可以进行读/写访问的向上计数向上计数(加法计数)的计数器。只要有有效脉冲输入,TCNT0、TCNT2就会在写入值(初值)的基础上开始计数。一旦TCNT达到0 xFF,下一个计数脉冲到来时便回到0 x00,并继续向上开始计数。在在TCNT0、2回回“0”的同时,溢出标志的同时,溢出标志TOV0、2置置“1”。TOV0、2标志置“1”可以用于申请中断,也可以作为计数器的第“9”位使用。第13页,共50页,编辑于2022年,星期六T/C0输出比较寄存器 OCR076543210 LSB MSB T/C2输出比较寄存器 OCR276543210 LSB MSB OCR0、OCR2中的8位数据用于同TCNT0、TCNT2寄存器中的计数值进行连续的匹配比较。如果TCNT0、TCNT2的值与OCR0、OCR2相等,则比较匹配发生(比较匹配发(比较匹配发生时,对应的定时生时,对应的定时/计数器输出引脚计数器输出引脚OC0、OC2会产生触发事件)会产生触发事件)。比较匹配发生后,置“1”相应的中断标志OCF0、OCF2。第14页,共50页,编辑于2022年,星期六异步模式状态寄存器 ASSR76543210 AS2 TCN2UB OCR2UB TCR2UB 位3:T/C2异步设定位。当AS2=0时,T/C2使用系统I/O时钟clkI/O作为时钟源(同步方式同步方式);当AS2=1时,T/C2使用连接在TOSC1引脚上的晶振作为时钟源(异步方式异步方式)。通常连接在通常连接在TOSC1引脚上的晶振频率为引脚上的晶振频率为32.768KHz。位2:TCNT2更新忙,TCN2UB=0表明TCNT2可以被更新。位1:OCR2更新忙,OCR2UB=0表明OCR2可以被更新。位0:TCCR2更新忙,TCR2UB=0表明TCCR2可以被更新。位74:保留位。第15页,共50页,编辑于2022年,星期六T/C2的异步操作的异步操作T/C2的异步异步操作当AS2=1时,T/C2的计数时钟直接取自于外部引脚TOSC1及TOSC2所接的外部石英晶振,计数时钟与系统时钟不同步计数时钟与系统时钟不同步。在使用异步方式时注意以下几点:在同步与异步方式之间切换时,TCNT2、OCR2和TCCR2的内容会受到破坏;ATmega16芯片已经对32.768kHz的手表晶振进行了优化,加一个其它频率的外部时钟到TOSC1引脚可能会导致T/C2工作不正常;在对TCNT2、OCR2和TCNT2寄存器进行写入时,ASSR寄存器的位2、1和0会自动置“1”。在ASSR寄存器的位2、1和0置“1”期间,不能对相应位所指的寄存器进行操作。第16页,共50页,编辑于2022年,星期六3.8位定时位定时/计数器应用举例计数器应用举例T/C0作定时器作定时器T/C2用作实时时钟用作实时时钟第17页,共50页,编辑于2022年,星期六T/C0作定时器作定时器应用课题2:使用定时器T/C0的内部 时钟晶振,产生1ms中 断,并扩展成1s定时信 号,每秒钟使PA口的状 态改变1次。第18页,共50页,编辑于2022年,星期六设计思想定时器时间常数的计算:定时器时间常数的计算:系统时钟4.000MHz,64分频62.5kHz作为定时器计数脉冲频率。定时计数器加1的时间为1/62.5=0.016ms,定时1ms,需要计数1/0.016=62.5。使用定时器CTC工作方式,比较值应置为62即0 x3E或63即0 x63。1ms的定时有误差。从从1ms到到1s:1s=1000ms,在1ms的中断程序中设计一计数器jishu,当jishu=1000时,时间即为1s。第19页,共50页,编辑于2022年,星期六程序设计与分析#include#pragma interrupt_handler zhixing:20int jishu=0;void zhixing(void)jishu+;if(jishu=1000)PORTA=PORTA;jishu=0;void main(void)PORTA=0 x00;DDRA=0 xFF;TCCR0=0 x0B;TCNT0=0 x00;OCR0=0 x3E;TIMSK=0 x02;#asm(“sei”)while(1);/应该定义成应该定义成 int,不能定义成,不能定义成 char/计数器计数器jishu加加1/当当jishu=1000,表明,表明1s时间到时间到/按课题要求输出按课题要求输出/jishu清清“0”,很重要,很重要/定义定义PA口输出口输出/CTC模式,系统频率模式,系统频率64分频,分频,OC0引脚断开引脚断开/1ms定时的比较值定时的比较值/T/C0比较匹配中断开放比较匹配中断开放/总中断开放总中断开放 SREG|=0 x80;第20页,共50页,编辑于2022年,星期六T/C2用作实时时钟用作实时时钟应用课题1:利用定时器T/C2的实时 时钟晶振,产生1s中断,并在PD7引脚输出0.5Hz 的方波。第21页,共50页,编辑于2022年,星期六T/C2的时钟源PC6(TOSC1)、PC7(TOSC2)的32.768kHz的晶振;32.768kHz的晶振128分频分频后的晶振频率为256Hz,周期为1/256秒,计录256个脉冲时,所需时间为1秒;32.768kHz的晶振256分频分频后的晶振频率为128Hz,周期为1/128秒,记录128个脉冲所需时间也正好为1秒。为什么将32.768kHz称为“手表晶振手表晶振”或“实时时钟晶振实时时钟晶振”,T/C2为什么可用作“实时时钟RTCReal Time Clock”,其道理就在如此。设计思想使用定时器的比较匹配工作方式、计数频率256分频,比较匹配值应为128即0 x80;引脚PD7为T/C2输出OC2,1s反转一次,输出波形频率为0.5Hz。OC2设置为T/C2比较匹配后触发。第22页,共50页,编辑于2022年,星期六程序设计与分析#include#pragma interrupt_handler zhixing:4void zhixing(void)void main(void)PORTD=0 x00;DDRD=0 xFF;TCCR2=0 x1E;ASSR=0 x08;TCNT2=0 x00;OCR2=0 x80;TIMSK=0 x80;SREG|=0 x80;while(1);/定义定义PD口为输出口为输出/定时器定时器2比较匹配中断服务程序比较匹配中断服务程序/定时器定时器2定时频率为外部定时频率为外部32768HZ/0 x1E=0b 0 0 0 1 1 1 1 0CTC模式模式比较匹配后比较匹配后OC2触发触发计数频率计数频率256分频分频/比较匹配值为比较匹配值为128/T/C2比较匹配中断开放比较匹配中断开放/全局中断开放全局中断开放第23页,共50页,编辑于2022年,星期六在TCNT0与OCR0匹配的同时,置比较匹配标志位OCF0为“1”。标志位OCF0可以用于申请中断。一旦MCU响应比较匹配中断,用户在中断服务程序中可以修改OCR0的值。第24页,共50页,编辑于2022年,星期六PWM输出原理与方法输出原理与方法(1)PWMPulse-Width Modulation脉冲宽度调制PWM输出的一般形式:tPWM波形的特点:波形频率恒定,其占空比D可以改变。定义Dt/为占空比第25页,共50页,编辑于2022年,星期六PWM输出原理与方法输出原理与方法(2)计数器计数器比值寄存器比值寄存器比较器比较器S1S2溢出标志溢出标志TFPWM输出输出时钟源时钟源当定时器处于PWM工作方式时,计数器计数器计数器计数器以一定的频率上、下计数:从0 x000 xFF,然后反向从0 xFF 0 x00,如此反复。当计数器计数器计数器计数器中的数值与比值寄存器比值寄存器比值寄存器比值寄存器中的数值相等时,比较器比较器比较器比较器按PWM预定的规律输出脉冲波。计数器值 比较值比较值改变t1t2当比较值比较值比较值比较值改变时D1=t1/、D2=t2/随之改变,周期不变不变第26页,共50页,编辑于2022年,星期六第27页,共50页,编辑于2022年,星期六PWM模式下的模式下的T/C0、T/C2 当TCCR0、TCCR2设置为PWM模式(WGMn1、WGMn0=0、1)后,T/C0、T/C2以及输出比较寄存器OCR0、OCR2分别组成8位非对称(Glitch-free)、相位可调(Phase Correct)的脉宽调制PWM,输出引脚分别为OC0、OC2。在PWM模式下,OC0、OC2引脚的触发动作由COMn0、COMn1设定。WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 FOC0 模式模式WGM01WGM00T/C0工作模式工作模式0 00 00 0一般模式一般模式1 10 01 1PWM,相位可调,相位可调2 21 10 0CTC模式模式3 31 11 1快速快速PWMCOM01COM00相位可调相位可调PWM模式下模式下T/C0比较输出模式比较输出模式(T/C2比较输出模式与此相同)比较输出模式与此相同)0 00 0T/C0与输出引脚与输出引脚OC0断开断开0 01 1保留保留1 10 0正向正向PWMT/C0向上计数过程中比较匹配时清零向上计数过程中比较匹配时清零OC0,T/C0向向下计数过程中比较匹配时置位下计数过程中比较匹配时置位OC01 11 1反向反向PWMT/C0向上计数计数过程中比较匹配时置位向上计数计数过程中比较匹配时置位OC0,T/C0向下计数过程中比较匹配时清零向下计数过程中比较匹配时清零OC0第28页,共50页,编辑于2022年,星期六第29页,共50页,编辑于2022年,星期六16位定时位定时/计数器计数器T/C1 如同8位的定时/计数器,ATmega16的16位定时/计数器T/C1用户也是可以控制的:TCCR1AT/C1控制寄存器ATCCR1BT/C1控制寄存器BTCNT1H和TCNT1LT/C1计数寄存器OCR1AH和OCR1ALT/C1输出比较寄存器AOCR1BH和OCR1BLT/C1输出比较寄存器BICR1H和ICR1LT/C1输入捕获寄存器第30页,共50页,编辑于2022年,星期六T/C1控制寄存器ATCCR1A76543210 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10 COM1A1 COM1A0 位76:T/C1比较匹配A输出模式。这两位决定了T/C1比较匹配发生时输出引脚OC1A的输出行为。位54:T/C1比较匹配B输出模式。这两位决定了T/C1比较匹配发生时输出引脚OC1B的输出行为。位3:强制输出比较A。位2:强制输出比较B。位10:波形发生模式。该两位与WGM13、WGM12(位于TCCR1B)相组合,用于控制T/C1的计数和工作方式。第31页,共50页,编辑于2022年,星期六T/C1控制寄存器BTCCR1B76543210 WGM13 WGM12 CS12 CS11 CS10 ICNC1 ICES1 位7:输入捕获噪声抑制。当该位置“1”时,捕获信号要进行连续4次的采样,只有4次采样值都有效时,输入捕获标志才置位。位6:输入捕获触发方式选择。当该位置“0”时,捕获信号下降沿有效;当该位置“1”时,捕获信号上升沿有效。位43:波形发生模式。该两位与WGM11、WGM10(位于TCCR1A)相组合,用于控制T/C1的计数和工作方式。位20:T/C1时钟源选择。位5:保留。第32页,共50页,编辑于2022年,星期六CS12CS11CS10T/C2时钟选择时钟选择0 00 00 0无时钟源,无时钟源,T/C1停止停止0 00 01 1clkI/O(不经过分频器)(不经过分频器)0 01 10 0clkI/O/8(来自分频器)(来自分频器)0 01 11 1clkI/O/64(来自分频器)(来自分频器)1 10 00 0clkI/O/256(来自分频器)(来自分频器)1 10 01 1clkI/O/1024(来自分频器)(来自分频器)1 11 10 0外部外部T1引脚,下降沿驱动引脚,下降沿驱动1 11 11 1外部外部T1引脚,上升沿驱动引脚,上升沿驱动第33页,共50页,编辑于2022年,星期六模式模式WGM13WGM12WGM11WGM10T/C1工作模式工作模式计数上限值计数上限值OCR1A/OCR1B更新更新TOV1置位置位0 00 00 00 00 0一般模式一般模式0 xFFFF立即立即0 xFFFF1 10 00 00 01 18位位PWM,相位可调,相位可调0 x00FFTOP0 x00002 20 00 01 10 09位位PWM,相位可调,相位可调0 x01FFTOP0 x00003 30 00 01 11 110位位PWM,相位可调,相位可调0 x03FFTOP0 x00004 40 01 10 00 0CTCOCR1A立即立即0 xFFFF5 50 01 10 01 18 8位快速位快速PWM0 x00FFTOPTOP6 60 01 11 10 09 9位快速位快速PWM0 x01FFTOPTOP7 70 01 11 11 11010位快速位快速PWM0 x03FFTOPTOP8 81 10 00 00 0PWM,相位、频率可调,相位、频率可调ICR10 x00000 x00009 91 10 00 01 1PWM,相位、频率可调,相位、频率可调OCR1A0 x00000 x000010101 10 01 10 0PWM,相位可调,相位可调ICR1TOP0 x000011111 10 01 11 1PWM,相位可调,相位可调OCR1ATOP0 x000012121 11 10 00 0CTCICR1立即立即0 xFFFF13131 11 10 01 1保留保留14141 11 11 10 0快速快速PWMICR1TOPTOP15151 11 11 11 1快速快速PWMOCR1ATOPTOP第34页,共50页,编辑于2022年,星期六T/C1计数寄存器TCNT1H和TCNT1L151413121110 98 MSB LSB 76543210 TCNT1H和TCNT1L组成T/C1的16位计数寄存器TCNT1,它是向上计数的计数器(加法计数器加法计数器)或上上/下计数的计数器(在下计数的计数器(在PWM模模式下)式下)。若T/C1被置初值,则T/C1将在预置初值的基础上计数。第35页,共50页,编辑于2022年,星期六T/C1输出比较寄存器AOCR1AH和OCR1AL151413121110 98 MSB LSB 76543210T/C1输出比较寄存器BOCR1BH和OCR1BL OCR1AH和OCR1AL(OCR1BH和OCR1BL)组成16位输出比较寄存器OCR1A(OCR1B)。该寄存器中的16位数据用于同TCNT1寄存器中的计数值进行连续的匹配比较。一旦TCNT1的计数值与OCR1A(OCR1B)的数据匹配相等,则比较匹配发生。用软件的写操作将TCNT1与OCR1A、OCR1B设置为相等,不会引发比较匹配。比较匹配发生后,将置位相应的中断请求标志OCF1A和OCF1B。第36页,共50页,编辑于2022年,星期六T/C1输入捕获寄存器ICR1H和ICR1L151413121110 98 MSB LSB 76543210 ICR1H和ICR1L组成16位的输入捕获寄存器ICR1。按照ICES1的设定,外部输入捕获引脚ICP发生上跳变或下跳变时,计数器TCNT1中的值写入寄存器ICR1中,同时输入捕获中断标志ICF1将置“1”。第37页,共50页,编辑于2022年,星期六第38页,共50页,编辑于2022年,星期六PWM模式下的模式下的T/C1 如同T/C0、2,当T/C1选择PWM模式后,T/C1和OCR1A/OCR1B共同组成两个8、9或10位相位可调的PWM,两个8、9或10位的快速PWM,两个相位频率可调的PWM。此时,T/C1作为上/下计数器(或向上计数的计数器快速PWM),从0计数到TOP,然后反向计数到0(或从0计数到TOP,然后再从0计数到TOP)。当计数器中的数值与OCR1A/OCR1B的数值一致时,OC1A/OC1B按照COM1A0/COM1A1和和COM1B0/COM1B1的设置动作。COM1x1COM1x0OC1x(相位可(相位可调调及相位、及相位、频频率可率可调调PWM)00OC1A/OC1B不占用PD5/PD4引脚01比较匹配时触发OC1A,OC1B保留10向上计数过程中比较匹配时清零OC1A/OC1B;向下计数过程中比较匹配时置位OC1A/OC1B(正向PWM)11向上计数过程中比较匹配时置位OC1A/OC1B;向下计数过程中比较匹配时清零OC1A/OC1B(反向PWM)第39页,共50页,编辑于2022年,星期六4.16位定时位定时/计数器计数器1应用举例应用举例脉冲频率测量脉冲频率测量计数法计数法第40页,共50页,编辑于2022年,星期六脉冲频率测量脉冲频率测量计数法计数法应用课题:将定时器T/C0作为方波 发生器,产生某一频率 的方波(高频),并测 量其频率。第41页,共50页,编辑于2022年,星期六设计思想脉冲频率的测量方法脉冲频率的测量方法(1)计单位时间内脉冲的个数脉冲的个数脉冲的个数脉冲的个数;(2)测一个脉冲的周期周期周期周期,周期的倒数即为其频率。本课题测量的实现本课题测量的实现T0方波方波输出T1测量测量计数T2定时定时1秒OC0(PB3)T1(PB1)测量连接线T0为方波发生器,输出引脚OC0;T1工作于计数方式,记录T0输出的方波数;T2为定时器,定时时间1毫秒,并扩展成1秒。显然,1秒时间内,T1的计数值即为T0输出方波的频率。第42页,共50页,编辑于2022年,星期六PORTB=0X00;DDRB=0X08;/PB3(OC0)输出)输出TCCR0=0X1B;/T/C0方波发生器方波发生器,CTC模式,比较匹模式,比较匹 配后配后OC0触发,方波频率触发,方波频率244.14HzTCNT0=0X00;OCR0=0X80;ASSR=0X00;/T/C2定时定时1ms,CTC模式、计数频率为模式、计数频率为 系统频率系统频率32分频、比较匹配中断分频、比较匹配中断TCCR2=0X0B;TCNT2=0X00;OCR2=0X7D;第43页,共50页,编辑于2022年,星期六TCCR1A=0X00;TCCR1B=0X06;TCNT1H=0X00;TCNT1L=0X00;/T/C1计数模式计数模式,最大计数值最大计数值0 xFFFFICR1H=0X00;OCR1AH=0X00;OCR1AL=0X00;OCR1BH=0X00;OCR1BL=0X00;TIMSK=0X80;/T/C2比较匹配中断开放比较匹配中断开放SREG|=0X80;/总中断开放总中断开放第44页,共50页,编辑于2022年,星期六 看门狗定时器看门狗定时器看门狗定时器是一种具有特定功能的定时器:看门狗定时器是一种具有特定功能的定时器:定时时间到,定时器发送复位信号,使定时时间到,定时器发送复位信号,使MCU自动复位。自动复位。定时时钟定时时钟看看门门狗狗定定时时器器复位指令或复位指令或脉冲脉冲MCU复位复位第45页,共50页,编辑于2022年,星期六ATmega16看门狗定时器WDTCR看门狗定时器控制寄存器看门狗定时器应用编程本节内容第46页,共50页,编辑于2022年,星期六ATmega16看门狗定时器看门狗定时器OSC/2048kOSC/1024kOSC/512kOSC/256kOSC/128kOSC/64kOSC/32kOSC/16k看门狗复位指令看门狗复位指令WDR1MHz(Vcc=5V)350kHz(Vcc=3V)晶体振荡器晶体振荡器看门狗预分频器看门狗预分频器MCU复位复位WDP0WDP1WDP2WDE第47页,共50页,编辑于2022年,星期六看门狗定时器控制寄存器看门狗定时器控制寄存器WDTCR WDTOE WDE WDP2 WDP1 WDP0 76543210位75:保留位。位4:看门狗关断使能位。当禁止看门狗定时器时,该位必须置“1”。位3:看门狗允许标志位。该位置“1”时,使能看门狗定时器。看门狗定时器的关断,必须遵循下列顺序:(1)在同一个操作中,将WDTOE和WDE置“1”;(2)在随后的4个时钟周期内,清“0”WDE位。位20:看门狗定时器预分频器设置位。第48页,共50页,编辑于2022年,星期六WDP2WDP1WDP0WDT脉冲数脉冲数典型溢出时间典型溢出时间(Vcc=3V)典型溢出时间典型溢出时间(Vcc=5V)0 00 00 016kTBD(待定)(待定)16ms0 00 01 132kTBD32ms0 01 10 064kTBD64ms0 01 11 1128kTBD0.13s1 10 00 0256kTBD0.26s1 10 01 1512kTBD0.5s1 11 10 01024kTBD1.0s1 11 11 12048kTBD2.0s第49页,共50页,编辑于2022年,星期六看门狗定时器应用编程看门狗定时器应用编程void main(void)WDTCR=0 x0B;/启启动动看看门门狗定狗定时时器器,并设置其溢出时间并设置其溢出时间120mswhile(1)#asm(“wdr”)/复位复位看看门门狗定狗定时时器器,汇编指令,汇编指令 if(expression)/当条件满足时,当条件满足时,禁用看门狗定时器禁用看门狗定时器 WDTCR=0 x18;/将将WDTOE和和WDE同时同时置置“1”WDTCR=0 x00;/清清“0”WDE,看门狗定时器停止工作,看门狗定时器停止工作 /其他代码其他代码 看门狗定时器应用编程格式如下看门狗定时器应用编程格式如下 调试调试程序程序时时先不启先不启动动看看门门狗定狗定时时器,程序器,程序调试调试好以后,好以后,为为了抗干了抗干扰扰再加上看再加上看门门狗定狗定时时器。器。第50页,共50页,编辑于2022年,星期六