2013年8月6日火曜日

最初のソースコード Lチカ

1. ソースコードの概要

webコンパイラで作れる簡単なGR-KURUMI用プログラムのソースコードを示します。


#include <RLduino78.h>     ・・・ ( 1 ) 

int led_red   = 22;                        ・・・ ( 2 )                   

void setup() {                             ・・・ ( 3 ) 
 pinMode(led_red, OUTPUT);      ・・・ ( 4 )      
}                                                   ・・・ ( 5 )                                       

void loop() {                                 ・・・ ( 6 )                          
digitalWrite(led_red, HIGH);         ・・・ ( 7 )      
delay(200);                                   ・・・ ( 8 )                                     

digitalWrite(led_red, LOW);         ・・・ ( 9 )                
delay(200);                                  ・・・ ( 10 )                                       

}                                                  ・・・ ( 11 )                                                   

これは「くるみちゃんの絵の髪飾り部分の3色LEDの赤だけを点滅させる」プログラムです。
Lチカ(LEDチカチカ)とも呼ばれ,「マイコンのHello world」とも呼ばれる、プログラム可能かどうかを試すごく基本的なプログラムです。
GR-KURUMIには、3色LEDを点滅しつつ、シリアル出力も同時に行うプログラムのソースコードがデフォルトで付いていますが、初めて説明するにはまだ煩雑なので、さらにシンプルにしました。

コードを簡単にみていくと

( 1 ) このソースコードを使うためのシステム側の準備が入ったファイルを組み込む(include)ということです。(この行はプログラムの前処理部分です)

( 2 ) led_red内容が分かりやすい名を変数につけただけで、"led_red"の代わりに"a"で置き換えても構いません。(他で使われていなければ) 
intその変数名で値を格納する器の大きさ整数型(2バイト)であることを宣言しており、 led_redという名をつけた変数に22という数値を入れます。

( 3 )( 5 ) 最初に1回しか通らないルーチンsetupという名で{ }で囲われています。この囲いをブロックといいます。
行頭のvoid空っぽの意味で、すなわち関数( y=f(x) )の形だけど戻り値(y)がないことを明示しています。

( 4 ) pinModeはGR-KURUMIの任意のピンの入出力モードを切り替え命令(コマンド)で、led_redすなわち22番ピンOUTPUT(デジタル出力)用に使うということです。

( 6 )( 11 ) 通常繰り返すルーチンは、loopという名で{ }で囲われています。

( 7 ) digitalWriteはデジタル出力を開始する命令です。
( 1 )で組み込まれたRLduino78.hで、あらかじめHIGH=1と入れてあります。
つまりこれはled_red(22番ピン)を送るすなわちデジタル出力の接点スイッチONにするということです。

( 8 )  delay遅らせるという意味で、数ms(ミリ秒)間停止する命令で、すなわち200ms間だけ次の行に行かず停止します。

( 9 ) ( 7 )と同様ですが、LOW=0であり、今度は22番ピンのデジタル出力の接点スイッチOFFにします。
( 10 ) ( 8 )と同じく、200ms間だけ停止します。
( 11 ) ( 6 )~( 11 )を止められない限り繰り返します。


2013年8月3日土曜日

Webコンパイラの概要

1. 概 要

【機 能】
・ ソースコードの入力・編集(ツリー表示可能)
・ ビルド(ソースファイルを実行ファイルに変換)の実行
・ ローカルPCへ実行ファイルのダウンロード
・ ルネサス提供のライブラリやサンプルプログラムの利用

【仕 様】
・ 推奨ブラウザ :  FireFox、Chrome、Internet Explorer*、他ブラウザ
              *バージョン9以上でサポート。互換表示モードは解除して使用
・ コンパイラ   : GNU GCC
・ ディスクサイズ : 100MB (ひとつのMyRenesasアカウントで使用分)

2. 基本操作

 Webコンパイラ マニュアル  
 Okamiya Yuuki様によるマニュアルを置かせていただきます。

2013年7月30日火曜日

ハードウェアの準備


1. 6ピンヘッダをハンダ付けする


プログラムを書き込むためにはUSB-シリアル変換器を接続するために、基板の短辺にある6孔に、ピンヘッダをハンダ付けする必要があります。

