2016年12月

2016年12月29日

お買い物ってわけよ

よくも悪くも年末な訳
どうやらコミケや電気街祭とかやってるみたい。

うん、非常に行きたかった。

今年は多分いけると思っていた僕が甘かった。お金はあるのに忙しくて行けない...辛いね。

そんなこんなで僕は色々と委託を予約したり。お友達に現地調達を頼んでしまったり

挙げ句の果て旅費(そもそもしなかった)が浮いたりした分他のことに使っちゃた。


何を言おうなこちゃんシャペストリー。
涼香先生の絵は癒しの塊で素晴らしい。パッケージもかわいいし大事に保管しておこっと
 
早速掛けようと思ったら壁にスペースがないことになり気づいてしまった...

取り敢えず重ねて掛けてみた。ミクさんすまない
 
BlogPaint

うん、萌え死にそう...とてもえっちだ。

シャペストリーというものは初めて買ったわけだけど、印刷がメチャクチャ綺麗だね。

色が鮮やかに表現されて普通のタペストリーと比べると明らかに違うね。
ちょっと無理して買ってよかったよ。

そういえばナデシコファインとかいうわけのわからない超素材を使ってるらしく撥水性がヤバイとか。

今度水かけてみよ。


もう一つは


何と言おうミクミクヘッドフォンなのよ
MDR-100Aの限定モデルだよ!

9月くらいに予約したんだけどやっと届いた。

実はハイレゾ対応ヘッドフォンを買ったのもSONYヘッドフォンを買ったのもこれが初めて

だからSONY製品の特徴も他のSONY製品と比べることができないんだけど
音はスッキリとしたサウンドで僕好みだった。非常に聴きやすいくてよさみが深い。

折りたたむとかなりコンパクトになるし持ち運びにもスペース入らないね。

そういえば何がミクミクなの?って感じだけどこういうこと
 

ミクが刻印されててgood!
SONYさんGJですよ!

ハイレゾヘッドフォンアンプの開発が急がれる。。。 

くけけけ...
しゅごい大出費だがぼきゅは後悔してない。。。
 

ソウイエバ学校(部室)からCVCC電源をパクってきた。

2016-12-22-22-56-43


どうやら CC機能がうまく動作しないみたい。若干してるみたいなんだけどどうも挙動がおかしい
35kぐらいする電源装置なので直さないともったいない。
入手困難なICが壊れていないことを祈りたいよ



2016年12月27日

新たなものを

先日こんなものを買ってみたんだ

image
 
IN-9っていうバーグラフニキシー管だね。
ニキシー管と言えば数字を表示するためによくソビエトの方々が使ってたみたいだけど
バータイプもあってちょっと驚いてる。 

一本を取ってみるとこんな感じ

image
 
レトロな感じがあまりせずキレイって感じだね。
ガラスのくすみもないし当たりを引いたのかなと

ところでなんでこんなものを突拍子もなくこんな骨董品を買ったかというと
ちょっと面白いものを作ろうと思ってね。。。
オーディオスペクトルアナライザーに使えるんじゃないかなっと。

本当はLEDを使おうかなって思ってたけど
適度な長さのものもないし 、何より滑らかにぬるぬる動かないよね?
ぬるぬるうごいたほうがかっこいいな。。。と思って買っちゃったんだ! 

点灯試験をしようと思ったんだけど、手ごろな高圧電源がなかった。。。
まあ見た感じ動くんじゃないかな?

というわけで部品の安否確認もせず制御基板を設計しちゃうんだぞ☆ 
とりあえず36本うねうねしてたら見栄がいいじゃないかと

controller

まだ途中だけどきっとこんな感じになると思われ
と言うかeが抜けてて草

早速マイコンはSTMマイコンなわけ、STM32F303はcortexM4らしく
FPUが乗ってて浮動小数計算が爆速らしい…FFTにはもってこいのようですね。
というかペリフェラルが凄すぎて、少し前までAVR使ってた僕からしたら雲泥の差よ。。。
設計の幅が増えてとてもうれし

次は36本動かすためのドライバと電源を設計しないとね。。。 
NT京都に間に合うかな。。。 

drttx at 16:51|PermalinkComments(0)

2016年12月25日

SW4STM32でprintfを使って浮動小数を出力したい

先日導入したSW4STM32は書き込みに手間が書かからず
OpenOCDを使えばデバッグもできオフラインで開発できます。

また、eclipseベースなのでPluginやMakerplaceを利用すれば自分好みの使いやすい環境にできます。

しかし、その代わりと言っては何ですが別の手間が要求されます。

まあとりあえずこれを見てください 

bandicam 2016-12-25 15-21-50-669
 
適当に円周率を表示するプログラムを書いてみます。

オンラインコンパイラ(RVDSだったかなぁ)を使っていた方であれば"PI:3.1415923"と
当たり前のように表示されると思う方が多いと思います。

しかし、オフラインコンパイラ(GCC ARM)の場合は初期設定のままでは実行結果は以下のようになってしまいます。

bandicam 2016-12-25 15-19-08-489

浮動小数の部分がきっちり抜けてPI:しか表示されないんです。
実はprintfの浮動小数処理はコード節約のためにデフォルトでは対応していません。

その為リンカーオプションをいじる必要があります。

手順ですが
まず、ProjectExplorerでプロジェクトのルートを右クリックし
Properties > C/C++ Build > Settings > MCU G++ Linker > Miscellaneous
に進みます。

bandicam 2016-12-25 16-04-54-391

デフォルトでは上部のLinker Flagsには
-specs=nosys.specs -specs=nano.specs  
と書かれていると思います。

この行に -u _printf_float を追加して
-specs=nosys.specs -specs=nano.specs  -u _printf_float に変更します。

