Monday, October 29, 2007

週末は電子工作三昧

 週末は颱風も来ていたこともあり、家で電子工作をしていた。今回製作を進めたのは、夏コミで発表したダイレクトコンバージョン受信機の局部発振部分の改良に使う、AD9834 を使った DDS ユニットだ。制御はもちろん PSoC (このために、この前まで評価用ボード PSOCEVAL1 +ブレッドボードでいろいろ実験していたのだ)。

 今週は何かと慌ただしく、平日の作業が殆ど出来そうにないが、週末には動作チェックをして、実際に受信機の局発と置き換えて試してみたいのだが、さてさて…

Labels: ,

Tuesday, October 23, 2007

画像検索問題

 先週末位から「初音ミク」「亀田 反則」といった一部キーワードによる画像検索結果がおかしい点が指摘され、検索エンジンの性能差説、陰謀説、検閲説(フィルタの誤認識説を含む。なお列挙した順序に特段の意味はない)などが出ているようだ(ちなみに、この問題は、Wikipedia 英語版 "Censorship by Google" の項目にも掲載(追加)されている)。もっとも、画像だけが NG な理由について、充分に説得力のある説明にはまだお目にかかったことはないが。

 最近の「○○で検索してください」式の広告が増えたことでも明らかなように、特定の単語が検索エンジンに検出されやすいようにサイトを最適化する技術の進歩は著しいし、逆に robots.txtで検索エンジン除けをしている場合もあるので、検索結果を絶対視できないことは明らかだ。とはいっても、これまではつい無精をして Google だけを頼りにしているところがあった。理由がどうであれ、画像検索以外で同様なトラブルがおきない理由はないと思うので、今回の事件で複数の検索エンジンを横断的に使うことの重要性やメリットを実感できたことは、ある意味収穫でもあったように感じている。

Labels:

Monday, October 22, 2007

秋月で見つけた小物

 秋月で取り扱っているキット(秋月オリジナルではなく、輸入品のキット)で使われている60秒録音・再生ICである APR9600 の単品販売

 これを使って CQ マシンの自作、っていうのもありかもしれない。

Labels: ,

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" がつく。
のである。Slave 側から見れば read と write が逆に思えるが、これも Master からの視点と思えば頷ける。データシートやサンプルプログラムのコメント文を良く読めば判ることなのだが、またしてもハマった。上述の理由で、Master へ渡すデータ用のバッファを I2CHW_InitWrite を使って初期化していても動くわけがなかったのだ。

Labels: ,

Wednesday, October 17, 2007

Windows Vista

 使っているソフトや周辺機器の Windows Vista 対応も進んできたようなので、ぼつぼつ様子見がてら導入してみてもいいかなと。

…風邪っぴきで少々熱に浮かされた頭でそんなことを考えました(苦笑)。

Friday, October 12, 2007

某タイトルマッチ

 なんかボクシングの世界タイトルマッチが日本人対決らしかったのと、片方(挑戦者)が「かの有名な」某亀田選手だったので、とりあえず観てみることにした。

 TBSの実況アナウンサーだか解説者が、あからさまに某亀田選手のみを一方的に称えていて萎えたので視聴中止。今朝になってニュースを見たら、なんとチャンピオンが王座防衛だったそうな。てっきり、TBS の影響下で挑戦者が勝つと思ってたのだが。まだ良識ある人が残っていたのだな。天網恢々疎にして漏らさず、とはよく言ったものだ。

Labels:

Thursday, October 11, 2007

ヨドバシAkiba前の広場

 先日アキバに行った際に気づいたが、ライブ禁止の掲示が安っぽい立て看板からアップグレードされていた。もっとも、効果のほどはさっぱりだが。

 疾病や衛生害虫の予防法として、病原体なり、害虫といった原因そのものに対する対策と並んで、病原体等が存在できない、しずらい環境を整備するという対策が大切とされている。この伝でいくと、路上ライブ禁止の告知看板やパトロールは前者の部類だろう。それであまり効果がみられないのであれば、ライブ不適な環境にしてやればいいのかもしれない。

 例えば、概ね演奏する場所は決まっているようなので、その周囲にスピーカーを何基か設置して、千代田区お得意の路上禁煙とライブ禁止を知らせる放送でも流すのはどうだろうか。音量センサ付きで、演奏(ある程度以上の時間と音量が継続する状態)に反応して流れるようにするとより効果的かもしれない。

