2014年7月22日火曜日

LPC810をサンプルソースでLチカ!とリセットピンの扱い

※LPCマイコンをmbed以外で触るのは初めてです。間違っているところが多々あるかもしれません。。。

LPCXpresso付属のサンプルソースを使ってLチカしてみます。
LPCXpressoのお勉強とNXP流のお作法を習うためですね。

 サンプルソースの在処はインストール先のパスを変更していなければ、下記のフォルダにあります。
C:\nxp\LPCXpresso_XXX(バージョン)\lpcxpresso\Examples\NXP\LPC800\NXP_LPC8xx_SampleCodeBundle.zip

LPCXpressoのZIPインポートでサンプルを指定

使用するのは
・systick
・CMSIS_CORE_LPC8xx
・lpc800_driver_lib
の3つだけなのでそれぞれチェックを入れます。

インポートが完了したらプロジェクトの設定を変更します。
まずはビルド高速化のために”Enable Pararellel build”にチェックを入れます。

次に使用するマイコンの設定
デフォルトではLPC812なので変更します。
パラレルビルドと使用マイコンの変更は、同時にインポートした ”CMSIS_CORE_LPC8xx”プロジェクトと”lpc800_driver_lib"プロジェクトにも行いましょう。

最後にソースを変更して、P0_0を1000ms間隔でチカチカするように変更してビルド、書き込めば・・・

 ハイ、Lチカができましたー。

ただこの状態だと1番ピンのRESETが有効なのでIOとして使えません。
ついでにIOとして使うための方法もやってみます。

※ちなみにこれを実施したプログラムを書くと、電源投入後のISP(イカ醤油ポッポ焼き)ができません。
ISPするためには1番ピンをLに落とした状態で電源を投入すればISPが可能になります。
SWDには影響ありません。

まずはNXP Switch Matrix Tool(要Java)をダウンロードします。リンクはこちら↓
http://www.lpcware.com/content/nxpfile/nxp-switch-matrix-tool-lpc800

ダウンロードしたSwitch Matrix Toolを起動。
一番左のLPC810を選択。

この画面でそれぞれのピンにどの機能を割り当てられるか決定することができます。
1番ピンをクリックすると

選択肢にRESET、PIO0_5、ACMP_0が出てきました。
普通のIOポートとして使いたいのでPIO0_5を選択します。

 ”Configure I/O”タブより各ピンの詳細設定ができます。
特に変更する点はないのでそのままです。

右上の”Export”より設定用Cファイル、swm.cとioconf.cをsystick\srcフォルダに出力します。

プロジェクトをリロードするとLPCXpressoでも読み込まれているかと思います。
systicktest.cのGPIOInit関数を呼んだ後に、IOCONInit(ioconf.cより)とSwitchMatrix_Init(swm.cより)を実行するようにソースを修正します。

このままビルドすると宣言ワーニングが出ちゃうので、 IOCONInit関数とSwitchMatrix_Init関数の引数をvoidに修正しておけば完璧です。

これでビルドし、書き込めばリセットは無効になります。
ただし、はじめに記述した通り、電源投入時にLだとISPモードになってしまいます。つまり、入力ポートとして使用する場合、電源投入時はHの状態になるような使い方しかできません。
出力ポートとして使用する分にも、電源投入時Lに落とされているとISPモードになっていまいます。
(Hi-Zなら問題ないはず。。。 )

2014年7月19日土曜日

PC TV with nasneの保存先を別HDDにする

VAIOのみバンドルされており、一般発売されていなかった「VAIO TV with nasne」ですが、先日より「PC TV with nasne」と名称を変更してネット販売されるようになりました。
今まで「DiXiM Digital TV plus」で視聴していましたが、番組表機能はない、nasneの予約管理機能もないで、PS3のnasneアプリと比べると機能が足りないものでした。

しかし、「PC TV with nasne」なら予約の管理、番組表はもちろん、ブルーレイへのライティング機能、PCのローカルディスクに保存する機能がついた上で3000円という、かなりお買い得で使いやすいソフトです。
ただひとつ、不満があるとすればnasneからPCへデータを保存する際に、保存先のドライブがCドライブ固定な点ですね。今どきのPC構成として、CドライブはSSD、データ保存用に3Tの HDDという構成は珍しくないので、そういう人たちからすると、Cドライブに保存されるのは都合が悪いわけです。

