ラベル RL78 の投稿を表示しています。 すべての投稿を表示
ラベル RL78 の投稿を表示しています。 すべての投稿を表示

2013年2月22日金曜日

KURUMIとPSoC3備忘録\(^o^)/

あ~、ちょっと間隔があいちゃいましたね。
もうすぐ3月だしぃ。
仕事がらみで、バタバタしてたのはいつものこととして、
がじぇルネプロジェクトのRL78duino(以下GR-KURUMI)のプロデューサミーティングに
参加したり、といろいろおもちゃも増えつつあります。

GR-SAKURAはArduino互換のRX63N利用の高機能ボードとして
やっと認知されつつあるようですけど、情報が散逸がちで、
ライブラリも隠蔽状態で、いまいち使い込むには???なかんじ。
それでも展示会なんかで、

『関西ではやらないの?なんで~~』

って、つっこんでいた手前、RL78版で参加せざるをえない?雰囲気に
なってて、2月3日に大阪ミーティングに参加してきました。


GR-KURUMIはRL78/G13をのっけた、Arduino Pro Mini互換の
ちっこい省電力マイコンです。
昇圧コンバータものっけているので、乾電池駆動できるというのが
ウリでしょうか。
SparkfunのFT232RLのアダプタでシリアル通信と書き込みができます。
Webコンパイラでコンパイルもできますが、GCC環境なのでe2studioで
ローカル開発したほうが気持ちいいかも、です。
といっても、GDB+E1でのデバッグはまだまだ不安定なので、
デバッグ環境がととのっている、とはいえないようですけど。




とりあえず、大阪の第2回ミーティングがせまってきているので
mbed用につくっていたライブラリをKURUMI用に改変して
うごくことだけは、確認しました。
案外簡単にうごくのね。
トラブルのほとんどは自分のIOまわりの設定ミス。
やっぱりちゃんとメモしてつくらんとあかんなぁ。

