[AVR单片机] 新人请教下AVR的定时器模式区别。普通、CTC、PWM。

[复制链接]
16693|30
 楼主| bbslhb 发表于 2012-12-15 22:48 | 显示全部楼层 |阅读模式
先说说我的理解看对不对。
普通模式就是傻傻的从bottom加到top(0xFF)然后溢出中断。
CTC模式就是定义了top值,从0加到top(可自定义)然后溢出中断。
PWM还没弄明白是个啥模式。
感觉普通和CTC模式区别不大。CTC就方便点,要加100次,定义top=100即可。普通模式得定义TCNTn=0xFF-100,然后中断程序里面把TCNTn再设置为0xFF-100即可。
请教PWM是个啥意思,看datasheet看的头大啊。
 楼主| bbslhb 发表于 2012-12-16 09:04 | 显示全部楼层
大概看明白了。快速PWM模式的原理就是有两个翻转点,预设值和top值。在TCNTn从0到top的过程中,快速PWM模式能使电平产生两次翻转:0到预设值时翻转一次,预设值到top值的时候翻转一次。
普通模式和CTC模式都是,在TCNTn从0到top过程中电平只翻转一次。前者是从0到top时翻转,后者是从0到预设值时翻转。
 楼主| bbslhb 发表于 2012-12-17 08:54 | 显示全部楼层
还有个就是啥事都得靠自己。。。

评分

参与人数 1威望 +1 收起 理由
lion1899 + 1 这句话很多人都不懂的~~说的好!.

查看全部评分

li_thomas 发表于 2012-12-18 13:45 | 显示全部楼层
bbslhb 发表于 2012-12-17 08:54
还有个就是啥事都得靠自己。。。

这个是当然的,难道你还要靠别人?ATMEL的datasheet里面说的很清楚,看点英文总是必须的吧,呵呵。
aifei7320 发表于 2012-12-20 23:26 | 显示全部楼层
不一定哦!普通模式也可以设置bottom值的,不是一定要从0开始!
 楼主| bbslhb 发表于 2012-12-21 16:15 | 显示全部楼层
aifei7320 发表于 2012-12-20 23:26
不一定哦!普通模式也可以设置bottom值的,不是一定要从0开始!

感觉普通和CTC模式区别不大。CTC就方便点,要加100次,定义top=100即可。普通模式得定义TCNTn=0xFF-100,然后中断程序里面把TCNTn再设置为0xFF-100即可。

我说的这个,TCNTn=0xFF-100,就是设置的bottom值,没有从0开始。这样设置,和CTC模式top=100是一样的效果。
qin552011373 发表于 2012-12-21 17:27 | 显示全部楼层
都可以设置的  仔细看datasheet吧  网上资料也很多
aifei7320 发表于 2012-12-21 22:06 | 显示全部楼层
bbslhb 发表于 2012-12-21 16:15
感觉普通和CTC模式区别不大。CTC就方便点,要加100次,定义top=100即可。普通模式得定义TCNTn=0xFF-100, ...

呵呵!是的!
 楼主| bbslhb 发表于 2012-12-24 22:57 | 显示全部楼层
本帖最后由 bbslhb 于 2012-12-26 23:41 编辑

补充一点吧,标准的BOTTOM、MAX、TOP详解,datasheet上没有说清楚的。看了这个,就都明白了。
BOTTOM:计数器计数达到0x00时即达到BOTTOM。也就是BOTTOM=0x00。
MAX:计数器计数到0xFF(对16为计数器为0xFFFF)时即达到MAX。也就是MAX=0xFF或者MAX=0xFFFF;
TOP:计数器计数到计数序列的最大值时即达到TOP。TOP值可以为固定值,或是存储于寄存器OCRnx(或者为ICRn)中的数值,具体由工作模式确定。由此可见,TOP<=MAX,TOP不能比MAX大,最多只能等于MAX。

普通模式就不说了。CTC模式就是计数值重复的从BOTTOM增加到TOP时发生的计数值匹配事件。
快速PWM模式就是计数值从BOTTOM增加到TOP时发生一次计数值匹配事件,然后从TOP到MAX定时器发生计数溢出事件。之后回到BOTTOM重复操作。
相位修正PWM模式就是计数值增加到TOP时发生一次计数值匹配事件,再继续增加到MAX后溢出,再自减到TOP发生一次计数值匹配事件,再继续自减到BOTTOM,再重复自增的操作。双缓冲模式。

评分

参与人数 1威望 +1 收起 理由
枫叶56651 + 1 赞一个!

查看全部评分

wzkgzanst 发表于 2012-12-26 11:44 | 显示全部楼层
恍然大悟:lol
飞扬草 发表于 2013-1-23 21:27 | 显示全部楼层
:(还是不怎么明白
gdxizhilang 发表于 2013-1-26 12:00 | 显示全部楼层
普通模式:就是和51的定时器一样啊,就只从设定的初值开始加加加,直到TOP(8位的是0xff,16位的是0xffff),然后溢出,中断,需要在中断里重设初值,不能自动重载;
CTC模式:解释为“比较匹配时自动清零定时器”,也可以理解为自动重载功能,即定时器+自动重载功能,类似51的T2定时器;
以上两种模式均不能配置输出PWM波形;
PWM模式:说白了这种模式=定时器+自动重载+波形输出

评分

参与人数 1威望 +4 收起 理由
qin552011373 + 4 赞一个!

查看全部评分

qin552011373 发表于 2013-3-11 21:57 | 显示全部楼层
不要沉额  好帖子  
qqq_147258 发表于 2013-3-15 14:05 | 显示全部楼层
相位修正的PWM模式应用在什么地方呢?或者说怎么用这种模式从学单片机到现在没用过这模式。
我承认小白求指教。
gdxizhilang 发表于 2013-3-19 10:39 | 显示全部楼层
要做项目,要求你手里对单片机的资源有很全面的掌握了解,需要用什么的时候拿来就用,否则很难做出好项目,其实老板的要求就是用最低的成本实现,而且能稳定可靠工作,经常一个方案反复推翻重来,降价、添加新功能。。。。。
hsyyqq 发表于 2013-3-21 17:21 | 显示全部楼层
自己写个程序跑一次不就知道了。
yhhsky 发表于 2013-3-30 18:57 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
wentao0100 发表于 2013-4-3 13:10 | 显示全部楼层
多做点实验,看看示波器的波形就了解了。
237394673 发表于 2013-6-16 13:27 | 显示全部楼层
厉害!有点懂了
lion1899 发表于 2013-6-17 19:30 | 显示全部楼层
路过的+1   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部