[過去ログ]
Arduino初心者熱烈大歓迎質問スレ part25 (1002レス)
Arduino初心者熱烈大歓迎質問スレ part25 http://rio2016.5ch.net/test/read.cgi/denki/1568358922/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
580: 774ワット発電中さん [sage] 2019/12/06(金) 00:38:03.85 ID:wUDqCI/2 >>572 案内どうもです。はるか昔、8bitPCで拡張カードを作りたかったことを今実践しています。 それで>>546のリンク画像の「黒い基板」でやりたかったことは8ビットPCで、CPUの切替でした。 リンク先の画像に写ってるFM-7と言う8ビットPCはメインCPU(MPU)が6809だけど動作しながら、 オプションのZ80とCPUが交代できる仕様です。今回はZ80の代わりに「Arduino」を使って切り替える 実験をしてます。 それで、「6809 → Arduino」はサンプルがあったので実現できてますけど、その状態から再度6809に 戻すことで躓いています。動作させながら CPU(MPU)の切替は面白い試みですがハードルも高い感じです。 理由は切替のフラグを74LS74で持ってるようですが、既定値を書いて「Arduino → 6809」に戻す際に ソフトで処理してるので、Arduino と 6809 でバスが衝突してるのではと推測しています。ですので ハードを追加しないと確実な動作は無理かなと思いながら衝突する時間が短ければ大きな不都合がなく、 制御が 6809 に戻る可能性もあるとも考えてまして Arduino の出力を一瞬で停止したかった訳です。 >>573 説明して頂いたことを指針として高速処理したい部分をインラインアセンブラにしてみましたした。 結果は質問の前よりは前進しました。因みに前進した内容は「BREAK + RESET」で先に「RESET」を 離し次に「BREAK」を離すと(ホットスタートと言うことがあります)6809に戻ることがあってメモリに Arduino で書いた内容が残っていました。ただ書いた内容が正確に反映されてない問題や確実に戻ると 言う状態でもないので、その辺りはもう少し実験してみます。 長文失礼しました。 http://rio2016.5ch.net/test/read.cgi/denki/1568358922/580
589: 580 [sage] 2019/12/06(金) 14:50:10.22 ID:wUDqCI/2 結果報告をします。アドバイスを提示してくれた方へ、ありがとうございました。 下のようにインラインアセンブラのコードを入れましたけどソフトでは無理のようです。 asm("DDRG = B00000000"); // data D40 EB port inputmode asm("DDRF = B00000000"); // address(0-7) port inputmode asm("DDRK = B00000000"); // address(8-15) port inputmode asm("DDRL = B00000000"); // data D43 RWB=WRITE port inputmode asm("DDRC = B00000000"); // data(30-37) port inputmode >>581 >やっと具体的な機種名出たか 画像から判る方はいると思いましたし黒い基板の製作者に迷惑が及ぶのではと考え当初は 積極的な明示は控えました。とは言え回答する方も「結局、何がしたいのか?」と訝しむ的なことは 当然と思います。基板の製作者に迷惑が及ぶことを避けたかったことが真意ですので御了承下さい。 因みにリンク先の方は知ってました。現在彼が趣味で取りくんでる内容は40ピンのインターフェースを 通じてMMUを用いて 6809 で1Mバイトのアドレス空間にアクセスする(ほぼFM-77仕様)ことです。 FM-7の40ピン使う着想は似てるかも知れませんが今回の基板は自分のオリジナルではありません。 >>586 正にその通りです。 http://rio2016.5ch.net/test/read.cgi/denki/1568358922/589
599: 774ワット発電中さん [sage] 2019/12/06(金) 19:03:27.36 ID:wUDqCI/2 >>591 下のCPUの状態(遷移)は74LS74が保持してることを前提として 1)6809 の停止は「POKE &HFD05、1」と言う命令で FM-7 自体が停止状況を作り出す(LED点灯) その後 6809 が停止した状態では MEGA2560 が FM-7 のバスを支配下に置きメモリ等に読み書き可能 2)6809 が停止した状態から同じアドレスに MEGA2560 が「0」を書き込んで 6809 の停止状態を解除する(LED消灯) 3)しかし「0」を書き込んで 6809 が動きだした時点で MEGA2560 は未だアドレスバス等でOUTPUTの状態を維持し 信号を出しているので バス が衝突してることは確かなのではと考えてる。つまり MEGA2560 が 6809 の停止解除後の 7命令以内であれば 6809 が停止を続けてると言う訳ではなく、解除したと同時に動作は始めてる。 自分としては、その状況が有っても、運良く大きな支障(影響)もなく 6809 に制御が戻る可能性に期待したけど 確かめてみると、そうは問屋下ろさなかったと言う結論になりました。 なおロジックアナライザがあれば更に詳しくは判ると思うけど、その類の機材はないので。 >>594 MEGA2560 が FM-7の「&HFD05」に「0」を書き込んだ後は物理的に MEGA2560 が壊れれない限り レジスタ の内容の破壊は許容範囲。とは言え asm("DDRG = B00000000"); ではダメなのかな? 一応、自分なりに調べて「DDRD = B11111110;」を真似して asm(" "); で括ったけど。 http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=850 http://rio2016.5ch.net/test/read.cgi/denki/1568358922/599
625: 774ワット発電中さん [sage] 2019/12/06(金) 23:15:17.33 ID:wUDqCI/2 最終的にピンモードの高速変換を下のようにして(インラインアセンブラなのか?) 1)MEGA2560 使った FM-7 のメモリに書き込みは成功(これは前から成功例あり) DDRG = DDRG | B00000000; // data D40 EB port inputmode DDRF = DDRF | B00000000; // address(0-7) port inputmode DDRK = DDRK | B00000000; // address(8-15) port inputmode DDRL = DDRL | B00000000; // data D43 RWB=WRITE port inputmode DDRC = DDRC | B00000000; // data(30-37) port inputmode 2)この後ホットスタートで 6809 に制御が戻り、モニタコマンドでメモリの変更を10回程確認 3)しかし FM-7 のメモリに書いた(テスト)プログラムの起動は BASIC の EXEC コマンドでも モニタの G コマンド でも失敗。最終的に↑がしたかった。ソフト的な面では、この辺りが限界かなと。 お騒がせしました。 >>600 何せ「Arduino(IDE)」を使い初めて8日目なので判らないことが多いです。 http://rio2016.5ch.net/test/read.cgi/denki/1568358922/625
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.576s*