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

[复制链接]
1380|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

粉丝
快速回复 在线客服 返回列表 返回顶部