hira のすべての投稿

R8CM/11A,R8CM/12A ライター

100円のマイコンと言えば、アトメルのAVRマイコン、ATtiny2313 が有名です、128バイトのデータメモリー、2キロバイトのプログラムメモリー、128バイトのEEPROM、最大20MHz動作(2.7V~5V)と、gccで開発出来て、非常にコストパフォーマンスに優れたマイコンです、ちょっとした制御ならこのデバイスで何とかなる為、非常に重宝してきました、ライターも非常に多くの書き込み機が存在し、手軽に買えるし、自作する事も出来ます。

最近、秋月電子通商で、ルネサスエレクトロニクスのR8C/M11A,R8C/M12Aがラインナップに追加されました、どちらも100円で、AVR が霞んでしまうほど素晴らしいスペックで、とても興味が湧きました~、それで早速2個づつ入手して、何か作ってみる事にしました。
※現状ではまだ情報が少ないようですね・・

まず、スペックですが、印象的に以下のような所が気に入りました。
・データメモリーが倍(2313では128バイトですが、256バイト使えます)
・フラッシュメモリーが2キロバイト(2313は128バイト)
・掛け算命令や積和演算命令を持っている
・14ピンと20ピン DIP タイプ(自作では、ちょっとした物を作る場合、非常に好都合)
・プログラムをシリアルインターフェースと簡単な回路だけで書き込める(ルネサスのFDTツールなど)
・gcc も使える(プログラム領域が2キロしか無い為、ルネサスの C も、実質制限無く使えると思います)
・2.7V~5.5Vで20MHz動作(1.8V~だと5MHz動作)
・書き換え回数10000回
・10ビットA/Dコンバーター内蔵
・豊富な機能(タイマー、割り込み、コンパレーターなどなど)
・内蔵発振機も使える
・省電力機能

今まで、ルネサス系で弱いと思っていた部分が殆ど改善されていて、ほぼスペック的には文句無しです、これなら、AVR(2313) で弱いと思っていた部分をカバー出来るのではと思います。

まず最初に用意するのは開発環境です、HEW 上、ルネサスの R8C 用コンパイラは、登録すればダウンロードでき、R8C 版はバイナリーサイズが 64K バイト以下なら、試用期間を過ぎても無償で使えるようです、自分は gcc が好きななので、KPIT の R8C 用 gcc ツールチェインをダウンロードしました(登録が必要)。

次にライターですが、シリアル入出力を接続して、モードピンを「L」にしてリセットすれば、専用アプリケーションで書き込みが出来るので、とても簡単です、参考回路はハードウェアーマニュアルに書いてあります。

とりあえず、FDT を使って認識するとこまで出来ました。

次はいよいよサンプルプログラム(多分 LED チカチカ)ですが、I/O 関係の定義ファイルが無い為、現在打ち込んでます(泣)
一応、どこかに誰かが作ってないか調べたけど無いようでした・・

SH7125 モニター改修などなど

・SH7125 関係、アーカイブにアセンブラソースが抜けていたので、再収集。
・SH7125 の Flash ROM 書き換え回数制限の問題で、RAM上でプログラムの動作確認を行う件、多少進展。

RAM 上にロードしたプログラムから、ROM 上の関数を呼ぶ場合に、ROM 上の実アドレスなどが必要なのだが、どのように解決するか、少し考えて、その仕組みを実装してみた。
リンク時に作成される「map」ファイルを sed(ストリームエディター)で加工して、シンボルとそれに対応するアドレスを取り出し、アセンブラソースコードを自動生成する。
※以前、会社勤めの時に HP の unix システムを使った事があるが・・、そこで sed の面白さと出会った、今まで随分お世話になっている、今でもそれは変わらず、テキストの加工、成形には重宝している、その為、ed や ex といった unix システムに標準であるラインエディターは今でも使えるし、emacs が使えない場合等に、使う事が多い。(逆に vi のキーバインドは知らないので使えない・・)

マップファイルには、アドレスとシンボルの対がリストされている。
0x00000000000025b0 sh7125_sci_getch

