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(遅延)関数が用意されているので便利です。なお、より長い遅延時間を発生させたい場合は、上記の遅延をループ構文の中に入れたり、タイマを使用する方法が考えられます。
Sponsored Link