ブレッドボードなどに挿すことを考えると基板下面にはスペースがないため、ピンヘッドは基板上面(クルミちゃんの顔のある方)側から孔に通して裏面側でハンダ付けすることになるでしょう。
ピンの長さが短い方がハンダする側、長い方がUSB-シリアル変換器のソケットに挿す側です。

ピンの向きは、ストレート型を取り付けると基板に直角に、L型だと基板に水平に向きます。
ピンヘッダ(オス)型以外にピンソケット(メス)型もあります)

基板の端子の孔に直接挿して簡単に抜けないジャンパー線(先端が細い二股になっている)もあります。

ピンソケットを付けたい場合は、両端同じ長さのピンヘッダを使います。

参考までに 電子工作のコツ/ハンダ付け


2.USB-シリアル変換器経由でパソコンと接続する


1) FTDI VCPドライバをダウンロードする

Arduino向けのUSB-シリアル変換器はどこのメーカもFTDI(IFuture Technology Devices International)社製のチップを載せてあり、VCP(Virtual COM Port)のドライバをパソコンに組み込むことで、USB-シリアル変換器がCOM 1~nのシリアルポートとして扱えるようになります。

(ⅰ) ドライバのダウンロードは↓ここから行えます。
                FTDI VCP driver

(ⅱ) このページの中の「VPC Drivers」以下の一覧表で、使用するパソコンのOS32/64bit版の種別からドライバのバージョンを選択します。
例えば「Windows32bit版」なら「2_08_28」を左クリックして選びます。 (Windowsは64bit版でもバージョンは同じです。2013-02-20現在ですが)

(ⅲ) するとすぐにダウンロードが始まり、パソコンの「ダウンロード」のフォルダに「CDM 2.08.28 WHQL Certified」といったフォルダが作られますので、OSがドライバを認識する分かり易い場所に移動してください。
(ダウンロードしたままでもUSBコネクタを挿すと認識はされました)



2) USB-シリアル変換器とケーブルをつなぐ

(ⅰ) USB-シリアル変換器USBケーブルのミニBポート(小)コネクタを差し込みます。
(上下の向きに注意して合う方で差し込みます)

(ⅱ) USBケーブルのAポート(大)コネクタパソコンに差込みます。
(上下の向きに注意して合う方で差し込みます)
(ⅲ) パソコンにUSBケーブルが差込まれるとしばらくして自動的に認識されるはずです。

(ⅳ) COM番号を確認するには
スタート」から「デバイスとプリンタ」(windows7の場合)を左クリックすると、例えば「FT232R USB UART」といったUSBを使用した機器のアイコンが表示されます
(ⅴ) それを左ダブルクリックして選択し、「FT232R USB UARTのプロパティ」といったプロパティ表示で、「ハードウェア」タブを左クリックすると、「デバイスの機能」の中に「USB Serial Port(COM3)」といった番号が確認できます。

USBデバイスは認識されているのにCOMポートが認識されない時は、ドライバがうまく見つけられなかったと考えられますから、ダウンロードしたドライバのあるフォルダを手動で設定する必要があります。
ただ初めてUSBコネクタを挿し込んだとき、その直後は認識されなくても数分後に認識されたことがありますから、パソコンのOSがドライバを検索して組み込む時間を考慮した方がよいでしょう。


3) USB-シリアル変換器とGR-KURUMIをつなぐ

USB-シリアル変換器の6ピン孔にGR-KURUMIの(ハンダ付けした)6ピンヘッダを挿します。

ここで重要なことは、ピンヘッドの挿す向きを間違えないことです。
というのも、メーカによってはコネクタが左右逆についており、すなわち変換器を表裏ひっくり返して挿さないといけないものもあるのに、ピンヘッダは間違った向きでも普通に挿さってしまうからです。
間違った向きで挿してあると当然動きませんし、壊れてしまうかもしれません。

基板の表面には以下のようにピンの項目がプリントされてありますので、GNDとGND、DTRとDTRを合わせる向きでつないでください。(RXIとTXOは互いに交差します)


 GR-KURUMI

USB-シリアル変換器
(1)
GND
GND
(2)
CTS
CTS
(3)
VCC
VCC
(4)
RXI
TXO
(5)
TXO
RXI
(6)
DTR
DTR

2013年7月29日月曜日

