AVR定时器的工作类型模式介绍

OFweek电子工程网 中字

  输出比较单元

 

  16位比较器持续比较TCNT1与OCR1x的内容,一旦发现它们相等,比较器立即产生一个匹配信号。

  然后OCF1x 在下一个定时器时钟置位。

  如果此时OCIE1x = 1, OCF1x 置位将引发输出比较中断。

  (就是说输出比较可以工作在所有工作模式下,但PWM模式下更好用,功能更强)

  输出比较单元A(OCR1A) 的一个特质是定义T/C 的TOP 值( 即计数器的分辨率)。

  TOP 值还用来定义通过波形发生器产生的波形的周期。

  由于在任意模式下写TCNT1 都将在下一个定时器时钟周期里阻止比较匹配,在使用输出比较时改变TCNT1就会有风险,不管T/C是否在运行

  这个特性可以用来将OCR1x初始化为与TCNT1 相同的数值而不触发中断。

 

  强制输出比较(FOC)

 

  工作于非PWM 模式时,可以通过对强制输出比较位FOC1x 写”1” 的方式来产生比较匹配。

  强制比较匹配不会置位 OCF1x 标志,也不会重载/ 清零定时器,

  但是OC1x 引脚将被更新,好象真的发生了比较匹配一样(COMx1:0 决定OC1x 是置位、清零,还是交替变化)。

 

  比较匹配输出单元

 

  比较匹配模式控制位COM1x1:0 具有双重功能。

  1 波形发生器利用COM1x1:0 来确定下一次比较匹配发生时的输出比较OC1x 状态;

  2 COM1x1:0 还控制OC1x 引脚输出的来源。

  只要COM1x1:0 不全为零,波形发生器的输出比较功能就会重载OC1x 的通用I/O 口功能。

  但是OC1x 引脚的方向仍旧受控于数据方向寄存器 (DDR)。

  从OC1x 引脚输出有效信号之前必须通过数据方向寄存器的DDR_OC1x 将此引脚设置为输出。

 

  波形发生器利用COM1x1:0 的方法在普通模式、CTC 模式和PWM 模式下有所区别。

  对于所有的模式,设置COM1x1:0=0 表明比较匹配发生时波形发生器不会操作OC1x寄存器

 

  访问16位寄存器

 

  写16 位寄存器时,应先写入该寄存器的高位字节。

  usigned int k;

  k=0x1234;

  TCNT1H=(unsigned char)(k>>8);

  TCNT1L=(unsigned char) k;

  而读16 位寄存器时应先读取该寄存器的低位字节。

  usigned int k;

  k=TCNT1L;

  k+=(unsigned int)(TCNT1H<<8);

  使用“C” 语言时,编译器会自动处理16位操作。

  usigned int k;

  k=0x1234;

  TCNT=k;

  k=TCNT1;

声明: 本网站所刊载信息,不代表OFweek观点。刊用本站稿件,务经书面授权。未经授权禁止转载、摘编、复制、翻译及建立镜像,违者将依法追究法律责任。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存