PWM timer.docx
- 文档编号:24435142
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:12
- 大小:1.15MB
PWM timer.docx
《PWM timer.docx》由会员分享,可在线阅读,更多相关《PWM timer.docx(12页珍藏版)》请在冰豆网上搜索。
PWMtimer
PWMtimer
OVERVIEW
TheS3C2440Ahasfive16-bittimers.Timer0,1,2,and3havePulseWidthModulation(PWM)function.Timer4hasaninternaltimeronlywithnooutputpins.Thetimer0hasadead-zonegenerator,whichisusedwithalargecurrentdevice.
S3C2440A有5个16位定时器。
定时器0,1,2和3具有PWM功能,定时器4是内部定时没有输出引脚。
定时器0有个一Dead-zone发生器,被用于和大电流设备。
Thetimer0and1sharean8-bitprescaler,whilethetimer2,3and4shareother8-bitprescaler.Eachtimerhasaclockdivider,whichgenerates5differentdividedsignals(1/2,1/4,1/8,1/16,andTCLK).Eachtimerblockreceivesitsownclocksignalsfromtheclockdivider,whichreceivestheclockfromthecorresponding8-bitprescaler.The8-bitprescalerisprogrammableanddividesthePCLKaccordingtotheloadingvalue,whichisstoredinTCFG0andTCFG1registers.
定时器0和1共用一个8为预定标器(prescaler),定时器2,3和4共用另一个8位预定标器。
每一个定时器有个一时钟分频器,可以产生5种不同的分频信号(1/2,1/4,1/8,1/16和TCLK)。
每一个定时器从分频器中接受独立的时钟信号,接受时钟信号从相应的8位预定标器。
这个8位预定标器是可编程的,分频PCLK时钟通过装载TCF0和TCF1寄存器值。
Thetimercountbufferregister(TCNTBn)hasaninitialvaluewhichisloadedintothedown-counterwhenthetimerisenabled.Thetimercomparebufferregister(TCMPBn)hasaninitialvaluewhichisloadedintothecompareregistertobecomparedwiththedown-countervalue.ThisdoublebufferingfeatureofTCNTBnandTCMPBnmakesthetimergenerateastableoutputwhenthefrequencyanddutyratioarechanged.
当定时器有效时,定时计数器TCNTBn初始值被加载到向下计数器(down-counter)。
定时器比较寄存器(TCMPBn)初始值被加载到比较寄存器,和向下计数值比较。
TCNTBn和TCMPBn双缓冲结构使定时器在频率和占空比发生改变时产生一个稳定的输出。
Eachtimerhasitsown16-bitdowncounter,whichisdrivenbythetimerclock.Whenthedowncounterreacheszero,thetimerinterruptrequestisgeneratedtoinformtheCPUthatthetimeroperationhasbeencompleted.Whenthetimercounterreacheszero,thevalueofcorrespondingTCNTBnisautomaticallyloadedintothedowncountertocontinuethenextoperation.However,ifthetimerstops,forexample,byclearingthetimerenablebitofTCONnduringthetimerrunningmode,thevalueofTCNTBnwillnotbereloadedintothecounter.ThevalueofTCMPBnisusedforpulsewidthmodulation(PWM).Thetimercontrollogicchangestheoutputlevelwhenthedown-countervaluematchesthevalueofthecompareregisterinthetimercontrollogic.Therefore,thecompareregisterdeterminestheturn-ontime(orturn-offtime)ofaPWMoutput.
每一个定时器具有16位向下计数器,由定时器时钟信号驱动。
当向下计数器为0时,产生定时器中断请求,通知CPU定时操作完成。
当定时计数器为0时,相应的TCNTBn寄存器值被自动的加载到向下计数器,继续进行下一周期操作。
但是,如果定时器被终止,例如,在定时器运行中,通过清TCONn中的定时器使能位。
TCNTBn值不会被加载到向下计数器中。
TCMPBn寄存器值被用于PWM(pulsewidthmodulation)。
定时器控制逻辑改变输出电压,当向下计数器值和比较寄存器值相符时。
因此,比较寄存器值决定PWM信号开启时间(关断时间)
FEATURE
—Five16-bittimers
—Two8-bitprescalers&Two4-bitdivider
—Programmabledutycontrolofoutputwaveform(PWM)
—Autoreloadmodeorone-shotpulsemode
—Dead-zonegenerator
特征:
5给16位定时器
两个8位预定标两个4位分频器
PWM占空比可调
自动装载或单脉冲模式
Dead-zone发生器
Atimer(exceptthetimerch-5)hasTCNTBn,TCNTn,TCMPBnandTCMPn.(TCNTnandTCMPnarethenamesoftheinternalregisters.TheTCNTnregistercanbereadfromtheTCNTOnregister)TheTCNTBnandtheTCMPBnareloadedintotheTCNTnandtheTCMPnwhenthetimerreaches0.WhentheTCNTnreaches0,aninterruptrequestwilloccuriftheinterruptisenabled.
定时器(除去定时器5)具有TCNTBn,TCNTn,TCMPBn和TCMPn。
(TCNT和TCMPn内部寄存器名称。
TCNTn寄存器可以从TCNTOn寄存器读取)TCNTBn和TCMPBn被装载到TCNTn和TCMPn中当定时器计数到0.当TCNTn计数为0时,如果中断使能则产生一个终端。
AUTORELOAD&DOUBLEBUFFERING
S3C2440APWMTimershaveadoublebufferingfunction,enablingthereloadvaluechangedforthenexttimeroperationwithoutstoppingthecurrenttimeroperation.So,althoughthenewtimervalueisset,acurrenttimeroperationiscompletedsuccessfully.
S3C2440APWM定时器具有双缓冲功,使改变下一周期定时器加载值时,不用停止当前定时器操作。
这样,虽然新的定时器值被设定,当前定时器操作被成功完成。
ThetimervaluecanbewrittenintoTimerCountBufferregister(TCNTBn)andthecurrentcountervalueofthetimercanbereadfromTimerCountObservationregister(TCNTOn).IftheTCNTBnisread,thereadvaluedoesnotindicatethecurrentstateofthecounterbutthereloadvalueforthenexttimerduration.
定时值可以被写入TCNTBn寄存器,并且当前定时器计数值可以从TCNTOn寄存器中读取。
如果读取TCNTBn,该值不是指示当前状态的计数器,而是下次定时器操作值。
Theauto-reloadoperationcopiestheTCNTBnintoTCNTnwhentheTCNTnreaches0.Thevalue,writtenintotheTCNTBn,isloadedtotheTCNTnonlywhentheTCNTnreaches0andautoreloadisenabled.IftheTCNTnbecomes0andtheautoreloadbitis0,theTCNTndoesnotoperateanyfurther.
自动装载操作指当TCNTn为0时自动装载TCNTBn到TCNTn。
该操作只有在TCNTn为0并且自动加载使能的情况下。
TIMERINITIALIZATIONUSINGMANUALUPDATEBITANDINVERTERBIT
Anautoreloadoperationofthetimeroccurswhenthedowncounterreaches0.So,astartingvalueoftheTCNTnhastobedefinedbytheuserinadvance.Inthiscase,thestartingvaluehastobeloadedbythemanualupdatebit.Thefollowingstepsdescribehowtostartatimer:
自动装载当向下计数值为0时发生,因此TCNTn得启示值必须被用户提前定义。
这样起始值必须被手动装载,使用手动装载为。
下面描述了如何启动一个定时器:
1)WritetheinitialvalueintoTCNTBnandTCMPBn.
2)Setthemanualupdatebitofthecorrespondingtimer.Itisrecommendedthatyouconfiguretheinverteron/offbit.(Whetheruseinverterornot).
3)Setstartbitofthecorrespondingtimertostartthetimer(andclearthemanualupdatebit).Ifthetimerisstoppedbyforce,theTCNTnretainsthecountervalueandisnotreloadedfromTCNTBn.Ifanewvaluehastobeset,performmanualupdate.
1.写初始值到TCNTBn和TCMPBn
2.设置相应寄存器的手动更新位。
无论是否使用inverter,推荐设置inverteron/off位。
3.设置相应寄存器的启动位,并且清手动更新位。
如果定时器被强制终止,TCNTn位保留计数值,不会重新装载从TCNTBn中。
如果一个新值必须被设置,执行手动更新。
NOTE
WheneverTOUTinverteron/offbitischanged,theTOUTnlogicvaluewillalsobechangedwhetherthetimerruns.Therefore,itisdesirablethattheinverteron/offbitisconfiguredwiththemanualupdatebit.
无论TOUTinverter位是否被改变,TOUTn逻辑值将会被改变(无论定时器是否运行)。
因此,配置inverteron/off位和手动更新位是可取的。
TheaboveFigure10-4showstheresultofthefollowingprocedure:
下面步骤的结果见上图10-4所示:
1.Enabletheautore-loadfunction.SettheTCNTBnto160(50+110)andtheTCMPBnto110.Setthemanualupdatebitandconfiguretheinverterbit(on/off).ThemanualupdatebitsetsTCNTnandTCMPntothevaluesofTCNTBnandTCMPBn,respectively.Andthen,settheTCNTBnandtheTCMPBnto80(40+40)and40,respectively,todeterminethenextreloadvalue.
1.使能自动装载功能,设置TCNTBn的值为160(50+110),TCMPBn为110.设置手动更新位,被指inverter位(ON/OFF)。
手动更新位分别初始化TCNTn和TCMPn的值为TCNTBn何TCMPBn,
然后,设置TCNTBn为80(40+40),TCMPBn为40,确定下次装载值。
2.Setthestartbit,providedthatmanual_updateis0andtheinverterisoffandautoreloadison.Thetimerstartscountingdownafterlatencytimewithinthetimerresolution.
2.在设置手动更新位为0,inverter为off,开启自动装载后,设置启动位。
定时器在等待时间(定时器分辨率决定)开始计数。
3.WhentheTCNTnhasthesamevalueasthatoftheTCMPn,thelogicleveloftheTOUTnischangedfromlowtohigh.
3.当TCNTn值和TCMPn相等时,TOUTn值被改变,由低到高。
4.WhentheTCNTnreaches0,theinterruptrequestisgeneratedandTCNTBnvalueisloadedintoatemporaryregister.Atthenexttimertick,theTCNTnisreloadedwiththetemporaryregistervalue(TCNTBn).
4.当TCNTn到达0时,中断产生,TCNTBn被装载到暂存寄存器。
在下一个时钟周期TCNTn被装载从暂存寄存器中。
5.InInterruptServiceRoutine(ISR),theTCNTBnandtheTCMPBnaresetto80(20+60)and60,respectively,forthenextduration.
5.在终端服务程序中(ISR),TCNTBn和TCMPBn分别被设置成80和60,准备下一次期间。
6.WhentheTCNTnhasthesamevalueastheTCMPn,thelogiclevelofTOUTnischangedfromlowtohigh.
6.当TCNTn和TCMPn值相等时,TOUTn逻辑值被改变,由低到高。
7.WhentheTCNTnreaches0,theTCNTnisreloadedautomaticallywiththeTCNTBn,triggeringaninterruptrequest.
当TCNTn为0时,自动装载从TCNTBn,并触发一次中断。
8.InInterruptServiceRoutine(ISR),autoreloadandinterruptrequestaredisabledtostopthetimer.
8.在中断服务程序中。
为了停止定时器,关闭自动装载和中断请求位。
9.WhenthevalueoftheTCNTnissameastheTCMPn,thelogicleveloftheTOUTnischangedfromlowtohigh.
9.当TCNTn和TCMPn相同时,TOUTn为改变,由低到高。
10.EvenwhentheTCNTnreaches0,theTCNTnisnotanymorereloadedandthetimerisstoppedbecauseautoreloadhasbeendisabled.
即使TCNTn为0,因为自动装载功能禁用,TCNTn不再重新加载,定时器终止。
11.Nomoreinterruptrequestsaregenerated.
11.中断不再产生。
PWMfunctioncanbeimplementedbyusingtheTCMPBn.PWMfrequencyisdeterminedbyTCNTBn.Figure10-5showsaPWMvaluedeterminedbyTCMPBn.
通过寄存器TCMPBn,PWM功能实现。
PWM频率由TCNTBn决定。
TCMPBn决定PWM值实例见图10-5.
ForahigherPWMvalue,decreasetheTCMPBnvalue.ForalowerPWMvalue,increasetheTCMPBnvalue.Ifanoutputinverterisenabled,theincrement/decrementmaybereversed.
通过减小TCMPBn值,增加PWM占空比,增加TCMPBn值,减小占空比。
如果输出极性变换使能,增加/减小被翻转。
ThedoublebufferingfunctionallowstheTCMPBn,forthenextPWMcycle,writtenatanypointinthecurrentPWMcyclebyISRorotherroutine.
TCMPBn的双缓冲结构,允许改变PWM周期,通过ISR或其他程序,在当前周期的任何时刻。
ThefollowingproceduredescribeshowtomaintainTOUTashighorlow(assumetheinverterisoff):
以下步骤描述如何操作TOUT为高或低(假设inverter为off)
1.Turnofftheautoreloadbit.Andthen,TOUTngoestohighlevelandthetimerisstoppedaftertheTCNTnreaches0(recommended).
1.关闭自动重载位。
然后,TOUTn为高电平,当TCNTn为0时停止计时。
2.Stopthetimerbyclearingthetimerstart/stopbitto0.IfTCNTn≤TCMPn,theoutputlevelishigh.IfTCNTn>TCMPn,theoutputlevelislow.
2.通过清定时计数器的启动/停止位为0,停止计数器。
如果TCNTn=
3.TheTOUTncanbeinvertedbytheinverteron/offbitinTCON.Theinverterremovestheadditionalcircuittoadjusttheoutputlevel.
3.TOUTn可以被翻转,通过inverter启动/关闭位,在TCON寄存器中。
翻转器移除附加电路来调整输出电压。
DEADZONEGENERATOR
死区发生器
TheDeadZoneisforthePWMcontrolinapowerdevice.Thisfunctionenablestheinsertionofthetimegapbetweenaturn-offofaswitchingdeviceandaturnonofanotherswitchingdevice.Thistimegapprohibitsthetwoswitchingdevicesfrombeingturnedonsimultaneously,evenforaveryshorttime.
Dead-Zone用于电源设备的PWM控制。
这个功能插入一个时间差在关闭一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PWM timer