忍者ブログ

あやの

NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 DCC館 http://1st.geocities.jp/dcc_digital/ DCC2号館 http://dcc.client.jp/

2017/07    06«2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »08
指摘されるまで気にもしていなかったのですが、 コマンドステーションのDCS50Kのスピードステップの
設定は128ステップを使っていました。
みなさん設定を変更して、28ステップで使うのが普通との事で、ちょっと調べてみました。
(そもそも、SmileFunctionDecoderで使っているNMRAのライブラリが対応しているのでしょうか・・・)

まずは、DCCパケットの違いを表でまとめてみました。
なるほどー。今のDCC速度計の作りでは、14/28ステップは取得できません・・・

※赤字:固定値

14/28ステップの数値に対するbit

上位ビットで14/28ステップを切り替えているのですね。

DCCの仕様書等ではなんだかわかりにくかったので、
DCS50Kの設定を14/28/128と変えながら、DCCパケットモニタで内容を確認しました。

DCC速度計は14/28/128ステップの判断は、2バイト目のbit7,bit6で判断すればいいかな。


拍手[1回]

PR

無題

NMRA DCCライブラリベースですと、SpeedStepが渡されますので楽です。DCC128(127),28,14はパケットとしては全部別なので、少しだけ面倒です。
by やあさん URL 2016/10/09(Sun)16:52:54 編集

無題

コメントありがとうございます。
NmraDcc.cppを斜め読みしてみました。

128アドレス
notifyDccSpeed( Addr, speed, Data1 & 0b10000000, 127 ) ;

28アドレス
notifyDccSpeed( Addr, speed, Cmd & 0b00100000, 28 ) ;

4番目に128なのか、28なのか引数で渡されていますね。


スマイルファンクッションデコーダーは、
//DCC速度信号の受信によるイベント
extern void notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
{
if ( gDirection != ForwardDir)
{
gDirection = ForwardDir;
}
gSpeedRef = Speed;
}

こんな感じに作られているので、uint8_t MaxSpeed をちゃんと見て、4.57倍したり(^^;
28ステップ用の処理追加が必要ですね。
by あやのすけ 2016/10/09(Sun)23:40:22 編集
お名前
タイトル
メール(非公開)
URL
文字色
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメント
パスワード   コメント編集に必要です
管理人のみ閲覧

ブログ内検索

プロフィール

HN:
あやのすけ
性別:
非公開
<< Back  | HOME Next >>
Copyright ©  -- あやの --  All Rights Reserved
Design by CriCri / Material by もずねこ / powered by NINJA TOOLS / 忍者ブログ / [PR]