打印
[AVR单片机]

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

[复制链接]
15293|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里面说的很清楚,看点英文总是必须的吧,呵呵。

使用特权

评论回复
5
aifei7320| | 2012-12-20 23:26 | 只看该作者
不一定哦!普通模式也可以设置bottom值的,不是一定要从0开始!

使用特权

评论回复
6
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是一样的效果。

使用特权

评论回复
7
qin552011373| | 2012-12-21 17:27 | 只看该作者
都可以设置的  仔细看datasheet吧  网上资料也很多

使用特权

评论回复
8
aifei7320| | 2012-12-21 22:06 | 只看该作者
bbslhb 发表于 2012-12-21 16:15
感觉普通和CTC模式区别不大。CTC就方便点,要加100次,定义top=100即可。普通模式得定义TCNTn=0xFF-100, ...

呵呵!是的!

使用特权

评论回复
9
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 赞一个!
10
wzkgzanst| | 2012-12-26 11:44 | 只看该作者
恍然大悟:lol

使用特权

评论回复
11
飞扬草| | 2013-1-23 21:27 | 只看该作者
:(还是不怎么明白

使用特权

评论回复
12
gdxizhilang| | 2013-1-26 12:00 | 只看该作者
普通模式:就是和51的定时器一样啊,就只从设定的初值开始加加加,直到TOP(8位的是0xff,16位的是0xffff),然后溢出,中断,需要在中断里重设初值,不能自动重载;
CTC模式:解释为“比较匹配时自动清零定时器”,也可以理解为自动重载功能,即定时器+自动重载功能,类似51的T2定时器;
以上两种模式均不能配置输出PWM波形;
PWM模式:说白了这种模式=定时器+自动重载+波形输出

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
qin552011373 + 4 赞一个!
13
qin552011373| | 2013-3-11 21:57 | 只看该作者
不要沉额  好帖子  

使用特权

评论回复
14
qqq_147258| | 2013-3-15 14:05 | 只看该作者
相位修正的PWM模式应用在什么地方呢?或者说怎么用这种模式从学单片机到现在没用过这模式。
我承认小白求指教。

使用特权

评论回复
15
gdxizhilang| | 2013-3-19 10:39 | 只看该作者
要做项目,要求你手里对单片机的资源有很全面的掌握了解,需要用什么的时候拿来就用,否则很难做出好项目,其实老板的要求就是用最低的成本实现,而且能稳定可靠工作,经常一个方案反复推翻重来,降价、添加新功能。。。。。

使用特权

评论回复
16
hsyyqq| | 2013-3-21 17:21 | 只看该作者
自己写个程序跑一次不就知道了。

使用特权

评论回复
17
yhhsky| | 2013-3-30 18:57 | 只看该作者
提示: 该帖被管理员或版主屏蔽
18
wentao0100| | 2013-4-3 13:10 | 只看该作者
多做点实验,看看示波器的波形就了解了。

使用特权

评论回复
19
237394673| | 2013-6-16 13:27 | 只看该作者
厉害!有点懂了

使用特权

评论回复
20
lion1899| | 2013-6-17 19:30 | 只看该作者
路过的+1   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

40

帖子

1

粉丝