で、さすがにmbedほど高速にはうごかないので、定番のねぎミクも
振っているのがみえるし(汗
とにかく、ライブラリとしてうまくまとめて公開準備しなきゃ。


閑話休題。

やっとPSoCの利用のお仕事、第一弾がきまったのでシコシコとテスト
をつくっています。
ひさびさにつかってみたらKEILのライセンスがきれてるのにうまくUPDATEできない
とか(これは新規インストールしたらできた)、いろいろあったけど、
とにかく、使えるようにはなった(汗

出荷用のボードを起こす時間も費用もないので、CQ出版の

なるものを購入。5040円也。
でも、Amazonで発注してから、
USBコネクタとかいろいろないことが発覚。
秋月でパーツキットも購入。
このとき、この本まで扱っているのに気がついてorz
最初っからこっちで買っとけばよかった。。。。。


このあと、コネクタとか実装するわけだけど、
秋月キットのUSBコネクタが小さくなってて、
ボード端よりかなり内側に実装することになってる。

これでは、USBケーブルがささらない!!
ということで、ヤスリでゴリゴリと削ってなんとか
ケーブルがささるところまではもちこんだけど、こういうのってなんとかならんかったんか?


でも、ここからはおもしろい!!でも、また忘れると困る内容を
備忘録としてまとめておく!!


まず、PSoCのプロジェクトをつくったときに、拡張子が、

cysch ==> スケマティック=回路図面
cydwr  ==> 本体の基本設計

ができるわけだけど、cydwrファイルが重要。普通にクリックすると
Pinsがでてきて、定義した信号名をIOピンに割り付けられるわけだが、
この下側にあるタブで、全体のクロックをまずは調整する必要がある。
これに気がつかないと、せっかく高速のマイコンなのに、3MHzで
うごかすとか、変なことになりかねない。

cydwrのpins画面。下にあるタブに注目すべし!!


















下にあるタブで、clocksをおして、このなかでダブルクリックすると
グラフィカルな画面になる。

clocks画面。実際に変更するには
IMOなどの文字部分をダブルクリックする!



クロック周りの実体設定部がこれ。
ここで、設定しとかないと...

































XTAL:外部供給クロック
IMO :オンチップ高速オシレータ
ILO :オンチップ低速オシレータ
をベースとして、つくるわけだけど、CPUに入るバスクロックと
マスタークロックはやっぱり24MHzくらいにはしたいよね、というわけで
とりあえず、IMOを24MHzにして、PLLなんかも分周比1で、そのまま入れる
ように設定。低消費電力なんかを目指すなら、ここらあたりをうまく調整
しないと!ってことですよね。

さて、ここが設定できたら、もうあとは設計にはいっちゃえばいいわけですな。


マイコンの初歩としてはLチカははずせへんでしょ?
ってことで、サンプルはLチカ。

まずスケマティックをつかって
回路を構成するわけだが、
ここに
 Pin_1
をおいて、cydwrのpinsで任意の場所に割り付けて、
まずはBuild。
そうすると、利用コンポーネントのソースが生成されて
Cから扱えるコンポーネントAPIもつくられる。
要は、ハード構成を変更したら、まず、Build!ってのを
習慣化しないとだめなんだな!

で、あとはmain関数のなかで

==================================

void main()
{
    int clk=0;

    Pin_1_Write(clk);
    clk ^=0x01;
    for(;;){
        Pin_1_Write(clk);
        clk ^=0x01;
        CyDelay( 500 );
    }
}

==================================


とでもすれば、500msごとに点滅する回路の完成。
なるほど。

でもね、CyDelayっておもしろくないな~ってことで、
ほかのマイコン同様、タイマーをつかいたかったので
それでつくったのが、この回路。


上側の回路がLED点滅回路。
下はUARTのテスト用回路.



















タイマーの設定画面。
供給クロックを変えると勝手にperiodも
計算してくれるので、超簡単





















分周CLOCKコンポーネントで10kHzつくってタイマーに入れ、
タイマーをダブルクリックすると、あとは任意の時間を設定して
コンペアマッチ出力(tc)を出してくれます。
ただ、でてくる出力は当然クロック1発分だけですから、外側に
D-FFでラッチするようにしてやると、ソフト挙動に関係なく
光らせることができますね。
この回路ではisr_1という割り込み出力もつくってますが、割り込みを
つかうと、レジスタ待避などのいらない挙動がつくので、ハードウエア
で処理できるならそれにこしたことはないよね!
ってのがわかる回路になってます。

ついでなので、UARTもやってみた。
IOはどこでもいいので、RX/TXをわりつけてUARTの設定で
回線速度とかをごそごそ設定。



おもしろいのはBufferサイズが
可変なこと。

通常のマイコンだと、UART設定
ができても、所詮ダブルバッファくらい
しかないので、受信割り込みで
FIFOをつくって処理してやらないと
だめだったりと、
結構面倒くさい、というか、
ここらが、ソフト屋さんの腕の見せ所だったり
したわけだけど、
PSoCの場合は最初から、バッファサイズ4。任意に増やせるので、僕の場合は
128にしてみた。
こうすると、割り込み&FIFOなんてことしなくっても大丈夫だったりするのだった。

ここまで簡単にUARTをつかえるのってめずらしい。

ちなみにUSBFSでUSBーUARTの機能もあるのだが、
基本的に同じつかいかたでいけるのはすごい。
とりあえず、ここまでのソースを添付しておく。

なんか、おもろいわ~~。


==========================


/* ========================================
 *
 * Copyright YOUR COMPANY, THE YEAR
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF your company.
 *
 * ========================================
*/
#include <device.h>
#include <stdio.h>

// 割り込みプロトタイプ宣言
CY_ISR_PROTO( ISR_Interrupt );

// タイマー割り込みの実体
CY_ISR(ISR_Interrupt)
{
}

void main()
{
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
int clk=0;
char c;
int i;
int rcount;
char  buf[50];

isr_1_StartEx(ISR_Interrupt) ; // タイマー割り込みを割り付け

Timer_1_Start();
UART_1_Start();
UART_1_ClearRxBuffer();

CyGlobalIntEnable; // 割り込み許可

//Pin_1_Write(clk);
//clk ^=0x01;
    for(;;)
    {
        /* Place your application code here. */

rcount = UART_1_GetRxBufferSize(); // 受信バッファにあるサイズを取り出す
if ( rcount ){
for(i=0;i<rcount;i++){
c = UART_1_GetByte(); // GetCharは0を除外するのでつかわない
sprintf( buf, "%c = %02x\r\n", c, (int)c );
UART_1_PutString( buf );
}
x = 0;
}
//Pin_1_Write(clk);
//clk ^=0x01;
//CyDelay(500); //ms待ち
//CyDelayUs(500); //us待ち

    }
}

/* [] END OF FILE */


==========================

2012年8月7日火曜日

PSoC3、RL78/G14など...

ふは~~  もうお盆前になっちゃいましたねぇ。

遅ればせながら

  暑中お見舞い申し上げます。

色だけでも暑苦しいねぇ(笑)

さて、割とのんびり出来ているかと思えば、ここ1ヶ月ほど、
急にドタバタして、更新どころではなくなっていました。
で、やっとめどがつきつつあるので、ちょっと更新をば。

まずはPSoC3。
さる7月11日、大阪スカイビルで行われたサイプレス社主催の
に参加してきました。
太っ腹なことにこんなサンプルボードもくれちゃったりしてます。
たぶん1万弱くらいのボードじゃないかな。

  

内容的には、予期に反して結構よかったかな、と。

PSoCはPSoC1のときに注目して使おうと
いろいろやり始めたんだけど、

1)能力低すぎ!!
2)ツールがダメダメ