----- sed スクリプト start
/^$/d
/^ \./d
/0x/!d
/^ /!d
/[()]/d
/ _/d
/0x000000000/!d
s/0x000000000/0x0/
/vectors/d
/start/d
/main/d
/set_imask/d
/get_imask/d
s/^ *\(0x[0-9a-fA-F]*\) *\([a-zA-Z0-9_]*\)$/ .global _\2NNN_\2:NNN mov.w _\2_,r0NNN jmp @r0NNN nopNNN_\2_:NNN .word \1NNN/
/^ /d
s/NNN/\
/g
----- sed スクリプト end

↑の sed スクリプトで、以下のソースを生成。
※map ファイルで余分な行を除外してから成形して1行にまとめて、最後に改行を入れている。
※改行をマークする文字列として、「NNN」を使っているので、シンボルに「NNN」を含めると問題となる・・

.global _sh7125_sci_getch
_sh7125_sci_getch:
mov.w _sh7125_sci_getch_,r0
jmp @r0
nop
_sh7125_sci_getch_:
.word 0x000025b0

↑こんな感じに成形される~

ROM内の関数を呼ぶ場合には、このインターフェースクラスを通る事で、オーバーヘッドがあるが、まぁそれは利便性を考えると許容出来る範囲と思える。
RAM 上のプログラムでは、このアセンブラソースをアセンブルしてリンクする事で、そのままのシンボル名で呼び出せる。
※ROM 内関数のアドレスが32K(0x7fff)を超えたら、テーブルは32ビットで持つ必要があるので、このままでは不十分となる。
※関数にはRAM を使う必要もあるが、それは、0xffffbd00 から256バイトが使われている、自分のシステムで問題となるなら、リンカースクリプトを変更する必要がある。

このスクリプトなどソースコード一式は、ここに置いてある。

SH7125 簡易モニター

最近 SH7125 のボードを使う事になり、少しづつ進めていますが・・

最初の段階で、SH7125Fデバッグモニターを見つけて、使わせてもらっていました。
しかし、ある程度判ってくると、高機能なデバッグは必要無く、プログラムをダウンロードして実行出来るだけで十分です。
そこで、Sフォーマットのロードと、実行など機能を制限したモニターを作成してみました。

このモニターの特徴:
・ワークメモリーはスタックを入れても512バイト程度しか使っていない(RAMのお尻の0x200)
・通常のターミナルソフトで通信出来る為、環境に左右されない
・KPIT の SH gcc ツールチェインでコンパイルできる
・コマンドラインからプログラムを転送して実行できるなど(タイミングなどを考慮する必要がある)

ソフトウェアーを公開しますので、興味ある人はどうぞー

SH7125 簡易モニター

RAM 上で動作させるサンプル
↑RAM 上で動作させるサンプルです、参考にして下さい。

SH7125 モータードライバー試作に向けて・・・

ちょっと前からブラシレスモーターのドライバーを実験している、以前(何十年前)に大学時代マイクロマウスをやっていた頃、DCサーボモーターの制御回路を作った事があり(全てアナログ回路)その時の知識が未だに大体使えるが、三相モーターの制御はDCモーターより複雑で、ある程度の精度で、一定速度の運転をするくらいならそこそこ簡単だが、速度とトルクを高精度で、しかもデジタル制御するには、色々と新規に開拓する事も多い。
まぁ、とは言っても、昔のように1MHzで動く8ビットマイコン(6502)とかでやっていた頃とは雲泥の性能差があり、コストも安く、デバイスの入手も楽になった為、昔のような苦労は少ない。

今回の仕事、電動バイク用のコントローラーや電源管理など、全体のパッケージの開発依頼があり、開発費はもらえないが、趣味の延長とこれから色々応用も出来そうと思って勉強のつもりでとりかかった。

最初に、AVRで 簡単な実験を行って、ブラシレスモーターの「肝」を「触り」だけ実験してみた、とりあえず、回転する事は出来たので、本格的に汎用性のあるドライブ回路を実験する為、部品集めと試作回路など作り始めた。

↑ATTINY861 を使った実験回路、手持ちの貧相な部品で作った為、パワーMOS-FETが死んでしまい、もう使えない・・・


↑ラジコン飛行機用のブラシレスモーター、安いし実験には便利!
※クワッドローターのヘリコプターを作ろうと思って4個も購入したww

