[AVR单片机] ATMEGA64L的PWM波形产生问题!

[复制链接]
3439|7
 楼主| ldsg 发表于 2010-2-23 10:46 | 显示全部楼层 |阅读模式
各位好,我是AVR初学者,由于要用到atmega64l单片机的PWM波形产生功能,做了一个测试程序,用定时器T1在IO口PB5和PB6产生两组PWM波形,写了一个简单程序如下:
#include<iom64v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{for(j=0;j<1141;j++);
}
}
void main()
{
uint x,y;
WDTCR|=(1<<WDCE)|(1<<WDE);//置位WDTOE和WDE(在设置看门狗定时器的预置
//分频器参数时需要将其写1))
WDTCR=(1<<WDE)|(1<<WDP2)|(1<<WDP1);//设定周期为1S
DDRB = 0Xff; //PB口设置为输出口
while(1)
{
WDR();
TCCR1A=0XA9; //设置T1三个口都是8位快速PWM模式,OCR比较后输出低电平
TCCR1B=0X09;//时钟采用不分频的设置
OCR1AL=10;
OCR1BL=10;
delay(500);
TCCR1A=0XA9; //设置T1三个口都是8位快速PWM模式,OCR比较后输出低电平
TCCR1B=0X09;//时钟采用不分频的设置
OCR1AL=50;
OCR1BL=50;
delay(500);
TCCR1A=0XA9; //设置T1三个口都是8位快速PWM模式,OCR比较后输出低电平
TCCR1B=0X09;//时钟采用不分频的设置
OCR1AL=100;
OCR1BL=100;
delay(500);
}
}
程序的本意是要产生3组不同占空比的波形的循环,结果写入单片机后观察波形不对,只有两组很窄的PWM波形在循环,而且好像输出波形个数也不一致,完全不是想象中的3组PWM波循环,程序中如果去掉前两组设置,即如下:
#include<iom64v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{for(j=0;j<1141;j++);
}
}
void main()
{
uint x,y;
WDTCR|=(1<<WDCE)|(1<<WDE);//置位WDTOE和WDE(在设置看门狗定时器的预置
//分频器参数时需要将其写1))
WDTCR=(1<<WDE)|(1<<WDP2)|(1<<WDP1);//设定周期为1S
DDRB = 0Xff; //PB口设置为输出口
while(1)
{
WDR();
//TCCR1A=0XA9; //设置三个口都是8位快速PWM模式,OCR比较后输出低电平
//TCCR1B=0X09;//时钟采用不分频的设置
//OCR1AL=10;
//OCR1BL=10;
//delay(500);
//TCCR1A=0XA9; //设置三个口都是8位快速PWM模式,OCR比较后输出低电平
//TCCR1B=0X09;//时钟采用不分频的设置
//OCR1AL=50;
//OCR1BL=50;
//delay(500);
TCCR1A=0XA9; //设置三个口都是8位快速PWM模式,OCR比较后输出低电平
TCCR1B=0X09;//时钟采用不分频的设置
OCR1AL=100;
OCR1BL=100;
delay(500);
}
}
这样的话输出的波形是正确的,是固定占空比的波形循环,而且占空比正确,高电平时间占据不到周期的3分之一,我一时也搞不清楚为什么会出现这样的情况,改了很多情况进行了试验,有错有对,摸不清定时器使用是否正确了,请高手帮忙看定时器使用是否正确,如果定时器使用正确是否是程序写入的问题,我用最简单的并口直连的ISP下载方式,用ponyprog2000下载,下载过程是正确的,不会报错。请各位大侠指导,万分感谢!

评分

参与人数 1威望 +1 收起 理由
ls5000 + 1

查看全部评分

coldra 发表于 2010-2-23 11:06 | 显示全部楼层
是不是被狗咬了,关掉看门狗,或 delay函数里加喂狗,还要关掉优化试试。
wangwo 发表于 2010-2-23 12:35 | 显示全部楼层
初学就这么厉害了
czdo 发表于 2010-2-23 12:55 | 显示全部楼层
:dizzy:peifu
 楼主| ldsg 发表于 2010-2-23 16:39 | 显示全部楼层
呵呵,我是菜鸟一级的哦,谢谢大家帮忙我回去再试试,回来继续跟帖
 楼主| ldsg 发表于 2010-2-23 16:40 | 显示全部楼层
coldra大侠,关掉优化是什么意思啊
linhai1986 发表于 2010-2-23 16:48 | 显示全部楼层
5# ldsg

挺好,刚开始做就能做到这样,很不错啊
ls5000 发表于 2010-2-25 14:24 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

1

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