あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

TD4 製作 その5

f:id:akkera102:20170228222759p:plain
リセット信号とクロック信号(10Hz)を作ってみました。
以下、DCジャックを入れたときの挙動を書いてみます。


追記:配線ミスっていました。orz

・クロック信号
10Hz:0.1秒単位で点灯、点滅。
手動  :最初、点灯、点滅する。ただ、その後にリセットが点灯するので無視される。


・リセット信号
最初の動作が不安定。点灯、点滅、点灯、点滅、点灯してようやく安定する。


うーん、リセット信号、こんなに不安定なんですねえ。
点灯のみ、というわけにいかないようです。


リセットボタンについても0.5秒ほど押し続けないといけませんでした。
一瞬だと反応せず。


・クロック信号
10Hz:0.1秒単位で点灯、点滅。
手動  :ボタンを押して点灯、離すと点滅。


・リセット信号
電源を入れた後に点灯し続けます。動作も安定。


予想通りの結果でした。


お値段的なものもあるでしょうけど、
ATmega328p(1チップ)の凄さを改め感じています。

TD4 製作 その3

f:id:akkera102:20170222213022p:plain

今まで回路図を書いた経験もなく、
下手だなーと思いつつ書いています。


コーディングというより、縫い物をしている感覚です。
そういえばズボンの裾上げを数か月前にやったなあ・・・(どうでもいい。


74HCのデーターシートからそのままの取ってきたので
トップビューから見たピン配置のままです。
その為、非常に線が入り組んでいます。


直そうにもすべての石を作った後だったので
面倒なのでこのまま続行します。

GB Dumper その2

f:id:akkera102:20170222200050p:plain
f:id:akkera102:20170222201759p:plain
エクステンション基盤を自作してみました。
初めてのkicad、業者注文でもあるので相当ショボイです。
hello wolrdみたいなもんだと思って見て頂ければと思います。



スイッチサイエンスPCB 10x10cm 5枚で2,469円。(1,389+送料1,080)
注文 2/6
到着 2/22


最初なので穴の大きさこれでよいの?と半信半疑でしたが
予想通りの結果満足しています。
GB吸出しは問題なくいけました。一発でOK。


前みたいにカードリッジピンに無理やりケーブルくっ付けてましたけど、
あれはものすごく大変でした。
配線ミスのリカバー、テスターの検査込みで3,4時間。
この基盤を使うなら1時間もかからなかったと思います。
どんな道具で作るかって大事ですね・・・。


kicadメモ

M3ネジ
NPTH 3.048mm
サイズX 4.064

パッド
スルーホール 1mm
サイズX 1.6mm

TD4 製作 その2

f:id:akkera102:20170219203342p:plain
大したことしていないのにケーブルが多いとやった感がでますね。(^^;
ROM部分は大雑把に実験完了。次々~。


追記:このソースは暫定版です。

/*
IDE 物理ピン 名称
2    4       Intr

3    5       D0
4    6       D1
5   11       D2
6   12       D3
7   13       D4
8   14       D5
9   15       D6
10  16       D7

16  25       A0
17  26       A1
18  27       A2
19  28       A3

※スケッチ書き込み用
-   1        RESET
11  17       MOSI
12  18       MISO
13  19       SCK
*/

const int _A0 = 16;
const int _D0 = 3;

void setup()
{
  for(int i=0; i<4; i++)
  {
    pinMode(_A0+i, INPUT);
  }

  for(int i=0; i<8; i++)
  {
      pinMode(_D0+i, OUTPUT);
      digitalWrite(_D0+i, LOW);
  }

  attachInterrupt(0, intr, RISING);
}

void loop()
{
  // EMPTY
}

void intr()
{
  byte t = 0;
  byte d = 0;

  for(int i=0; i<4; i++)
  {
    if(digitalRead(_A0+i) == HIGH)
    {
      t |= (1 << i);
    }
  }

  // ラーメンタイマー
  switch(t)
  {
  case 0x00: d = B10110111; break;
  case 0x01: d = B00000001; break;
  case 0x02: d = B11100001; break;
  case 0x03: d = B00000001; break;
  case 0x04: d = B11100011; break;
  case 0x05: d = B10110110; break;
  case 0x06: d = B00000001; break;
  case 0x07: d = B11100110; break;
  case 0x08: d = B00000001; break;
  case 0x09: d = B11101000; break;
  case 0x0a: d = B10110000; break;
  case 0x0b: d = B10110100; break;
  case 0x0c: d = B00000001; break;
  case 0x0d: d = B11101010; break;
  case 0x0e: d = B10111000; break;
  case 0x0f: d = B11111111; break;
  }

  for(int i=0; i<8; i++)
  {
    digitalWrite(_D0+i, (d & (1 << i)) ? HIGH : LOW);
  }
}

ATMEGA328P単体起動

Arduino/Arduino UNOからATmega328P-PUを外して単体利用する - DIGIらいふ ~COOLに行こう!~
ATMEGA328P を Arduino として使う
参考に作ってみました。
ブートローダー、スケッチともに問題ありませんでした。
意外にあっさりできて驚いています。

GB Dumper その1

今回フラックスを初めて使ってみたのですけど驚きの性能です。
半田にはマストアイテムでした。
f:id:akkera102:20170216211011p:plain


GBA Dumper Shield
ユーザが作った基盤をOSH Park内で公開していて、
ほしい人は注文することができます。
ただピンが順番に並んでいないのであまりおすすめしないです。
1/21 注文
2/16 到着
3枚2033円
f:id:akkera102:20170216211007p:plain


NDS版スロットの場合、そのままだとカードリッジに入りません。
両端をカットしないといけないです。
そのあたりは3番目の資料を見てください。

Cardridge - Arduino MEGA

VCC  -  5V
CLK  -  GND
WR   -  2
RD   -  3
CS   -  4

A0   -  22
A1   -  23
A2   -  24
A3   -  25
A4   -  26
A5   -  27
A6   -  28
A7   -  29
A8   -  30
A9   -  31
A10  -  32
A11  -  33
A12  -  34
A13  -  35
A14  -  36
A15  -  37
D0   -  38
D1   -  39
D2   -  40
D3   -  41
D4   -  42
D5   -  43
D6   -  44
D7   -  45

RST  -  5V
VIN  -  GND(配線しなくてもいいけど念のため)
GND  -  GND


ソースコード
github
全てのロムには対応していないです。ご注意ください。


・資料
http://www.slideshare.net/__106__/arduinogameboydump
https://github.com/106-/gbdumper
https://www.insidegadgets.com/projects/gameboy-cart-shield/