というマイコンとしては致命的な内容だったので
結局お蔵入りになってました。

というのも、内蔵のアナログ機構をいろいろできる!
というのがふれこみだったのに、スイッチングキャパシタ
で抵抗なんかを実現している影響で、あまりにも
応答性がなくて、結局使える領域がみつけられなかった
ことが最大の要因でして。





また、ツールも内蔵で埋め込めるブロックが少なすぎて結局なんにもできなかったり
配置配線を替えると、ごっそりソースファイルまで消されてしまったりと、
どうしようもない状態。そのうえ、日本語の注釈もつかえないとか、もうさんざんだったんですよね。

で、数年前にPSoC3/5を出しますよ!と言われたときにかなり期待してたんですが、
それから、ま~~~~ったく出す気配がなく、ようやくといった印象。

CPUコア的には、独自コアM8Cから8051に変更になっており(PSoC5はARM)、
かなり普通になっています。
ツールもかなり普通になって、回路図(スケマティック)でごそごそとツールを配置して、
コード生成、という流れになっており、かなり普通に使える印象になっていました。

内蔵のADコンバータが20ビットΔΣが1チャンネルだけ、というのが気になっていたんですが
これについても自分でマルチプレクサを配置しちゃえばいい、というのが新しいといえば
新しいところでしょうか。
つまり、究極にまで、自由度を上げたマイコン、というかんじでした。
あとは、どの程度まで使えるかは追々試してみたいとおもいます。

ただ、仮にいいなぁ、とおもってもつかうかどうかはちょっと疑問ではあるけど。
というのも、Chip1Stopで2800円、Digikeyでも2200円もするその価格。
8ビットマイコンだよね??
と聞きたくなってしまう設定はどうなんだろ???と。

まぁ、CPU+CPLDと思えば、それなりなのかもしれんけど、
その割にはサポートに若干の不安もあるし。
もうすこし様子見のほうがいいのかもしれませんけどね。
いずれにせよ、おもしろいなぁ!とおもったのは事実なので、
ある意味がんばってほしい、デバイスではあります。


閑話休題。

え~、7月31日には、新大阪で行われた、
にも参加してきました。
こちらは抽選だったんですが、一応OKもらえたので(笑

G13についてはすでに稼働実績もあって、結構使いやすい石に仕上がってる
(というか78K0Rそのものだよね、って)印象だったんですが、
こんどのG14はちょっと高機能化してました。
主要なところだと

1)タイマーRD(R8Cに内蔵されてる3相コントロールPWMタイマ)
2)イベントリンクコントローラ(ELC)
3)SNOOZE
4)DTC

