没有合适的资源?快使用搜索试试~ 我知道了~
AVR使用范例-定时器实现PWM功能.docx
0 下载量 12 浏览量
2022-10-24
17:26:24
上传
评论
收藏 121KB DOCX 举报
温馨提示
试读
18页
AVR使用范例--定时器实现PWM功能
资源推荐
资源详情
资源评论
AVR 使用范例--定时器实现 PWM 功能
本页关键词: 什么是 pwm pwm 原理 pwm 控制 pwm 芯片 pwm 单片机 单片机 pwm 控制应用 pwm
电路 pwm 输出 pwm 调制
脉宽调制 PWM 是开关型稳压电源中的术语。这是按稳压的控制方式分类的,除了 PWM 型,还有
PFM 型和 PWM、PFM 混合型。脉宽宽度调制式(PWM)开关型稳压电路是在控制电路输出频率不变的
情况下,通过电压反馈调整其占空比,从而达到稳定输出电压的目的。
通俗的说 PWM 就是波形,波形的波峰以波谷的比例关系成为占空比,我们可以通过 PWM 控制电机,
音量控制,模拟控制等。
AVR 单片机的定时器可以轻松实现 PWM 功能。mega16 和 mega32 的 timer0 是和 timer2 都具有
PWM 功能,timer0 和 timer2 都为 8 位定时器。timer2 为异步操作定时器,在操作过程中要等待寄存器状
态更改完成。详情参看数据手册:8 位有 pwm 操作的异步操作定时器 timer2。
下图设定使用 timer0 来实现 PWM 功能。PWM 电机控制:。
OC0 output mode 设定了 pwm 输出控制选择:正常的端口操作,不与 OC0 相连接, 比较匹配发
生时 OC0 取反, 比较匹配发生时 OC0 清零, 比较匹配发生时 OC0 置位。
Waveform mode 设定了波形产生模式:比较匹配输出模式,快速 PWM 模式,相位修正 PWM 模式。
更详细的内容请参看数据手册。
看看程序代码:
//ICC-AVR application builder : 2006-11-25 0:15:12
// Target : M16
// Crystal: 7.3728Mhz
#include
#include
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
DDRB = 0x08; //PB3 为 PWM 输出,非常重要,否则无法输出波形
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
//TIMER0 initialize - prescale:64
// WGM: Normal
// desired value: 1KHz
// actual value: 1.002KHz (0.2%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x8D; //set count /*TCNT0*/
OCR0 = 0x73; //set compare /*OCR0*/
TCCR0 = 0x23; //start timer /*TCCR0*/
}
#pragma interrupt_handler timer0_comp_isr:20
void timer0_comp_isr(void)
{
//compare occured TCNT0=OCR0
剩余17页未读,继续阅读
资源评论
猫一样的女子245
- 粉丝: 93
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功