信号を制御するためのデコーダを開発しました。DigitraxのSE8Cを意識しましたが、LocoNetを利用せずレール上のDCCパケットを受信するためメーカーによらず利用でき、レールに接続するだけで利用できるので配線も簡単です。
また、基板サイズも大分小さくできます。ただし、LEDの駆動回路を省略しているので思いっきり明るくは光らせられません。
接続端子がまだ一部ハンダ付けされてませんが、動作確認済み。初めてダイナミック点灯をやってみました。
苦労した点
- 全ての動作とシリアル送信関数をいれるとメモリが足りないのでデバッグするのが大変だった
- シフトレジスタの操作に大変時間がかかる(20マイクロ秒以上)のでDCCパケットを割り込みで受信しないといけない
- 根本的にFLASHメモりが少ないから無駄を省くのが大変
- 最終的にぴったり100%(笑)。おかげでPAGEモードが入らなかった。
- 構造体のビットフィールドはRAMは節約できるが、ROMは圧迫される
- RAMは20byte以上残して置かないとスタック領域が不足しオーバーフローが起きる(一番わかりにくいバグ)
仕様
- 2から4灯式の信号機を16本制御
- 1ブロックの端子ごとに信号機の種類を選択可能(DIRモードのプログラム対応)
- 1本の信号機の点灯状態は2灯式なら1つ,3灯式なら2つ,4灯式なら3つの連続したアクセサリー番号で選択
- 電源はレールからあるいはACアダプターを選択可能
点灯パターン
例:アクセサリ番号1~3が振り当てられた信号機の点灯パターン
CV値
動作モードは0が2灯式、1が3灯式、2が4灯式
- CV1 アクセサリ番号下位8ビット
- CV2 アクセサリ番号上位8ビット
- CV20 ブロックA1 – 1 動作モード
- CV21 ブロックA1 – 2 動作モード
- CV22 ブロックA2 – 1 動作モード
- CV23 ブロックA2 – 2 動作モード
- CV24 ブロックB1 – 1 動作モード
- CV25 ブロックB1 – 2 動作モード
- CV25 ブロックB2 – 1 動作モード
- CV26 ブロックB2 – 2 動作モード
- CV27 ブロックC1 – 1 動作モード
- CV28 ブロックC1 – 2 動作モード
- CV29 ブロックC2 – 1 動作モード
- CV30 ブロックC2 – 2 動作モード
- CV31 ブロックD1 – 1 動作モード
- CV32 ブロックD1 – 2 動作モード
- CV33 ブロックD2 – 1 動作モード
- CV34 ブロックD2 – 2 動作モード
動作ビデオ
鋭意制作中