Atmega2560ベースのチュートリアル(XII) - 16ビットタイマ(TIM1 / 3/4/5)位相基準PWM動作

Atmega2560ベースのチュートリアル(XII) - 16ビットタイマ(TIM1 / 3/4/5)位相基準PWM動作

位相基準PWM動作タイマ16ビットは、一般的に6つのレジスタOCRxA、OCRxB、OCRxC、TCCRxAを必要とするように4つの16ビット・タイマ、タイマ1、タイマ3、タイマ4、タイマ5のAtmega2560合計、TCCRxB、ICRx(X = 1,3,4,5)、16ビットタイマ基本的に同じ構造、以下に例示タイマーである1

1.作品

位相基準PWM動作、固定周波数の下で、デューティサイクルは、我々はビットモードの可変数を使用する位相基準PWMモード、タイマ4つの16ビットの合計を変更することができます。ICRxにインクリメントするとき、タイマの値が上方にインクリメントされ、タイマは、0X00のデクリメントを開始し、等、このプロセスは、数値又はOCRxB OCRxAまたはOCRxC値は操作が発生し、それぞれの接続タイマに等しくなるたびにつながります特に、動作モードのためにそれぞれの設定、操作上昇過程と反対の下降プロセスに従って決定される
周波数の計算式:

  F 1 = F C リットル K _ / ザ・ 2 * N * C R バツ \大\ F_ {1} = \ FRAC {F_ {CLK \ _I / O}} {2 * N * ICRx}

2.OCRxAレジスタ

タイマーの比較は、操作が発生し、ピンポイントに接続されています。

3.OCRxBレジスタ

ピンBの動作点が発生するタイマーを比較した場合

4.OCRxCレジスタ

Cピンポイント動作に比べタイマーが発生

5.ICRxレジスタ

意思決定桁タイマーだけでなく、周波数出力

6.TCCRxAレジスタ

主に決定され、ときにタイマーまたはOCRxB OCRxA OCRxC値が等しいか、どのような操作ピンのためのものであり、ビット4 TCCRxB共同位相基準PWMタイマモードで決定

次のように配置された詳細:

7.TCCRxBレジスタ

主分割数を決定し、異なる周波数の分割数を変更することができます

次のように配置された詳細:

8.具体例


/*
 * 定时器1,工作在Phase Correct PWM模式4,PB5,PB6,PB7输出,当匹配时置低,当重置时置高
 */ 

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/sfr_defs.h>
#include <avr/interrupt.h>

float duty=10,duty1=40,duty2=70;              //3通道的占空比分别为,10,40,70                                                         
int i,i1,i2;

int main(void)
{
	duty=65536-duty*65536/100;
	i=duty;
	OCR1A=i;
	duty1=65536-duty1*65536/100;
	i1=duty1;
	OCR1B=i1;
	duty2=65536-duty2*65536/100;
	i2=duty2;
	OCR1C=i2;
	DDRB=0XFF;
	PORTB=0XFF;
	ICR1=0XFFFF;                                        //16位
	TCCR1A |=_BV(WGM11)|_BV(COM1A0)|_BV(COM1A1)|_BV(COM1B0)|_BV(COM1B1)|_BV(COM1C0)|_BV(COM1C1);
	TCCR1B |=_BV(WGM13)|_BV(CS10);           //Phase Correct PWM模式4,不分频
	while (1)
	{
	}

}

波形チャート

公開された12元の記事 ウォンの賞賛2 ビュー4119

おすすめ

転載: blog.csdn.net/jiantoushi/article/details/104090903