最初は専用コントローラーを使う事を考えて、部品を探したが、擬似的な正弦波による制御チップがほとんどで、「回すだけなら」出来るが本格的なベクトル制御には向かないものが殆どだった。
ATTINY861も、PWMが3チャネルあるとか、デッドタイムの設定が可能とか、PLLを使って高いPWM周波数が可能だとか、ブラシレスモーターを意識した構成なのだが、ちょっと物足りない、そこで、色々探したらSH7125が適格である事が判った、50MHzで動き(実質的には40MHz)積和演算も高速だし、三相モーターに必要なPWMの構成も出来る。
※以前に秋月で買っていたので、早速テストしてみる・・・

で、早速実験し始めたのだが・・・
※SH2は、以前にSH2Aのデータロガーで KPIT の gcc 環境を使っている為、これを利用すれば簡単と思っていたが、意外と手こずってる・・・

・フラッシュROMの書き換え回数が100回まで保障 ---> 少なすぎて、実用的では無い。

そこで、WEBをグルグルしてたら、デバッグ・モニターを公開しているサイトがあったので早速ダウンロードして、書き込み使ってみる。
RAM用にプログラムを作り、動かしてみるが思った通りに動かない・・・

・まず最初に引っかかったのが、「gccアセンブラ」
gccのオプションでSH2のタイプを指定しているが(-m2)これで指定しても、アセンブラレベルでは、SH2に無いニーモニックも普通にアセンブル出来てしまい(エラーが出ない)、結果、未定義命令で止まる・・・
これに気が付くまでに数時間かかった、上記のデバッガー、逆アセンブラで気が付いた。
mov.l r0,@r1+
↑この命令(ディストネーションのオートインクリメント)はSH2には無い・・・
mov.l r0,@r1
add #4,r1
にする事で回避、要は、gccの場合、アセンブラソースは極力使わないようにした方が無難なようだが、これは仕様では無くバグなのかもしれない・・・

次にはまったのは、デバッガーのバグ・・・
モトローラーのSフォーマットを食わせるのだが、ケツのデータがダウンロードされていない事が判明・・・
ホスト側のプログラム(objload.c)を見ると、Sフォーマットの最大アドレスを見つける部分に問題があるようで、そこを修正。

ついでに、逆アセンブラで、PC相対でデータを取得する部分、ワードアクセスでもロングでデータを持ってきているようなので、そこも修正、右に表示される取得データがワードアクセス命令でも正しく表示されるようになった。
※これらの修正は作者のゲストブックにコメントをしておいた。

次にタイマー割り込みを使う作ってみたが、思った通りに動作しない、とりあえず、ポーリングで動かしてみるが、全く駄目・・・
こんな簡単な部分で???
良く良くハードウェアーマニュアルを観ると・・・、初期状態では、クロックが供給されない設定のようだ・・・、これを設定、ポーリングでは動作するようになった、でも割り込みでは動作しない、割り込みを「許可」にした途端、何か別の割り込みが動いているようでそこで止まる・・・
現状ではここまで、まだまだ遠いなぁ・・・

なんでこんなとこでハマるのか・・・
まだまだ精進が必要だ・・・

------
最近、ARMの元気が良すぎる~
SHは昔から随分お世話になっている、SH3でボードを起こした事もある、それに純国産のRISCで、光っている部分も多いと思う、でもビジネスはとことんだらしない・・・、あれだけ良い部分を持っていてもARMの数の力に段々弱っている感じが観てとれる・・

開発環境もかなり弱い。
一応登録すればフリーなツールが入手出来るが(KPITのgcc)、何で登録制なのだろうか?
これでは厳密にはフリーでは無い、そしてgccもSH版はメンテナンスをしていないのではないのか・・、ルネサスはSH専用のコンパイラを外販しているが、価格が高く、オプティマイズの性能が良くても、使う気になれない(コスト比を考えると使えない)、gccとは桁違いに性能が良いようである、また、KPITのエクリプスにしろ統合環境ベースでプログラムを作ると、専用のランタイムライブラリーが勝手にリンクされてしまうし、コマンドラインでmakeとgcc、emacsで作りたいのに、それを阻害するしで、自分の好みの環境が提供されていない。
ARM だと、gccを使って幸せになれるツールチェインが沢山あるし、C++もboostも問題無く使える、しかし、SHではどうか?

そもそも、組み込み用で、gcc以外のコンパイラでまともにC++のソースコードをコンパイル出来る物はほんの一握りでしか無い事を考えると、一部のベンチマークで性能が良くても買う気にはなれないし、性能を出したければ、アセンブラで最適化すれば良いだけの話だと思える。
デバイスの値段もARMはもの凄く安くなっているし、種類も爆発的に多いし、こんな調子で、生き延びていけるのだろうかSH・・