あらかじめ用意するもの



【基本セット】

1) USBケーブル(USBミニBコネクタ)
  例) USB [A:ミニB] タイプのUSB2.0ケーブル

ミニBコネクタタイプであることを間違わないよう
ケーブルが短すぎると作業しにくいが長すぎるとノイズが混じり易くなることがあるので1m前後にする

2) USB-シリアル変換器
  例) FTDI Basic Breakout-3.3V USB-シリアルアダプタ
  
 どのメーカでもよいがArduino (Pro mini)製品向け(6ピンの並びが決まっている)を選ぶこと


3) 6ピンヘッダ(2.54mmピッチ)
  例) ライトアングルピンヘッダ(6ピン) 213A-6RE-02
 
ストレートやL型があり、ピンが基板に対してストレートは直立、L型は平行に出る形になる
どちらでも使いやすそうな方を選ぶ
ピンヘッダは割り易いように筋がつけてあるので、10ピン用などを6ピンのところで割って切り離してもよい

4) GR-KURUMI
  例) GR-KURUMI NET購入先(若松通商)

  若松通商さん以外でも売っている


【ハンダセット】

5) ハンダ 
 例) リール巻はんだ 100g巻 φ0.8mm SE06008


6) ハンダごて
 例) はんだこてセット X-2000E


【その他あった方がよい物】

7) ストレートのピンヘッダ24ピン以上
 例) 40ピン基板用ピンヘッダ 

8) ブレッドボード
 例) サンハヤト SAD-01 ニューブレッドボード SAD01

9) ジャンプワイヤ
 例) サンハヤト SPP-200 ジャンプワイヤ SPP200

10) IC引き抜き器
 例) DIP-IC引き抜き工具

2013年7月28日日曜日

Arduino Pro Miniとの比較

Arduino Pro Mini
GR-KURUMIはArduino Pro Miniと互換性があります。
というかそれを参考にして作ったという感じです。

ではGR-KURUMI(MPU RL78/G13)はArduino Pro Mini(MPU ATmega328P)に比較して、どこが同じでどこが違うのでしょうか?

以下にGR-KURUMIとArduino Pro Miniの比較表を示します。


項 目
GR-KURUMI
Arduino Pro Mini
サイズ
33mm×18mm
33mm×18mm
MPU
RL78/G13
CPU bit(アドレス空間)
16bit(1MB
16bit(1MB
RAMSRAM
20kB
2kB
プログラム用flushROM
256kB
32kB
Data flush       
8kB
kB
メインクロック
(最小命令実行時間)

32MH
(0.03125μs)
16MH
リアルタイムクロック(RTC
有り
無し
乗除・積和演算器
有り
無し
低電力動作モード
有り
有り
電源入力電圧
DC2.7V5.5V
(DC0.9V5.5V)
DC5V12V
DC3.3Vtype有り
電源出力電圧
DC3.3V
DC5V3.3V
デジタルポート
22
14
アナログ入力
8
8
アナログ(PWM)出力
6点
6点
UART
3
1
SPI
1
1
I2C (Wire
1
1


GR-KURUMはArduino Pro Miniに比べて、メモリ容量も演算能力もRTCもデジタルポート数、シリアルUARTポート数でも優位だといえます。電圧出力が3.3Vというのは消費電力としては優位ですが、周辺機器とやりとりする上でネックになることがあります。

機能面・能力面だけでいえば、同じかそれ以上ならGR-KURUMIを選ぶのは妥当です。
しかしやはりArduinoなどに比べると知名度とソフト面での充実度に差が大きく、ソフト・ハードの総合的なレベルを向上させることで、いかにユーザに魅力的になものにするかがカギになるでしょう。

個人的には、特に泣かせるのがこの小ささでRTCを内蔵していることと、UART(COMポート)が3つも使えることです。

ホビーでも業務でも、普通に定常動作を繰り返す分には現在時刻を計る必要はないでしょうが、事象同士の関係を明かにする計測などに使うには時刻の記録は必須です。
 

周辺機器には今でもRS232Cやそれ相当の通信ポートを持つ装置は多く存在します。

UARTが複数使えると、「周辺機器にマイコンが命令を与える通信」をしつつ「ユーザがマイコンに命令を与える通信」を同時に行えます。
またユーザが現地から離れているとき、1ペア(2線)ケーブルで1km以上配線しても通信できるRS485(RS422)を使おうとするとUARTを使うことになります

今どきなんでLAN(有線/無線)あるいはWi-FiBluetoothを使ってないの?と思うかもしれませんが、それらに対応しようとすると、ユニットの原価が結構跳ね上がりますので小さい(安い)装置ではその価格に占める割合が無視できないので付いていない場合が多いのです。
また電力消費も小さくないので長期バッテリ運用の機材などでは太陽電池発電かこまめなバッテリ補充が要求されます。
さらにソフトウェアを作成する上での負荷コードの行数が増えることでメモリを圧迫します。

しかし近年では安価で(MPUやメモリを内蔵した)高性能な無線LANユニットの普及でMPUやメモリの負担をかなり軽減してくれますので、電源供給も問題なくその方がコストパフォーマンスがよい場面ではもちろんそれらの機材を使うことになるでしょう。

GR-KURUMI 基本リンク集


今後のコンテンツで必要に応じて登場しますが、
とりあえず一通りのリンク集をここに置いておきます。

【コンパイラ・ライブラリ】
 GR-KURUMIのプログラミングには次の4つが必要です。
(1) Webコンパイラ  
Web上で入力したソースコードビルド(実行型ファイル作成)しパソコンにダウンロードするソフトです
(2) KURUMIWriter 
パソコンにダウンロードした実行型ファイルGR-KURUMIに書き込むためのソフトで、あらかじめWebコンパイラからダウンロードしておきます
(3) FTDI(VCP Virtual COM Port) driver  
パソコンとGR-KURUMIをつなぐUSBシリアル変換器をパソコンにCOMポートとして認識させるドライバです。
(4) KURUMIスケッチ(リファレンス) 
GR-KURUMIにプログラミングできるほぼArduinoに近い命令・関数のライブラリで、Webコンパイラに組み込まれています。リファレンスはその使用方法の参照資料ということです 

・ Webコンパイラ マニュアル  Okamiya Yuuki様によるマニュアルです
・ Webコンパイラ 更新情報    コンパイラの更新情報です 

【GR-KURUMIボード】
・ GR-KURUMIボード ボードの概要です 
・ GR-KURUMIまとめ Okamiya Yuuki様によるまとめです
・ GR-KURUMI NET購入先(若松通商) ここからボードがネット購入できます

・ 回路図 部品表  パターン図 ボードの図面・パーツ資料です
・ FTDI Basic Breakout - 3.3V USBシリアル変換器の資料です

【MPU RL78/G13関係】
 MPUのマニュアル関係です
・ RL78/G13 ユーザーズマニュアル ハードウェア編
・ 誤記訂正通知 RL78/G13 ユーザーズマニュアル Rev.1.00 の記載変更 
・ RL78/G13 Data sheet

・ RL78 ファミリユーザーズマニュアル ソフトウェア編
・ ルネサス 開発環境 総合カタログ
・ ルネサスホームページ

【環境拡張】
 GR-KURUMIに接続する環境を拡張します
・ GR-KURUMI e2studio用スケッチ環境 V1.00
・ GR-KURUMIとE1,E20接続コネクタ

【Arduino・C言語】
 Arduinoリファレンスの例文は大部分そのまま使えます。 
・ Arduino Pro Mini 328 5V 16MHz GR-KURUMIと対応するArduinoボード
・ 逆引きArduino         GarretLab様の逆引きリファレンスです(通常リファレンスもあり)

・ 初心者のためのポイント学習C言語 TOMOJI様による講座
・ Cの部屋 cyfis様の講座

【がじぇルネ・ユーザトピック】
・ がじぇっとルネサス
・ ルネサスRulz
・ myルネサス
・ ルネサスfacebook
・ ルネサスEdgeスクール

・ GR-KURUMIボード&作品集 ( SAKURAボードユーザ会 )
・ SAKURAボードユーザ会-Wiki

・ がじぇるねマイコンの学習(人と電子の歩き遍路 e職人様)


GR-KURUMIについて

GR-KURUMIは、超小型のリファレンスボードです。
がじぇっとルネサス(通称 がじぇルネ)というルネサス エレクトロニクス株式会社プロジェクトのひとつとして、RL78/G13マイコン(MPU)を中心に周辺パーツをつけて基板にまとめたものです。

【基板】 
 ・ 超小型 33mm x 18mm 
 ・ 24ピン基板 ( 基板上にさらに 4 pin およびプログラム用 6 pin端子
 ・ Arduino Pro Miniと互換性あり

MPU(マイコン)】
 ・ RL78/G13 (R5F100GJAFB  48pin QFP)
 ・ ROM 256KB / RAM 20KB
 ・ Data flash 8KB

【クロック】
 ・ メインクロック 32MHz (マイコン本体に内蔵)
    ※RL78/G13は本来1MHz~32MHzを10段階でクロック切り替え可能
 ・ サブクロック 低消費電力リアルタイム用32.768kHz(基板内に外付け)
     GR-KURUMI本体のみでリアルタイムクロックの処理が行える

【動作電圧】 
 ・ 安定化された電源からの入力(Vcc):DC2.7V~5.5V 
   (すなわち DC3V, 3.3V, 5V 電源使用可 )
 ・ ミニUSBコネクタから供給されるDC5VもVcc電源として使用可能

 ・ 基板上のジャンパを切替え、安定化されていない外部電源ピンRAW)からでも入力可
   内蔵する昇圧電源回路で処理して、DC0.9V~5.5Vの範囲で使える 
   ( 電池1本(DC1.5V)で動作可能 )

【入出力】
 ・ デジタル入力 最大 22点 ( Pin 0 ~ Pin 21 )
  ・ 電圧耐圧 Pin 7,8 : 6V耐圧 それ以外 : Vdd耐圧
 ・ デジタル出力 最大 25点 ( Pin  Pin 24 )
 ・ クルミちゃんの髪飾りの部分に3色LEDを搭載
   三色をそれぞれ周波数を変えて同時出力することでフルカラー可能
      ( 赤LED Pin 22緑LED Pin 23, 青LED Pin 24 以上の3ピンはこれ専用 
  
  ・ アナログ入力 最大 8点   A0 (Pin 14) ~ A7 (Pin 21)
     ( 入力電圧範囲 DC 0V~3.3V )

 ・ アナログ(PWM)出力 最大 6点  (Pin 3, 5, 6, 9, 10, Pin 11 はソフトウェアPWM)
   
  ・ シリアル通信
   UART 最大 3点 
        Ch 0 ( Pin 0 受信(RXI), Pin 1 送信(TXO))
        Ch 1 ( Pin 7 受信(RXI)Pin 8 送信(TXO))
        Ch 2 ( Pin 9 受信(RXI)Pin 10 送信(TXO))
  
     I2C ( Wire )  最大 1点 
         ( Pin 7 クロック(CLK), Pin 8 送受信 )
  
     SPI    最大 1点 
         ( Pin 10 スレーブセレクト(SS), Pin 11 送信(MOSI), Pin 12 受信(MISO), Pin 13 クロック(CLK) )


ピン配列(KURUMIスケッチリファレンスより)

【消費電流】
 ・ 超低消費電流
   カタログでは動作時電流66μA/MHz,時計動作時電流0.7μA、STOP時0.52μA
 (32MHzで動かすと2.1mAということになりますからそれほど小さいようには感じませんが、RL78/G13は1MHz~32MHzまで10段階で速度変更ができますから1MHzなら66μAということです。ただGR-KURUMIのソフトウェア上、速度変更に問題ないか調べる必要がありそうですが)
ちなみに世界最小の消費電力を実現したスマートメータ用マイコン「RL78/I1B」を2013年07月23日に発売だそうです。(本文からすると「スマートメータ用として世界最小の消費電力」とも読めますが)

【ソフトウェア プログラミング】
・ ソフトウェア作成はArduino準拠で、ソースコードが大部分そのまま使えます。
片手間にちょっと使ってみようかなユーザの私にとっては、これが大きいです。
(ならArduino Pro Miniでいいじゃんということになりそうですが、シリアル通信ポートが多く、RTCがついていて高性能低消費電力がまさに欲しかったですし、できるだけ国産品でドキュメント等も日本語なのがいいです

【購入先】
・ 販売元の若松通商だけでなく大阪のシリコンハウス共立電子デジットでも、2200円(税込)で購入できます。