《AVR使用范例--定时器实现PWM功能.docx》由会员分享,可在线阅读,更多相关《AVR使用范例--定时器实现PWM功能.docx(6页珍藏版)》请在优知文库上搜索。
1、AVR使用范例一定时Q实现PW功能本页关健词:什么是*npvn1.理JWm控制P向芯片p单片机总计机*m物W应用Pw1.电路(WU物出*m调制1.宽以削PN是开关型Q压电源中的术语.这足按期K的控制力式分类的.除了PW型,遂行PB1.率和Pm1.Fn1.混合型.林宽宽度调制式(*N)开关型秘压电路是在控制电路输出钦率不变的彷况下,近过电压反庖词壑咒占空比,从而到达IS定输出电压的目的.通俗的说P值湫足波形.波形的波”以波谷的比例关系成为占空比,我们可以通过PR控制电机.仔堵控制.枪Itt柱IW等.AVR晶片机的定时器可以轻怆长现IMN功能.Wga16和Mgn32的timr是和tiner2都具有
2、PVM功能.Iimro和timr2都为8位定时器.tier2为异步撵作定时器,在操作过程中要等待存放战状态更改完成.为情参看数据下h8位有i悌作的异步操作定时屏tner2.下列图设定使用timr来实现PWM功能,PW电机控制:.ICCAVRApp1.icationBui1.derM1.6CPUPortsTimg(OTimer1.Timer2UARTSP1.Ana1.ogInitia1.isationPUseTimerOOverf1.owinteupt区Desiredva1.ueUnitsIkHZ勺I1TCNTO1.va1.ue:1.002KHz(052%)ttnerjnt(void)EROir
3、itiaize*M:Norma1.Saredva1.ue1KHzC1.earedActua1.va1.ue(error%)1.002KHz(0.2%)R与虚板仪器WaveformmodePresca1.esei64CompareOCRO073OCOoutoutmofC1.earoncompare区Compareinterrupte64CRO=600;stopCNT0=0x8D;/setcourtOCRO=0x73;/setCaTWeTCCRO=O(23;/starttimerragmahterrupt-hand1.ertimer0-corrpJsr20voidtmert)compJsrCoj)
4、/ZcomtareOCC1.redTCNTO=OCROOkOPtRnSI:PrewewCance1.OCOoIKPIKmde注定了gn输出控刖选择,正常的端口怵作.不Ijoa1.相连接.比较以前发生时OCO取反.比较巩配发生时OCO清零.比收也用发生时Og观位.更详细的内容请分行数热SWaVefonI1.K,de设定了波形产生模式1比较皈配输出横式.快速PwM横式.Mtttti1.iFVM册.希君程序代码:/ICC-AVRapp1.icationbui1.der:2006-11-250:15:12/Target:M16/Crysta1.:7.3728Mhzinc1.udeSinc1.udevo
5、idportinit(void)(P0RT=0x00:DDR=0x00:DDRB=OXo8;PB3为PWM输出,非常垂要,否则无法输出波形DDRB=0x00:PORTC=0x00:/m1.03outputon1.yDDRC=0x00;PORTD=0x00:DDKD=0x00:1/TIMBROinitia1.izePreSCaIe:64/WGM:Norma1./desiredva1.ue:IKHz/actua1.va1.ue:1.002K1.1.z(0.2%)voidtimer0_init(void)TCCRO=0x00:/stopTCNTO=0x8I);Se1.count/*TCNT0*/OC
6、RO=0x73;/setcompare/*OCRO*/TCCRO=0x23:/starttimer/*TCCR0*/)4pragmainterrupthand1.ertimer0_compisr:20voidtimer0_comp_isr(void)(/compareoccuredTCNT0=0CR0pra(ainterrupthand1.ertimerovfisr:10voidtimer0_ovf_isr(void)(TCNTO-0x8D:/re1.oadcounterva1.ue/ca1.1thisroutinetoinitia1.izea1.1.periphera1.svoidinit_
7、devices(void)(/stoperrantinterruptsunti1.setupC1.I();/disab1.ea1.1.interruptsport_init();timer0_init():MCUCR=0x00:GICR=0x00:TIMSK=0x03;/timerinterruptsources/*T1MSK*/SEI():/re-enab1.einterrupts/a1.1periphera1.sarenowinitia1.izedvoidmain(void)*加上这些,程序就可以运行了。/(ini1.devices。;whi1.e(1.)*程序运行效果:波形从PB3输出I
8、有由几个关位的存放战的.起义I1. TCKTOi定时片计数值,定时过程中不断增大,i*出后,RJfJt数.开始F一02. OCR0:定时器比较的货.iTCX0=OCRt1.时.会产生tinerO/uwSr中断.3.TKO:tinert)的存放?S,这里0x23代3的是:65432I1.FOCOIWGMOOICOM01COMOOWGM01CS02CS01CSOOTCCROWRWRMrRFVAfVvVRVRV000000001WWavrvicom11波形产生快式为修通慑犬,比较也配发生时OCoirt零.c1.k1.61(来自预分频据).i料H内容请会/i数据手册,4. TIMSK:定时器中Si选题
9、,这里允许HnwrO比较中i,溢出中断,5. 预分频潴;预分频器是独立运行的,也就是说,其援作独.立于17C的时钟选挣茏料,【I它由T/C1。T/CO共享.由于预分痂;S不受T/C时蚌选和的影碗.tti分知器的状态需妥包含依分箱时钟岐川到何处这样的伯息.个典型的例子发生在定时一定并由预分MuSs?分(6CSn2:0D的时候:从计时骞使能到第一次开始H数可加花费1f(V1.个系统附钟周期.共中N一于一分频因(8.64、256或1024).PW的工作流马1 .初始化,定时器开始工伸.TtNTOiS渐增大.在预分领这么方个时钟战期里变化-.2 .输出比较存放器包含一个8位的数据.不间断地Ijit敬器致伤TaaO进行比较.匹配带件可以用米产牛输出比软中断.或者用来在OCo引脚匕产生波形,3 .TOTOiii1.1.i.溢出中断川干在OCO上产生该形.置位或存清零.4 .TCKTOJ,迸行下一次定时操作.PVM的占空比:-FPW的占空比.只需要用程序更改OOW的值即可.根掂不同的忸况可能是增加也可饯足M小.注意:因为Tit1.er2是异步性制潺,使用TirWr2时,M节0CR2需要陪得亦放器史新完成才能进行共触携作,