12ピクセル漢字フォント

ATMEGA版データロガーだが、基本的なとこは大体出来て、図面入力とアートワークやらないと駄目なんだがー、多少気になってる部分をチョイチョイ作っていた。

データロガーではあまり使わないのだが、ファイル選択関係を実装していて、FatFSでは、小さいマイコンでも可能なような配慮が沢山あっていたれりつくせりだ。
ファイル選択はしなくても、ファイルサイズを観たりするくらいはあっても良い、そこで、ディレクトリーを移動したり、選択してファイルサイズを表示したり出来るように一通り作ったが、2バイトコードをどうするかが問題となっていて(データロガーが作るファイルは半角文字なので本来関係無いのだが)実験の過程では、2バイトコード(漢字など)はメッシュの箱として表示していた、だけど、あまりに見た目が悪いし文字化けしてるみたいで痛い、そこで、漢字の表示は出来ないものかとちょっと考えてみた。
※MP3のデコーダーを載せて音楽再生をする目的もある、その場合はどうしても漢字の表示は必須だ!
とりあえず、現状では、6×12ピクセルの半角文字を表示している、そこで12×12の漢字フォント(蕨12)をネットでゲットした。(他にも色々あるようだが、とりあえず・・)
次に、Shift-JISのコードページに並べるとどのくらいの容量になるのかBDFファイルを読み込むツールを作って検証した。
※Shift-JISは漢字コードを効率良く並べられ、コードからビットマップの位置を特定するのが簡単で良い。
容量は、「138キロ」、うーーんこれでは、1MBitsのEEPROMに入らない・・、秋月で売っているシリアルのEEPROMに収めようと思ったのだが無理がある。
でも折角ツールを作ったのだからと、漢字のビットマップファイルをSDカードに入れて、SDカードから読みながら表示させてみた。

結果は思ったより上々で、多少もたつくが、漢字の入ったファイル名を表示出来るようになった。

この「ファイラー」では、横128ピクセルより長くなるファイル名は自動でスクロールするようにしてあるが、スクロールを始めると、かなり重く、スピードが遅くなっている(処理落ち)そこで、キャッシュバッファを設けて速度を改善してみた。
これで、普通に表示出来ている。

自分はゲーム屋なので、ボタンを押した場合の反応とか、画面の切り替わりとか、その辺りのクイックな感じと操作性、画面の見栄えなどに比重を置いてる、まぁ見栄えは、グラフィックデータに凝ってると時間を浪費すると思うので、後から差し替えするつもりで、適当なのだが・・
画面は液晶でもゲームシステムと同じ同期式としてプログラムを作っている、画面の更新周期は33.3Hz(3/100Hz)で、必ずこのレートで全画面を更新している為、点滅や移動がこのフレームレートで毎回行われている。
・フレームバッファの内容を全て液晶に転送
・フレームバッファを全面クリア
・オブジェクトをフレームバッファに描画(各シーンタスク毎)
・時間同期
こんな順番で、グルグル動いている、液晶の反応が多少鈍い為、速い速度でオブジェクトを動かすとかすれるのだが・・

しかし、ファイラーのような構成で、この仕組みに当てはめると、ファイル名を保持しておくバッファなども必要になってしまう、そこで、ファイラーでは、フレームバッファの消去をやめて、ボタンが押されて状況に変化が起こったら画面を書きかえるようにした、その為、ファイル選択では、表示負荷により動作が遅くなっているが、まぁこれは仕方無い・・

それでもロングファイル名が表示出来るのはありがたい。

-----
以前にPNGファイルから液晶用のビットマップを作成するツールにBDFファイルの変換を組み込んだ。
今回、BDFファイルの読み込みでは、12×12ピクセル、JISコードとして機能する、コード体系が違う場合とか、ピクセルが違う場合はソースコードを修正する必要があるが、このツールのソースコードもアップしてある。

AVR とツールのソースなど

データロガーのケース

ATMEGA版データロガーだが、KiCADの評価はひとまず終えて(現在のバージョンで何とかなりそうだ)、ケースを完成させた、それに伴い回路も少し改造した。

