avr输出频率
我用的是atmega88,想通过用定时器0来输出pwm,频率为1MHz,不知道怎么回事,只能到29.3KHz,我用的是pc3输出的给我指点一下
代码如下:
void Timer0_Init()
{
TCCR0A = 0X02; //
TCCR0B = 0X00; //关闭timer0
TCNT0= 0X00; //计数寄存器
OCR0B= 0X80; //比较 寄存器
TCCR0B = 0X01; //开启timer
} 着急用啊,都来看看啊
{:mad:}{:dizzy:} TCCR0A设置不对,M88的pc3也没有PWM输出。
不看手册啊! zhanan 发表于 2012-4-28 12:46 static/image/common/back.gif
TCCR0A设置不对,M88的pc3也没有PWM输出。
不看手册啊!
我用的是中断,比较中断的时候置1,溢出中断的时候置0,
用的是快速pwm
void Timer0_Init()
{
TCCR0A = 0X03; //
TCCR0B = 0X00; //关闭timer0
TCNT0= 0X00; //计数寄存器
OCR0A= 0X20; //top值
OCR0B= 0X10; //比较 寄存器
TCCR0B = 0X09; //开启timer
} 本帖最后由 zhanan 于 2012-5-1 09:08 编辑
哪有这样用PWM的,还想达到1M频率。
就算用16M晶振,快速PWM也只能达到16000/(20+1)=762Khz。
OCR0A=15,理论上达到1M频率了,但4位分辨率的PWM有实际用途吗?
用中断实现的话,进出中断用的时间在这里就相当可观了。
使者0123 发表于 2012-4-28 12:20 static/image/common/back.gif
着急用啊,都来看看啊
仔细看看手册就知道了,1M的频率是达不到的 PWM模式1M是输出不了的,CTC模式到是可以,但是占空比不可调是否有用?
8位的MCU要做到1M的PWM输出还是比较少的,500K可以的话可以看一下ATTINY25 26 261之类的。 zhanan 发表于 2012-5-1 09:07 static/image/common/back.gif
哪有这样用PWM的,还想达到1M频率。
就算用16M晶振,快速PWM也只能达到16000/(20+1)=762Khz。
OCR0A=15, ...
我也不想这么用啊,但是那些引脚都被占用了,没得用了
如果不用中断的话,可以输出1M吗? wzyllgx 发表于 2012-5-1 10:21 static/image/common/back.gif
PWM模式1M是输出不了的,CTC模式到是可以,但是占空比不可调是否有用?
8位的MCU要做到1M的PWM输出还是比较 ...
我的CTC模式,最高能到80.2KHz
怎么让它到1M,占空比不可调也没关系 根据CTC的计算工式:fOCnA = fclk_I/O / 2 ⋅ N ⋅ (1 + OCRnA),但这必须是CTC输出IO,你看IO对就的第二功能。 LZ的现在实现是否是这样的:
只用定时器来产生中断(而不是直接输出PWM波形,因输出引脚被占用),在中断服务程序中翻转PC3,从而产生波形。
如LS所示,T0的CTC模式输出波形频率最快可达fclk_I/O / 2,中断产生频率最快可达fclk_I/O(当然不能使用这么快),
所以要产生1M的波形,关键取决于进出中断的时间和系统时钟。
使用较高的系统时钟 优化代码 即可实现1Mhz的波形输出,占空比也很可观。
ok明白了
只有特定的IO才能按照公式去计算频率,才能产生更高的频率 iProduct 发表于 2012-5-2 12:09 static/image/common/back.gif
LZ的现在实现是否是这样的:
只用定时器来产生中断(而不是直接输出PWM波形,因输出引脚被占用),在中断服 ...
嗯 ,就是你说的那样 谢谢大家的回答,让我懂得了很多 使者0123 发表于 2012-5-2 12:26 static/image/common/back.gif
谢谢大家的回答,让我懂得了很多
定时0.5us中断,中断到就取反 本帖最后由 machao 于 2012-5-17 13:29 编辑
raxb 发表于 2012-5-16 12:53 static/image/common/back.gif
定时0.5us中断,中断到就取反
产生一个固定频率的方波,定时器应该采用比较匹配输出的方式,根本不需要用任何的中断。使用16M系统时钟,AVR可以产生最高4M的方波序列,同时还有充足的时间做其它的事情。
中断取反,是老51的概念,以经OUT、OUT、呕吐了,怎么还是抱着老的东西舍不得丢弃。关于这个问题,我在的这个讨论组中曾经发过专贴“http://www.ourdev.cn/forum.php?mod=viewthread&tid=3737664&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1”
楼上的朋友,购买一本我的教材吧,认真从基础扎实的学起。 machao 发表于 2012-5-17 13:28 static/image/common/back.gif
产生一个固定频率的方波,定时器应该采用比较匹配输出的方式,根本不需要用任何的中断。使用16M系统时钟 ...
多谢马老师批评指正,很受教,只是我是很不熟悉AVR,不知道其它单片机是否有此功能... raxb 发表于 2012-5-17 14:15 static/image/common/back.gif
多谢马老师批评指正,很受教,只是我是很不熟悉AVR,不知道其它单片机是否有此功能... ...
新的控制器中,定时器都是这样。AVR\STM32\M8......就是改良的51,定时器也有此功能。你找STC51的新型51数据手册看一下吧。
这也是我推荐学习AVR的原因之一。学习要学新的东西,掌握好的技术。
现在大学中这个领域的教育和教师,都是OUT的,所以学生也是OUT的。更可怕的是,还没有清楚的认识到,大谈什么“创新”教育,连目前在技术上发展的新东西,新方法、新思路都不知道,还谈什么“创新”?呕吐! machao 发表于 2012-5-17 14:25 static/image/common/back.gif
新的控制器中,定时器都是这样。AVR\STM32\M8......就是改良的51,定时器也有此功能。你找STC51的新型51 ...
说的太好了,就该掌握新技术,大学里面教的东西都太落后了,早就跟社会拖节了
页:
[1]