Labels: ,

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 するときに怒られて驚く。まあヘッダファイルで
# 確認できるからいいのだが…

Labels: ,

Tuesday, October 09, 2007

受付確認葉書

 冬コミの受付確認葉書が来る季節だ。10/6に投函されたようなので、今日明日辺りに到着するだろうと思う。民営化後ということもあり、未着なんてことにならないといいのだが。

 それにしても、受付確認が来て、来月には当落発表。いつもながら夏コミ→冬コミの期間は短く感じる。準備の方もペースを上げなくては。

Labels: ,

Thursday, October 04, 2007

メディアスクラム

 世間の耳目を集めている時津風部屋から出てきた日本相撲協会の理事を取材していた某テレビ局の取材スタッフが、同部屋の力士に押し倒されて「しばらく動けなく」なったそうだ。詳細はこちら

 「動けなくなった」のは誤りで、実は「やらせ」…確信犯的に「動かなかった」のでは…? まあ格闘技をやっている人間の行動というのは、時に凶器となると思うし、時期が時期だから力士側も不用意な行動ではあったとは思うが。

Labels:

Wednesday, October 03, 2007

SPI はまりどころ

 マイコン周辺IC で、SPI でデータのやりとりをするものは多い。単純なインターフェイス、といわれた割にはハマって結構な時間を費やしたので、ハマリどころをまとめておく。

  1. 周辺 IC のデータシートに「SPIのモード何々に対応」、と書いてあっても盲信しないこと。タイミング図や説明などで確認する。
  2. タイミング図で確認するときは、CS (SS) が active low か active high か、SCLK の極性(CS が active になろうとするとき、SCLK が low レベルか、high レベルのどちらでなくてはならないか)、データをいつ読み書きするか(SCLK の立ち上がりなのか、立ち下がりなのか)に着目する。
  3. データシートに書いてある 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にしておいて問題ない…っぽい。

Labels: ,

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 の設定がどうも上のリンクで解説してたものと逆な気がもする。まあとにかく、データシートはきちんと読まなくてはいけないということだ。

Labels: ,

Monday, October 01, 2007

最近の出来事について思ったこと

1)時津風部屋 力士死亡事件

 猟奇的な殺人事件がおきると、すぐにホラー作品とかアニメ作品との影響が取り沙汰されて放送中止されるが、その理屈でいうと、相撲部屋に入門すると、部屋の雰囲気に影響されて凄惨な殺人鬼になることになりそうだが、そういうことを言う人は居らず、角界・相撲部屋の体質について擁護する人も多い気がする。

2)30年ぶりに富士スピードウェイで行われた日本F1グランプリでの不手際

 帰りのシャトルバスが大渋滞したりとか、レースが見えない席があったとか、色々運営に不手際があったらしい。この記事 によると、来場者数は14万人だったそうだ。数的には 1日あたりのコミケ来場者数 はこれよりも多いが、伝えられる富士スピードウェイでの様子と比べると奇跡のように整然と運営されている。コミケすごいな。
(但し、富士の方は、30年ぶりの開催であり、関係者が不慣れだったこともある…かもしれない)


 

Labels:

SPI にハマる (3)

 SPIMモジュールでも、GPIO使ってソフトで制御しても、どちらでもうまくいかないということは、何か本質的なところに問題があるはずだ。

 思い切って部屋で設定やブレッドボードを、ああでもないこうでもないと弄り回すのを止め、気分転換にと、先週末はアキバに繰り出すことにした。途中、バス車内でAD9834のデータシートを読んでいたとき、重大なことを見落としていたことに気づいた。「FSYNC (Slave Select) をLowにする時、SCLK は High でなくてはならない」という記述をすっかり見落としていたのだ。

 アキバから帰っててきてから、改めて(これまで読み飛ばしたりしていた部分も含めて)データシートを読み直したり、SPI のモードについて調べたりしてたどり着いた結論は、「これでOK! と思いこんでいた SPI のモード設定が全くの誤りだった」ということ(滝汗)。

 とりあえず今晩帰ったら、そのあたりを検証してみたい。

Labels: ,