例のWINAVR上でインラインアセンブラ使っちまおう
という話の続き。時間遅延処理を組んでるわけだけど、
なんだかうまく動いてなくてちょっと放置してた続き。
あらためてシミュレータ上で、ディスアセンブルリスト
を1ステップ1ステップ動かしてってみると、どうやら
引数として与えた遅延時間がうまく引き継がれてなくて、
カウント値=0でループを抜けちゃうことがわかった。
とするとロジックそのものが原因じゃぁ無いってこと
だろうと思って見直してみる。どうやらアセンブラに
渡す引数(C言語変数タグ)との結びつき、ここの
指定方法が間違ってることが解ってきた。
ここは正直一番よく解ってないところ。あらためて
あちこち情報収集して眺めなおしてみると、とりあえず
一つは間違え発見。
ループはそれなりに回るようになったんだけど、
ループから抜けるまでの時間(クロック数)が
想定の2倍だったり30倍だったり…というだめっぷり。
うーん、ロジックのような、環境のような…
とりあえず今日はここまで。また今度。
|