いつも一品物を作る際に苦労するのがケース、市販されている大き目のケースに入れれば良いのだが、実際に使う事を考えると、それも少し痛い、今回のように基板を作る事を考えると、どんなふうにまとまるのか考えておかないと、基板のレイアウトや構成も定まらない。

最近、「低発砲塩ビ板」が結構使える事が判った、これは、アクリルサンデー株式会社が販売しているフォーレックス@と言う材料で、軽く、加工が簡単(カッターで切れる)なのが主な特徴、ただ、それなりに柔らかい(爪で強く押せば傷がつく)ので傷が付きやすく、剛性が求められるようなところには使えない。
それでも、構造を工夫すれば、ある程度は頑丈に作れるし、気軽に作れる点で、試作とかには非常に優れた材料だと思う。

今思えば、建築関係の人が、モデルを作る時とかに良く使っているのではと思う。

今回は3mm厚の板を、基板に合わせて、カットして専用接着剤で張り付け、ヤスリで加工した。

生板のサイズから効率良く切り出したのだが、横の長さが不足して、電池を入れるスペースが少なくなってしまい、単三電池は入らない事が判明し、急きょ、単四電池を入れる事にしたのだった・・・・・

※ボスに2.6mmのナットを埋め込んでいる。
※ボスが4か所だと、少し弱いので、急きょ横にネジを二か所追加してみた。
※角をヤスリで丸く仕上げた。
※液晶の穴は、同じ厚み(3mm)のアクリル板を加工、淵にフライスで「ツバ」を着け、段差をなくした。

かなりいきあたりばったりで、原寸合わせで図面も作っていないが、それなりな物が出来た感じ。

オープンソースのEDAツールKiCAD

データロガーのソフトの完成度が上がってくると、ハードも整理して、プリント基板製作の準備も進めなければならないー

以前(10年以上も昔)には、EDAツールとして、アドバンストスケマティックを使っていた、それに、数十万円の投資も行った事がある。
※オートルーターとしてNuroRoutoも導入していた。
現在OSがWindows7になり(OS-X)、以前に買ったこのツールも動作させる事が難しい(無理やりインストールしても動かない)、とはいえ、Windows2000(NT4.0)をインストしたマシンを起こして、それにインストして使うのもそれはそれで大変だし、このプロテルのツール、自分のバージョンはバグだらけで、不安定、かなり神経をすり減らす代物だった、今更高いお金を払ってバージョンアップする気もおきない(基板を作る仕事が減った事も要因)。

そこで、オープンソースとかフリーで使えるEDAのツールを色々試して評価していた。

google 先生に聞いた色々なリンクを巡り、日本語の説明や解説を読み、本家のページから最新版をダウンロードして、ちょこちょこ試してみたが・・・
なかなか「ベスト」な選択が見つからないでいた。

※プロテルで養ったワークフローを元に、以下のような目安をポイントとしていた。
(1)回路図(スケマティック)とPCB(基板のトラック編集)、部品管理などが一貫している事
(2)バックアノテーションが出来る事(PCBで追加したトラックなどを回路に反映させる機能)
※これは、まぁ無くても・・
(3)オートルーターがある事
※できれば・・
(4)ミリ系の部品とインチ系の部品を上手く扱える事
(5)基板の大きさに制限が無い事(少ない事)
(6)4層基板程度までは出来る事(6層とかならさらに良い)
(7)デザインルールチェックが出来る事
(8)ガーバーデータ(フォトプロッタの為の描画命令コード)、ネットリスト、部品リストなど、基板屋さんが受け付けてくれるデータを出せる事
(9)フリーで使える
(10)バグフィックスとバージョンアップに期待ができる

かなり要求があるが、今は、こんな要求に答えてくれるソフトが入手できる(良い時代だ)

結果としてKiCADがもっとも良い選択なのではと思った。

だけど、「先人」たちも熟慮したであろう「どれが一番良いの?」を、一応これからEDAを始める人への参照として、他のソフトの評価などを書き添えておきたい。(断っておきますが、詳細に調査したわけではなく、簡単な回路を作って、少しの時間だけソフトを使っての評価なので、必ずしも適切とは言えないかもしれない事を念頭において欲しいと思います、また、評価したバージョン(時期)も重要で、時間が経って機能が追加されたりすれば操作性は変わるので、評価もおのずと違って見えます)

