So-net無料ブログ作成

DSBasicをMega2560で動かそうとしたが・・・。 [DCC/MM2シールド]

 ほぼこれは1年ぶりの話になります。
 DSBasicはArduinoだけで自動運転するために、ArduinoUnoにキーボードとモニタをつけてBasicのプログラムが動くという、かなり夢のデバイスだったのですが、記憶容量が1KByteしかなくて、なかなか、大作プログラムが作れませんでした。
 で、ArduinoMega2560だったらROMなどの容量が4倍あるからいいのではないかとのことで、Megaまでは買ったのですが、熱が冷めてしまい、そこで止まっていました。
 で、このごろ、HOゲージを動かそうとすると、どうも場所が足りないのと出し入れが面倒なので、この際だからHO用の鴨居鉄道でも作ってしまおうかと思って、それだったらついでに閉塞区間と信号機もつけて、そこらへんは自動にしてやって・・・と考えて、DSBasicを思い出した次第です。
 で、まずはMega用に組み立てです。
re_DSC01690.jpg

 Megaでは、VideoOutのピンが変わることが分かっておりますので、そこの部分だけ改造が必要です。
 まあ、9ピンと7ピンが11ピンと29ピンに変更になりますので、Arudinoへつける部分の9,7ピンを切ってしまいます。
re_DSC01691.jpg

 で、Megaに付けて、9ピンと11ピンにジャンパを飛ばして、7ピンからMegaの29ピンにジャンパを飛ばして完成です。
re_DSC01692.jpg

 で、試運転です。スケッチは全く直さなくとも、モニターはちゃんと映るし、キーボードも動きます。しかし、DCCの命令がこけまくります!なんだこれ。
 現象としては、キーボードやPCのシリアルからDSBasicのコマンド、pwr1とかspd5,0,10とか投げても半分ぐらいは無視されます。
 Aruduinoの問題かDSBasic基板の問題かわからなかったので、入れ替え実験をしてみました。
(1)Mega(互換品)を2枚用意して、DSBasic基板を2枚用意して、挿して、DSBasicスケッチで動きを確認。→命令半分ぐらい無視が再現
(2)ArduinoUno(互換品)にDSBasic基板(2枚用意)を挿して、DSBasic基板、スケッチで動きを確認→正常(命令無視なし)
(3)MegaにDSBasic基板(2枚用意)を挿して、DSGatewayスケッチを入れて、DesktopStationから操作する。→正常(命令無視無し)

→(2)(3)からDSBasic基板、Megaともに問題なしが分かって、そうすると、DSBasicスケッチをMegaで動かすと怪しいという風に見えました。
 なんか、SPIがこっそり違うのか?とか勝手に考えて、SPI周り(クロック分周とか、Delayとか)をこそこそと変えてみたりしましたが、全然挙動は変わりませんでした。SSのピン番号は一応違うようですが、Arudinoでは手動のようで、D10使うので問題なさそうですし。
 ということでお手上げです。うまくいったら、プログラム領域を広げてとか思っていたのですが。
 モニターとキーボード捨てれば、普通にArudinoUnoに信号用の制御プログラム書くだけでも構わないと言えば構わないですし・・・。ちょっと寂しいですけど。

コメント(4)  トラックバック(0) 

コメント 4

Yaasan

すみません。たぶん、DSCoreに勢い良く命令を流し込みすぎてデータを撮り損ねてます。


DSGatewayLinB.cppで、77行目のdelay(1)を、delay(10)とかにしてみてください。



by Yaasan (2017-07-29 05:56) 

fujigaya2

コメントありがとうございます。

delay(1)→10とか100とかにしてみましたが、症状変わりませんでした。
by fujigaya2 (2017-07-29 11:11) 

Yaasan

http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=539

ここによると、53ピンをOUTPUTにPimodeを設定しないとダメとか書いてあります。ほんとかいな、と思っちゃいますが、やってみていただけますか。

DSGatewayスケッチと、DSbasicの使い方の大きな違いは、ウェイトのありなしです。PC側からは50ms以上のウェイトを入れて出力してくるので、混むことは無いですが、DSbasicだとどんどん処理を実行してしまうので、何かあるのかなと思いました。
ただ、確かDSbasicもダミーウェイトをいれていたはずなので、なんで動きが悪いのか、ちょっと不思議なところです。
by Yaasan (2017-07-29 14:39) 

fujigaya2

53PinをOutにするのをやってみましたが、変わらずですね。
いま、PowerLEDで見れる「Pwr1,1秒待ち、Pwr0、1秒待ち」というのでやっていますが、MOSI?端子を当たると、1秒ごとにちゃんとSPI信号は出ているようなんですよね。なんですかね?
by fujigaya2 (2017-07-29 17:10) 

コメントを書く

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

トラックバック 0