無限ループの初回ループの処理速度について

こんにちは。ojojと申します。プログラム作成中に不明な動きが発生して困っております。

よろしくお願いいたします。

[質問概要]  無限ループした際に、1回目の処理のみ時間が30nsec~50nsec程度遅延します。

[使用マイコン] RX23t

[経緯]

汎用ポートで数10~100nsec単位の信号波形を作る必要があり、無限ループ内でnop()などを使用して信号波形を整形しました。

すると、1ループ目の波形のみ間延びする現象が確認されました。

検証したところ、単純な無限ループでポートHIGH/LOWした時も最初の1ループ目のみ間延びしています。

逆アセンブラなどを見ても処理的には同じところを通っているように見受けられましたので、

どういう処理でこういう現象が起きるのか疑問に思っております。

どなたがご知見のある方がいらっしゃいましたらお教えいただけないでしょうか。

[コード]

#include "r_smc_entry.h"

void main (void){

 while(1){
  PORT2.PODR.BIT.B2 = 1;
  PORT2.PODR.BIT.B2 = 0;
 }
}

[コード説明]

P22でひたすらポートをHIGH/LOWしているだけです。開始直後の初回ループのみ、ループに時間がかかります。

Parents Reply Children