Atmega16 定时器T0的应用

发布者:qiuxubiao最新更新时间:2016-08-17 来源: eefocus关键字:Atmega16  定时器T0 手机看文章 扫描二维码
随时随地手机看文章
下面的部分来自数据手册,

定时器工作模式:工作模式- T/C 和输出比较引脚的行为- 由波形发生模式(WGM21:0) 及比较输出模式

(COM21:0) 的控制位决定。比较输出模式对计数序列没有影响,而波形产生模式对计数序

列则有影响。COM21:0 控制PWM 输出是否反极性。非PWM 模式时COM21:0 控制输

出是否应该在比较匹配发生时置位、清零,或是电平取反(P113 " 比较匹配输出单元" )。

普通模式:普通模式(WGM21:0 = 0) 为最简单的工作模式。在此模式下计数器不停地累加。计到8

比特的最大值后(TOP = 0xFF),由于数值溢出计数器简单地返回到最小值0x00 重新开

始。在TCNT0 为零的同一个定时器时钟里T/C 溢出标志TOV2 置位。此时TOV2 有点象

第9 位,只是只能置位,不会清零。但由于定时器中断服务程序能够自动清零TOV2,因

此可以通过软件提高定时器的分辨率。在普通模式下没有什么需要特殊考虑的,用户可以

随时写入新的计数器数值。

输出比较单元可以用来产生中断。但是不推荐在普通模式下利用输出比较产生波形,因为

会占用太多的CPU 时间。

T/C 时序图:

8 位T/C 寄存器说明

T/C 控制寄存器- TCCR2

?Bit 7 – FOC2: 强制输出比较

FOC2仅在WGM指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,使用

PWM 时,写TCCR2 要对其清零。写1 后,波形发生器将立即进行比较操作。比较匹配输

出引脚 OC2 将按照COM21:0 的设置输出相应的电平。要注意FOC2 类似一个锁存信号,

真正对强制输出比较起作用的是COM21:0 的设置。

FOC2 不会引发任何中断,也不会在使用OCR2 作为TOP 的CTC 模式下对定时器进行清

零。

读FOC2 的返回值永远为0。

? Bit 6, 3 – WGM21:0: 波形产生模式

这几位控制计数器的计数序列,计数器最大值TOP 的来源,以及产生何种波形。T/C 支

持的模式有:普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM 模式,

详见 Table 50 与P114" 工作模式" 。

? Bit 5:4 – COM21:0: 比较匹配输出模式

这些位决定了比较匹配发生时输出引脚OC0 的电平。如果COM01:0 中的一位或全部都

置位, OC0 以比较匹配输出的方式进行工作。同时其方向控制位要设置为1 以使能输出

驱动。

当OC0 连接到物理引脚上时, COM01:0 的功能依赖于WGM01:0 的设置。Table 51 给

出了当WGM01:0 设置为普通模式或CTC 模式时COM01:0 的功能。

二、在进行相应的应用的时候请注意

不能对定时器TO赋初值,否则应用普通模式时,定时时间非常不准确。

定时时间的改变只能通过时钟源和分频系数确定

最后说一句:Atmega16数据手册做得很好,中文资料也多,非常容易去学习!!!!!!!!!!!

关键字:Atmega16  定时器T0 引用地址:Atmega16 定时器T0的应用

上一篇:AVR串口通信
下一篇:AVR芯片的ISP全攻略 及 avr解锁

推荐阅读最新更新时间:2024-03-16 15:05

