立即注册 找回密码

微雪课堂

搜索
微雪课堂 AVR AVR单片机笑傲江湖 查看内容

AVR PWM OC0

2015-6-2 16:57| 发布者: waveshare-admin| 查看: 3799| 评论: 0

摘要: 系统功能  AVR内部脉宽调制OC0输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。  硬件设计AVR主控电路原理图(点击图片放大,不需要放大镜!)软件设计下面部分从TXT拷出,拷到网页,代码部 ...
系统功能

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


AVR主控电路原理图(点击图片放大,不需要放大镜!

软件设计

下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!

//目标系统: 基于AVR单片机
//应用软件: ICC AVR

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
AVR内部脉宽调制输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。
----------------------------------------------------------------------
硬件连接:
将UserLed指示灯连接至PWM的端口PB3/OC0。
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“产品资料\开发板实验板\SMK系列\SMK1632\说明资料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#include <iom16v.h> 
#include <macros.h>

#define OC0_OUT_EN DDRB |= 0b00001000

/*--------------------------------------------------------------------
程序名称:定时器0初始化程序
程序功能:定时器作PWM使用,设置PWM的工作模式
注意事项:
提示说明:
输    入:
返    回:
--------------------------------------------------------------------*/
void timer0_init(void) 

 TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00); 
/*
 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的频率。

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!


300

顶一下

刚表态过的朋友 (300 人)

上一篇:AVR EEPROM下一篇:AVR PWM OC2

最新评论

所有教程
AVR

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2024-4-23 20:23 , Processed in 0.029710 second(s), 20 queries .

返回顶部