AVR单片机占空比及频率测量学习笔记_第1页
AVR单片机占空比及频率测量学习笔记_第2页
AVR单片机占空比及频率测量学习笔记_第3页
全文预览已结束

下载本文档

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

文档简介

信号占空比测量及频率计算测量信号频率只要得到信号的两个上升沿或者下降沿之间所用的时间即可。占空比指一个信号高电平和这个信号周期时间的比值,测量信号占空比只需测量信号一下降沿和上升沿之间的距离即可。测量边沿可以采用AVR单片机外部中断,中断可以设置成边沿触发,设置为上升沿触发或者下降沿触发。同时启用一个定时器,用定时器的计数值取得相应的时间。定时器初始化:只需将定时器打开,单片机晶振为16M时,AVR单周期及可计算定时器每曾一所用的时间。例如用8分频时,每加1用时0.5us。void Timer1_init(void) CLI(); /disable all interrupts TCNT1H = 0x00; /清零计数值 TCNT1L = 0x00; TIMSK |=(1TOIE1); /开启溢出中断TIMSK |=(1TICIE1); /开启捕获中断 TCCR1B = 0x82; /8分频,自增一用时0.5us,开启输入捕获噪声抑制SETBIT(TCCR1B,ICES1);/设置初始为上升沿捕获 SEI(); /re-enable interrupts在中断函数使用中需先将其初始化,设置为起始的上升沿触发中断,并且开启外部中断及总中断,此时如果外部有上升沿及可触发中断函数。void INT0_Init(void)MCUCR=0x03;/上升沿触发中断GICR =0x40;/开启外部0中断SEI(); /开启总中断在中断函数中,当有上升沿时,就可触发中断,在中断函数中有一标志位flag_Int,通过此标志位来判断是上升沿的中断还是下降沿产生的中断。第一次进入中断后flag_int=0;读取定时器1高低位的数据,同时将中断的触发沿改为下降沿触发,然后将定时器值清零。同时将flag_Int标志位置一,当信号变为下降沿时再次触发中断,此时进入flag_Int=1函数,此时读取定时器值,并将中断改为上升沿中断,此时即可计算 (高电平时间=定时器数值*0.5us)将flag_Int=0,当边沿为上升沿时即可进入if(flag_Int=0),此时读取的定时器时间,及Int_End的值及为脉冲周期。脉冲周期时间=Int_End*0.5us。(定时器16M,8分频)。注意:定时器1为16位,数据高低位分别在TCNT1L 与TCNT1H中,在读取时必须先读取低位,后读取高位。而且要注意不能让定时器溢出,因此对于不同的定时器必须考虑其溢出时间。#pragma vector=INT0_vect_interrupt void Int0_isr(void)u8 h=0,l=0;if(flag_Int=0)/接收到上升沿l=TCNT1L;h=TCNT1H;MCUCR=0x02; /下降沿触发 /清零TCNT1H=0x00;TCNT1L=0x00;Int_End=h*256+l; /清零计数值flag_Int=1;else/接收到下降沿l=TCNT1L;h=TCNT1H;MCUCR=0x03; /上升沿触发Int_Mid=h*256+l;/取得TCNT2值 flag_Int=0;测量脉冲周期及占空比测量使用的另一方法为捕获,本次使用AVR定时器1捕获功能,捕获设置为边沿,捕获时进入捕获中断,在中断时将边沿改变即可取得比外部中断更好的效果。捕获功能就是为测量脉冲占空比及周期而设计的。定时器1初始化时需开启捕获功能及捕获中断,同时期设置捕获的边沿,在定时器对应的捕获端口即可进行对应的边沿捕获。void Timer1_init(void) CLI(); /disable all interrupts TCNT1H = 0x00; /清零计数值 TCNT1L = 0x00; TIMSK |=(1TOIE1); /开启溢出中断TIMSK |=(1TICIE1); /开启捕获中断 TCCR1B = 0x82; /8分频,自增一用时0.5us,开启输入捕获噪声抑制SETBIT(TCCR1B,ICES1);/设置初始为上升沿捕获 SEI(); /re-enable interrupts在捕获中断函数中,同样通过标志位的置一和清零来区分是上升沿触发和下降沿触发,与采用外部中断方法相似,此时通过ICR1及ICRH来捕获寄存器来读取,产生边沿触发时,将定时器数据捕获数据放入ICR寄存器。#pragma vector=TIMER1_CAPT_vect_interrupt void timer1_capt(void)u8 h,l;if(flag_Int=0) /接收到上升沿l=ICR1L; /捕获寄存器h=ICR1H;CLRBIT(TCCR1B,ICES1);/更改为下降沿捕获TCNT1H=0x00; /清零计数寄存器TCNT1L=0x00;Int_End=h*256+l; /计算时间flag_Int=1; /置为标位else

温馨提示

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

评论

0/150

提交评论