2011年01月04日

AE-UM232Rピン互換ボード

Teensy(1.0)互換ボード』を作ってみたわけだが、秋月 の arduino もどき AE-ATmega が出たのを知り、AE-UM232R ピン互換にすれば良かったと思ってしまった。

配線が難しいので、Teensy(1.0)互換ボードのようには作れないと思いつつ、作ってみることにした。案の定 LED も レギュレータさえ入らなかったのだが、なにやらそれらしいものが出来た。



出来がったのはこんなやつ。いろいろ外していったが、ブートローダを起動するためのリセットボタンだけは外せない。



回路図は、こうなった。AE-UM232R とどこが ピン互換かについて説明していこうと思う。

その前に、ターゲットは、AE-ATmega ( と eJackino ) だけである。完全な互換性など目指していない。むしろ 組み込んだときに UNO 互換になるように考慮している。

    UNO 互換になるかどうかは、まだ考察不足。これからまじめに考えようかと思う。

ピン配置

    TXD o PD3(TXD) GND o GND
    DTR o PD7 PD5 o CB0 TX_LED
    RTS x PD6 PD4 o CB1 RX_LED
    VIO x VCC N.C.x VCC
    RXD o PD2 RST o RST ( - VCC)
    RI o PB0(SS) UCAP o 3V3
    GND o GND PD1 x CB3
    DSR o PB1(SLCK) PD0 x PU1
    DCD o PB2(MOSI) PC2 x PU2
    CTS o PB3(MISO) N.C. o VCC
    CB4 x PC5 UVCC o USB
    CB2 x PC4 GND o SLD ( - GND)

    J1:
    1 UCAP (3.3V出力)
    2 VCC
    3 UVCC (5v 出力)


このように割り当てた。外側は、AE-UM232R の信号名。o/x はAE-ATmega ( と eJackino )での接続の有無。

  • 電源関係

    AE-UM232R は、J1 の設定で、5V I/O と 3.3V I/O を切り替えられる。AT90USB162 は、UCAP に 3.3V 出力が出ているので、VCC を USB VBUS と UCAP のどちらかから選ぶということにした。AE-UM232R は、I/O だけを切り替えられて 1.8V までの範囲を選べるがさすがにそれは無理。また、VCC と VIO が別になっているが、VIO を VCC に読み替え、AE-UM232R の VCC は N.C. とすることにした。

  • リセット

    リセットは、すなおに RST に接続している。ターゲットは、AE-ATmega ( と eJackino ) といいながら、これだと具合が悪い。だが、外部から ISP で書きこむためには RST を出しておかないといけないので、このようにした。

  • シリアル

    使っているのは、TXD , RXD, DTR だけ。信号線以外だと TX_LED / RX_LED がある。
    これらは、UNO と同じ信号線を選んでいる。

    ただ、AE-ATmega ( と eJackino ) とつなげたときに 不具合がないかどうかについて、ちゃんとは考察できていない。特に DTR は、HWB の機能も兼ねる PD7 を使用していて少々不安。

  • X3 コネクタ

    ここは、Bitbang ライタ用と割りきって 同じ割り当てになるよう SS/SLCK/MOSI/MISO を割り当てた。

  • その他の信号線。

    無接続の RTS , CB4 , CB2 , PU2 , PU3 , CB3 については、配線の都合が良いものを選んで割り当てた。
    割り当てたピンのうち PWM が可能なのは、PC5 の OC1B と PD0 の OC0B 。

EAGLEファイルなど

  • um162-01.zip (全部入り)
  • um162-01-out.zip (Fusion PCB 提出用)

    上で説明したように、問題があるが提示しておく。もう少し検証してから 発注しようと思う。

自作ファームウェア

    Teensy(1.0)互換ボード』の記事で説明しているので、ここでは詳しく書かない。USBasp 互換 ブートローダや USBasp 互換ライタは用意できている。シリアルを UNO 互換として使うには、DTR サポートが必要なので、未だこれから。

    UNO 互換になるなら 自作ファームウェアで全部揃える必要などないし、LUFA という手もある。だが、だいぶ基本は揃っているし、できる範囲で対応していこうと思う。