そこでWindowsのジャンクション機能を利用します。

nasneから転送してきたデータは
”C:\VNTApp\Contents”に保存されています。
このContentsフォルダを別なHDDにリンクするように設定するのです。

やり方は簡単
(但し、これから行う操作を理解し、自己責任の上で行ってください。なんらかの不都合が生じても私は知りません。)
①PC TV with nasneを終了させる
②C:\VNTApp\Contentsフォルダを移動先のドライブに移動
 (僕の場合はF:\UserLibrary\nasne_recの中に移動させました)
③コマンドプロンプトを開いて
④cd C:\VNTApp
⑤mklink /D /J Contents F:\UserLibrary\nasne_rec\Contents
C:\VNTAppフォルダを見てみるとContentsフォルダへのショートカットアイコンができているハズです。それを開いてみるとあら不思議。Fドライブに移動させたはずなのにパスの表示はC:\VNTApp\Contentsになっています。これがジャンクション機能です。

この状態でPC TV with nasneを起動すると、PCに保存されている映像も普通に見れるかと思います。
但しこのやり方にも欠点がひとつ。PC TV with nasneはCドライブの空き容量に対して転送するデータが大きい場合には転送しません。
つまりCドライブの空きが40Gに対して、転送するデータが50Gだとすると、そのデータは転送できないということです。そもそも1つの録画で40Gとかそんな大食いすることはないとは思いますが、アニメの1シーズンをまとめて選択したりすると起こりえます。
そんな時は仕方がないので、容量が収まる分だけ選択して転送の繰り返しです。。。

2014年7月18日金曜日

コマンドラインからARMマイコンへプログラム書き込み

LPCXpresso LPC1769はmbed LPC1768の互換ボードとして使えるわけですが、ちょっと不便なのがD&Dによるバイナリ書き込みができない点です。
 一般的なのがLPCXpressoからバイナリ書き込みだと思います。
自前のmbed書き込みツールで対応させたいと考えましたが、コマンドプロンプトの引数書き込みには対応していないっぽいです。

そこで見つけたのがCoFlashです。
通常はGUIで操作できますが、引数指定による書き込みもできることが分かりました。

CooCox CoFlash Quick Start with command line
http://www.coocox.org/CoFlashGuide/CoFlash_QuickStartwithcommandline.htm

LPCXpresso LPC1769にLPC-Link2(CMSIS-DAPモード)で書き込む際の引数としてはこんな感じになります。

coflash.exe program LPC1769 "F:\UserLibrary\Desktop\flash.bin" --driver="C:\Program Files (x86)\CooCox\CoFlash\flash\LPC17xx_512.elf" --adapter-name=CMSIS-DAP -v=false

-vでベリファイを無効化していますが、オンラインコンパイラから落としてきたbinファイルではベリファイに必要な情報が入ってないっぽいため、無効化しています。

CoFlashによる書き込みに対応しているアダプタは以下のとおりです。

CooCox ColinkEx, Colink
ARM CMSIS-DAP
Nuvoton Nulink
Olimex Olimex-OpenOCD
TI Stellaris-ICDI
KrisTech KT-Link
NGX NGX-USB-JTAG
Micromint picoJTAG
Amontec JTAGkey
100ask.net OpenJTAG
Holtek e-Link32
ST ST-Link
CoiNel CoiNel-CoLinkEx, CoiNel-USB-JTAG
RDSS ARLinkEx

この中でmbedに関連するとしたら、CMSIS-DAPとST-Linkくらいでしょうか。

近いうちにCoFlashの自動書き込みツールとしてmbed AutoTransferを対応させようかと思います。
オンラインコンパイラから落としてきたバイナリを自動で書き込むことができるようになります。
・・・あんまり需要ないような気もするけど(;´Д`)

2014年7月17日木曜日

NT金沢2014お疲れ様でした

本当に今回のNT金沢はギリギリの開発ですた。。。
展示用荷物便に間に合わなかったため、高速バスの荷物と一緒に銀座線行き先表示板を持っていくことに。重かったー><;

 会場は金沢駅のすぐ近くの「もてなしドーム」 でした。
そういや去年ここ通った時なんぞこれ?だったなぁ

 今回の展示はこんな感じで、乗合馬車電光掲示板・ブルースクリーン自爆スイッチ・円形ディスプレイの3つを展示していました。
意外にもブルースクリーン自爆スイッチはウケが良かったですねw

あと超会議3にて購入した”銀座線行き先表示板” をひろこさんのコスプレ用に改造しました。
中々好評で頑張った甲斐があったというものでした。 
あーだこーだ言い合いながらひろこさん制作のコスプレ衣装、かわえかった!
(実は当日朝に完成したという。。。僕の行き先表示板もソフトは朝方3時間で0から作りました。。。進捗ギリギリの展示ですた)


2日目になると去年のNT金沢にもいたシャルロッテさん(@y_u_z_u_whiteさん作)だけでなく・・・

ちっちゃい方のシャルロッテも!かわええ!(*´ω`*)

