Atmega2560基础教程(8)——8位定时器(TIM0/2)Phase|Atmega2560基础教程(8)——8位定时器(TIM0/2)Phase Correct PWM模式
Atmega2560基础教程(8)——8位定时器(TIM0/2)Phase Correct PWM模式 Atmega2560一共有2个8位的定时器,定时器0,定时器2,让8位定时器工作在Phase Correct PWM模式一般需要四个寄存器OCRxA,OCRxB,TCCRxA,TCCRxB(x=0,2),定时器0和2结构基本一致,因此以下均用定时器0为例
1.工作原理 Phase Correct PWM模式下,频率固定,占空比可改。定时器的数值向上递增,当递增至0xFF时,定时器开始递减至0X00,如此往复,这个过程中每当数值与OCRxA或者OCRxB数值相等则于定时器相应连接的引脚将会发生动作,具体动作方式需根据相应设置而决定,上升过程与下降过程的动作正好相反
3.OCRxB寄存器 比较时与定时器相连B引脚发生动作的点
文章图片
3.OCRxA寄存器 比较时与定时器相连A引脚发生动作的点
文章图片
4.TCCRxA寄存器 主要决定,当定时器与OCRxA或者OCRxB数值相等时,引脚作何动作,以及定时器工作在Phase Correct PWM模式
文章图片
具体配置方式如下:
文章图片
文章图片
文章图片
5.TCCRxB寄存器 主要决定分频数,依靠分频数不同可以改变频率
文章图片
具体配置方式如下:
文章图片
6.具体例子
/*
* 定时器0,工作在Phase Correct PWM模式,PB7,PG5输出,当上升匹配时置低,当下降匹配时置高
*/#define F_CPU 16000000UL
#include
#include
#include
#include float duty=55.8,duty1=81;
//A通道55.8%占空比,B通道81%占空比
int i,i1;
int main(void)
{
DDRB|=_BV(DDB7);
PORTB|=_BV(PB7);
DDRG|=_BV(DDG5);
PORTG|=_BV(PG5);
TCCR0A |=_BV(WGM00)|_BV(COM0A0)|_BV(COM0A1)|_BV(COM0B0)|_BV(COM0B1);
//当上升匹配时置低,当下降匹配时置高,设置为Phase Correct PWM
TCCR0B |=_BV(CS02);
//256分频
duty=256-duty*256/100;
i=duty;
OCR0A=i;
duty1=256-duty1*256/100;
i1=duty1;
OCR0B=i1;
while (1)
{
}
}
【Atmega2560基础教程(8)——8位定时器(TIM0/2)Phase|Atmega2560基础教程(8)——8位定时器(TIM0/2)Phase Correct PWM模式】波形图
文章图片
推荐阅读
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- Python基础|Python基础 - 练习1
- Java|Java基础——数组
- Java基础-高级特性-枚举实现状态机
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础
- HTML基础--基本概念--跟着李南江学编程
- typeScript入门基础介绍
- c++基础概念笔记