これでprintfとかsprintfで%fにより浮動小数が扱えるようになります。

またscanfはまだしもsscanfを使うときがあるかもしれません
やはりこれらの便利関数も浮動小数に対応してなかったりします。
ついでに -u _scanf_float も追加しておきましょう。

注意する点としてはコードサイズが大きくなることですね。
比較的Flashサイズの小さいnucleo-32ボードでは気を付けた方がいいかもしれません。

以上で終わりです。

毎回設定するのはいささか面倒みがあることですが
浮動小数入出力なんてあまり使わないので覚えとくとイイこととして認識しておきましょう 

そういえば補足みたいなものですが、メモリ削減的にはオンラインコンパイラの方が断然いいかもしれません。
RDVSはメモリ削減率をアッピールしてるし?

そう考えると商用コンパイラを間接的にタダで使えるmbedは凄いな〜

nucleo32とか下位クラスのlpcマイコンであればオフラインコンパイラでコンパイルした方が良いかもね。
 


drttx at 16:41|PermalinkComments(0)弱電 | mbed

2016年12月16日

SW4STM32を使ったmbedオフラインコンパイル

最近何かと話題のmbedを使ってみました。
今回買ったのはnucleoボード!!
一枚1~2千円で買えるしコスパ最高です。

image

早速2枚買いです。取り合えずF401とF446を買っておきました。

mbedと言ってもmbedはオンライン開発環境であり僕的にはあまり好ましいとは思っていませんでした。 

じゃあなんかのIDEでstmが配布してるHALを使ってプログラムを書けば?という意見もあるかもしれませんが
あれはヤバいです。使えるようになるには相当な時間が必要だと思われます。 

1600ページある公式解説文もかなり簡素なものでゼロコンマニ秒で読む気が失せます。
素人意見ですがHALはどうしても必要な時だけ利用するのが良いと思われます。
取り敢えず今は全てを包容してくれるmbedの恩恵を受けておきましょう。 

そんなこんなで神々しい開発ツールmbedですが
ちょっと手間をかければオフラインでも開発できてしまいます。 

ようはARM開発環境さえあればいいってわけよ。
というか僕まだオンライン環境で開発してないし草も生えない
 
今回はIDEにeclipseベースの無料開発環境であるSW4STM32を使いました。
なんといっても無料なのにコンパイル時のフラッシュ容量制限が無いところが強みかな?

開発環境の構築法はネットで漁ると先人の方々が懇切丁寧に解説されているためそちらを参照してください。 

役に立つかどうかはわかりませんがオフラインコンパイルの手順を記しておきます。

まずmbedCompilerから適当にプロジェクトを制作してエクスポートします。
今回はプロジェクト名をtestとしました。

bandicam 2016-12-25 02-33-32-222
bandicam 2016-12-25 02-33-48-749
Export Targetを自分の使用するマイコンに、Exportt TollchainをSW4STM32にしExportします。
するとzip形式のファイルがダウンロードされると思います。 

どうやらダウロードされるファイルはプロジェクト名の後にマイコンボード名が付くようですね。

次にSW4STM32を起動し、右上のFileをクリックし
Import>Exsing Projects int Workspace
まで進みましょう

そこでSelect archive fileをチェックし、先ほどダウンロードしたzipファイルを参照しFinishをクリックします。

bandicam 2016-12-25 02-44-21-534

するとproject explorerにインポートしたtestが追加されてると思います。 

これでプロジェクトのインポートをは完了です。


次にプロジェクトをビルドします。ビルドはツールバーにあるハンマーのマークをクリックするかCtrl+Bです。
するとエラーが出ると思います。 (現状ではエラーが出ると勝手に結論付けてる)
  bandicam 2016-12-25 02-52-30-567

どうやらMBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATEがtest/mbed/drivers内のRawSerial.hとSerial.h内で定義されていないようです。 

MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATEはmbed_config.h内で定義されており定義内容は9600です。これはデフォルトのシリアル通信の通信速度の値です。

対応としてはmbed_config.hをインクルードするかMBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATEを9600(任意の値で可)に書き換えることで解決します。

書き換えるとビルドができるようになるので適当にプログラムを書いてみましょう 。 

書くもクソも最初からテンプレートが書かれていました。 

bandicam 2016-12-25 03-12-42-172

途中でエラーが出ていなかったらとりあえず書き込んでみます。

書き込み方法はいくつかります。
一つ目はツールバーの再生マークのrunをクリックもしくはCtrl+F11で書き込みます。

bandicam 2016-12-25 03-11-56-434

複数出てくることもありますが、自分の書き込みたいものを選んでOKを押しましょう 

するとマイコンボードのST-Link側のLEDが点滅してプログラムが書き込まれます。

別の方法はプロジェクトを右クリックして
Target>program chipをクリックして書き込みます。 
bandicam 2016-12-25 03-22-56-851

OKを押せば先ほどと同様にLEDが点滅して書き込まれます。

もう一つの方法はプロジェクト内のDebugファイル内にできたbinファイルをいつも通りの方法で書き込む方法です。

これはmbed本来の書き込み方法と同じなので説明の必要はありませんね


以上で解説は終わりなのですが。注意というかやった方が言いことを書いときます。 

ビルドしたときに.elfファイルが作れないとか、書き込むときにそんなファイルねぇよと警告文が出てきたときはファイルパスを短くするか、プロジェクトのcleanをやってみてください。大抵解決します。
ちなみにcleanはツールバーのprojectのところにあります。


いろんな意味で残念な解説になりましたがこれで終わりです。 

次回は外部コンパイラを使った際の問題について書きたいと思います。


続きを読む

drttx at 01:20|PermalinkComments(0)弱電 | mbed