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に信号用の制御プログラム書くだけでも構わないと言えば構わないですし・・・。ちょっと寂しいですけど。