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

2019年12月4日水曜日

PSoC5LP で いまさら mruby/c を試してみる その1 (失敗編) (PSoC AdventCalendar2019)

あー、さぼり気味なのにもほどがあるな(笑
最終書き込みから2年とは。。。

ほんとうは、昨年のAdventCalender 2018での記事の予定だったんだが
多忙になったのにかまけて、お蔵入りになった。

というわけで、1年越しのリベンジということで。。。(≧▽≦)
詳しくは
PSoC Advent Calendar 2019
をみてね
ではさっそく。

私的には、
  BASIC -> Pascal ->C/C++ -> C# -> Python
といろんなのをやってきたわけだけど、 Web系では ruby と PHP が競っていたときに
PHPに行ったわけですよ。
で、 ruby  、なんだか小難しいなぁ、とおもっているうちに、マイコン用に
mruby 登場!となった経緯は知ってはいたし、ちょろっとかじったりもしたけれど
言語の資料もほぼないし、情報もないし、ってのが続いていて今に至るわけです。

毎年恒例の 横浜で行われる、Embedded Techology 展で
ruby フォーラム の 面々から、脅迫?めいた勧誘に耐え兼ねて、
ちょっとやってみようかと。
ちょうど、島根の田中先生が、 PSoC5でうごく、mruby/c というのを
開発したところだったので、いいタイミングかな~と思ったわけです。

ruby はよく知らないけれど、
mruby は
『マイコンでも動くように機能を絞ったバージョン』
ということです。(しらんけど

じゃ、
mruby/c って なに?
というのは、実はよくわからない。
まぁ、誤解をおそれずにいえば、

1)インタープリタな部分を排除、rubyVMだけにして、コンパクトな実行サイズにする
2)rubyコードは予めPC上でバイナリにしておいて、VMにこのバイナリを食わせる
3)食わせる部分は、ターゲットマイコンのC/C++で記述

ということかな。

ということで、まずは、お手軽?らしく見える、IDEから、ちょろっと遊んでみよう。


