DSP完整第7章.pptVIP

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DSP完整第7章

7.2.3 通用定时器比较操作 4)对称波形发生 当通用定时器处于连续增/减计数模式时产生对称波形。 若计数开始前输出为0,则输出保持不变直到第一次比较匹配,输出发生跳变,然后输出保持不变直到第二次比较匹配,输出再次发生跳变直到周期结束。 如果没有第二次匹配且下一个周期的新比较值不为0,则在周期结束后复位为0。 若比较值在周期开始时为0,则输出为1直到第二次比较匹配发生。如果比较值在周期的后半部为0,则输出将保持为1直到周期结束。在这种情况下,如果新比较值仍为0,输出将不会复位为0。 如果前半周期中的比较值大于或等于周期寄存器的值,则第一次跳变将不会发生,但是当后半周期发生匹配时,输出仍会跳变。这种输出错误的跳变经常是由于应用程序计算不正确引起的,它将在周期结束时被纠正。 跳变 跳变 比较值 为0 保持 保持 跳变 跳变 保持 保持 跳变 7.2.3 通用定时器比较操作 5)输出逻辑 输出逻辑可通过配置GPTCONA/B寄存器中的相应位来规定高有效、低有效、强制低或强制高。 当PWM的输出定义为高有效时,它的极性与相关的波形发生器的极性相同; 当PWM的输出定义为低有效时,它的极性与相关波形发生器的极性相反; 当通过GPTCONA/B寄存器中的控制位将PWM的输出定义为强制低或高时,PWM的输出立即变为0或1。 当出现下列任何一种情况时,所有的通用定时器PWM输出都置为高阻态: (1)软件将GPTCONA/B[6]置为0; (3)任何一个复位事件发生; (4)软件将TxCON[1]置为0。 (2)PDPINTx引脚上的电平被拉低并且未被屏蔽; 7.2.5 通用定时器的PWM输出 每个GPT有一路PWM输出。 若GPT工作于连续增计数,输出非对称PWM波;若工作于连续增减计数方式,输出对称PWM波形。 GPT输出PWM波形的初始化过程: (1) 根据PWM波形的周期设置TxPR; (2) 设置TxCON 确定计数方式、时钟、使能比较操作; (3) 根据PWM脉宽占空比设置TxCMPR. 新的占空比需要新的比较值,比较寄存器的值根据脉宽的要求不断更新。 7.2.6 通用定时器复位 当任何复位事件发生时,产生以下复位操作。 1)GPTCONA/B中,计数方向指示位置1,其余位都复位为0,禁止所有通用定时器的操作 2)所有定时器中断标志位复位为0; 3)所有定时器中断屏蔽位复位为0,屏蔽所有中断。 4)所有通用定时器的比较器输出都置为高阻。 通用定时器应用 利用EVA的通用定时器1定时,初始化程序: 编程步骤: 初始化T1CON 使能定时器操作 设置EVAIMAR 清EVAIFRA 初值?T1PR 0?T1CNT void timer1_ini() //定时器1初始化子程序 { * IMR=0x0002; /*使能int2中断,*/ * EVAIMRA=0x0080; /*使能T1PINT中断, 或EVAIMRA=EVAIMRA|0x0080;*/ * EVAIFRA=0xFFFF; /*清EVA中断标志*/ * T1PER=0x01CD; /*GPT1的周期寄存器,fCPU=4x10MHz, 约1ms产生一次中断*/ * T1CNT=0x0000; /*计数器清零*/ * T1CON=0x164C; /*连续增计数模式, 预分频为64,定时器计时使能, 内部时钟,定时器1比较使能*/ asm( clrc INTM); /*开总中断*/ } 通用定时器应用 假中断服务子程序: interrupt void nothing() //哑中断子程序 { return; } //定时器1中断子程序 interrupt void timer1() { if (num==1000) /*记中断次数1000次,产生1秒延时*/ { num=0; show=~show; /*显示值取反*/ } else num++; * T1CNT=0x0000; /*计数器清零*/

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档