(1) BSch3v 「水魚堂の回路図エディタ」
・回路を描くには、申し分ないアプリで、使い方を見なくても、マウスをつっいていれば使い方が何とか判るような感じ、メニューとかも日本語なのでとっつきやすい。
・PCBのエディターもあるようだが、使っていない(オートルーターとかは無いようだ)
・ネットリストは出るので、PCBだけは別ツールで行うのもパスとしては「アリ」かもしれない。
・Windows版が主流だが、移植版もあるようだ
・オープンソースでGPL

(2)EAGLE Light
・これはフリーでは無いが、大きさなど制限された「ライト」版をフリーで使えるもの、小規模なPCBしか作らないのであれば、これも選択枠としてはアリかもしれない、当然ライセンスを買って無制限バージョンを使う事もアリかもしれないが(数百ドル~、趣味のレベルでこのコストを払えるか疑問)・・
・さすがに、売っているだけはあり、大変良く作ってあり、機能も豊富で、これだけの機能があればかなり大きな物でも困る事は少ないと思える。
・EAGLE Light に慣れ、もっと大きな規模に移りたいと思った場合に、今までのノウハウを捨てて、別ソフトに移行するのか、無制限版を買うのかなど考えると、良く出来ていてもうかつに手を出さない方が良いと思える。(自分の考え)
・Lightで痛いのは回路図が「1枚」だけしか使えない点

(3)TinyCADFreePCB
・日本語の説明やメニューを日本語にするなど、多くのリンクがあり、日本では、かなり多くの人が使っている感じで、HowToも豊富な感じ
・ともにフリーで使え、制限もほぼ無いが、FreePCBにはオートルーターの機能は無い
・別々のソフトなので、「連携」は少し弱いかもしれない
・操作性もある程度スッキリしていて、違和感も少なく、少し慣れれば、問題なく使いこなせると思われる。
・Windows版、オープンソースでGPL

-----

そしてダークホースのKiCADなのだが・・・

日本語での解説も少なく、評価している記事も割と古い版の物だった、最初ダウンロードして起動してみたが、そもそも回路図エディターすら満足に使う事が出来なかった、それで、別のソフトの評価を行ったのだったが、全体の構成とか、機能など、捨てがたい魅力があり、再度挑戦。

「やはり、自分の最初の印象は間違った前提によるものだった」

回路図エディターで、負論理のラベルに「バー」が付けられないのがなぁとか、細かい部分でいきなり駄目だししたのだが、オープンソースでソースコードも公開されているので、気に入らなければ自分で作ればいいだけの話。
多国語対応で各国色々対応しているのだが、「日本語」リソースだけ無い?

自分の評価は「KiCad-2010-05-05-BZR2356-final」バージョンだが、(RC4だが、「KiCad-2011-01-25-BZR2754_RC4a」の版もある)
基本的な機能にアクセスするのが、「面倒」と思ったのだったが、このソフト、マウス+キーボードで両手で操作する事が前提のようだ、キーボードは機能ボタンとして働く(右ボタンでメニューを出してそれを選択する事でも出来るが・・)、それが理解できれば、かなり小気味よい操作性で、使いやすい!
部品ライブラリーの操作も、基本的な操作を覚えれば簡潔な事が判った。
※新規ライブラリーの作り方が少し独特で判らない部分であったが・・

この独特な操作性で、日本での評価が少ない(低い)のかもしれないが、考え方としてはむしろ「正統」なのだと思う、EDAは機能としては、複雑なので、機能ボタンを沢山用意して、回路図(又は部品、トラック)と機能ボタンとの間でマウスポインターを行き来するよりは、キーボードを機能ボタンとして働かせた方が断然使いやすい、ユーザーに機能とキーボードボタンの対比を覚えてもらうハードルがあるが、回転(R)、移動(M)など基本的なボタン操作だけでも覚えれば、もうそれでも十分な操作性でもある。

PCBにはオートプレース(まだ使い方が良く判らない部分がある)やオートルーターがありWEBベースのオートルーターの機能を呼び出す事も出来る(まだ試していない)し、部品とフットプリントのマネージメントを行う機能もあり、プロジェクトとして一貫した操作が出来るのが素晴らしい。

基板の3D表示(OpenGLを使う)も出来、機能満載である。

マルチプラットホーム、Linux版やOS-X版もあるようだ。(使っていないが・・)

