目次
コメントはありません。 Comments/nishino
#region(作業計画)
とりあえずここまで。
#endregion
PSoCにプログラマブル・ゲイン・アンプ(PGA)あった!
発光ダイオードなんか挟まなくても、何の問題もないじゃないかorz
自作のPSoC評価基板に実装した機能まとめ。
・P0[0]〜P0[7]…汎用ポート1(5V)
・P1[0]…SDATA
・P1[1]…SCLK
・P1[2]…RX
・P1[3]…TX
・P1[4]〜P1[7]…汎用ポート2
・P2[0]〜P2[6]…LCD
・P2[7]…空きピン
POSに使うピン
・P0[1]…スイッチ[0]
・P0[3]…フォースリアクタ[0]
・P0[4]…フォースリアクタ[1]
・P0[5]…GP2Y0A21YK
・P0[1]…スイッチ[1]
土日の間にPOS用基盤は完成しそうです。
ロジックアナライザktkr
暇を見てFPGA買います。
いつも使ってるPSoCの基板上へ新たに3.3Vピンを実装するため実験。
5V用の信号に発光ダイオードを挟んで試すと、予想通りとはいえ、ちゃんと3.3V用にレベル変換できて驚いた。
(発光ダイオードのVFが2Vくらいなので並列につなげると3.3V用になる)
電源だけは三端子レギュレータでちゃんとレベル変換しているから問題はでないと思うんだけどな……。
取り敢えず簡単に実装できるんで、不具合が出なければ使います。
【必要な部品】
・発光ダイオード x2
・1kΩ x2
モーター制御用(2個)ならこれでおk
電流的な問題があるので、たくさん付けるのは無理です。
格安ロジアナであるZEROPLUS LAP-C(16032)で信号をとってみた結果。
中身が上位機種と同じだからってEEPry
POSの振動子はイヤホンで大丈夫かと思ったが五月蝿すぎて無理だった。コーン紙を破って試してみたところ、振動を全然感じない。頑張って電流流しまくったら、熱くなりすぎでイヤホンに触れないという無残すぎる結果にorz
というわけで、DS振動カートリッジをバラしてモーターをゲット。これでPOS用の振動子が手に入った。
DS振動モーターは矩形波の周波数に応じて回転数が変わる優れモノ。
2つのモーターの周波数をPSoCで制御しすることでファントムセンセーションを起こす。
【POS概要】
・板の上に手を置くことで、手のひら上の任意の場所に刺激呈示を行う。
・周波数はPSoCで矩形波を出すことで制御し、ユーザーからの入力に応じてPhSを喚起する場所をずらす(時間がなければ可変抵抗。時間があれば距離モジュールか加速度センサーを使う)
【買うもの(欲しいものリスト)】
・ロジックアナライザ
・FPGA評価ボード
デジボルしか持ってない俺涙目。
最近ネタがひど過ぎるので、そろそろ自重します。
なんでこんなに荒れているのかというと、スパコン組みたい→金無い→orz
汎用性と予算の都合で、コスパの高いRadeon x 4+ PS3 x 5台くらいになりそうです。PC側のCPUは悩むところ。
スパコン(笑)とか言わないで…貧乏学生ナメんなよ!
というわけでPlan9っ子の俺はPS3向けにPlan9をチューニングしようと考えたが、成功するのか分からん。
最初は1000BASE-Tでつないでやってみるが、通信速度が致命的な場合はHDMIのポート使って通信するかもワカンネ。
HDMIのポート使って通信するのは技術的なハードルが高すぎるので(というかほぼ不可能)出来る気はしない。だが、学生は無謀なことをやるくらいで丁度いい気も。
一応、FLOPSとしては0.15x5+2.7x4+0.05x1くらいで=12TFLOPSくらいになりそう。理論値なんて信じられないが。
MIPSとFLOPSの兼ね合いを付けるとしたらCELL一択しかないので予算的にPS3使うしかなかった…。
Q.なんで12TFLOPS?
A.Cray-XT5-HEの1ラックの性能が12TFLOPSくらいらしいので。
Q.新型PS3使えるの?
A.ホゲホゲすればなんとか。最新のバージョンでも穴有りそうな予感。というか解析が趣味なので、暇つぶしにちょうどいいです。
Q.ホントに出来るの?
A.大学生以上にくだらないことに時間を使える人種は他にいません。時間x熱意=無限大の可能性(キリッ
誰か俺にお金ください。マジで。
で、なんでそんな性能いるのかというと昨日のアレもアレだが、自分はバイオの研究者になりたいのです。
形態形成のシミュレーションでもしようかなと思って論文見てたら、当然ですが超処理能力がいるわけで…。
つーか、TOP500に入るくらいのを造らないと、シミュレーションとか無理w
取り敢えず現実的なところから性能を攻めてみるかという次第。シミュレーションする生物を限定すれば微小な差に落ち着くので、シミュレーション可能だと思われ。
というわけで以下、バイオのメモ。
【形態形成の発現に関わる要因】
・遺伝子の表現型 e.g.外見ならホメオボックスのタンパク質配列のあたり
・環境要因依存の遺伝子スイッチ e.g.チロシン→チロシナーゼ(温度感受性変異)→メラニン
・エピジェネシス e.g.三毛猫の毛色
【遺伝子組換え】
・酵母相同組換え法
形質転換法
【トランスフェクション】
・リン酸カリウム法
・リポフェクション法
・エレクトロポレーション法
【ウイスルベクター】
・アデノウイルスベクター
・レトロウイルスベクター
・レンチウイルスベクター
・アデノ随伴ウイルス
【動物細胞への染色体導入】
微小核細胞融合法
【異種間核移植について】
近縁種でないと未受精卵に含まれている物質がかなり異なる。成体まで発生するは難しい。
【蛋白質の合成速度うp】
細菌や古細菌の平均的な翻訳速度は毎秒20アミノ酸であり、核生物の翻訳は平均毎秒2〜4アミノ酸と言われている。タンパク質の立体構造形成に関わる時間は、ものによるが
のでしょうが生体内では瞬時に行われるらしい。これは分子シャペロンなどの別の触媒蛋白質が蛋白質立体構造形成をサポートするためだと考えられている。
某先生様。質問に答えて頂き本当にありがとうございました。
実は友達とゲームを作っている。
ありえないシステムの凝り方なので、何年後にできるか分かんないが…。
そこで音声合成システムをつくっておりまする。
実は音声工学に関して自分はムダなほど詳しい。
だって美少女にエロいこといわせたいじゃん!
モーショングラフの音声版(ボイスグラフとでもしておく?)を作成してみた感じかなりなめらかに喋った。(ちょっといろんな意味で公開できそうにないのが申し訳ないが、簡単にいうと人力ボーカロイドレベル)
音声データとそれに対応するテキストを用意するのがすごくシンドイので自作ツールでちちんぷいぷいして数100MB分揃えた。
そんな感じなので、どんな文章でもおkってわけではないが。
まぁ、某変態的友人の協力により莫大な音声サンプルが手に入ったため、なんとかなりそうな感じがする。美少女ゲーム大国日本バンザイ!
100GB分くらい(圧縮アーカイブなのに)の音声データのビットレート合わてグラフ作成するのはちょっとスペック的な意味で発狂しそうです。
これで1キャラ分ってwwwどんだけハイスペックゲームにするきだwww
とにかくノードをたどってエッジを再生することで音声データを作成するわけだが、実装の際には、モーションでいうところの動作ブレンディング処理が必要になるのでプログラムがクソめんどくさくて数学真面目にやらないとどうしようもないorz
他人の音声であってもVocaListenerっぽいことをさせると、(自力で作ったんで同じか分からん)びみょーな感じで使いまわせて、他の人もしゃべってくれる。モーショングラフほどではないっす。
喘ぎ声に関してはボイスグラフが最強すぎる。阿久女イクってレベルじゃねーぞ!完全に本人です。本当にありがとうございます。
最近、伏字がひど過ぎるので俺大学から消されるかもわかんね。
とにかくあざみ様を喋らせなければ。
CVに関しては……いうまでも無いよな?能登かわいいよ能登
今度のマイコンペには触錯覚を利用した工作を出すつもり。
完成しなかったとき用の予備はすでにあるので無茶してもおkなはず。
大学生らしいキーワード「くだらない」「アホ」をモットーとする
"Phantom OPPAI Sensation"
Phantom OPPAI SensationとはOlpa Immesete(1920-2002 スウェーデン)によって発見された触錯現象のことである。
特定の周波数を持つ刺激を皮膚上の二点から与えることで、女性の胸部を押し付けられたような感覚を想起させる。
第二次世界大戦では捕虜の尋問の際に使用されたが、そのあまりの危険性のため、現在ではハーグ陸戦協定によって禁止されている。
民明書房刊 『女体力学系の物理』より
Phantom Obscure Sensation 略して「POS」
あいまいに感覚を再現すっぞ!あいまいクオリティーなのは気にしたら負け。
風邪で死にかけ。俺、この配線が終わったらマイコンペに出品するんだ……。
前回は「次のマイコンペいつ?」→「明日」という悲しい流れだったので今度こそは…。
ちょと頭がgdgdなときは手順を確認しないと確実に失敗するんで、ちゃんと作業をメモりながら。
.如璽織掘璽箸粒稜 E展札轡隋璽箸粒稜 配線の確認
ブレッドボードは楽なので確認がテキトーになりそう。
実装が楽だと「あれ?」とかなりそうなのが怖い。
.如璽織掘璽箸粒稜А
USB-UARTコンバータ
…あれハンダ浮いてね?
一応デジボルで測ってみる。外れてやがるクソがッ端子の端っこが外れてたので修理。あと、シリアル信号は3.3Vのでおkらしい。一応用意してたPSocいらない子。
USB-UART変換
でピンアサイン確認。VDDを繋げばFETスイッチが作動してTarget側と連動するらしい。便利!ちょっとピンアサインが分かりにくいかもしれないので画像うp
データシートでは自分中心でピンアサインが記述されていることが多く、自分がホスト(イニシエータはスカジーだけ?)、相手がターゲットです。
TX(送信)とRX(受信)は対になるのでTX-RX, RX-TXと配線するのは当然ですね。
(受信と送信で一組になるので)
たぶん生徒が平気でRX-RX接続とかするからターゲット側にピンアサインを合わせてるのかもねlアヒャ!
三端子レギュレータ48M033F
5V→3.3Vに変換
33uF以上の平滑コンデンサをINにいれてね!とあった。電解コンデンサ(100μF)あるのでおk
…ブレッドボードにパスコンと平滑コンデンサ積むのはスペース的に辛い。
何とかしてみた結果↓
詰まっておりまする。
電源ショートの確認
デジボルで5V電源とGND、三端子レギュレータのOUTとGNDをつないでショートしていないか確認。(ショートしていると抵抗が0だったり、それに限りなく近い表示が出る。そして部品がふっとんだり壊れたりする。コンデンサ爆弾で死にかけた経験あり)
最低限これだけやっておけば部品が壊れることはない。
G枩の確認
目視で配線を追う。パターンを追うのは人力がやはり最強。
…大丈夫そう?
ここでドライバ(VCP Driver Kit)をダウンロードしてインスコ。
実験開始。
あれ…動かない?ってPSocの電源入れてなかったら動くわけねぇw
電源入れてシリアル通信。速度は4800bps。
GPSマイクロミニ
窓際で実験した結果、衛生を12個ぐらい補足できた。けれど、現在地が出ない…。
Tera Termを使う。Tera Term Proの最新版はオープンソースになって管理されている。そして名前からProがなくなったw
かなり便利になっていますが…Tera Term v4.67(この時点で最新版)はブロードキャストコマンドにバグがあって改行がCRLFで送信できない。(画面から打つ分には問題ない)
デバッグモードで確認したので間違いないです。誰かバグ報告してください。
他にもバグがありそうだったのでツール変更。これが結果として吉と出る。
実験に役立ったすばらしいツール。
NMEA Monitor for windows
分かりやすッ!しかもコマンド送れるし…ログのフィルターもかけられる。
試行錯誤すること数時間。
外に出た瞬間につながったwwwww
なんというヒキコモリ対策wwwwww
……だが、その甘い考えはもろくも崩れ去った。
3.3Vと5Vで動かしてベンチマークをとった結果、すばらしいことがわかったのでまとめ。
【こんな場所では受信できない】
1.窓際ではダメ。ガラスに負ける。
2.窓を開けてもダメ。日差に負ける。
3.外に出るのが面倒だからといってタッパに入れて外に出してもダメ。フタに負ける。
3.外に出てもダメ。くもりだと雲に負ける
【受信できる場所】
雲ひとつないで空で、360度見渡せる場所。
そして何より類まれな運が必要なので、パワースポットとかいーんじゃないかなー。
【結論】
富士山の山頂でテルテル坊主の仮装をしながらGPSマイクロミニを空に掲げて走れ。
俺の土曜日を返せ。
まとめると、衛星を9個以上好感度で受信しないと現在地が出せない。という条件が恐ろしいほど足を引きずっている。
[10/12追記]衛星を3個以上好感度で受信すれば取得できる模様。資料の読み間違いみたいです。基板メーカーさんごめんなさい。
さらに、このモジュールの付属アンテナはものすごく感度が悪いらしく、ガラス一枚程度で感度が下がり現在地取得が利用できなくなった。
こんなに感度がシビアなら書いておくれよ。
[10/12追記]よく晴れた日であれば、見晴らしの良い屋内でも補足できるらしいです。
あと、3.3Vと5Vだと心なしか5Vのほうが感度がよかった気がするが、雲が出てないことのほうが遥かに大事。ちっちゃい以外取り柄ないとかいうな!むしろ、あまりのアレっぷりに愛着すら沸く。
電子工作ゥー復活ッ!
というわけで、小松原先輩にGPSモジュール(GPSマイクロミニ)とブレッドボード一式を借りた。
ハンダの匂いがしない電子工作って不思議な感じがする。
…実はブレッドボードってあんまり使ったことがないのでちょっとドキドキ。
このGPSモジュールが超不思議仕様で、衛生位置が取得できるのに現在地が出せない。
自分で試してみたところ、ターミナルでコマンドが送れないという問題も発覚。データシートとの全面対決か始まる!
その前に、俺の記憶的にもノイズ的にも怪しそうな三端子レギュレータの仕組みを復習。
あー、動作が怪しいときはちゃんと電源にパスコンを挟まないとダメなのをすっかり忘れてた。
三端子レギュレータには平滑コンデンサとパスコンつけてあげないと。
【明日取りに行くもの】
セラミックコンデンサ(0.1μF)x4
電解コンデンサ(100μF)x1
回路を安定させてから、実験を開始してみる。
【問題点まとめ】
・現在地取得
・ターミナルでコマンド送信
・俺のやる気
GPGPUは奥が深い…というか、やっぱりまだ開発段階の環境だなーというのをひしひしと感じる。そしていろんな環境を揃えようと思うとカネがかかるorz
平野先生にメールを送ってみた結果、学校にもちゃんとGPGPUを試せる環境があるらしい。よかったー。
・nVIDIAのGeForce 9800 GTX
・ATI (AMD) のRadeon HD 4670
これでCUDAも何とかなりそう。
しかし、いろんなの触った個人的な感想(感覚?)だが、CellのSPUの汎用性は突出してすごい。GPGPUとは真逆になる?のかもしれないが、グラボの足りない処理を上乗せして計算できる。普通のCPUじゃここまでは無理。
どっち付かずというビミョーな立ち位置ではあるが、GPGPUのような「存在する処理能力を限界まで使い切りたい!」というときの要望に応えるには最高のアーキテクチャだと思う。
逆に言えば、歯磨き粉をひねり出すような高速化を追求したい変態プログラマー向き。
そう考えるとPS3は実質SPUx6+RSXx1でジオメトリ処理できるので、描画処理的にみれば恐ろしい演算速度である。(バスの速度もあるので一概には言えないが)
ぶっちゃけゲーム機能がいらない気がしてくる不思議。というかゲーム用にはどう考えてもメモリ少ないし…。PS3をごにょごにょして開発環境整えれば誰でも開発できるし…。
※高画質にするにはテクスチャの入れ替えが一番簡単なのだが、PS3はメモリ容量の関係で高画質のテクスチャを扱いづらい。ロード時間にも直結するところなので、超解像技術を使って誤魔化そうとしたら、SPU三つくらい使って意味ナスwwwという事態になる。あまりに絶望的なトレードオフにPCプログラマーに寝返ったヤツもきっといるはず。
まぁ、グラボの進化速度が凄すぎでHD5970の時点で4.64TFLOPSあるらしいので、PS3で頑張ってもGPU性能がお話にならないのは悲しい事実ではあるが。
そんなわけではあるが、そろそろ香しきハンダの匂いにつられて電子工作するかも。
ダイナミックに変化するストリーミングによるインタラクティブ音楽の実現…まぁアルトネリコ3なんですが……。
仕組みを見るために戦闘していたら、いつの間にかDLCをダウンロードしてた。
ntnyの策略かッ!アルルとチュッチュしまくってたら裸眼立体視の選択肢がでてきた驚いたのは内緒。俺、このプログラミングが終わったらAKI団に入るんだ。
そんなわけで部員の中でCEDEC2010に興味あった人は連絡くれたら講演のpdfあるんでなんとかなりそうです。
物理エンジンつくろうず。
あと、東大であった第1回並列計算セミナーの動画がUSTREAMに上げられてます。
第1回並列計算セミナー
行きたかったぜ…という人は見ときましょう。
あとGoogle グループ上にコミュニティがあるので参加したい人は是非お願いします。
そろそろXperiaもアップデート来るのでプログラミング本気だす・・・?
Effective Javaの本がけっこう面白い。
衝撃の事実発覚。
ATI Stream SDKの対応カードにHD3XXXもHD2XXXが書いてない……だと……!?
きれいな顔してるだろ?ウソみたいだろ。死んでるんだぜ、それで…
つまりオワタ。
オ、オ、オワターオワオワオワター♪
\ オオオオワターオワオオワオワタ/
♪\(^o^) ♪
_ ) > _ キュッキュ♪
/.◎。/◎。/|
\(^o^)/.| ̄ ̄ ̄ ̄ ̄| | \(^o^)/
) ) .| |/
ベンチマークとると微妙に効いてるのでそれに賭けるしか…。
まぁ、ここはチラ裏じゃねーんだぞ!とそろそろ怒られそうなので、ちょっとタメになることを書いときます。
Q.
Springhead2をVS2010でコンパイルしたら大変なことに。
〜M.lib関連のErrorどうすれば?
A.
ReleaseDllのTargetNameとLib.OutputFileでの名前が違うのが問題。
デフォルトでどうなのかはわからないけれど自分の環境では
(TargetName).lib < (Lib.OutputFile)
だったので、Lib.OutputFileを修正してやればおk
(そのままだと、TargetNameは「$(PROJECTNAME)10M」、Lib.OutputFileは「$(PROJECTNAME)10.lib」となり、
$(PROJECTNAME)10M.libが出力されるべきビルドで$(PROJECTNAME)10.libが出力される。ReleaseとReleaseDllでの出力ファイルの名前が一緒なので宇宙ヤバイ)
自分は他にハマるのが面倒だっので全部のプロジェクトで
すべての構成-ライブラリアン-全般-出力ファイル <親またはプロジェクトの既定値から継承>に設定
と直しました。これでerror出ることはなくなります。
※補足
TargetName(=構成プロパティ-全般-ターゲット名)
Lib.OutputFile(=ライブラリアン-全般-出力ファイル)
ついでにいうと、設定してライブラリ作ってもSampleソースが
管理されてないので、そこでまたコケますw
他にもwarningやsampleで手直ししなければならないところがたくさんあるので、現在まとめてます。
発狂なう。
OpenMP! Cilk! インテル Parallel Studio! ヒャッハー!!
やはり学生の本分は勉強なのか…。趣味に生きたいってのに。
こうやってCすら危ういプログラマーが大学から量産されry
KKT条件(キリッ とか正直かんべんしてくれ。最適化の魔窟にハマりんぐ。
わーい数学だーい。わーい数学だーい。
というか、日本語の資料が少なすぎるよママン。
そういや思い出したのだが、Cilkを使えばC++でもArray Notationやエレメント型関数が使えるんだぜ!
Fortranのパクリなんだが、コンパイラが並列用に最適化しやすいんだって。
というかAMD+Radeonとか俺マイノリティ。IntelコンパイラもSSE4aに最適化とかしてくれよ!PGIコンパイラ持ってねーんだよ!
とにかくSpringhead2のソースコードを読みながら物理エンジン研究中。
泣きたくなったのでSpringhead2をDirectX10に対応させてきまふ。
Xperiaのアップデートが来るたびにOSのバージョン見て絶望している俺がいる。
そんなこんなで、ソースコード読みすぎて頭おかしくなってきたので久しぶりに更新。
最近、自分の中でプログラミング熱が加熱しすぎて、物理エンジンに着手したけれど泥沼。
結果こうなる↓
∩___∩
| ノ ヽ/⌒) あばばばばばば
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/ ∩―−、
.( ヽ |∪| / / (゚) 、_ `ヽ
\ ヽノ / / ( ● (゚) |つ
/ / | /(入__ノ ミ あばばっあびゃばびゃばば
| / 、 (_/ ノ
| /\ \ \___ ノ゙ ─ー
| / ) ) \ _
∪ ( \ \ \
\_)
さらに、こうなる↓
∩___∩三 ー_ ∩___∩
|ノ 三-二 ー二三 ノ ヽ
/ (゚) (゚)三二-  ̄ - 三 (゚) (゚) |
| ( _●_) ミ三二 - ー二三 ( _●_) ミ ウオーォオォーアッヒャアアアウオホーオオオオオ
彡、 |∪| 、` ̄ ̄三- 三 彡、 |∪| ミ テンション上がってきた!!テンション上がってきた!!
/ __ ヽノ Y ̄) 三 三 (/' ヽノ_ |
(___) ∩___∩_ノ ヽ/ (___)
一月で100万行書けって…? うはwwwおkwwww
スパゲティコード的な意味で空飛ぶスパゲッティ・モンスター教の信者になりそう。
まぁ、ソースコードの管理はmercurialつかったら問題なくなったが。
物理エンジンをATIStreamとCUDAに対応させてLANでつないでPS3をアクセラレータにするという壮大な計画は、資料集めの時点でヤバイことに。
というか翻訳とプログラミングの同時進行は結構限界がありまっする。どう考えても、ドキュメント作成者くらいは欲しいよねorz
PS3のほうはGeekが脱獄してくれたおかげで、アクセラレータとして動かせそうな感じがバリバリします。
というわけで、一人の限界を感じたので金沢大学にプログラミングサークルを作りたくなった。活動内容はGPGPUとかOSとか解析とかアーキテクチャ寄りのことになりそうだけど。
「ただの人間には興味ありません。この中にプログラマー、ハッカー、数学者、翻訳者がいたら、あたしのところに来なさい。以上。」
ぶっちゃけただの人間が一番欲しいんだが、入ってくれそうな人はいるんだろうか…。
というわけで問題はサークルの人員集めである。
山根研に突撃するしかないのか。スーパーハカー(キリッ をどっかから探すしかないのか…。
今こそ金沢大学の電子情報学類の底力ってヤツをお願いですから分けてくださいplz
トラ技78Kマイコンとユニバーサル基板のパターンが、同時にやばい数の剥離を起こしたため、涙ながらに直す作業へ。
…もう二度と剥離なんかさせないと心に誓うレベルのしんどさでしたorz
そして久しぶりに調べて分かったこと。
【トラ技2008年8月号付録企画】付録NEC78K0 USBマイコン基板同等品
…これはポチりたくなってまうではないか。意外に安いし。
まぁ…トラ技2008年8月号が1090円だったことを考えるとあれだが。
そしていつのまにかHIDデバイスとして認識できるようになったみたい。
USBファンクションHIDクラスドライバ
ソースちょこっとしか理解できてないんで、他のデバイスになれるのか不明だが俺のやる気技術では無理そうな感じ。気が向いたらHIDデバイス作ってみるかも。
Windows x64のうんkなドライバ署名のためにUSBデバイスの自作はこれから廃れる一方かもしれないけど、俺頑張れ。超頑張れ。趣味に生きろ。
USBデバイスのオレオレ証明書※1がたまに失敗する理由がさっぱり分からん。
というか、オレオレ署名付きで配ったらライセンス違反なのか?
※1ドライバ開発のためのテスト署名を作成すること。bcdedit /set TESTSIGNING ONでテスト署名使用が有効化される。RemoveWatermarkX64でテストモードの文字は消せる。けれど、BD再生などがテストモードではできなくなるらしい。(BDドライブもってないので確認できない)
ただ署名のある汎用ドライバ(WinUSBみたいな)使えば、inf書き換えだけでおkなはず。
猫 ◆tCHWINGPEIさんもやってるし、たぶん大丈夫。ライセンス違反ではないはず。たぶん。
というわけで、署名のある汎用ドライバを咬ませてから通信すればフツーにUSBデバイスと通信出来ます。
「トラ技78Kマイコン×PSoC」
腐女子脳の皆様こんにちは!
攻めだとか受けだとかぐだぐだ抜かす前に、男なら尻アル…もといシリアル通信するべし。
でも、シリアル通信コネクタも変換ケーブルもねーよorz
というわけで、トラ技78Kマイコンを使ってPSoCとのシリアル通信に挑戦。
もはやレガシーではない!ビバ、脱レガシー。
…でも、ぶっちゃけ78Kマイコン使うほどのことじゃないような。
関係ないけど、今さらkobaさんのグラフィカルなページをさっき見つけて感動。
リスペクトして何かやるかもしれないし、何かやらかすかもしれない。
っは・・・し、静まれ・・・俺の腕よ・・・!!
黒歴史おいしいです^q^
続・printf
cprintfのLCD出力を日本語(半角カナ)に対応させてみた。これでLCDのカタカナ出力が簡単に。データシートにStandard Character Pattern(S0)と書いてあるヤツなら使えるんじゃなかろうか。
全部の記号に対応させようかと思ったけど、それならprintf自前実装したほうがマシ。
#region(簡易版(ス・セの文字が表示できない。))
//日本語(半角カタカナ)を表示するための小細工。 //UTF-8は半角カタカナは3byteになり、先頭2byteがEFBDかEFBEになる //。~-:EFBDA1~EFBDB0 //ア~ソ:EFBDB1~EFBDBF //タ~ン,゙,゚:EFBE80~EFBE9F //表示できない文字 ö,ス,セ int putchar(char c) { int code = (int)c; if((code != 0xEF) && (code != 0xBD) && (code != 0xBE)) { if((0x80 <= code) && (code <= 0x9F)) code = code + 0x40; LCD_1_WriteData((BYTE)code); } return c; }
#endregion
簡単に確かめられるように完全版の全コードを。
#region(半角カナ完全対応版)
#include <m8c.h> #include <stdio.h> #include "PSoCAPI.h" int g_UTF8_High_2bytes = 0; //UTF8の文字コードの上位2バイトを納める //日本語(半角カナ)を表示するための小細工。 //UTF8の半角カナは3bytesになり、先頭2bytesがEFBDかEFBEになる //。~-:EFBDA1~EFBDB0 //ア~ソ:EFBDB1~EFBDBF //タ~ン,゙,゚:EFBE80~EFBE9F //固有2bytes(EFBD,EFBE)に被っている文字 ö,ス,セ //このPSoCのintは16bit = 0000h //UTF8半角カナをLCD用半角カナのキャラクターコードに変換する。 int UTF8_To_S0(int code) { g_UTF8_High_2bytes = g_UTF8_High_2bytes + code; //ö(0xEF)のコードは表示させない if(code == 0xEF) code = 0; //取りあえず,ス,セの文字が来た場合は、UTF8半角カナ固有の2bytes(EFBD,EFBE) ではないことを確認。 if((code == 0xBD) || (code == 0xBE)) { //EFBDかEFBEならUTF8のいらない先頭2bytesなので表示する必要なし。 if ((g_UTF8_High_2bytes == 0xEFBD) || (g_UTF8_High_2bytes == 0xEFBE)) code = 0; } //タ~ン,゙,゚のとき (LCDキャラクターコード) = (UTF8下位1byte) + 0x40 if((0x80 <= code) && (code <= 0x9F)) code = code + 0x40; g_UTF8_High_2bytes = g_UTF8_High_2bytes << 8; //00EFだったらEF00mにな る。次の文字のために下位1byteを開けておく。 return code; } int putchar(char c) { int code = UTF8_To_S0((int)c); if(code != 0) LCD_1_WriteData((BYTE)code); return c; } void main(void) { LCD_1_Start(); LCD_1_Position(0,0); cprintf("MeRL マイコンブ"); LCD_1_Position(1,0); cprintf("リョウリノキホンハサシスセソ"); }
#endregion
※補足:S0はLCDのキャラクターパターンの種類のこと(かな?)
Standard Character Pattern(S0)
どう考えてもグローバル変数長過ぎですねorz
…ソースに直接半角カナで書くなら、マクロで実装したほうがよかった気も。後のこと考えるとビミョーなところだけど。
てか、PSoCデザイナーでコードスニペット使う方法ないかのう…。
PSoCのprintfの使い方が判明。
ただ実装が…。
LCDに出すにはcprintfを使うわけだが、
int putchar(char c)
の関数をいちいち書かなきゃならない。
printfをいろんな出力で使うための苦肉の策なのがよくわかる。苦肉すぎるが。
めんどくせえええええええええええええ!!!!
まぁ、仕方ないと思ってネットで調べるとstrncpy使ってるのばかり。
ちょwww printf使う程度のことにstring.h使うとかやってらんねぇwwww
…というわけでcsprintfをいろんな方法で実装してみた。
もっといい案を教えてエロい人!
#region(BYTEキャスト版)
#include <m8c.h> #include <stdio.h> #include "PSoCAPI.h" int putchar(char c) { LCD_1_WriteData((BYTE)c); return c; } void main(void) { FLASH char* string = "HelloWorld"; LCD_1_Start(); LCD_1_Position(0,0); cprintf("Merl"); cprintf("%c", ':'); cprintf(string); //cprintf("%s", string)の代わり LCD_1_Position(1,0); cprintf("%d:", 16); cprintf("%o:", 16); cprintf("%x:", 16); }
#endregion
#region(csprintf版)
#include <m8c.h> #include <stdio.h> #include "PSoCAPI.h" int putchar(char c) { char str[] = " "; csprintf(str,"%c",c); LCD_1_PrString( str ); return c; } void main(void) { FLASH char* string = "HelloWorld"; LCD_1_Start(); LCD_1_Position(0,0); cprintf("Merl"); cprintf("%c", ':'); cprintf(string); //cprintf("%s", string)の代わり LCD_1_Position(1,0); cprintf("%d:", 16); cprintf("%o:", 16); cprintf("%x:", 16); }
#endregion
#region(strcpy版)
#include <m8c.h> #include <stdio.h> #include <string.h> #include "PSoCAPI.h" int putchar(char c) { char str[] = " "; strncpy( str , &c , 1 ); LCD_1_PrString( str ); return c; } void main(void) { FLASH char* string = "HelloWorld"; LCD_1_Start(); LCD_1_Position(0,0); cprintf("Merl"); cprintf("%c", ':'); cprintf(string); //cprintf("%s", string)の代わり LCD_1_Position(1,0); cprintf("%d:", 16); cprintf("%o:", 16); cprintf("%x:", 16); }
#endregion
%sはstrncpyの方でも使えなかったので、%sが使えないのは仕様にしておく(キリッ
これで使う容量減ったよな…?(チラッ
BYTEキャスト版 | csprintf版 | scrcpy版 |
ROM 13% (4101/32768) | ROM 14% (4335/32768) | ROM 14% (4367/32768) |
RAM 3% (37 bytes) | RAM 3% (39 bytes). | RAM 3% (37 bytes) |
完全に自己満足レベルでしたorz
%s使いたい時は自分で実装するしかないっす。
printf実装はここ参考でおk
これなら%sがprintfで使えるはず。
ぶっちゃけ、この程度の差なら、個人の好きな方法で良い気が。
特に問題がないようなら、自分はBYTEキャスト版で行きます。
車でXperiaを充電しようと思った。
あれ?USB電源からXperia充電できねぇorz
電圧測ると5V出てますね…。分かんねぇ、はっはワロス。
とか思ってググると3秒で疑問氷解した。
Xperiaの充電はD+とD-が短絡してないとできないらしい。
充電器ならD+とD-が短絡してても問題ないのでUSBカーチャージャを改造。
動作確認したところ、ちゃんと動いた。おkおk
マイコンブはiPhoneユーザーの方が多いけど、俺はSony信者&Google信者として孤独に闘い続ける。
…ipadホシイヨー
最近さくさく更新してる。ちょっと感動。
さっそく昨日の自分に突っ込み。S-8100BってVssをGNDにつないでもいけるんじゃね?
データシート見たら特に問題ない感じが。ネットで検索したところ普通にGNDにつないでる人もいたのでなんとかなりそう。
今日はLCDの調整にチャレンジ。
いままでにつくった回路はこんな感じになっていまっする。
日本語(半角カタカナ)の表示に手間取ったのでメモ。
普通に
LCD_1_PrCString("アイウエオ");
とか書いたら、思いっきり文字化けしました。
【必要なヘッダー】
stdio.h
【カタカナ文字列の配列】
char str[ ] = {0xcf, 0xb2, 0xba, 0xdd, 0xcc, 0xde, NULL };
※自分の使っているLCDで「マイコンブ」の文字列となる。
stdio.h をincludeしないとなぜかこの形の配列が宣言できない。イミフ。情報求む。解決。追記参照。
さくっとこのページのタイトル的なモノを作ってみたのでソースあげ。
10/07/10:修正
#include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules void main(void) { // Insert your main routine code here. char str[ ] = {0xcf, 0xb2, 0xba, 0xdd, 0xcc, 0xde, 0}; //文字列「マイコンブ」の宣言 LCD_1_Start(); LCD_1_Position(0,0); //LCDの文字列の始点を決定 LCD_1_PrCString("MeRL "); LCD_1_PrString(str); //上の命令と合わせて「MeRL マイコンブ」と表示される LCD_1_Position(1,7); LCD_1_PrCString("nishino"); }
もうマイコンペの期限が来てもうた。
そこでバーサライタ作ってたけど、距離センサー手に入ったのが今日です。
とりあえずいつものやっておこうか。
orz
10/07/10:追記
NULLが標準で実装されてないことを忘れてたorz
char str[ ] = {0xcf, 0xb2, 0xba, 0xdd, 0xcc, 0xde, NULL }
そりゃstdio.hないとコンパイルで引っかかる。
stdio.hを見たところ、
#define NULL 0
になっていので0でおkみたい。
画像張りテスト。
できた。MiniProgでPSoCに書き込むため、最低限必要な配線の対応図です。
『はじめてのPSoCマイコン』の温度計を作成しようと思ったら大学にLM35ないじゃんorz
というわけで、S-8100Bで代用する方法を考える。
LM35がVs/Vout/GNDであるのに対し、S-8100BはVdd/Vss/Vout
GNDの場所をVssに変更してP0[7]に対応させる。あとはテキトーに説明書見ながら配線すればおkな気がする。
というか、リファレンス電圧いるけどPSoCで出せるの?とか思ったら普通に出せるのね。
PSoCからリファレンス電圧を出す方法→ここ
てか、本のコラムページに2ページまるまる書いてあった。
ACBブロックはアナログ・バス出力しないときはリファレンス電圧出せる。そうなのか!スゴス。全然PSoC使いこなしてないですねorz
俺の脳みそではプルアップ抵抗(S-8100BのCMOS出力バッファの出力インビータンスが高いらしい)がいるかどうかぶっちゃけ分からん。いるなら後で実装。
誰か作ったことある人情報お願いします。
ここより、あんまりマイコンに関係ないメモ。
F5 Networks VPN ClientとUT-VPNサーバを共有したいフォルダのあるパソコンに入れると、
金沢大学内でも、結構簡単に家のPCとWindows標準のファイル共有ができる。
【仕組み】
F5 Networks VPN Client | 金沢大学内LANと家PCをVPN接続 |
UT-VPN | 金大のプライベートIPを取得できればこっちのもの。学内ルータをVPN接続でさらに飛び越える |
仮想化してあるDVDを学校で見ようとかしちゃ…回線に負担がかかるのでやめたほうがいいと思われ。どのみち、軽くないと回線速度的にカクカクになるだろうし。
用法・用量を守って正しくお使いください。
トラックに当て逃げ?されて死ぬかと思った。
正確には5m先で停止後、中からパンチパーマのおっさんが出てきて「テメェ!さっきウィンカーry」
現実ヤバい。俺の心がブロークン。先生!涙で曇って基板が見えません!
それはさておき、すっかり忘れてたマイコンペ。七月中のいつだろ?と思ってみたら明後日だったorz
…間に合うのか?
取りあえず、半固定抵抗を手に入れた俺は、嫌な現実を忘れてLCDの実装をしていた。
『はじめてのPSoCマイコン』やり始めたばっかりだけど、ホント凄いぞPSoC。
方形波をバンド・パス・フィルタを通して正弦波をつくる(方形波をフーリエ変換すると奇数次の高周波の和になるので)わけだが、スイッチト・キャパシタ・フィルタがPSoCだけで実装できる!
つまり、PSoCさえあれば正弦波出せる。SUGEEEEE
でも、家にオシロがないので実装したけど波の形見れないorz
そしてアマゾンで頼んだPCカメラがやっと届いた。これでOpenCVとPTAM使ってアザミちゃんを金沢大学に…
P0[0]からポートがあるの忘れてた。
接続コネクタの足を一個ずらさないと…。
ところで画像を張ってみるテスト。
…出来なかったorz
悲しすぎるのでチラシの裏。
最近のマイブームはWizardry。
ヤバイ。Wizardryヤバイ。まじでヤバイよ、マジヤバイ。
Wizardryヤバイヤバイ。
まず古い。もう古いなんてもんじゃry…と書き出しそうなほど。
PS3版WizardryはPS3の性能を無駄にしまっくてるシンプルさ。
やばいこのままだと二次元に乗っ取られる。俺の現実が二次元に乗っ取られる!
ヤバイ。むしろ、俺がヤバい。激安で売られてるアマガミの前で本気で悩んだりし始めるかもしれない。
アルトネリコ3を買うか悩んでる高校生の横で、ホワイトアルバムを平然とレジに持っていくサラリーマンくらいヤバい。その横に俺も加わって世界のダメ縮図を作ればいいんですね分かります。
果たして俺が夢を見て二次元になったのか、あるいは二次元が夢を見て俺になっているのか。我ながら意味が分からない。
この前の半田の続きをやり始めたら半固定抵抗(10KΩ)を頂き損ねていたことが判明。
というか、画像張る気まんまんでやり始めたが、いつまでたっても先輩に管理者パスワード聞けない。来週こそ合えるはず。
XRESは外部リセット(external reset)の略だとさっき知った。
基盤基板さくさく組んで画像上げようと思ったら管理者パスワードだと…!?
orz
久しぶりに半田付けしたらイモすぎてフイタwこまけぇこたぁいry
小松原先輩のような半田超絶技巧に挑戦するしかないのか…。
BTライブラリの作成に行き詰ったので改訂 はじめてのPSoCマイコンを買って試してみることに。
…秋田先生いないじゃんorz
というわけで、先輩から基盤を借りて試してみた。のっけからポート番号を勘違いして躓く。しかし、PSoCフリーダム過ぎる。パーツ少なっ!っていうのが本音でした。
Google Apps Education Editionにstu.kanazawa-u.ac.jpがあることが判明。
金沢大学で誰か何かやってるのか!と思ってさっそく登録。
…ん?三人………。
何もないですねハイ。俺も含めて三人とか悲しす。
あー、と思ってアカウント削除しようかと思ったら管理者権限がないとできないとな!?
しかも管理者誰か分からねぇw 俺m9(^Д^)プギャー
…そんなわけで、Technical notesというサイトを腹いせに開設。
気になるバイオ関連の情報とかマイコンに関係ないプログラム解析技術とか載せてく予定。完全に蛇足。
もちろんGoogle Apps Education Editionのstu.kanazawa-u.ac.jpドメインに登録した人だけ見れる予定。三人とか寂しすぎるだろorz
みんなGoogle教のGoogle信者になればいいと思うよ。思うよ!
そして管理者の人連絡下さい…というかもっと機能充実させてくれorz
見つけたサンプルが素晴らしいのでそのまま公開したい衝動に駆られる。
けれど、後学のためとか著作権とかあるので、我慢して泣きながらガリガリ書く。
昨日の俺が公開するとか言っちゃったのでやるしかない。
激しく公開。いや、激しく後悔。
テストも近いので時間かかるんだぜ。急いでる人は参考にしたリンクから飛んで自分の目で確かめてください。いや、ホント。
水面下でAZAMI計画が進行中…。進歩状況2%。
Bluetoothデバイス間通信を開発をするための準備ができたので予告。
これ書かないとまとめるの面倒になりそうな気がするので。
もしかしたら801.11nのアドホック通信に鞍替えするかもしれない。
どっちにしろBluetoothでOPPプロファイルを使った通信やwiiリモコンと繋ぐ?サンプルぐらいは載せるので期待してて下さい。頑張れよ俺。
頑張って…C#とC++とJavaでサンプルは書くけれど、本格的な開発はJava上になりそう…。
komatsubaraさんの『WiiRemoteでGoogleEarthを遊んでみた』を見て黒歴史を思い出した。
そのころはここのサンプルくらいしか知らなかったので、メガネのふちに赤外線LEDを(電源はボタン電池)で取り付けるアクセサリを作って疑似3D液晶+mmviewerで若気の至りに挑戦していた。
(完全にこの動画とこの動画のパクリです)
そしてメタセコの作業用にこんな感じのプラグインを作ろうとして挫折。
絶望した俺は拡張現実という名の2.5次元に逃げるため、HandyAR(マーカーレスで手のトラッキングができる)を使ってイリュー(省略されました・・全てを読むにはここを押してください)
リアルタイムレンタリング(第2版)の本には本当にお世話になった。リアルタイムレンタリングと書いてあるけれど、3D技術について1から10まで教えてくれるすごい本。
,. "゙ヽ. ,. "¨゙ヽ
i. r‐ 、,. '''"¨ ̄ ̄¨丶、r.‐、. i
゙、 .>'´ __ ヽ、' .ノ
/ ´ ̄` '¨¨¨゙ヽ ヽ'
. / ● ● ゙、
. ,' _ ', 変態じゃないよ!
. i i´ ヽ i 仮に変態だとしても
i __...>-、‐'" ,' 変態という名の紳士だよ
.. ',/ 、 _ハ、_... /
/ 、 丶‐''"-ニニ´ /
./ ヽノ /
-、__ノヽ、‐- --‐‐'''" \
生協パソコンにVS2005入ってると思ったらリモートデバッグしか入ってないじゃないかorz
SP1統合パッケージを作ったが時間かかりすぎw手順まとめたんで誰か詰まった人は参考にしてみてください。けど、Java使いならEclipseだしVS使うにしてももう2010使うか…。Chromeブラウザの開発するなら別だが。
とにかく開発が可能になったんでBluetoothの情報をまとめ中…。
とりあえずマイコン作業環境を整えてみた。
回路設計 :TINA for Windows ver7.0.26.16 SF(Japanese Book Version) PSocツール:PSoC Designer
Pukiwikiって標準で#regionとか表組み自体の位置移動とかできないのかorz
iPod 5G 80GBとxperia X10で無線通信とかできればいいなぁ…。
とりあえず妄想垂れ流しで構想を練る。
【動機】
Xperiaの容量が1GB+16GBなのでぶっちゃけ十分な気がしないでもないが…iPodが80GBもあるんだったら外部ストレージとして使ってみたい。ネトラジを保存して聞くためならきっと80GBくらいはいるのでそういうことにしよう。
え?Media Go?普通の人はみんなiTuneしか使ってないんだぜ…。
【構想】
USB接続…Xperiaにホスト機能ないorz
無線LAN接続…学校の無線LANの接続方式がIEEE802.1x。OS的には対応しててもXperiaが対応してNEEEE。iPhoneじゃない俺涙目(SONY対応してくれ!もしくは大学がWPA-EPAにしてくれorz)
…Bluetoothしか残ってないじゃないか。
…Bluetoothしか残ってないじゃないか。(大事なことなので二回ry
【大まかな手順の妄想】
iPodのDockにBT通信モジュール差し込む
↓
PSoCから大宇宙の意思をDockに送る。
↓
iPodをAiR(AdvancediPodRemote)モードで起動
↓
BTでiphoneとXperiaがシリアル通信
↓
Xperiaから操作(mp3タグ情報とかも受け取る)
↓
Xperia or iPodで音楽再生。
ついでにXperiaから日本語で曲名検索とかできればなお良し。
(Xperia内に曲リストを作成して検索→曲の絶対番号指定でできそうな気が…?)
【完全なる妄想】
ファイルストレージとして使うにはiPodLinux上にBTのファイル送信機能つけてシリアル叩けばできる雰囲気が醸し出されるような気もしないでもない。卒業論文でもないのにそこまでできる気がしない。というかiPodLinuxはアップル的にOKなのだろうか。黒いネズミに消されるくらいやばいんでないだろうか。
【直面しそうな問題】
・通信速度
・バッテリーの持ち
・技術不足
・やる気の枯渇