Atmel Studio入門:Delay

Atmel Studioで、Delay(遅延)関数を使用する方法について解説します。

Delay関数のサンプル・コード

Delay関数を使用した簡単なサンプル・コードで説明していきます。

//Example:Delay
//Target Device: ATmega328
//Author: easy labo
//Created: 2014/11/02

#define F_CPU 16000000UL

#include 
#include 

int main(void)
{
	DDRD  |= 0b10000000;
    while(1)
    {
		PORTD |= _BV(7);
		_delay_ms(1000);
		PORTD &= ~_BV(7);
		_delay_ms(1000);
    }
}

6行目
クロック周波数を元に遅延時間を計算するので、F_CPUを指定する必要があります。

9行目
Delay(遅延)関数を使用するには、util/delay.hをインクルードする必要があります。

17行目、19行目
_delay_msを利用して、1000msの遅延を発生させています。引数が遅延時間(ms)になります。

Delay関数の書式

Delayには、上記サンプル・コードで利用した_delay_msに加えて、us単位の_delay_usも用意されていますので、書式などをまとめておく事にします。

_delay_us
書式:_delay_us(double);
遅延時間:引数usの遅延時間を生成
最大遅延時間:768us÷F_CPU(MHz)
遅延時間超過時:自動で、_delay_msにスイッチする

_delay_ms
書式:_delay_ms( double );
遅延時間:引数msの遅延時間を生成
最大遅延時間:
(A)262.14ms÷F_CPU(MHz)
(B)6.5535s(分解能0.1ms時)
遅延時間超過時:
(A)を過ぎると分解能0.1msになるが、最大遅延時間が6.5535秒に伸びる。

まとめ

Atmel Studioでプログラミングを行う場合、Delay(遅延)関数が用意されているので便利です。なお、より長い遅延時間を発生させたい場合は、上記の遅延をループ構文の中に入れたり、タイマを使用する方法が考えられます。

→その他のAtmelマイコン関連情報

Sponsored Link