打印
[51单片机]

关于AVR单片机定时器PWM问题

[复制链接]
1163|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Easy_Deng|  楼主 | 2014-5-7 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用atmega16单片机产生PWM波,用的是定时器1,16位的定时器,要产生10K的PWM波,用相位修正模式,根据公式fclk/(2*N*TOP)即为产生的频率,晶振为16M,分频数位1,那么TOP为800即可产生10K的PWM波,但是用示波器观察只有70HZ,请问是什么原因。程序:
#include<iom16v.h>
#include<macros.h>

#define uchar unsigned char
#define uint unsigned int

//*******PWM设置输出********//
void KPWM(void)
{
PORTD|=BIT(4)|BIT(5);
DDRD|=BIT(4)|BIT(5);

TCCR1A = 0xA2;   //两路PWM,匹配清零
TCCR1B = 0x12;   //相位修正PWM模式,位数可调,预分频1

ICR1   = 800;    //此数为16位PWM,16M晶振,clk/(2*N*TOP),频率为10K

OCR1A  = 720;    //占空比90%
OCR1B  = 80;     //占空比10%
}

void main()
{
  KPWM();
}

相关帖子

沙发
huangxz| | 2014-5-7 11:07 | 只看该作者
KPWM执行一次,下面要写个 while(1);

使用特权

评论回复
板凳
ningling_21| | 2014-5-7 11:44 | 只看该作者
不停的在执行初始化...

使用特权

评论回复
地板
desertsailor| | 2014-5-7 20:53 | 只看该作者
程序跑飞了,熔丝位设置可能也有问题

使用特权

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

本版积分规则

14

主题

27

帖子

1

粉丝