R8C/15によるサーボコントローラの作成実験をやってみた。タイマCの割り込みを使ってPWM信号を作成し、1つのサーボをコントロールする方法ならトラ技の応用で出来るんだけど、2つ以上だとちょっと面倒。これはトラ技のタイマCの解説では、タイマCの信号反転の機能を使ってPWM信号を実現しているからで、今回はこの部分を割り込みで処理することで各サーボ10msec間隔で3つのサーボをコントロールしてみた(ちなみに制御間隔が20msecでいいなら6個動かせる)
ポイントは、

	tcc12  = 1;		// コンペア1一致時にTCレジスタをクリア
	tcc13  = 1;		// アウトプットコンペアモードを選択

と、タイマCを設定した上で、

	ilvl0_cmp0ic	= 1;
	ir_cmp0ic		= 0;
	ilvl0_cmp1ic	= 1;
	ir_cmp0ic		= 0;

のようにしてcmp0、cmp1割り込みを有効にする(初めはこれを忘れて割り込みが入らなかった)
その上で、

#pragma INTERRUPT cmp0_int (vect=28)
#pragma INTERRUPT cmp1_int (vect=16)

割り込み関数を用意して、あとは単純に出力ピンを変えていけばいい。
ようやくタイマCのアウトプットコンペアモードが理解出来た。これが理解出来ればM16Cを使って15個のサーボ(制御間隔が20msecでもいいなら30個まで対応可能)が利用出来るコントローラが作れる。作るか…。