浜松市にいる組み込みおやじ-電子工作、回路設計、ファーム TIPS

このブログはビーコンの代表である菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い発見などを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
ミスミ当日配送可の罠
0

    ミスミが結構便利で使っているんだけど、またやってしまった。。

    今日購入したのは 当日配送可

    とある商品だった。

     

    そこで、購入手続きをしたんだけど、18:00までと言うことで急いでいたので、ポチポチポチっとなで終わってしまった。。

    なんとか今日の発送に間に合った

     

    と安堵していたのだが、確認メールを見ると 明日発送になっていて、、「ん?」となったが

     

    当日配送可とは書いてあったが、デフォルトは 翌日配送 ということだったことを忘れていた。。

     

    今回は一日余裕があったのでたすかったが、これが本当に明日ほしいとなると命取りだ。。

     

    これなんとかしてほしいなあと言う思いと、最近物流業界の限界ギリギリの報道を見たりすると、当日注文即日配送は大変だろうから仕方が無いか。。という思いが交錯する。

     

     

    | ビーコン菅原 | 部品調達 | 00:32 | comments(0) | trackbacks(0) |
    RL78のコード生成を使って一日で移植した。
    0

      もともと私は R8C大好きだったけど、最近は R8Cは進化がなく、RL78推しがはっきりしてきた。

      で、めちゃ安いマイコンを使わないといけなかったので、いろいろと調べて、安いRL78/G10の16PINを使うこととした。

       

      余談になるけど、安いマイコンで探すと Silicon Lab のマイコンが40円ぐらいで販売されている。ROM2K RAM 256byte,ADCも付いている。今回は調べる時間が無かったので、採用しなかったけど、普通に通販で数十個のオーダーでこれだけの価格になるのはすごいことで、小規模のロットでも安く調達できるので、本気で採用を考えたい。

       

      さて、RL78/G10だがちょうど良いことに 秋月で 小さいボードを販売していたので、これをつかってバラックを作ってみた。

      http://akizukidenshi.com/catalog/g/gK-09035/

      RL78バラック

      R5F10Y47ASP

      コードフラッシュメモリ:4KB、RAM:512B

      で 16pin の内電源以外の 14pinがフルに使える。

      デバッグ用の2pin は兼用にしなければ、 12pinと言うことで、今回のプロジェクトではこのぐらいで収まりそう。

       

      で、RL78は仕事では初めて使う。また、、コード生成もあるので、せっかくなのでこれを使おうと思う。

       

      ◆コード生成について

       

      最初だけいろいろ戸惑ったところがあるけれど、順番に設定を入力していけばコード生成できる。

       

      また、コード生成が重複している端子のチェックをしていて、使いたい機能があったとして、そこで使用する端子が他の機能に使われていると、選択項目に出てこないなどしてくれる、これば便利だ。

      もっとも、一つの端子を複数の機能として使い分けをしたいと言うことには対応出来ないんだけど、本来ならばマニュアルをよく読んで、機能の割り振りをしないといけないところを、ウィザードで簡単にわかるのは良い。

       

      このマイコンは UARTとしては 1CH. いわゆる SPI機能としては 2CH使える。 最初 UARTとSPI両方使おうかなと考えていたが、コード生成で選べないので、マニュアルを調べると UART使う場合には SPIは1CHも使えないことがわかった。

      こんなことも、小ピンの安いマイコンにはよくあることだけど、たくさんコードを書いてから動かないとうんうんうなって、マニュアル調べて、出来ないとわかる・・という手間と時間を考えると、本当にありがたいことだ。

       

      PG RL78

      注意としてコード生成したファイルは必ず先頭が r_cg_xxxx となるがそのファイルは自動生成実行で上書きされてしまう。

      これらのコードを覗いてみると以下のようなコメントがある。

      /* Start user code for function. Do not edit comment generated here */
      /* End user code. Do not edit comment generated here */
      ユーザーが書いたコードはこのコメントの中にあれば残る。

       

      最初に一回だけ自動生成で、あとは自分でメンテすると言うことであれば、べつにどこに何を書いてもいいんだけど、

      後から設定を変更したいと言うことはよくあることなので、コードが消されないように注意したい。

       

      何にしろ、使った事のないマイコンでわずか一日でPICマイコンのソースから移植できたのはすごいことだ。

       

      ◆RL78とPICマイコンのコード効率の違い

       

      今回は いろいろ事情があって 最初にPIC16F887 でバラックを制作して評価した後、量産GOとなったので、小さくて安いマイコンということでRL78と言う流れになった。

      今回は 入力された波形の周波数とDUTYを算出して、それであるモジュールを動かすみたいなシステムだ。

      PICマイコンは古いこともあり、機能が非常に少なく、割り込みのチャタリング除去もハードでサポートしていないのでソフトでしないといけないとか余計な処理が入る。SPI機能も使わず、ポートパタパタでやっている。

      一方RL78はSPI機能を使い、また、タイマーのキャプチャー入力のノイズ除去なんかも優秀だし、タイマの機能も多彩なので、タイマー設定しておけば、割り込み時にレジスタを取得するだけで正しい値が出てくる。

      そう思うと RL78の方がコードが少なくてすむと考えていたが、実際にビルドしてみると PICマイコンの方がずいぶんとROMサイズが小さく収まる。


       

      MPLAB メモリ使用

      JUGEMテーマ:組み込み開発

      PIC16Fのメモリ使用

       

      RL78のMAPの抜粋

      .vect
                                        00000000  0000007f        80   0
      .const
                                        00000080  00000080         0   2

      <<中略>

      .monitor1
                                        000000ce  000000d7         a   1
      .text
                                        000000d8  00000bc4       aed   1
      .RLIB
                                        00000bc5  00000c31        6d   1

       

      PIC16F は 2430bye

      RL78G10 は 3120byte 

      PIC16Fは最適化無しで、RL78はデフォルトの最適化ありなのにこのように逆の結果となった。

       

      移植なのでほとんど同じプログラムで、PIC16の方がコードが若干多いというのに。。

      よく見てみると RL78/G10は Vecterに 128byte とられているのも痛い。

      安いマイコンだと ROMの残容量っていうのが本当に苦しいところがあるけれど、PICマイコンのコード効率の高さというのもすごいものがあることがわかった。。

       

       

       

       

      | ビーコン菅原 | Renesas RL78 | 17:18 | comments(0) | trackbacks(0) |
      nRF52 P0.10,P0.9が操作できない問題について
      0

        nRF52で P0.9,P0.10が操作できなくて、ちょっとはまったのでメモしておく。

         

        P0.9,p0.10を出力に設定しても、ポートの操作ができない問題に直面。

        これは NRF_UICR->NFCPINSの設定が 1になっていて、P0.9,P0.10を NFCで使うモードになっているためと判明。

        ちなみに、デフォルト値は1 なので、なにもしないと NFCモードになる。
         

        で プロジェクトの中でNRF_UICR->NFCPINSの設定をしているところがあるのではないかと検索すると、一つだけヒット。。

        CONFIG_NFCT_PINS_AS_GPIOSを定義しておけば、P0.9,P0.10をGPIOとして設定するコードが有効になるので、GPIOとして使えるようになる。

         

        NRF_UICRは不揮発メモリなので一度設定してしまえば、電源を再投入してもリセットしてもGPIOモードのままになる。

         

        CONFIG_NFCT_PINS_AS_GPIOSの定義が見当たらなかったので、 該当する  #if defined (CONFIG_NFCT_PINS_AS_GPIOS)の直前に定義してみたところ、設定が書き換わり、P0.9,P0.10のポート操作ができるようになった。

         

        system_nrf52.c 140行目あたり(nRF5_SDK_11.0.0_89a8197)

                // add by sugawara
        #define     CONFIG_NFCT_PINS_AS_GPIOS 1

            /* Configure NFCT pins as GPIOs if NFCT is not to be used in your code. If CONFIG_NFCT_PINS_AS_GPIOS is not defined,
               two GPIOs (see Product Specification to see which ones) will be reserved for NFC and will not be available as
               normal GPIOs. */

            #if defined (CONFIG_NFCT_PINS_AS_GPIOS)
                if ((NRF_UICR->NFCPINS & UICR_NFCPINS_PROTECT_Msk) == (UICR_NFCPINS_PROTECT_NFC << UICR_NFCPINS_PROTECT_Pos)){
                    NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos;
                    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
                    NRF_UICR->NFCPINS &= ~UICR_NFCPINS_PROTECT_Msk;
                    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
                    NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos;
                    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
                    NVIC_SystemReset();
                }
            #endif

        | ビーコン菅原 | nRF5x Nordic | 12:15 | comments(0) | trackbacks(0) |
        最近組み込みエンジニア不足らしいと
        0

          先日の異業種交流会に参加した。

           

          IT系の会社の人が多くて、組み込みやっている人は少数派だ。。

          組み込みやっていることを伝えると、いまは自動車メーカーがどんどん組み込みエンジニアを抱えていて、組み込みエンジニアは不足しているという話をしていた。

           

          確かに、浜松で活躍していたある組み込みの人も、最近某自動車メーカーの系列会社の仕事とかで、県外にずっと入っているということも聞く。。

          それから、とにかく、最近引き合いが多い。まあ、自動車メーカーに入って仕事してくださいというのはないけれど、それでも、いろいろな引き合いが増えているのは、他の組み込みエンジニアが自動車メーカーに取られてしまった余波なのかもしれない。

           

          JUGEMテーマ:組み込み開発

          | ビーコン菅原 | やもやま話 | 11:28 | comments(0) | trackbacks(0) |
          nRF5x をGCCでコンパイルする。(暫定)
          0

            JUGEMテーマ:組み込み開発

             

            nR52をGCCでコンパイルしたので、メモとする。

            いつもは恵まれた統合開発環境を使っていたこともあり、GCCを使う機会が無かったこともあり、なおかつ、Linux使いというわけでもなく、なじみが無かったので、結構苦労した。

             

            参考にしたサイト

            GCC ARM Toolchainでmbedをオフラインビルド

             

            ここより抜粋

            GCC ARM Toolchainのインストール

            gcc-arm-none-eabi-4_8-2013q4-20131204-win32.exeをダウンロードして、実行する。

            忘れずに、最後はAdd path to environment variableにチェックを入れる。(環境変数を追加してくれる)

            Gnu Makeの追加

            C:¥Program Files (x86)¥GNU Tools ARM Embedded¥4.8 2013q4¥binに下記のファイルを追加する。

            make.exe
            libiconv2.dll
            libintl3.dll
            上記ファイルは、sorceforge.netのmake-3.81-bin.zipとmake-3.81-dep.zipの中にある。
            引用終わり・・

            --

            ということで、

            今回は ble_app_nrsをコンパイルしてみたかったので

            ・・・¥nRF5_SDK_12.2.0_f012efa¥examples¥ble_peripheral¥a_ble_app_hrs¥pca10040¥s132¥armgcc

            のディレクトリまでおりて

            makeを実行。

            するとなにやらエラーが出てくる。

             

            ¥nRF5_SDK_12.2.0_f012efa¥components¥toolchain¥gcc¥Makefile.windows

            の中を見てみると

            インストールされているコンパイラのバージョンが違っていて、そのためにインストールされているフォルダが違っていた。

            4.9 2015q3 を 4.8 2014q3 に書き換えた。

             

            GNU_INSTALL_ROOT := C:/Program Files (x86)/GNU Tools ARM Embedded/4.8 2014q3
            GNU_VERSION := 4.9.3
            GNU_PREFIX := arm-none-eabi
             

            再び makefileのフォルダでmake.exeを実行するとコンパイルがあっさり通った。

             

            Keil の統合開発環境で見てみるとよくわかるが、Nordicが提供しているプロジェクトは階層構造が結構複雑だ。

             

             

            CUIの環境ではこれを見渡すのが難しいことと、いまのままではデバッガが使えない。いろいろと改善の余地があるけれど、まずはこれで開発を進めていく。

             

             

             

             

            | ビーコン菅原 | nRF5x Nordic | 09:06 | comments(0) | trackbacks(0) |
                123
            45678910
            11121314151617
            18192021222324
            252627282930 
            << June 2017 >>
            + RECOMMEND
            + RECOMMEND
            + SELECTED ENTRIES
            + RECENT COMMENTS
            + RECENT TRACKBACK
            + CATEGORIES
            + ARCHIVES
            + つぶやき
            + MOBILE
            qrcode
            + LINKS
            + PROFILE