SSブログ

F28まで押せるコントローラの検討 その5 [DCCコントローラ]

 昨日は買った覚えのない猫撃退器がアマゾンから届きました。購入依頼を見ても買っていないし、なんか住所とか名前が英語で書かれているし、で、怪しいので、アマゾンのカスタマーセンターに連絡して、荷物番号を確認して、返品しました。こわいこわい。
 で、DCCの制御部分の続きです。
 今日は、アクセサリ制御部分を作ろうとしました。
 こんな感じに作ればよいらしいです。
 {preamble} [10AAAAAA] [1AAACDDD] [check sum]
 で、適当にGoogle翻訳して、作ってみましたが全く動きません・・・。アドレスは4つごとに飛ぶし、CDDDのCでOnOffをしてみましたが、全く動かないしDDDには何を入れるのかわからん。英語の仕様書だけでは一部意味不明だったため、DSmainR6のソースも参考にしました。
でわかったことは、1byte、2byte目は、("1"とか"0"は固定値です)
[ "1" "0" A5 A4 A3 A2 A1 A0] ["1" A8 A7 A6 C D2 D1 D0]
としたときに
・A5~A0はアドレスの下位6ビットです。
・A8~A6はアドレスの上位3ビットで1の補数表現します(bitを反転させればよい。010なら101。)
・D2、D1がアドレスのサブアドレスのようなもので2ビットあるので0~3の値をとります。
・D0がポイントとかのOnOffビットです。
・Cは1固定のようです。

送る1byte目と2byte目の命令はアドレスも含めてこんな感じになります。Xはアクセサリのオンオフです。
アドレス1の時A8~A0 = 1 D2D1 = 0b00 → [1000 0001] [1111 100X]
アドレス2の時A8~A0 = 1 D2D1 = 0b01 → [1000 0001] [1111 101X]
アドレス3の時A8~A0 = 1 D2D1 = 0b10 → [1000 0001] [1111 110X]
アドレス4の時A8~A0 = 1 D2D1 = 0b11 → [1000 0001] [1111 111X]
アドレス5の時A8~A0 = 2 D2D1 = 0b00 → [1000 0010] [1111 100X]

アドレスは512(9ビット)*4(2ビット)=2048個持っているんですかね?

ということで、アクセサリ命令も送れるようになったので、ひとまず終了で、次は基板が来てからtm1637辺りをいじりながら進めていきたいと思います。まだ発送連絡ありませんが。


コメント(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。