请教avr单片机的PWM

大家好,本人想用单片机做一个方波发生器,频率从20kHz到100kHz可调,先用51系列的单片机做了,但是频率到40kHz就上不去了(换晶振都没用,软件仿真可以,但实验时... 大家好,本人想用单片机做一个方波发生器,频率从20kHz到100kHz可调,先用51系列的单片机做了,但是频率到40kHz就上不去了(换晶振都没用,软件仿真可以,但实验时就不行了),应该是它的响应速度上不去,于是想换成avr的单片机,首选at90s2313,不知其内部的PWM最高频率可以到多少?能到100kHz吗?其响应速度可以达到吗? 谢谢
如果单片机响应速度可以跟上,而PWM分频后打不到的话,还可以考虑不用PWM而用模拟方法,就不知avr单片机输出的响应速度为多少,请教
展开
 我来答
YHM_LIANG
2010-08-23 · 超过16用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:30.4万
展开全部
如果我只用过avr的atmega16,它有独立的PWM功能。其频率可以达到100k以上。下面是我写的一个程序。试过可以在PD4口输出一个100K的方波。具体原理比较复杂难以用文字叙述,需要的话看完这个视频就行了http://v.youku.com/v_show/id_XMTg5MDc2MzMy.html

#include <iom16v.h>
#include <macros.h>

/*************avr频率占空比可调波形输出子函数**************/
////作者:梁
///给fcq赋值设定频率(单位为k)rat设定占空比例如40则输出方波占空比为百分之四十
//频率误差小于2%,占空比误差小于5%
//PWM频率计算公式为f=fox/N(1+TOP) fox为晶振频率 N为分频系数 TOP为计数计数最大值
//TOP的反算公式为TOP=FOX/Nf-1
//在15模式下计数最大值为OCR1A
//比较值放在OCR1B
//15模式下时钟1到达OCR1B时OC1B脚跳变
//而OC1A脚以两倍f输出方波
//这里默认的晶振频率是12M的,实际得该
//range from 1K to 256K
void KPWM(unsigned char fcq,unsigned char rat)
{
unsigned int f,r;
DDRD|=0X30;//设置PD4 PD5为第二功能脚 分别为OC1B OC1A
TCCR1A=0X63;
TCCR1B=0X19;// 在这决定了1分频 15模式

f=12000/fcq;//计算最大值和比较值
f=f/1;
f=f-1;
r=f;
r=r/10;
r=r*rat;
r=r/10;

OCR1A=f;
OCR1B=r;
}

void main()
{

KPWM(100,60);

参考资料: http://v.youku.com/v_show/id_XMTg5MDc2MzMy.html

百度网友89518be
2010-08-23 · TA获得超过209个赞
知道小有建树答主
回答量:623
采纳率:0%
帮助的人:384万
展开全部
avr单片机输出的响应速度,关键是这个嘛,到去查数据手册看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友32452e3
2010-08-23 · 超过30用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:79.5万
展开全部
avr的时钟周期为1个机器周期,而51为12和机器周期。100K没有问题的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li_沨
2010-08-24 · TA获得超过1644个赞
知道小有建树答主
回答量:1108
采纳率:0%
帮助的人:492万
展开全部
我之前做过AVR的课题,AVR的速度是很快的,比51快多了,51好像没有PWM功能,要用程序模拟出来,而AVR直接有PWM功能的,频率最高多少这个忘记了,但最高肯定超过一千HZ的。
既然AVR有这功能,你的100KHZ,响应速度肯定没问题啦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式