これなら、ほぼ申し分ないと思う、これからもっと深く使って、順次評価も深くしていきたいが、とりあえず、これで出来そうな感じと印象を得た。
暇が出来たら、メニューを日本語化して、リソースを本家に送ってみたいと思う(英語のメールを書くハードルがあるけど・・)。
回路図で「バー(負論理の表記)」が付くようにするパッチも作りたい。

データロガー(ATMEGA1284P版)

先日、「秋月」でAVRの新製品がラインナップに追加された。(AVRの中では600円と高い部類だけど安い)
ATMEGA1284P がそれなのだが、一番のトピックは内蔵RAMが16KBもある点で、AVRで少し痛いとこが大分改善される。

以前にATMEGA64で作っていたデータロガーだけど、メモリーが少なすぎるのと(外部バスにメモリーを増設できるけど)、クロックが最大16MHzなので、途中でペンディングとなっていた、今回その時に作ったソースコードを生かして、作りなおして実験してみた。
クロックもこのデバイスは20MHzまでいけるので、19.6MHzを採用し、GPSデータの取得と100Hzでアナログ8チャンネルのデータ収集など基本的な部分の動作確認も出来た。


↑これも秋月で売っている液晶を使って、基板サイズをそれに合わせてあるのでそこそこコンパクトに仕上がった。

SH2 で作っているデータロガー、高機能なのだが、部品の入手性、コストなど考えると、今回の仕様でもまぁ十分ではある。
もうすぐモータースポーツのシーズンも始まるしで、とりあえず廉価版を早急に仕上げる事とした、安く作れるので、他にも利用用途が沢山ある。

GPSはSUP500Fを別途モジュールとしている、本来は、本体に取り付けても良いのだが、本体の取り付け位置によっては、良好な衛星の受信状態を維持出来ない可能性もある為、あえて外部モジュールとした。

※CR2032をバックアップ用電池として使っているが、実験してみると、もの凄く急速に電池が減るので実用性は無い・・
※SUP500Fはバックアップ電圧を加えないと動作しないようだ・・
※SUP500Fには1PPS出力があるのでLEDを付けたが、ほとんど電流を取れないのでバッファを付ける必要があるようだ、トランジスタも駆動出来なかった。

ATMEGA1284Pはメモリーもそれなりにあり、高速で良いのだが、ポートが少ないのが痛い、デコーダーを追加したり、色々工夫が必要。

後、やっぱり、メモリー空間が、RAM領域とROM領域が別になっていて、アクセスに気を使わないとならないのは多少痛い。
最近のフレームワークではChaN氏のFatFSを利用させてもらっている、毎度の事だが、このパッケージは凄く完成度が高く、高性能で移植性に富んでいる、この場を借りてお礼を言いたい、「ありがとう御座います~」便利に使わせてもらっています。

楽曲のリンクなど(その4)

ボーカロイドの曲は、既に天文学的な数にのぼっていると言っても過言では無いかもしれない、1万曲としても全部聴くには一月はかかる。
ニコニコ動画で再生数の多い曲を選んで聴いても良いけど、まだ多くの人に認知されていなくても好きになれる楽曲は沢山あるのだろう。

楽曲のリンクは一度に5曲程度を紹介しているけどー、自分の嗜好によるとこが大きいので、好みは分かれると思う、既に再生数が多く、
有名となった楽曲で、今更感がある場合もあるけど、自分としては「出会い」による発掘を重要視している為、最先端で聴いている人とは
時系列が異なる場合もある。

(1)パズル

初音ミクオリジナル曲「パズル」

初音ミク Wiki - パズル

叙情的な詞と楽曲、ギターの生音、初音ミクの声に意外と合っている(調音も素晴らしい)、PVのビジュアルも詞の世界にマッチしていて良い。

(2)チョコレート・トレイン

この曲、最初は「タイツォン × absorb」で知った、オリジナルは「初音ミク」だった。

「チョコレート・トレイン」を歌ってみました。by タイツォン × absorb
Chocolate Train【チョコレート トレイン】- Hatsune Miku【初音ミク】

Chocolate Train【チョコレート トレイン】- Hatsune Miku【初音ミク】PV
↑チョコレートトレインの楽曲にPVを付けたバージョン、PVの制作は「オサレP」さんです、これも出会いの妙と言うか、典型的なフェーズによる合作、凄い!

