Notes On Notes
いわゆるひとつの電脳けそうぶみ。
Monday, October 29, 2007
Tuesday, October 23, 2007
画像検索問題
先週末位から「初音ミク」「亀田 反則」といった一部キーワードによる画像検索結果がおかしい点が指摘され、検索エンジンの性能差説、陰謀説、検閲説(フィルタの誤認識説を含む。なお列挙した順序に特段の意味はない)などが出ているようだ(ちなみに、この問題は、Wikipedia 英語版 "Censorship by Google" の項目にも掲載(追加)されている)。もっとも、画像だけが NG な理由について、充分に説得力のある説明にはまだお目にかかったことはないが。
最近の「○○で検索してください」式の広告が増えたことでも明らかなように、特定の単語が検索エンジンに検出されやすいようにサイトを最適化する技術の進歩は著しいし、逆に robots.txtで検索エンジン除けをしている場合もあるので、検索結果を絶対視できないことは明らかだ。とはいっても、これまではつい無精をして Google だけを頼りにしているところがあった。理由がどうであれ、画像検索以外で同様なトラブルがおきない理由はないと思うので、今回の事件で複数の検索エンジンを横断的に使うことの重要性やメリットを実感できたことは、ある意味収穫でもあったように感じている。
Labels: Diary
Monday, October 22, 2007
秋月で見つけた小物
秋月で取り扱っているキット(秋月オリジナルではなく、輸入品のキット)で使われている60秒録音・再生ICである APR9600 の単品販売。
これを使って CQ マシンの自作、っていうのもありかもしれない。
Thursday, October 18, 2007
I2C はまりどころ
PSOCEVAL1 を Master、 MINIPROG1 を Slave として、I2C によるデータ通信の実験をしてみた。
I2CHW モジュールを、Master 側は Single Master Operation、Slave 側は Slave Operationで構成して配置。データシートのサンプルプログラムをそのまま使ったのでは面白くないし動きがないので、とりあえずSlave側は SleepTimer_lGetTickCntr で取得した値(経過時間)をMaster側 に渡し、Master 側ではこの値をLCDに表示するようにプログラムを書いたのだが、ここで Slave 側のプログラムでハマった。
結論から言うと、Slave 用の API の関数名における "read" や "write" は、Master からの視点で命名されていることを理解していなかったことだ。つまり、
- Slave 側で、Master に引き渡す(=Master が読み出す)データを書き込むためのバッファの設定のための関数名には "read" がつくし、逆に、
- Slave 側で、 Master から渡される(=Master が書き込む)データを読み込むためのバッファ設定のための関数名には "write" がつく。
Wednesday, October 17, 2007
Windows Vista
使っているソフトや周辺機器の Windows Vista 対応も進んできたようなので、ぼつぼつ様子見がてら導入してみてもいいかなと。
…風邪っぴきで少々熱に浮かされた頭でそんなことを考えました(苦笑)。
Friday, October 12, 2007
某タイトルマッチ
なんかボクシングの世界タイトルマッチが日本人対決らしかったのと、片方(挑戦者)が「かの有名な」某亀田選手だったので、とりあえず観てみることにした。
TBSの実況アナウンサーだか解説者が、あからさまに某亀田選手のみを一方的に称えていて萎えたので視聴中止。今朝になってニュースを見たら、なんとチャンピオンが王座防衛だったそうな。てっきり、TBS の影響下で挑戦者が勝つと思ってたのだが。まだ良識ある人が残っていたのだな。天網恢々疎にして漏らさず、とはよく言ったものだ。
Labels: Diary
Thursday, October 11, 2007
ヨドバシAkiba前の広場
先日アキバに行った際に気づいたが、ライブ禁止の掲示が安っぽい立て看板からアップグレードされていた。もっとも、効果のほどはさっぱりだが。
疾病や衛生害虫の予防法として、病原体なり、害虫といった原因そのものに対する対策と並んで、病原体等が存在できない、しずらい環境を整備するという対策が大切とされている。この伝でいくと、路上ライブ禁止の告知看板やパトロールは前者の部類だろう。それであまり効果がみられないのであれば、ライブ不適な環境にしてやればいいのかもしれない。
例えば、概ね演奏する場所は決まっているようなので、その周囲にスピーカーを何基か設置して、千代田区お得意の路上禁煙とライブ禁止を知らせる放送でも流すのはどうだろうか。音量センサ付きで、演奏(ある程度以上の時間と音量が継続する状態)に反応して流れるようにするとより効果的かもしれない。
Wednesday, October 10, 2007
PSoC で I2C
冬コミ向けのネタ仕込み関連で追加でやってみたいことがあり、PSoC で I2C を使う実験をしてみた。使ったのは秋月で売っているリアルタイムクロックモジュール(RTC-8564NB) と手持ちの高輝度赤色LEDと、プルアップ用と LED の電流制限用に抵抗少々。
利用するユーザーモジュールとしては I2CHWモジュールを選択し、"Single Master Operation" 構成にした。リアルタイムクロックモジュールの動作を簡単に確認する方法は、こちらの記述 にある通り、CLKOUT端子に 1 Hz の信号を出力させて LED を光らせる方法を、API の使い方はデータシートを参考にした。あっという間に期待通りの動作を確認ができた。
せっかくなので、リアルタイムクロックモジュールのレジスタへの書き込みだけでなく、読み出しについても試してみた。読み出しは書き込みと比べてちょっと面倒で、スタートコンディションを送信した後に、ダミーの書き込みをして、その後改めてスタートコンディションを送信して読みださなくてはならない。こうした合わせ技をするにはどうしたものかと少し悩んだが、これもデータシートに書いてあった。このような場合、I2CHW_bWriteBytes や I2CHW_bWriteCBytes の bMode パラメータを I2CHW_NoStop にして呼び出して、次にbMode パラメータを I2CHW_RepStart にして呼び出せばよい。
# ユーザーモジュール名やAPI に渡す定数の名称は、デフォルトでは大抵、配置地の名称に
# 合わせてモジュール名+"_数字" になるが、たまに例外がある。I2CHWモジュールでも
# 一部定数が固定になっていて Build All するときに怒られて驚く。まあヘッダファイルで
# 確認できるからいいのだが…
Tuesday, October 09, 2007
Thursday, October 04, 2007
Wednesday, October 03, 2007
SPI はまりどころ
マイコン周辺IC で、SPI でデータのやりとりをするものは多い。単純なインターフェイス、といわれた割にはハマって結構な時間を費やしたので、ハマリどころをまとめておく。
- 周辺 IC のデータシートに「SPIのモード何々に対応」、と書いてあっても盲信しないこと。タイミング図や説明などで確認する。
- タイミング図で確認するときは、CS (SS) が active low か active high か、SCLK の極性(CS が active になろうとするとき、SCLK が low レベルか、high レベルのどちらでなくてはならないか)、データをいつ読み書きするか(SCLK の立ち上がりなのか、立ち下がりなのか)に着目する。
- データシートに書いてある SPI のモード値を機械的に SPIM_Start の初期化に使ってはいけない。1~2で確認したことと、SPIM モジュールの解説とを照らし合わせて、正しい値で初期化すること。
- SPIMモジュールの SPI Modes の解説にある、"Clock Polatiry" は、上に書いた 「SCLK」 の極性のことであって、SPIMモジュールに供給するクロックの極性のことではない。
- SPIMモジュールでは、データの送信と受信は同時に行われる。受信だけしたい場合には、なんでもいいから適当な値を SPIM_SendTxDataで送信してから受信する(SPIM_bReadStatusによるチェックも忘れずに)。
- SPIMモジュールに供給するクロックの値は、SPI の通信速度の2倍の値を与える(最大12 MHzまで、すなわち通信速度にして 6Mbps になる)。通信速度の上限値は周辺IC のデータシートで確認すること(場合によっては下限速度もあるので注意)。通常、通信速度を1~2Mbpsにしておいて問題ない…っぽい。
Tuesday, October 02, 2007
SPI とりあえず動いた
昨晩、SPI による PSoC を使った AD9834 制御に成功。これまで動かなかった原因は、前に書いた通り SCLK の扱いが間違っていたこと、ひいては、SPI で使うモードについての理解が不足していたこと。
。防備録も兼ねて、今回見つけた資料を貼っておこう。
http://japan.maxim-ic.com/appnotes.cfm/an_pk/502
http://www.adilam.com.au/Ramtron/Application%20Notes/SPI%20Bus%20Compatibility2.pdf
これらの資料で、SPI のモードとSCLK, MOSI/MISO, /CS (/SS) の波形の関係、モードの表記方法などについて理解を深めることが出来た。理解を補強するため、テスト用にと先週末に秋月で買ってきた Microchip 社のSPI 接続タイプの 12 bit ADコンバータ MCP3208 を使ってみることにした。PSOCEVAL1のポテンショメータを回すと電圧の変換結果がLCDに表示されるという単純なものだが、SPIMモジュールを使う方法、GPIO をソフトから叩く方法、いずれでも上手くいった。
それにしても… AD9834 のデータシートに載っているタイミング図とマイクロコントローラとの接続方法の説明、斜め読みすると「はまる」。後者については、CPOLとCPHA の設定がどうも上のリンクで解説してたものと逆な気がもする。まあとにかく、データシートはきちんと読まなくてはいけないということだ。
Monday, October 01, 2007
最近の出来事について思ったこと
1)時津風部屋 力士死亡事件
猟奇的な殺人事件がおきると、すぐにホラー作品とかアニメ作品との影響が取り沙汰されて放送中止されるが、その理屈でいうと、相撲部屋に入門すると、部屋の雰囲気に影響されて凄惨な殺人鬼になることになりそうだが、そういうことを言う人は居らず、角界・相撲部屋の体質について擁護する人も多い気がする。
2)30年ぶりに富士スピードウェイで行われた日本F1グランプリでの不手際
帰りのシャトルバスが大渋滞したりとか、レースが見えない席があったとか、色々運営に不手際があったらしい。この記事 によると、来場者数は14万人だったそうだ。数的には 1日あたりのコミケ来場者数 はこれよりも多いが、伝えられる富士スピードウェイでの様子と比べると奇跡のように整然と運営されている。コミケすごいな。
(但し、富士の方は、30年ぶりの開催であり、関係者が不慣れだったこともある…かもしれない)
Labels: Diary
SPI にハマる (3)
SPIMモジュールでも、GPIO使ってソフトで制御しても、どちらでもうまくいかないということは、何か本質的なところに問題があるはずだ。
思い切って部屋で設定やブレッドボードを、ああでもないこうでもないと弄り回すのを止め、気分転換にと、先週末はアキバに繰り出すことにした。途中、バス車内でAD9834のデータシートを読んでいたとき、重大なことを見落としていたことに気づいた。「FSYNC (Slave Select) をLowにする時、SCLK は High でなくてはならない」という記述をすっかり見落としていたのだ。
アキバから帰っててきてから、改めて(これまで読み飛ばしたりしていた部分も含めて)データシートを読み直したり、SPI のモードについて調べたりしてたどり着いた結論は、「これでOK! と思いこんでいた SPI のモード設定が全くの誤りだった」ということ(滝汗)。
とりあえず今晩帰ったら、そのあたりを検証してみたい。