しまねソフト研究開発センターのHPに mruby/c が纏めてある。
トップからは分かりにくいが
トップ / 活動内容 / 研究活動
という中に存在する。
できれば、トップにmruby/cのバナーがあるんだから
そこにリンクくらい張ってくれてもよさそうなものなのに(笑


まずはダウンロードページで、それらしいのを全部手元に取っておく。
おお~、

利用説明書

ってのがあるじゃん。
mruby/c IDEなるものがあれば、簡単じゃね?

最初のとっつきにはよさそうなので、まずはこれに沿って、やってみる。

ふむふむ。IDEから mrbc.exe と mrbwrite.exe を指定するのね。
よくわからんけど、一応、フォルダ内に同名ファイルがあるから登録してみる。
適当に読み進めていくと
デバグ用コンソールの起動(任意)
基板左サイドのUSB端子から、デバッグ用メッセージが表示されますので、開発時は接続しておくと便利です。
任意のターミナルソフトを利用して、ボーレート57600bpsで接続します。』

へ?  PSoC5の USBポートだよね?
USB-CDC だし、PC側の通信速度、ってなんでもよくね?    ( ,,`・ω・´)ンンン?

てか、そもそもファーム、どれ?

ということで、この方法は一番にひらいちゃダメなところだったようだ。。。

mruby/cとは というリンクの中にある、田中せんせのQiitaをベースに
やってみないとダメなようだ。
よくみると、
チュートリアル
というページも、概ね同内容?的。
ふむふむ。そういうことか。
でも
初心者がどこから入ればいいのか、迷うのはいただけないよねぇ。。。orz

というわけで、別の方法を試してみる。。。orz 


<つづく>




2017年12月11日月曜日

PSoC5LP で USB-HIDデバイスでもしてみるか。。。( PSoC Advent Calender2017 )


PSoC Advent Calender 2017 の 記事の2こめです。

PSoC5LPにはUSB がついています。
これ、案外USB UARTくらいしかつかっていないんですが
普通にHIDデバイスとしても作ることができます。

今回はMouseにしてみます。
といっても、マウスなら、ちゃんとサンプルが用意されているんですよね。

スケマティックにUSBFSを配置して、右クリックメニューから出る
Find Code Example ...
を実行します。

すでにUSBFSが選ばれているので、関連するものがでてますね。
今回はとりあえず
USBFS_HID
を選択します。

3-Button mouseって書いてあるので、大丈夫そうですね。
よければ、Create Project を押します。

ん!エラー? はぁ???
このメッセージわかりにくいよね。まったく。
要はこれは
『そのままではインポートされていないので、Webからとってきてね!』
というメッセージ。じゃ、どうするの?ってなるんだけど、
左はしの地球のアイコンをクリックすると、勝手にダウンロードされてくるので
そのままプロジェクトをつくります。

できたプロジェクトはデバイスが PSoC3になっているので
利用するPSoC5の型番に変更します。
PrototypingKitでは、CY8C5888LTI-LP097ですね。

WorkSpace Explorerの Project部で右クリックして
Device Selecter
を出し、ここで選択しなおします。

 できたら、ビルドします。
 スケマティックをみても、USBFSしか配置されていないので、基本は
これでエラーもでないはずです。
自動でピン配置もUSBピンはセレクトされているはずなので
大丈夫なはず。

添付のPDFの最後のところに
================================
Expected Results
You should see that the device is recognized as a 3-button mouse. The mouse is continuously moving back and forth horizontally.
================================
ってなっているので、マウスになってカーソルを水平移動でうごかすよ。
ってよめますね。

うごきましたか?
で、この設定、どこできまるんだ?ってことなんですが
一番わかりにくいのは HID Report Descriptersなんですよね。


なんじゃそら、と。

Device Class Definition for HID 1.11 (PDF)

を参照してみてください。
page81 (表題ページ番号71)にマウスの定義サンプルが挙げられています。


ね、このとおりの定義を書いてるだけですね。

あとは 3バイト用意して、一定のタイミングで
値をセットしておくりかえせばいいんですね。

このやりかたをしっておくと、JoyStickもキーボードもつくれますね!


2017年12月5日火曜日

Uartのボーレートチェンジを実装してみる( PSoC Advent Calender2017 )

とうとうこんな季節になってしまった。
いまだに炎上案件抱えてひーひーゆうてるのに。

PSoC Advent Calender 2017 の 記事を!って頼まれたのでそれをば。

さて、PSoC のUARTってコンポーネント、ポンっ!ってかんじで
いいので、とっても簡単なんですがね、ほかのマイコンなら
途中でボーレートチェンジ!なんて簡単にできるのに

















この部分はAPIとしてはParityは公開されているけれど、
肝心の速度は公開されてないので、なんともならない。


きっかけは MonoWirelessのTWELiteの書き込みがPSoCからしたいよね!的な
ところから始まったんだけど。

 PC <--USB--> PSoC <--UART-->TWELite

っていう感じでつかって、モード変更で書き込み対応したいとか。


で、やってみた。

Design Wide Resources (.cydwr)をひらいて Clockタブを見てみる。

やっぱり、UART_1_IntClockを引き込んでいる。
今回は115200bps = 115.2kHzがほしい設定なので
サンプリングを8倍した 921.6kHzを生成してるわけですね。(最下行)
この921.6kHzを生成するのに、64MHzを69分周して近似の
927.536kHzを出してるというのはわかる。
ということなら

このDividerを変更したらよくね?
UART_1のコードの下に、UART_1_IntClock.cというのができてる。


このなかに SetDividerRegister()関数という、もうそのままのネーミングの
関数あるじゃんと。
これをよべばよさげですよね。

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



===================================
ぼくの場合だと
#define  HS115200    69
#define  HS57600    139
#define  HS38400    208
#define  HS19200    417
#define  HS9600     833
ってかんじですかね。
ここらは計算でする方法もあるし、あるていど決め打ちでもいいかも
ですね。
 64000(kHz) / (欲しい周波数(kHz) * 8) = divider
ってかんじですね。






2016年11月30日水曜日

PSoC4 BLE について(PSoC Advent Calender)

あー、もう1年もほったらかし。
ごめんなさい m( _ _ )m
なんだか無線系も結構いろいろやったし、USBもいろいろでてきたけど
決定的なのはルネサス系の石の採用レートが下がってきたかなぁ、って。
PSoC押しなので、仕方ないけど、あんまり無理強いもしてないけれど、
やっぱり、じり貧なかんじは否めないなぁ。
TOCOS MonoWireless も単体のファームだとなかなか小難しいかんじで
使いにくいけど、省電力行くなら仕方ない!って続けてるけどね。
そろそろ出力増強版がでてくるらしいので、それを機に、
サイトも含めてきちんと整理して、わかりやすくしてほしいなぁ。


閑話休題。

Advent Calender for PSoC  が立ち上がっちゃったので
仕方なく、なんか書かなくちゃ、ってことで。
ちょうど、仲間うちでの簡易ワークショップの資料をつくっていたので
それを公開。
BLE以前に、PSoC、っていう知名度のなさもあって、最初の部分の
つまづくのを回避できれば、っていう意図で、何回か、ワークショップも
開いてきたんだけど。まぁ、BLEの資料って案外ないし、

『どうだかなぁ。。。』

って躊躇してる人も多いかもしれず、ってわけで、書いてみた。

最後の肝心のBLE周りは端折ってる(笑
具体的にはコード、みてね!
実際、この後、そのままだと、硬直しちゃうので、いろいろあるで!
ってのはあるので、好評なら次回もやるかも。






ダウンロード用の PDFファイル本体とサンプルは、ここ(Advend-PSoC)に公開。


で、実際ワークショップをやってみたんだけど、やっぱりいろいろあったわ。

1.ボードが認識しない
ボード買ってきたら、まず、つないでみたいよね!
ってわけで、つないだら、イミフなメッセージがでて、
PSoC Createrから認識できない、という状態が発生。

CY8CKITなどのpioneer Kitだと、書き込み&デバッガ用の KitProg が
ついてて、USB接続すると、そのままデバッグとかできるで!というのが
ウリなはずなんだが、一瞬焦る状況になる。





これ、KitProgのファームバージョンとPSoC Createrが要求するファームバージョンが
異なるから、ちゃんと合わせてね!っていうメッセージなんだけど

『じゃ、どしたらええねん。。。orz』
ってなる。

で、解決法は簡単。
PSoC Createrをインストールしたら、自動的に
PSoC Programer
も、インストールされているはずなので、これを起動する。

Start メニューのCypressのなかに

こんなふうにあるはず。

起動して、














Utilities の タブ を選択したら


左のリストに表示されている KitProg を選択したうえで
Upgrade Firmware
ボタンを押せば、アップデートが開始される。

ただしく完了したら下欄に、こんなふうにメッセージがでる。



これで、新版に更新完了したので、安心できる。



2.ボード違い
今回のワークショップ、サイプレスの
CY8CKIT-042-BLE-A

をベースに書いてるけれど、参加者のボードは
CY8CKIT-042-BLE


だった。orz

これも基本構成がおなじだし、複雑なことをやらなければ
問題ないんだけど、リソースが違うので、ちゃんと合わせてやらないとダメ。




プロジェクトを開いたら
左端のワークスペースのなかの
    Project 'Design01' [CY8C4248L..]
みたいなところを右クリック。














でてきた、Device Selecter を選択すると、デバイスを変更できる。

この手順は、作成したプロジェクトのCPUを変更する場合にも
つかうので、要チェック! ですな。

今回のデバイス変更は

BLE-A : CY8C4248LQI-BL583
BLE     : CY8C4247LQI-BL483


ということなので、これを選べばOK。

あと、Work03 では、実際にBLEからLEDをいじれるように
しているけれど、BLEチップの対応の違いが一部あって、

BLE のダイアログの GAP Setting - Security 部で
Enable Link Layer Privacy
のチェックを外す必要があります。





こんだけやれば、なんとか動くかんじ。
あとはいろいろBLEとは!みたいなことを勉強しないと、
先には進めないけれど、楽しくはあるよね。


あと、WindowsでBLEやろうとすると、結構ハードル高いことかな。
肝心のPRoCのドングルも一応 .NET Frameworkの資料がやっとでてきたけれど、
関数だけ、だらだら~って説明されてもつかえへん気がする。
Windows10の Linux for Windowsで bluez つかえへんかな?
使えたららくちんなのに。
まぁ、ドングルのほうはのんびりつかってみるか。。。