超会議3で見れなかったニコニコプラネタリウムも見れますた。

ピャー!あぴミクちゃーん!でかい!
残念ながらBパターンしか見てません。。。
うぅ、4パターンもあるとは知らんかったよorz

 その他コアラのマーチ振り機とか

プロ生ちゃん!!!

ホモォ・・・

 写真を撮り忘れてたため、他の展示物の写真ないです。。。orz

 NT金沢終了後の翌日は観光に、猫寺こと御誕生寺に行きました。

到着すると・・・ん・・・?!

 にゃああああ!!!


ちょうどご飯の時間でした。
うっひょおおおおおおお猫いっぱいだあああああああ!!

 ひとしきり食べ終えると思い思いにゴロンとお昼寝開始。
かわえええww


 なにか貫禄を思わせる猫

駐車場でも構わずお昼寝w

 夕方の5時になると、時間を知らせる鐘が鳴りました。
ネコみんなビクってなるかと思って撮影してましたが、全く動じず。
みんな慣れてるんですねー
(かなり音量小さいです。ごめんなさい)
video


 鐘のところに行ってみると、”ご自由に おつきください”との張り紙が。
では折角なので・・・ゴーン!!


結構がんばって振りかぶったので、それなりに鳴りましたw

おみくじ引いてみたり。
金運アップの黄色い招き猫が入ってました。おみくじは末吉。書いてる内容が現状を表していてうーん(;´Д`)

1000円寄付で肉球のお守りと、1000円でお香「にゃん香」を買いました。
まだ焚いてないですが、新緑の香りはすごくいい香りがします。使うのがもったいないくらいですw

夕食はB級グルメ「ボルガライス+ハンバーグ」を頂きました。
うんまーい(*´ω`*)

帰りの夜行バス乗る前に駅で発見したもの。
なんじゃこりゃ(;´Д`)

また来年も行きます!

2014年7月5日土曜日

馬車電光掲示板にツイート表示できたァ!

video

NT金沢で展示します。
またUSTなどで電光掲示板の様子を配信し、ネット経由で文字を出させる様子を楽しめるようにする予定ですん。

//2015.01.23
//ラズパイ側のpythonソース

2014年7月1日火曜日

ラズパイのシリアルポートをコンソールログインせず使用する

シリアルコンソールからログインしないとttyAMA0が使用できない件について、解決法が分かったのでメモしておきます。( ざます先輩ありがとうございましたm(_ _)m )

はじめに、今までシリアルポート(ttyAMA0)を汎用化するにはシリアルコンソールからのログインをしないよう設定を変更する必要がありました。
参考:備忘録 Raspberry PiでUART、シリアル通信 

ただ、シリアルコンソールからのログイン中であれば、VNC上のターミナルからでもttyAMA0を叩くと使用できることが分かりました。
また、シリアルコンソールでログインせずともrootであればVNC上のターミナルから同じく使用できることも分かりました。(sudo ではダメ)
それを踏まえて、VNCからのログインやSSHなどシリアルコンソール以外でログインしてもttyAMA0を使用できるようにします。

piユーザの所属をttyに変更する
$ sudo usermod -G tty pi

udevの新規ルールを作成
$ cd /etc/udev/rules.d
$ sudo vi z99_mydeivice.rules
$ cat vi z99_mydeivice.rules
KERNEL=="ttyAMA0",GROUP="tty",ATTRS{id}=="00341011" SUBSYSTEM="tty", MODE="0666", OPTIONS="last_rule"

以上で設定完了です。次回起動時からpiユーザに限り、シリアルポートが使用可能になります。