ATMEGA16与DS18B20数码管显示
一个误差值大的DS18B20把我害得不浅,一直以为是程序错,下狠心换了个,成功了!误了我三天去查程序 /*本程序为八位共阴极数码管且有两个573控制的动态扫描*/ #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int //注code的功能是把后面的数据存在程序存贮器中,不用code就放到了随机存贮器中. #pragma data:code const table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x3
[单片机]
ATmega16 看门狗定时器
看门狗定时器由独立的 1 Mhz 片内振荡器驱动。这是 VCC = 5V时的典型值。请参见特性 数据以了解其他VCC电平下的典型值。通过设置看门狗定时器的预分频器可以调节看门狗 复位的时间间隔,如 P41 Table 17 所示。看门狗复位指令 WDR 用来复位看门狗定时器。 此外,禁止看门狗定时器或发生复位时定时器也被复位。复位时间有 8 个选项。如果没有 及时复位定时器,一旦时间超过复位周期, ATmega16 就复位,并执行复位向量指向的 程序。具体的看门狗复位时序在 P39 有说明。 看门狗定时器还可用来产生中断。这在使用看门狗将系统从掉电状态唤醒是非常有用的。 看门狗定时器控制寄存器-WDTCR · Bits 7
[单片机]
<font color='red'>ATmega16</font> 看门狗<font color='red'>定时器</font>
ATMEGA16用IO模拟SPI驱动ADS7843
最近在搞AVR单片机的ILI9325的驱动、简单GUI的移植,成功之后就搞ADS7843的驱动,用avr-gcc (WinAVR 20100110) 4.3.3编译。 其效果如下图: 以下是其驱动程序: typedef unsigned char BYTE; // 8-bit typedef unsigned int WORD; // 16-bit typedef unsigned long DWORD; // 32-bit #define _nop_() asm( NOP ) #define touch_PORT PORTB #define PEN_Q 7 #define
[单片机]
c51: 用定时器T0 ,P0输出1s 方波,中断
/* T0工作方式2,自动重载8位定时器。 设 频率:f, 定时器初值 val ,定时时间 T。 关系式 T=(2^8-val)*12/f */ //任务:f=12MHZ ,T0工作方式2,定时250us,中断2000次,P0口翻转,使P0口输出1s 的方波。 #include reg52.h #define uint unsigned int //定义全局变量 uint counter; init_T0() { TMOD=0x02; //定时器工作方式 TL0=0x06; //时间常数 TH0=0x06; IE=0x82; //开中断 TR0=1; //T
[单片机]
B001-Atmega16-看门狗WDT-(ques=1)
今天测试了下看门狗。 可以使用wdt.h中的wdt_enable(value)和wdt_disable(),也可以使用自己定义的WDT_enable(uint8_t count)和WDT_disable(void)。 复位看门狗用wdt.h中的wdt_reset()。 ---------------------------------------------------------------------------------------------------------------------------------- 使用PA0测试复位时间: 1、上电时PA0输出0.5s的高电平(示波器) 2、接着PA
[单片机]
ATmega16单片机构成的干式变压器智能控制器介绍
  1工作原理   温控仪由温度监测、信号处理、输出控制三部分组成。系统框图如图1所示,它通过预埋在 变压器三相绕组中的三只铂电阻传感器获取绕组温度值,经信号调理电路处理后直接送入控 制器的A/D转换输入端。微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控 制规律执行计算与处理,自动显示变压器绕组的温度值、输出相应的控制信号、控制风机的 启停,并根据当前状态输出正常、报警和跳闸信号等,同时将各种数据通过RS-485传到上 位机实现集中监控。   温控仪控制核心采用ATmegal6单片机,它是一款基于AVR RISC的低功耗CMOS 8位单片机,在 一个时钟周期内执行一条指令,可以取得1MIPS/MHz的性能,因此具有实时
[单片机]
<font color='red'>ATmega16</font>单片机构成的干式变压器智能控制器介绍
ATmega16 A/D的相关寄存器
1.ADMUX ADC多工选择寄存器 REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 位 7:6 REFS :参考电压选择 通过这2位可以选择参考电压。如果在转换过程中改变了它们的设置,只有等到当前转换结束(ADCSRA寄存器的ADIF置位)之后改变才会起作用。如果在AREF引脚上施加了外部参考电压,内部参考电压就不能被选用了。 REFS1 REFS0 参考电压选择 0 0 AREF,内部Vref关闭 0 1
[单片机]
Atmega16定时器time0
依照AVR使用范例--定时器应用范例http://www.avrvi.com/avr_examples/timer.html。使用ICC application builder快速配置定时器后生成的代码如下: //ICC-AVR application builder : 2007-8-28 0:55:55 // Target : M16 // Crystal: 7.3728Mhz #include iom16v.h #include macros.h void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00;
[单片机]
<font color='red'>Atmega16</font>的<font color='red'>定时器</font>time0
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved