GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
風鈴音源をGR-KURIMIで作ってみたのですが、これを秋月で販売の10pin RL78(5F10Y16ASP)へもっていきたいと考えてます。 GR-KURUMIのバイナリをそのまま、使えるのでしょうか? また、そのまま使った場合、ピン配置の対応は、どうなるんでしょうか? GR-KURUMIのpin3 (PWM), pin2 (INTR0) を使います。 あと、E1/E20を使ってプログラムを書き込み方法を、易しく説明しているページがあれば、ご紹介ください。 書き込みツールは、「【無償評価版】Renesas Flash Programmer V2.05.00」が使えそうですが、バイナリファイルの形式が、hexとかbinから変換が必要な感じがします。 http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/tools/evaluation_software_rfp.jsp 注)pin2の割り込みは、まだ、下のプロラムに反映されてないです。 【風鈴音源】音源系のソース公開が少ないようなので、サンプルソースコードを下にあげときます。ただし、音質は悪いアルゴリズムです。
/*GR-KURUMI Sketch Template Version: V1.06*/ #include // Pin 22,23,24 are assigned to RGB LEDs. int led_red = 22; // LOW active int led_green = 23; // LOW active int led_blue = 24; // LOW active // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. Serial.begin(9600); pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); pinMode(led_blue, OUTPUT); pinMode( 3, OUTPUT ); // turn the LEDs on, glow white. digitalWrite(led_red, LOW); digitalWrite(led_green, LOW); digitalWrite(led_blue, LOW); analogWriteFrequency( 4000 ); // 4000Hz analogWrite( 3, 0 ); } int val = 0xEF; // the loop routine runs over and over again forever: void loop() { analogWrite( 3, 127 ); delay(100); for ( int cnt=0; cnt < 8; cnt++ ); val = (val >> 1); analogWrite( 3, val ); delay(200); } delay(2000); }
上記のプログラムで、pin3が音出力。 要注意事項として、このプログラムを実行するときは、pin3には、プラス電源とGNDに保護ダイオードを付けて、圧電スピーカへ接続してください。
【音質改善板】(指数関数減衰をあきらめ版です)
/*GR-KURUMI Sketch Template Version: V1.06*/ #include <Arduino.h> // Pin 22,23,24 are assigned to RGB LEDs. int led_red = 22; // LOW active int led_green = 23; // LOW active int led_blue = 24; // LOW active // the setup routine runs once when you press reset: void setup() { //setPowerManagementMode(PM_STOP_MODE, 0, 1023); //Set CPU STOP_MODE in delay() //setOperationClockMode(CLK_LOW_SPEED_MODE); //Set CPU clock from 32MHz to 32.768kHz // initialize the digital pin as an output. Serial.begin(9600); Serial.print("Temperature: "); Serial.println(getTemperature(TEMP_MODE_CELSIUS)); //temperature from the sensor in MCU pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); pinMode(led_blue, OUTPUT); pinMode( 3, OUTPUT ); // turn the LEDs on, glow white. digitalWrite(led_red, LOW); digitalWrite(led_green, LOW); digitalWrite(led_blue, LOW); analogWriteFrequency( 4400 ); // 4400Hz analogWrite( 3, 0 ); } // the loop routine runs over and over again forever: void loop() { int val = 0xEF; long cnt = 1; for ( val=127;;) { analogWrite( 3, val ); delay( cnt ); cnt = cnt + 1; val = (val - 2); if ( val <= 0 ) break; } delay( 2000 ); analogWrite( 3, 0 ); }
GR-KURUMIのバイナリをそのまま、使えるのでしょうか?
CPUコアがGR-KURUMI搭載のRL78/G13はRL78-S2、5F10Y16ASPのRL78/G10はRL78-S1と違い、レジスタの数と命令のごく一部が違うので使えません。
Webコンパイラで使用しているコンパイラ rl78-elf-gcc にコマンドラインオプション -mg10 を指定すればRL78/G10用のコードを吐くようになりますが、その他スタートアップやリンカスクリプトはRL78/G10用に合わせて修正する必要があります。
E1との接続は、『RL78/G10 ユーザーズマニュアル ハードウェア編』の「21. 1 E1オンチップ・デバッギング・エミュレータとの接続」に書かれており、(株)北斗電子から接続に便利な市販品も出ているようです(買ったけど使ってない)。他、コミュニティにある『GR-KURUMIとE1接続』や『GR-KURUMIとE1,E20接続コネクタ』等の記事も参考になるかもしれません。
秋月で販売されてるこれやこれは搭載されてるフラッシュROMが2kBしかなく(北斗電子のこれやこれは4kB)、GR-KURUMIのライブラリを利用するのはサイズ的に無理があると思われます。現在のところでは、開発ツールにはCS+を使用し、自前でポートを叩くのが現実的でしょう。かふぇルネの『サンプルプログラム等』にRL78/G10を使用した作例が複数公開されており(タイトルにRL78/G10と書かれていないので判り辛い)、参考になると思います。
レス有難うございます。
なんとも、G13の10pin版が欲しいですね。結局、G10用に作り直すということになるのですね。PICを置き換えようかと考えてましたが、G10の10pinでも、PWMは1チャネルあるので、そんなに大きなプログラムにはならないような気はするのだけど、そのままPICを使った方が、よさそうですね(;^ω^)
まあ、作り直すというか、便利なライブラリが現状で用意されてないということです。
RL78/G10は個人的に異常な関心を寄せているので、手が空いたら何とかしたいとは思っております。
RL78/G10がGR-KURUMI等と同等にお手軽開発できるようになるには
が必須と思っていますが、1. についてはKPITを通じて重箱の隅を執拗につついており、gcc-patchesのMLを見ると指摘した部分の改良もしてくれてきているようなので、まあそのうち何とかなるんじゃないでしょうか。
G13の10pin版が欲しいですね。
10pin版ではありませんが、RL78/G13には最小で20pinのものがあり、マルツとかでホイホイ買えるようなので、この基板を買ってきて、マイコンを乗せ替えて、プラカラーのピンク色でも塗れば、大した手間もなくちっこいKURUMIみたいに使えるんじゃないですかね。
fujitaさん
やっぱり、10ピンでROM/RAMが極限まで小さいという制約が職人魂をくすぐるんですかね?
P板ドットコムでピンクのレジストが指定できたら、結構人気でそうな気がしますけど、プラカラーお手製のピンクのG13/20ピンボードもカッコいいですね。
Kirinさん
ハードウェアマニュアルが比較的薄く(RZ/A1H → 3015頁、RX63N → 2073頁、RL78/G13 →1103頁、RL78/G10 →593頁)全体が把握しやすいため「いわゆるフィジカルコンピューティング的」でないプログラマがI/Oを叩ける入門的なマイコンが紹介できたらいいなというのと、容量や機能の点で出来ることが限られてくるためアイディア勝負的な遊び方ができるのではないかなという期待、現状のSAKURAやKURUMIがリソース的にもったいないなという個人的印象などですね。あと現状のKURUMIではミニカー等おもちゃに仕込むにはまだ大きいと感じており、そういった用途にも向いているのではないかと思っております。
あと、KURUMIで使ってる現状のGCCのRL78のポートに不満な部分があり、それを別の方向から鍛えてフィードバックできればいいなという気持ちもあります。
贅沢をいうと、10pinでなく、8pinのPICを置き換えたいので、8pinDIPサイズそのままで、8pin要望です。プログラム用の端子は基板上に2pinスルーホールで出てくれる嬉しい。
RL78/G10の端っこの1pinはプログラム書き込みには必要ですが書き込み後は使用しなければ必須ではなく、10pinも使用しないのなら必須ではないので、秋月の『R5F10Y16ASP使用 RL78マイコンモジュール』についてピンヘッダを2~9pinまでのみ実装すれば8pinDIPサイズのソケットに実装するのも無理なことではなさそうです。
RL78/G10がGR-KURUMI等と同等にお手軽開発できるようになるには GCCの改良(現状では吐かれるコードが無駄にでかい) コンパクトなライブラリの作成 が必須と思っていますが、
あ、あと
3. お手軽書き込みツール
も要るな。
とっても達成感がありそうな構想ですね。
G10でCでふつうにプログラムが作れると便利になりますよね。
10Y14に至ってはもともと818バイトしかROM領域がありませんし、今後どんなに最適化が進んだところでCRTの初期化は難しいでしょう。
諦めてアセンブラで開発するのが最善な気がします。
C言語ソースが一切混じっていなくても、600バイト程度はすぐに消費してしまいますが……
チョコさんの『メリークリスマスに備えて』のソースが空行とコメントを除いて750行くらいなのですが、ルネサス純正のツールでビルドして2kB以内に収まっており、内容的にも個人の電子工作とすればそこそこいい規模のものなのでこういうのがホイホイ作れるようなったら楽しいんじゃないかなと。
で、試しにGCCでRL78/G10用のスイッチを指定してビルドしてみたら2kBを超えてしまい、こりゃいかんということでGCCの出力を見てみてコードサイズを縮められそうなところを不具合として報告したり最適化するオプティマイザを書いたりして、2kBにも収まるようなったので、GCCでもいけるんじゃないかなというのが現在のところです。
sohc1300さん
とりあえず秋月でお手軽に買えるのがROM2kBの10Y16なのでそれより小さいのはあまり考えてないのですが、一応参考にとROM1kBの10Y14もマルツで買ってありますが、10Y16と比べて値段の違いも僅かであり敢えて10Y14を使うメリットは無い気がします。
例えばピン配置を
こんな感じにして、内容を例えば
① VDD ② P00/SO00/TXD0/INTP1 ③ P01/ANI0/SI00/RXD0/SDA00/KR2 ④ P02/ANI1/SCK00/SCL00/PCLBUZ0/KR3 ⑤ P03/ANI2/TO00/KR4/(INTP1) ⑥ P04/ANI3/TI01/TO01/KR5 ⑦ P137/TI00/INTP0 ⑧ VSS ⑨ P40/KR0/TOOL0/(PCLBUZ0)/(TI01/TO01) ⑩ P125/KR1/RESET
こんなとかにすれば、
みたいなことが強制できて良さげな感じですね。何より秋月と北斗電子に変な負い目を感じないのが良い。
PWM(1チャネル)は、⑤になりますか?
秋月のでも、フラッシュ2KBなんで、そのくらいは、フラッシュメモリ容量が欲しいですね。⑨⑩は、ミリピッチのピンヘッドがさされば、何とかなるかしら。
用途しては、音源(AnalogWrite/Read)、フルカラーSerial LED駆動(digitalWrite/Read, 割込)、I2C、Serial IO, タイマーぐらいかしら