SH2マイコンボード                                  2006.05.27 〜 
                                             
       2006.8.16 サンプル追加
                                                    2006.10.2 シリアルeeprom使用
                                                    2007.03.13 SDカード使用

  簡単ではありますが、ぼちぼち書きます。

   1. インターフェイス6月号

    (CQ出版、2006年)にSH2−7144のマイコンボードが付録で付いてます。1490円
    SH2マイコンボードは、市販の物はH8に比較してかなり高価。 付録に弱い私は、迷わずゲットしました。
    2006年4月25日発売で、付録が付くのすぐ売り切れるようです。 CQ出版の在庫はなくなってます(2007.1)。

    特色として
       H8と比較して、圧倒的に速い。(三角関数計算は、数十倍)
       位相係数モードが2chある。 (赤経、赤緯のロータリーエンコーダが読み込める。)

   2. 私のは外れ
      ボードの設計に問題ありで、動かない場合があるようです。私のは、全く不安定でした。

      私の改造は、こんな感じで。
      DBGMDのアース接続で、絶好調になりました。
      3.3Vの電源の発振は、しているかどうかわかりませんが、 いずれ秋月10μのチップタンタルコンデンサを入手
      したら、改造する予定です

   3. 外付けSRAM
      hamayanさんから分けてもらいました。 でも、しばらくはSRAM無しで使用します。
      http://blog.so-net.ne.jp/hamayan/

      外付けSRAM付け、無事動作しました。 2006.8
      SRAM付け用のモニター(hamayanさんから)を使う場合は、下記のように変更して使用しています。

        ;START CVECT,P,C,D,R,B/FFFFE160
         START CVECT,P,C,D,R,B/400000           (外付けSRAMに転送の場合)
         START P,C,D,R,B/400000,CVECT/FFFFE160    (外付けSRAMに転送の場合)

      スタックも外付けSRAMにする場合は、モニターのセットアップが必要です。
      リンク時に monitor.sub で
          DEFINE $STACK=0   の部分を

          DEFINE $STACK=47FFFF   のようにすればOKです。

   4. 開発環境
      付録のCD−ROMにルネサスのHEW4が付いてます。60日の制限後でも、256KBの制限内なので、問題無く使えそう。

      GCCが良い人は、KPITのが無償で使えます。(使えました)
  
   5. デバックモニター

      F−ROMの書き込み制限回数100回なのでデバックモニターは必需品でしょう。
 
      使い方など
 

   6. 性能(種目別)

       @  三角関数(cos(X)の計算) (条件が同じではありませんが)
          SH2-7144  30000回の計算 約2.3秒  HEWで作成 モニター配下
          H8-3664   30000回の計算 約160秒  gcc環境
          ARM7    30000回の計算 約1.5秒  DWM付録
          V800SE    30000回の計算 約1.5秒  インターフェイス  2007.5月号付録 (2007.5追記)

          SH2とH8と比較すると 約70倍違います。
          DWM付録のARM7は、約100倍速いですね。 V800SEも速い。

   7. サンプル  (モニター配下で)
      てこずっている人の為

      H8と同じだろうと試したら、さっぱり動きません。スタンバイ機能の解除操作をしなくてはけないんですね。
      それから、割り込み操作も(優先度)も少し異なりました。
      http://homepage1.nifty.com/rikiya/electronics/18SH2_7144F.htm  力也さんのサイトに説明あり

      又SH2_7045Fのソースがとても参考になります。

      それ以外は、H8にとても似ているので、H8の経験があれば違和感無く移行できると思います。

     (1) hamayanさんの外SRAMなし版モニターで
        以下は私が試した、ものをサンプルとして、アップしました。

        もし ROM環境で動かす場合は、 各リンクの指定で(XXX.SUB)のコメントを切り替えることで変更できます。

        ;START CVECT,P,C,D/0,R,B/FFFFE000     いまこれがコメント(ROM環境) 2006.10.2 改
        START CVECT,P,C,D,R,B/FFFFE160       こちらが生きている(RAM環境)

       @ LEDチカチカ    led-1.lzh       2006.8.17
            ボードにあるLEDの点滅。
 
       A ADコンバータ    adc-03.lzh      2006.8.15 
            8chのADコンバートし、結果を表示。

          


       B CMTを使用する。   timer-cmt.lzh   2006.8.16
          CMT0、,CMT1のカウンタの内容を表示。

          


            
       C MUTを使用する。   timer4-mtu.lzh  2006.8.16
             mtu0,mtu3 コンペアマッチ割り込み。 カウンタクリア
             TGRBの値で周期が異なる
             実行結果は、こんな感じ。
             左側(03303303など)は、割り込み処理中で表示している。周期の違いにより数が違う。
             右側はカウンタの値。 

         


     (2) 自分でカスタマイズしたモニターで

          準備中
       D 数学関数を使用する。
       E 演算関数をモニターに置く

     (3) I2Cインターフェイス


       (A)シリアルEEPROM

        シリアルEEPROMを接続しました (I2Cインターフェイス)     2006.10.2 

         これが動作すれば、メシエ天体や、基準星などは簡単に格納できます。(512k BIT x4チップ接続可能)
         2Mbit(256KByte)で、1天体16バイトの位置データなら1600個が保存できます。


         端子は、上から、VCC、GND、SCL、SDAです。
         アドレスの端子は、オープン(内部でプルダウン)です。
         2本の抵抗(2.7KΩ)は、SCLとSDAのプルアップ抵抗です。
      
        ルネサスのアプリケーションノート のこれ(RJJ05B0092-0100H)
        http://documentation.renesas.com/jpn/products/mpumcu/apn/rjj05b0092_sh7144f.pdf

        ですが、SH2/7145用になっていて、コンパイルエラー(レジスタの定義が異なる為)が嵐のように出ます。
        内容理解は置いておいて、単純に7144にコンバージョンしました。(ソースの不備は、想像で追加)

        運良く、7144で動きましたのでアップしておきます。 10バイトの読み書きが確認できます。
        romでもモニター配下でも(リンクの変更)動きます。

         eeprom-io1.lzh   24CL64で確認   2006.10.02 

           使用記(上記のアクセス関数を使用して)
             @ 1バイトの書き込み、読み込みOKでした。
             A ページ単位の連続書き込みは、1ページ(24CL64では、32バイト)の書き込み後、
                少しWAITを入れないと、次回の書き込みに失敗します。(書き込みに時間がかかる)
                   void WAIT(long int cont )
                   {
                      long int i;
                      for(i=0;i<cont;i++){}
                   }
                で WAIT(100000); とすると連続書き込みOKでした。

             B クロックレートを高速に

                // IIC.ICMR.BYTE = 0x38;
                  IIC.ICMR.BYTE = 0x08; // 0000 1000   5:3 が関連ビット
                // IIC.SCRX.BYTE = 0x39;
                  IIC.SCRX.BYTE = 0x19; // 0001 1001   5が関連ビット

               これで最高速になります。 問題なくアクセス成功。  ( 約100khzが約900khz に)
               
             C 32バイトの読み込みを256kbyte分繰り返したところ(シーケンシャルリード)、約18秒かかりました。
               データ内部を管理して、必要な部分のみ読み込みすれば、十分実用になりそうです。
               128単位の読み込みも試して見ましたが、殆ど早くなりません(2秒程度早くなるだけ)。

             D アドレスは、2回送信(Set_adrs_EEPROM 内部でupper address とlower address)しています。
               7bit対応は、1回の送信になるので、ここのロジックを1回にすれば、使用できます。
                i2c-2.txt  
                このソースの先頭で
                #define  dadrs  0 // data adress 1:16bit 0:7bit    
                とすれば、#if dadrs  と #endif の間がコンパイルされずに7bitアドレスになります。
                
                #define  dadrs  1 // data adress 1:16bit 0:7bit     
                とすればこれまでどうりのコンパイル(16bitアドレス)になります。
  
      (B) リアルタイムクロック


          ICがあるのを知りました。秋月でRTC-8564NBが入手できます。
         購入したのは、小さな基板に実装され、DIPサイズのCソケット接続に接続できます。
         プルアップ抵抗は、緑の基板でも可能ですが、使用せず茶色の基板に実装しています。
         これを上の24CL64の基板と交換すれば、接続OKです。

         http://akizukidenshi.com/catalog/items2.php?q=RTC-8564&s=score&p=1&r=1&page=#I-00233

          インターフェイスは、I2Cですから最近自分の守備範囲になりつつある技術です。
          マイコン等から、一旦現在時刻を送り込んでおけば、必要なときに時刻を取り出せます。
          電源を切れば時刻データは、消えてしまいますが、消費電流が少ない(仕様では、275nA(3V))ので、
          電池で常時動かすこともできます。(まだやってませんが)

         アドレス送信は、7bitなので1回のみです。
         使用してみたところ、無事動きました。
         確か、Control1のbit7(TESTビット)を1にすれば、時計が動きだしたような。
         あとは、時計を合わせればOK。尚、7bitアドレスです。

    (5) SPIインターフェイス

       SPIインターフェイスを使用して、色々試しています。 SPIインターフェイスのADコンバータ、他のマイコンとの
       (AVR、ARM7など)通信など。
       使いこなせば、SDカードのアクセスもできるんですがね。
       SH2−7144は、SPIインターフェイスの為の機能がついていないので、SPIはソフトウエアで行わなければ
       なりません。
      
       (1)  ADコンバータ MCP3208(8チャンネル)
           

 


           秋月電子で購入。実験で抜き差し可能になるように、小さな基板に実装しました。
           黒くて細長いのはサーミスタで温度変化をAD変換します。
           SH2から、変換するチャンネルを指示(送信)し、AD変換結果受信します。
           基板左側は、SPI信号線、基板下側は電源。

           ソフトは、chanさんのFATファイルシステム・モジュールを流用(変更)しました。 H8用のソースを流用。

           http://elm-chan.org/fsw/ff/00index_j.html

           AD変換の値は、今ひとつ安定しませんが、温度センサを体温で上げ下げすると、AD変換値が反応
           するので、SPIの通信は(たぶん)できているようです。


       (2)  SDカードのアクセス

           パソコンでSDカードに書き込み、SH2−7144で読み込むことができました。

   
     

           こんな感じで
           H8用のサンプルを使用し、SDカードの読み込み、書き込みが可能になりました。
           まだ、セクタ単位のアクセスの段階で、FAT12、FAT16などのファイル単位はできませんが 
           これで大きな容量の記録媒体が使用できるようになりました。(2007.3.13)
           手持ちの SDカード16MB、256MB、miniSDカード16MB、microSDカード32MB が使用
           可能です。
           FAT16がOKでしたので、2GBのカードも使用できるはずです。
           (MMCカードも読めるはず(かも?)。)
           これで上記シリアルEEPROMの256KByteとは、比較にならないほど多くの数の天体位置データを扱うことが
           できます。
  
           元のソフトは、chanさんのFATファイルシステム・モジュール(H8用のソース)です。
           http://elm-chan.org/fsw/ff/00index_j.html

           アクセスは、microSDカード以外ではとても安定して、初期化、読み込みでエラーになることは
           ありません。
           ただしmicroSDカードは、最初の初期化(disk_initialize内のCMD0)で失敗しますが、2回目で成功します。
           (upはまだですが解決しました。CSが最初からLになっていたのをHにしたら解決2007.3.29)
           スピードは、2000セクタ(1セクタは、512バイト)のシングルリードで、14秒程度です。
           上の24CL64よりは速いですが、期待したほどでもありません。手持ちのカードでは、差が
           ほとんどありません。又1回で4セクタの読み込みも行いましたが、差はほとんどありません。(1秒程度速いか)

           パソコンで書き込んだファイル(FAT12,FAT16)もファイル名を意識して読み込むことができました。(2007.3.15)
           読み込み速度は、約77KB/SEC程度です。 転送速度が速いSDカードで試してみたいところです。
           

  topへ   
        

inserted by FC2 system