嵌入式 > 嵌入式开发 > 详情

内部脉宽调制OC0输出实验

发布时间:2024-05-24 发布时间:
|

系统功能

AVR内部脉宽调制OC0输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。

硬件设计

AVR主控电路原理

软件设计

//目标系统:基于AVR单片机

//应用软件: ICC AVR

/*01010101010101010101010101010101010101010101010101010101010101010101

----------------------------------------------------------------------

实验内容:

AVR内部脉宽调制输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。

----------------------------------------------------------------------

硬件连接:

将UserLed指示灯连接至PWM的端口PB3/OC0。

----------------------------------------------------------------------

注意事项:

(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘

(2)请详细阅读:光盘根目录下的“产品资料开发板实验板SMK系列SMK1632说明资料”

----------------------------------------------------------------------

10101010101010101010101010101010101010101010101010101010101010101010*/

#include

#include

#define OC0_OUT_ENDDRB |= 0b00001000

/*--------------------------------------------------------------------

程序名称:定时器0初始化程序

程序功能:定时器作PWM使用,设置PWM的工作模式

注意事项:

提示说明:

输入:

返回:

--------------------------------------------------------------------*/

void timer0_init(void)

{

TCCR0 = (1<||(1<||(1<|||(1<|(1<||(1<||(1<||(1<||(1<||(1<|||(1<|(1<||||(1<|<|(1<|(1<|(1<|(1<||||(1<||(1<|<|(1<|<|(1<|||(1<||(1<|(1<||(1<||(1<||||<|(1<|||(1<|(1<|(1<|<|<|||(1<||<|(1<||(1<||<|<|||(1<|<||(1<|(1<||||(1<|<|(1<|(1<|(1<|(1<||||(1<||(1<|<|(1<|<|(1<|||(1<||(1<|(1<||(1<||(1<||(1<|||(1<|(1<|||<|(1<|(1<|(1<||(1<||(1<||(1<|(1<|(1<|||(1<|(1<|(1<||(1<||(1<

/*

WGM01=1; WGM00=1; --> fast PWM modle

COM01=1; COM00=0; -->比较匹配时set OC0 pin

CS00=1; --> timer0 source不经过任何分频,直接为Clk,使得PWM可以工作得足够快

*/

TCNT0 = 0x00;//设置TC0计数寄存器初值

OCR0 = 0x10;//输出比较寄存器初值,设置该值可用于调节OC0输出占空比

}

/*--------------------------------------------------------------------

程序名称:

程序功能:

注意事项:

提示说明:

输入:

返回:

--------------------------------------------------------------------*/

void main(void)

{

OC0_OUT_EN;//为允许PWM工作,需设置PB3为输出

timer0_init();

SEI();

while(1);

}

系统调试

改变PWM初始化代码的如下两个语句的赋值:

TCNT0 = 0x00;//设置TC0计数寄存器初值

OCR0 = 0x10;//输出比较寄存器初值,设置该值可用于调节OC0输出占空比

从LED的闪烁频率可以看出,改变了PWM的频率。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
占先式内核(只带延时服务)