ってかんじでしょうか。
実践練習はこの3までをおこなうわけです。
タイマーRD用に64MHzの供給ができるようになってて、ちょっと高機能に
なってました。まぁこれはぼくにはあんまり関係ないなと。

2のELCは、RX210にもついてたんで、期待してたんですが、省電力で
うごかして、ADやタイマー直結で起動!という機能以上にはつかいようが
なさげな感じでした。
これについてはちょっとがっかり感もあったんだけど、まぁ使いようかなぁ。
低速/高速クロックをがっつり使い分ける用途には向くかもしれず。

3のスヌーズはG13にもあったけど、きちんと説明きくとおもしろかったですよ。
CPU自体の高速クロックも止めて、CPUをがっつり止めておきながら
ADとタイマーだけは生きてる!というなんかスゴイ世界。
で、設定されたADの閾値を超えたら割り込み発生で、CPUが生き返るという
なんとも優れもの。
CSI(シリアル通信)もこの機能に対応している(ただし、9600bpsまで)ので
うまくつかえばおもしろいかもなぁ、と。

こっちもTESSERA RL78/G14 Stickがもらえるはずだったんだけど
用意がまにあわなかったのか、結局もらえず。

まぁ、楽しめたけどね。
値段があえば、G14でもいいかもね。






2012年4月2日月曜日

RL78

う~ん、
更新あきすぎ~~。すまんことです。

さてさて、春ですね。
目がかゆいし、くしゃみもひどいけど、GWまであと一踏ん張り、って感じですか。

閑話休題。

某案件で、RL78デビューしました。
ルネサスエレクトロニクスの新CPUですね。

RL78 STICKスタータキット












これで、さっさとサンプルつくって、実働ボードがきたところで
実働機に移植、ということができました。

CubeSuite+という無償開発ツールでやったんですが、
非常に好印象!

もともとNECエレクトロニクスの 78K0R がベースになっているだけあって
CubeSuiteとの相性も◎。

コード生成で、ほぼすべての機能が自動生成されるので、
本来的にやりたい内容に即、かかれるというのは非常に便利でした。

実際、V850ES/JG2のときよりも、かなり使いやすくなっている印象。
驚いたのは
I2Cが、ほぼなにもしなくとも、ちゃんと動いたのにはちょっと感動。
いや、大概、割り込みとか手順にちょっとした癖があったりして、
うごかせるようになるのにすこし時間がかかるもんなんですが
すんなり。
ま、アプリケーションノートがあったので、余計簡単だったんだけど。

残念なのはシミュレータ(デバッガじゃないよ)が昔ながらのもので、
シリアルやら割り込みやらのシミュレートができないんで、使い物に
ならなかったこと。
V850だとシリアルのエミュレートやIO構成の画面シミュまで
できたので、雲泥の差。
ここらは今後に期待、というところか。


あと、シリアルでのファームウエア書き込みの仕様が×。
これでは事実上シリアルでの書き込みができないのとおなじ。
E1がやすいから、という点ではカバーできないくらい、減点事項になってる。
今回はいいけど。

シリアル書き込み機構自体はあるんだけど、書き込み前に、別のピンに
これからおこなう書き込みのモード変更コマンドを送信しないとダメ、
という変態機構のおかげ。
ここ「だけ」はR8Cより大きく劣るところかな。

とにかく、これからSmartAnalogICとのマッチングも含めて
重要になるだろうから、ささ~とアップデートしてほしいなぁ。



2011年11月28日月曜日

SmartAnalog

ET2011から早1週間。
あのときも寒かったけど、ここ数日でぐぐっ!っと寒くなったですな。

さすがの私も足下にストーブを、カラダにはヒートなんちゃらっていう
下着を着込みました。もすこしすると、これにインナーが一枚づつ増えていきます(笑)
 さて、やっと このブログのほうもなれてきて、なんとかなるかな~なんておもってるんですが
結構ページビューがあったりします。
だれが見に来てるんだろう???ま、いいけどね。