創造の動機が、商業ラインと違って、「楽曲が気に入った」をトリガーとして、作られている、もちろんプロが仕事としてやっても、楽曲の雰囲気を引き出す
事は当然としても、「趣味」でも高いレベルで作品としてまとめあげる事が出来る好例だと思う、オサレPさんのオリジナリティーと楽曲が強調していて調和
しているとこがまた良い。

初音ミク Wiki - チョコレート・トレイン

初音ミク Wiki - オサレP

(3)1/6

【初音ミク】1/6【オリジナル】

まさに初音ミクならではの楽曲と思える、カワイイ唄い方が全面に出ていて、「らしい」が「好感」な感じ。

初音ミク Wiki - 1/6

(4)炉心融解

【鏡音リン】炉心融解【オリジナル】 / Rin Kagamine - Meltdown

「詞」が思いっきりアートしている問題作、ボーカロイドの中でも「鏡音リン」は一筋縄では唄わない(調音が難しい)感覚がある、その為、一度聴いた
くらいだと、詞の持つ意味(一般論として難解な詞)がダイレクトに来ない、何回か聴くとジワジワと考えさせるような感じ、でも楽曲が凄くクールなので
また聴いてしまう、この辺り、「P」の術中にはまってしまっているのかもしれないが、快く受け入れよう~

ミクの日感謝祭 / Miku 39's Giving Day HD - 30.炉心融解

初音ミク Wiki - 炉心融解

(5)カラレス

初音ミク - カラレス

初音ミク Wiki - カラレス

この曲もPVと楽曲の妙が発揮されているコンポーネント、このような完成度のコンポーネントが沢山あるのは本当に素晴らしい。

メディアプレイヤー(12月22日版)

Jコミで「らぶひな」が全巻がPDF形式で無償公開された。
PDFにはCMページとリンクが入っており、そのページ(リンク)をクリックする事で、CMのURLへジャンプするようになっている。

自分の「本プレイヤー」(ブックリーダー)は、「自炊」ファイルが対象なので、PDFを直接読む事は出来ない、それで、実験的にPDFからJPEG画像を取り出して、アーカイブしたものの、結構、面倒で時間がかかる作業だと判った、まず、画像の解像度(DPI)を指定しなければならないが、大きすぎても小さすぎても駄目な為、適当なDPI値を探る必要がある点、一番問題なのは、リンクが無くなる事で、CMへのリダイレクトが無くなり、「無償公開」の「意義」が損なわれる点。
これは、問題だ!、そこで、オープンソースのPDFリーダーを探していた、いくつかあるようだが、多少の情報収集から、SumatraPDFが良さそうと思い、早速自分のシステムに取り込んでみた。

「SumatraPDF」はC言語で書かれていて、フォントの描画はFreetype2、それに、JPEG、Jpeg2000、big2dec、PNG、Z-lib などオープンソースのライブラリーを使って構築されている。

それに先立ち、cygwin 上に新しく追加された mingw のクロスコンパイラ環境をインストールした。
以前は、gcc3 では、Windowsのコンパイル用に、「-mno-cygwin」オプションを使っていたが、新しい gcc4 系では仕様が変り「-mno-cygwin」が廃止された為コンパイル出来なかったのだが、クロスコンパイル環境を別途インストールしてWindowsのプログラムをコンパイル出来るようになった為、ようやく最新のコンパイラでWindowsのコンパイルも出来るようになった。

次に、自分のシステムに無いものとして、Jpeg2000、big2decなどがある為、まず、そこからライブラリーの作成組み込みを行った、ソースコードを取得して、mingw クロスコンパイラを使って各ソースをコンパイル、ライブラリーを作成した。

次にSumatraPDF本体を取得して、ライブラリーをコンパイル、mingw用に多少手直ししたが、これもなんとか上手く出来あがった。

次に、「apps」にあるアプリケーションのソースコードを頼りに、C++のラッパーを作成し、ブックリーダーのコア部分「pager」クラスに組み込んでみて、レンダリングさせてみたが、とりあえず動作しているようだ、一般的なPDFも食わせてみたが、フォントの描画がイマイチおかしい部分はあるものの、普通に描画できる(素晴らしい!)

後はリンクなどの処理を加えれば良い感じだけど、これは、まだ考え中で開発中。
※GUIは、基本、今までのようにしておき、そこにリンク部分を追加したい。

で、最新版をアーカイブに入れた。
コンパイル済みライブラリーやヘッダーファイルも「mingw」のアーカイブに入れておく。