打印
[AVR单片机]

ATMEGA64L的PWM波形产生问题!

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

使用特权

评论回复
5
ldsg|  楼主 | 2010-2-23 16:39 | 只看该作者
呵呵,我是菜鸟一级的哦,谢谢大家帮忙我回去再试试,回来继续跟帖

使用特权

评论回复
6
ldsg|  楼主 | 2010-2-23 16:40 | 只看该作者
coldra大侠,关掉优化是什么意思啊

使用特权

评论回复
7
linhai1986| | 2010-2-23 16:48 | 只看该作者
5# ldsg

挺好,刚开始做就能做到这样,很不错啊

使用特权

评论回复
8
ls5000| | 2010-2-25 14:24 | 只看该作者
牛x

使用特权

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

本版积分规则

1

主题

12

帖子

1

粉丝