请教avr单片机的PWM
大家好,本人想用单片机做一个方波发生器,频率从20kHz到100kHz可调,先用51系列的单片机做了,但是频率到40kHz就上不去了(换晶振都没用,软件仿真可以,但实验时...
大家好,本人想用单片机做一个方波发生器,频率从20kHz到100kHz可调,先用51系列的单片机做了,但是频率到40kHz就上不去了(换晶振都没用,软件仿真可以,但实验时就不行了),应该是它的响应速度上不去,于是想换成avr的单片机,首选at90s2313,不知其内部的PWM最高频率可以到多少?能到100kHz吗?其响应速度可以达到吗? 谢谢
如果单片机响应速度可以跟上,而PWM分频后打不到的话,还可以考虑不用PWM而用模拟方法,就不知avr单片机输出的响应速度为多少,请教 展开
如果单片机响应速度可以跟上,而PWM分频后打不到的话,还可以考虑不用PWM而用模拟方法,就不知avr单片机输出的响应速度为多少,请教 展开
展开全部
如果我只用过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);
}
#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
展开全部
avr单片机输出的响应速度,关键是这个嘛,到去查数据手册看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
avr的时钟周期为1个机器周期,而51为12和机器周期。100K没有问题的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我之前做过AVR的课题,AVR的速度是很快的,比51快多了,51好像没有PWM功能,要用程序模拟出来,而AVR直接有PWM功能的,频率最高多少这个忘记了,但最高肯定超过一千HZ的。
既然AVR有这功能,你的100KHZ,响应速度肯定没问题啦。
既然AVR有这功能,你的100KHZ,响应速度肯定没问题啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询