なら高専系で行われている、組み込みAndroidの講習会も2回目を終えて
とりあえず、AtmarkテクノのArmadillo440へのポーティングも終了しました。
というか、肝心のNDKでゴリゴリとプログラミングするというところまでは
いけなくて、ほんとに用意されたポーティング手順を満喫する、という(汗)
なんだかな~的な終わり方でしたが、まあ、楽しめたほうでしょうか。
すくなくともSDKで確認した内容をNDKで処理できるように再ポーティング
したとして、開発効率はあんまりよくないなぁ、という実感しか残りませんでした。
実際、gdbデバッグするにも面倒なようで、そこそこカットアンドトライとLogCatで
推測していくような、昔のprintfデバッグを地でいくような泥臭さというか。
まぁ、まだまだこんなカンジなんですよね~的な(笑)
もうすこしこなれるまで、SDKでUI+αでおこなって、組み込み的な部分は
LANかBluetooth経由でマイコンに依存させたほうが楽なようです。
まぁ、次回はSDKのほうにもどるらしいので、そっちのほうが楽しめるのか?
という淡い期待はもっておきましょうか。

さてさて、ET2011ではマイコンボードを4枚もらってきました。


まず、初めて知ったnuvotonの
CortexM0のマイコンボード2種。
ARMブースでみつけて、台湾ブースまで
つれていかれて(笑)
チップ単体で200円しないみたいだから
H8の置き換えにはぴったりな感じ。
5V動作もOKの珍しい商品なカンジ。
フリー版コンパイラも付属なので
そのまま使えそう。
あとは入手性ですね。

あと、いつものSTマイクロ、菅井さんから
STM8LとSTM32を。(下二つ)
STM32F4も展示されてて、
「そっちがいい!!」
ってしばらくがんばったんだけどもらえへんかったorz





NXPのブースではmbedロボットカーラリー
を開催していて、なぜか5位入賞(笑)
ご褒美で先週mbedが贈られてきました!!
やった~~!ってカンジ。




これは時期を同じくして届いた、
ルネサスのRL78/G13のサンプルボード

ルネサスのメールニュースで知った講習会の
応募で当選した景品ですね。

来年にはSmartAnalog用に使いたいので
いまから練習するために当たった、とおもいたい
ところです。











閑話休題。



ちょっとまとめるのに時間がかかてしまったんですが、ET2011で個人的には
超目玉商品として注目してたのが
ルネサス  エレクトロニクスが出した
SmartAnalogIC / MCU
です。
なぜおくれたかって?
急遽開催発表されたカンファレンスにもでたんですが
パワポでスライド説明されたにも関わらず、配布資料が
全くない!という状態だったので、あわてて携帯で
スライドを撮影してきたのを整理するのに
時間がかかったわけで(汗)


まあ、それでも結構おもしろいなぁ、と
感心してます。






キャッチフレーズは「早い!安い!スゴイ!」とどこかのドンブリみたいな感じです(笑い)
要は、ほんとうにオペアンプ(4558相当品らしいです)が入っていて、その入力段に
どの足をつかうのか、オフセットをどうするのか(そのために8BitDACがある)、PGA
を通してゲインコントロールするかどうか、LPF/HPFを通すか、などを簡易的に
設定してつかう、アナログフロントエンドだということです。
こんな感じでサンプル画面があって確定後に実行ボタンを押すと




E1エミュレータから設定が行われて、
リアル描画される画面を
写真でとってくるのを忘れたので
ルネサスのHPから拝借した画像です...orz


こんなふうに即、結果が得られます(リアルタイム描画されてましたよ!!)
確かにこれならアナログ周りのデバッグの初期段階は簡単に終わりそう。
オペアンプの速度はだいたい10~100kHzくらいまでらしいので、高速に、
というわけにはいかないけど、PSoCよりは使いものになりそう。
で、SmartAnalogICとRL78/G1Eを統合したSmartAnalogMCUも同時発売とのこと。
ワンパッケージにはなってるけど内部でSPIで接続され、データ部は12ビットADに
直結されているだけ、とのこと。

 これだけでもMCU版を買うほうが楽な感じだよね。

来年2月からサンプル出荷、5月くらいから量産とのこと。
いまから待ち遠しいかんじです。