atmega16用定时器1产生PWM问题

2019-03-24 20:31发布


用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();
} 此帖出自小平头技术问答
0条回答

一周热门 更多>