気になったこと

SPIの送信完了待ちをビットが立つのをwhileループで待つ方法から、タスクサスペンド&リジューム方式に切り替えて、特に問題なく動作しているものの、ふと気になった。


これ、コンテキストスイッチに時間がかかる割にはSPIの送信には時間がそんなにかからないので、サスペンドで退避→すぐに割り込み→リジュームで復帰となっていて、かえって無駄なんじゃ…
サスペンドを使わずにsleep命令をWhileループ内に入れてスリープ→割り込みで復帰の方がいいかも。
シミュレータでコンテキストスイッチの時間測るか。


ちなみに、SPIの動作モードはfosc/4で動いていて、1バイトの送信にかかるサイクル数は4*8で32サイクル。
ソースを見てないので何とも言えないけど、AVRはレジスタが32本あるので、単純に考えるとコンテキストスイッチには32サイクル以上かかる気がする。
うーむ…