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

このブログはビーコンの代表である菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い発見などを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
<< nRF52 P0.10,P0.9が操作できない問題について | main |
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) |









    http://blog.suga41.com/trackback/356
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
    << May 2017 >>
    + RECOMMEND
    + RECOMMEND
    + SELECTED ENTRIES
    + RECENT COMMENTS
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + つぶやき
    + MOBILE
    qrcode
    + LINKS
    + PROFILE