2011年12月30日金曜日

ZigBee 立上げ

ZigBeeについて調査。

  • ZigBee Allianceから認証取得したDigi International社のモジュールが有名
  • XBee ZB(低出力型)とXBee-PRO ZB(高出力型)がある
  • 更に、アンテナ種別として3つ(使い分け不明だが、チップアンテナ2つで良さそう)
    • チップアンテナ:PCBアンテナにランニングチェンジ?
    • ワイヤーアンテナ:
    • U.FLコネクタ(外付けアンテナ):いいアンテナらしい
  • 親側(コーディネータ)をPCにUSB接続して、子側からのデータをシリアルでPCにtera termで受信する例がWebでよく掲載されている。しかし、これとXBee ZBを2個買うと、1700*2+2495=5895円!!高い。。USBシリアル変換でもいけそうなので、代用
  • XBeeの動作モードは2つ
    • 透過モード:UARTと同じで経路を無線にできるモード、非常に簡単らしい。
    • APIモード:透過モードより複雑なことが出来るらしい。

うーん、まだまだ調査が必要だが、シリアル(UART)を無線に置き換えるだけなら、お金をかければ簡単にできる模様。

-----------------------------------------------------------------------
後日、ラッキーなことに、おもちゃ買ってもらったので、追加部品の検討。



-----------------------------------------------------------------------
2011/12/30
秋月の変換基板を購入
  • XBeeProRFモジュール(PCBアンテナタイプ) (おもちゃ) x2
  • USBケーブル(Aオス-ミニBオス) (おもちゃ) x2
  • XBee用2.54mmピッチ変換基板 (300円) 秋月電子通商 x2
  • ピンソケット(メス) 1x10(10P) (40円) 秋月電子通商 x4
  • 丸ピンICソケット(24P)[600mil] (70円) 秋月電子通商 x2
  • USBケーブル(Aオス-ミニBオス)[1.5m](A-miniB) (110円) 秋月電子通商
 


    とりあえず、PCと繋ぐ用のモジュール作成完了。

    Digi社HPから設定アプリケーションのダウンロード。
    Support -> Diagnostics, Utilities and MIBs
    XCTU 32-bit ver. 5.2.7.5 installer

    インストールして、PC-USBシリアル変換-XBeeと接続して、アプリ起動。
    XBeeは工場出荷時に9600bpsに設定されているらしい。

    通信テスト
    OK。

    アドレス設定(それぞれ相手のアドレスを設定) ボーレート:115200bps
     設定完了。
    うまくいかないので、いろいろやってたら、9600bpsに落ちてた。
    微妙にteraterm同士で通信はできました。

    -----------------------------------------------------------------------
    2012/1/2
    USBシリアル変換のジャンパ設定を追記
    • J1:2-3間をショート(1-2間ショートでTXD、RXDを3.3V、2-3間ショートで5V)
    • J2:ショート(ショートでUSBから電源供給、オープンで外部から電源供給)



    2011年12月18日日曜日

    RX62N 基板

    ユニバーサル基板で作成中です。まだまだ途中だけど、疲れた。。。




    -----------------------------------------------------------------------
    途中経過です。


    -----------------------------------------------------------------------
    やっと、一次完成版!次はXBeeも付ける!





    2011年12月16日金曜日

    RX62N 疑問点

    RX62Nマイコン基板でいろいろやってみてますけど、いくつか分かってないところがあるので、ひとまず列挙。追加の疑問と、解決したらその内容も追記していきます。

    [割込み取り逃しの件]
    • やりたいこと:DMAを使ったシリアル出力(RS232C) → WindowsXP TeraTerm
    • 環境:Interface付属のRX62N基板、HEW使用、SCI2版
    • 手順:リセット解除 → スタートアップ → main() → setpsw_i() → DMAC2初期化 → UART0初期化 → 文字列出力用に"SCI0 initialize done"をRAMに設定 → DMA起動設定 → SCI0.SCR.BYTE    = 0xF0; → しばらくしてブレーク(1)
    • DMAC2初期化詳細
      • 途中省略
      • ICU.DMRSR2 = 216; //  DMA起動要因をTXI0に設定
      • IEN( DMAC, DMAC2I ) = 1; // 割込み許可
      • IPR( DMAC, DMAC2I ) = 5; // 割込み優先レベル設定
    • UART0初期化詳細
      • 途中省略
      • IEN( SCI0, TXI0 ) = 1; // 割込み許可
      • IPR( SCI0, TXI0 ) = 1; // 割込み優先レベル設定
    •  DMA起動設定詳細
      • DMAC2.DMTMD.BIT.DCTG    = 1; // 転送要求選択(周辺モジュール)
      • DMAC2.DMTMD.BIT.SZ    = 0; // 8bit転送
      • DMAC2.DMTMD.BIT.MD    = 0; // 転送モード設定(ノーマル転送)
      • 途中省略
      • DMAC2.DMCSL.BIT.DISEL = 0; // 起動要因の割込みを発生させない
      • DMAC2.DMINT.BIT.DTIE    = 1; // 転送終了割込み許可
      • DMAC2.DMCNT.BIT.DTE    = 1; // DMAC起動許可
    • 割込み関数定義済み、割込み関数でブレーク(2)
    • しかし、割込み発生せず、 (1)のブレークでストップ
    • レジスタを見てみると、IR = 1、IEN = 1、PSW.I = 1 の状態


    [その他]
    • CN2の38ピン、CN3の40ピンに5Vがきてるが、JP1が最初から繋がってないのはなぜか?
    • USB接続でHEWがよく固まる。。なぜか?
      • 1つ便利なやり方発見。リセットスイッチを押す時間が短いとうまくいかないが、長い時間押して離すと、USBの抜き差しと同じ効果あり。固まる現象がおさまるわけではないが、いちいち抜き差ししなくてよくなった。
      • 知人が素晴らしいアイディアを創出。スイッチで外部割込みを行い、デバッガを止める方法。シリアルでも可能だが、シリアルはコマンド受信で使用しているので、常に受け付けるようにしていないため、スイッチの外部割込みを採用。
    • ブレークの一覧表示はどうやってするの?
    • RX62Nに限らないが、配線するリードで絶縁できるもの(本ブログでは青いリードを使用)って、一般的に何が使われるの?秋月にもスズメッキ線は売られてるが、それ以外は見当たらない。今使ってる青いリードは少し太くて扱いにくい。 
    • これもRX62Nとは関係ないけど、シリアルでデータを表示する際、ASCIIも表示させてるが、制御コードの場合は表示が崩れる。そのため、ASCIIコード表を見て、0x1F以下、0x7Fは'.'に変換するようにしているが、CR(0x0D)、いわゆる'\n'はCR(0x0D)+LF(0x0A)に変換しており、データで0x0Dがきた場合と区別がつかない。まぁデータの場合とそれ以外とをフラグでも立てて分岐してやればいいのだけど、もっとスマートな方法はないものか。



      2011年12月3日土曜日

      ARM Cortex-M3 調査

      R社マイコンでしばらく遊んでるけど、そろそろARMにも手を出したい。いくつか調査したのでメモ。


      うーむ、どれにするか。