追記:出来上がった



    #15 VCC端子は、ジャンパで VCC に接続。RESET の横の PORT を RESET に接続。LED も なんとか入った。もう触りたくない。これで行くか。(行った: 発注済)

    回路図:


    検討内容

    • VCCピン の扱い
      AE-UM232R には、VCCピン と VIOピン がある。3.3V と 5V を切り替えて VCC に入力できるようにしたが、それだと VIOピン = (AT90USB162 の)VCCと定義しないとならない。VCCピン は N.C. と定義したが、それだと AE-ATmega に合わない。#15 の VCCピン と VIOピン を ジャンパ(J2)できるように修正して 対応することにした。

    • RSTピン
      AT90USB162 の RESETを RSTピンに割り当てたいのだが、AE-ATmega では、RSTピンを 5V に直結している。これだと リセットボタン(ブートローダ起動ボタンと定義)が効かない。どうしたものかと思ったが、UNO でも ブートローダ起動には面倒なことをしなければならないことが分かった。

      リセットボタンでブートローダを起動したいならば、AE-ATmega の RSTピン のところをパターンカットした上で R5 を付ける と割り切ることにした。

    • HWB をプルダウンして問題ないか?
      AE-ATmega の RSTピンをパターンカットしないなら、外部電源 ON で VCC と リセットが同時に立ち上がる。このときに ブートローダは外部リセットだと認識はしないはず。その場合 HWB = PD7 の値は不定でかまわない。だから R5 を付けても問題ない。ただし、J1 をオープンにしないと 外部リセットになるはずで、R5 を付けたらブートローダが起動されてしまう。R5 を付けないと大丈夫かというと 微妙。コンデンサが付いているから、前の DTR (= PD7 = HWB) が保持される。外部電源 ON の条件だから 多分 ブートローダ起動になると思う。

      逆にRSTピンをパターンカットした場合、J1 をオープンにしておけば外部電源 ONで普通にパワーオンリセットになる。その場合ブートローダは起動しない。J1 をオープンにしないと外部電源 ON は関係なくなる。だが、普通に USB が接続されているだけだから問題は起きないはず。もし USB を再接続したい場合があったら USB ケーブルを抜き差しする。

      というわけで、問題ないだろうという結論にした。

    • LED
      ボード上に LED をひとつでも付けたかったのだが、やりくりしてなんとか付けることが出来た。

    • アプリケーションからの ブートローダ起動
      ちょっと実験的に RESET のとなりのポート(PC6) をRESET に接続してみた。

      AE-ATmega では、DTR (= PD7 = HWB) に コンデンサしかつながっていない。R5 を 付けなければ HWB の値は 保持される(はず)。だから DTR を設定して PC6 を L にすれば、ブートローダ起動するか アプリケーションを再起動するか選べるはず。ちなみにUNO では R5 に相当するパターンはあるがなにも付いていない。

        (1) ( AE-ATmega の RSTをパターンカット) + ( R5 を付けない ) + (J1 オープン) とするとほぼ(※) UNO と同じになる。
        (2) R5 を付ければ、リセットボタンで ブートローダ起動できるようになる。(UNO で同じことをするには、外部にリセットボタンが必要)
        (3) さらに PC6 を L にする機能を使えれば、アプリケーションからの ブートローダ起動も可能になる

      というわけだ。

      まだコードを組んでいないのだが、なにかおまじないをすることで PC6 を L にして リセットをかけるようにしようかと思っている。

      (※) UNO と違うのは、AE-ATmega のボード側。UNO は、外部電源自動切り替え。AE-ATmega は、ジャンパピンによる設定。だから同じにはならない。むしろ (J1 = 5V) 設定にした方が UM162 から見た動作は UNO に近いかも知れない。

      参考資料

    EAGLEファイル:
  • um162-03.zip (全部入り)
  • um162-03-out.zip (Fusion PCB 提出用)

    VIA に対して Stop On 設定をした。(参考)

      Fusion PCB では、eagle のデフォルトだと VIA もレジストで マスクしてしまう。いままで作った基板は全部デフォルト。要注意。

      なぜそうするとまずいのか 実はよく知らないが いままで発注した P板.com や EzPCB は全部 レジストしないように向こうで修正してくれている。-- Fusion PCB ではそれをしてくれない。しかも VIAの中のレジストは乾いていないようだ。熱を加えると焦げる。

    (実際に発注した基板)
  • um162-02.zip (全部入り)
  • um162-02-out.zip (Fusion PCB 提出用)

      um162-02-out.zipを送れば良いだけなので、eagle を使えない人でもこのボードを作ることができる。ちゃんとライセンスを書いてないが、GPL に準じようと思う。要するに um162-02-out.zip の生成物であるボードを売ったり配ったりするなら それを作った eagle ファイルの (ボードを受け取る人への)提示が必要。改変も OK 。

      ちなみに、著作権はデザイン -- すなわち基板のアートワークにも適用されるが、それに対して著作権は主張しない。この eagle ファイルを使わずに使ったものに関しては関知しないということ。

      注意) 上記の記述は私の著作権に関する宣言で、実際に商用利用するとなると Eagle のライセンスが必要になる。最低でも 商業利用登録をした Light Edition が必要になるようだ。→ 購入先 : サーキットボードサービス

    ピン配置(あらためて記載)



      TXD (1) PD3(TXD) GND (24) GND
      DTR (2) PD7 PD5 (23) CB0 TX_LED
      RTS (3) PD6 PD4 (22) CB1 RX_LED
      VIO (4) VCC N.C.(21) VCC
      RXD (5) PD2(RXD) RST (20) RST
      RI (6) PB0(SS) UCAP (19) 3V3
      GND (7) GND PD1 (18) CB3
      DSR (8) PB1(SCLK) (OC0B)PD0 (17) PU1
      DCD (9) PB2(MOSI) PC2 (16) PU2
      CTS (10) PB3(MISO) VCC2 (15) VCC
      CB4 (11) PC5(OC1B) VBUS (14) USB
      CB2 (12) PC4 GND (13) SLD(GND)

      (ピン番号の外側は AE-UM232R の名称)

      J1:
      (1) UCAP (3.3V 出力)
      (2) VCC
      (3) VBUS (5v 出力)

      (補足)
      VCC2は J2 ジャンパで VCC と 接続
      RESET と PC6 を接続: (ブートローダ起動用)
      PB4 を LED に接続 (L で点灯)


    パーツリスト
  • ATMEGA32U2 は、デジキーで 単価 410円で入手できる。国内だと マイクロファンで 単価 630円 -- 数を買わないなら こちらの方が良いかも。AT90USB162/ATMEGA16U2 の入手は実は難しい。

    U1 AT90USB162/ATMEGA16U2(/ATMEGA32U2) TQFP-32 ( 0.8mm ピッチ)
    D1 秋月 1608タイプLED
    X1 16MHz 秋月 FA238

    R1,R2 22 SMD 2012/1608 (USB 用: 47 でも動作するかも)
    R3 1K SMD 2012/1608 (LED 電流制限用)
    R5 10K SMD 2012/1608 (HWB 用プルダウン)
    R6 1K SMD 2012/1608 (リセット用 330 - 1K ぐらい)

    C1 10u SMD 2012 (秋月 10u)
    C3 1u SMD 1608 (秋月 1u)
    C4,C5 22p SMD 2012 (マルツ、千石とか)
    (または 10p /10p x2 (秋月 3216 10p)
    SW1 秋月 TSKB-2JL,LS6J2M-T
    CN3 秋月 UX60A-MB-5ST USB miniB


    秋月 の arduino もどき AE-ATmegaと接続する際の注意点:
  • J1 は オープン
  • J2 を接続するか、AE-ATmega 上で #15 と #4 を接続
  • AE-ATmegaの RST端子(#20) を パターンカットする。(しないとボタンが効かない)

    Fusion PCB の記録

      価格: $20 + $3.52 (85円換算で ほぼ 1999円)
      01/04 発注
      01/10 完成?
      01/11 送付 (RTxxxxxxxxxHK)

      SG から HK に切り替えたようだ。いつ到着するのだろう? 


    angel_loader - usbasp2 ピン配置(案)



    未だ完成していないが、ISP に加えて TPI/PDI をサポートしようとしている。(DIR) と書いてあるのは、バッファ制御用(ロジアナデバッグ用) で 受信中は H 送信中は L の出力をする。

    それに加えて ISP 使用中にクロックを出力しようかと思う。これは水晶入力にしてしまった AVR の救済用で XTAL1 に クロックを接続することで 書き込みできるようになる。

    ちなみに、LED は TX_LED = 赤 / RX_LED = 緑 のイメージで 制御するつもり。usbasp2 モードで立ち上がると 赤が点灯。avrdude で接続し RESET を L にすると 緑が点灯。実際に ISP しているときは、赤を消灯 (点滅する) 。
    本体 LED は、TX_LED の逆論理で制御する。

    追記: よくよく考えたのだが、通常のシリアル ファームウェアに serjtag を載せようと思う。切り替えは DTR 。普通 DTR = 1(API 上: 実際は L レベル) にして シリアルの通信を行う。( avrdude の arduino も DTR = 1 で通信している。)

    DTR = 0 での通信は serjtag に切り替えることにすると、通常の通信と プログラミングモードを 両立できる。

    ちなみに、avrdude の serjtag は デフォルトを使っているが、この状態は DTR = 0 ということらしい。( ちなみに Linux/MAC 版では ser_posix の 設定関数 serial_set_dtr_rts の 論理が逆になっていてバグっている )

    そういう風にしておいて、serjtag をちゃんとサポートしようと思う。

追記: AE-ATmega 入手。



とりあえず RST をパターンカットして記念撮影。(IC ソケットを付けた後では加工できないので注意)
表面がすべるので、刃物を使わずに 三角やすり(not ダイアモンドやすり)で カットしてみた。

追記: arduino UNO SMD なるものが出たらしい。



互換ボードを作っているので、気になる。問題は ISP 横の 4 つの スルーホール。たぶん X3 コネクタの代替。
PB0-PB3 なら嬉しいのだが、多分違う。基板もできていないうちに、(将来の)互換性がなくなるとは ... トホホな気分。でも、まぁいいや PB0-PB3 だけが SPI で正統だし、UNO そのものとは互換のはずだし。おまけのピン割り当てが違うだけ。知らないことにしておこう。
posted by すz at 06:25| Comment(0) | TrackBack(0) | USB162
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/42369820
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック