ECT模块学习心得.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECT模块学习心得

【电子设计吧】 与您共享电子设计的乐趣 ECT模块学习心得 1 TCNT 1 TCNT 11、TTCCNNTT寄存器 HCS12 ECT的核心是一个16位自由运行计数器(TCNT),所有输入捕捉和输出 比较功能的计时信息都来源于TCNT,当定时器系统启用时,通过设置TSCR1的TEN 位,计数器从$0000开始,每经过一个模块时钟加1,直到加到$FFFF,然后自动溢 出为$0000并继续计数.16位自由记数器的当前值保存在两个8位寄存器中,高的 存在TCNTH,低的存在TCNTL中.综合这两个寄存器就形成TCNT.定义TCNT的话, 要定义为word型。 【说明】这里的模块时钟指的是,经过分频后的ECT模块所用的时钟,分频 系数在TSCR2的低三位。TCNT是一个递增的计数器,有很多人一直把它当做是 递减的计数器。总之,TCNT就是对ECT时钟进行计数的。 2 TCn 2 TCn 22、TTCCnn 寄存器 TCn寄存器是一个数据寄存器,用来存放数据的。如果工作在IC模式下,那 么TCn寄存器用于锁存出现捕捉事件时的TCNT的值,读取后可以判断出有效事 件是在什么时候发生的;如果工作在OC模式下,当TCNT的值和写入TCn寄存器 的值相等时,就触发一次中断。 【总结】总之,TCn寄存器在IC模式下是用来READ的,在OC模式下是用来 WRITE的。 【说明】IC通道组是分类的,IC[0..3]是缓冲通道,IC[4..7]是非缓冲通道。 缓冲通道的TCn寄存器中只能记忆当前的值,下一次有效事件触发后就将前一个 值覆盖;非缓冲通道多了一个保持寄存器,它可以记忆两次有效事件下的TCNT 的值。 3 3 33、输入捕捉步骤 初始化函数 TIOS选择工作方式为IC 【电子设计吧】 与您共享电子设计的乐趣 TCTLx设置对应位输入捕捉的方式(x=3、4,高位是3,低位是4) TSCRx控制寄存器设置,包括工作使能、确定工作方式(x=1)、中断允许、预 分频 TIE中断使能 中断函数 清除标志位TFLG1 处理函数 【功能】电机模块中用作测速,摄像头模块中判断行场信号 4 4 44、输出比较步骤 初始化函数 TIOS选择工作方式为OC TCx通道x的OC寄存器赋初值,经过N秒后进入第一次中断 TCTLx设置对应位输入捕捉的方式(x=1、2,高四位是1,低四位是2) TSCRx控制寄存器设置,包括工作使能、确定工作方式(x=1)、中断允许、预 分频 TIE中断使能 中断函数 清除标志位TFLG1 重新赋初值TCx 【总结】这里说明几点个人调试经验总结: 在初始化函数中,给TCn赋的初值是来确定单片机经过多长时间进入第一次 中断,进入中断以后,这段话就失去了它的作用。 经过PLL倍频到总线时钟后,再分频到ECT模块时钟,比如总线频率为24M, 分频系数为64,那么ECT模块的时钟周期为2.67us,如果要计时1000us的话, 那么TCNT要计数375个数,所以TCn的值要始终比TCNT大375,这个可以在中 断里面处理。同理,要计时10ms,那么TCNT要计数3750次,要计时100ms, 【电子设计吧】 与您共享电子设计的乐趣 那么TCNT要计数37500次。如果user需要其他的定时,可以自己根据时钟来 计算,我赋一个调试好的程序吧。 附: /// //功能说明:利用PT0的输出比较功能,定时进入中断 // 利用PORTB显示定时的时间 //程序设计:电子设计吧 //设计时间:2010.01.15 //// #include hidef.h /*common defines andmacros*/ #include mc9s12dg128.h /*derivative information */ #pragmaLINK_INFO DERIVATIVEmc9s12dg128b //利用定时器输出比较功能产生定时中断 //变量定义// static unsigned int waittime =0; //时钟初始化// void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(2+1)/(1+

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档