CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

LEDのRGB制御

イメージ 1

イメージ 2

68000用の算術ライブラリとして32ビット乗除算の_mulsi3,_divsi3,_modsi3をアセンブラで作成。
I/Fを現状のライブラリとコンパチにしてLIBGCC.Aとそっくり置換えができます。
ところでgcc68kの処理系ではint型変数は32ビットで処理されるので、実はshort型の16ビットまでは
算術ライブラリ無しでもコードをインライン展開するのでOKでした。

これでlong型変数の整数演算までは自由に使えるようになったのでLEDイルミネーションの
プログラムを少し手直し。
色相がゆっくり回転するようにしたいのですが初めの三角波状の変調(上図)では複数のLED同時点灯
している期間が長くいつも中間色でメリハリが無いので、
台形+消灯期間がある周期関数(下図)を作成し、これを120度の位相差でRGBを制御したところ
わりとうまく行きました。
ただしデューティ比と見た目の明るさはLEDの特性か人間の眼の特性か、リニアな関係でないようです。
見た目が対数的な変化をするので、制御を指数関数的なカーブでやると良さそうです。