Atmega2560ベースのチュートリアル(9)--16ビットタイマ(TIM1 / 3/4/5)タイマ割り込み
タイミング、割り込み、単純な16ビットタイマは、TCNTx、TCCRxB、TIMSKx(Xは3つのレジスタを必要とするように4つの16ビット・タイマ、タイマ1、タイマ3、タイマ4、タイマ5のAtmega2560合計= 1,3,4,5)、16ビットタイマは、基本的に同じ構造、以下に例示タイマ1であります
1.作品
TOP 0XFF、割り込みフラグを加算した値でタイマをインクリメントし、最大のTCNTx値。次のように詳細なTCNTx値が計算されます。
変換ユニットなし式S、周波数[Hz]の時間単位、
2.TCNTxレジスタ
16ビットレジスタを開始し、数
3.TCCRxBレジスタ
の数を分割する主要な意思決定
次のように配置された詳細:
4.TIMSKxレジスタ
メインは、割り込み有効
5.具体例
タイマ1では、たとえば、あなたは3,4,5友人は、タイマーを使用して交換することができる登録することができ、タイマーが必要3,4,5
/*
定时器1,256分频,当中断发生时,PA0电平翻转
*/
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/sfr_defs.h>
#include <avr/interrupt.h>
float a=0.0015; //0.0015s产生一次中断
int i=0;
int main(void)
{
cli();
DDRA|=_BV(DDA0);
PORTA|=_BV(PA0);
a=65536-F_CPU*a/256; //计算初值
i=a; //取整
TCNT1=i;
TCCR1B |=_BV(CS12); //256分频
TIMSK1 |=_BV(TOIE1); //溢出中断使能
sei();
while (1)
{
}
}
ISR(TIMER1_OVF_vect ){
cli();
TCNT1=i;
PORTA^=(1<<PA0);
sei();
}
波形チャート