2009/07/24(金)ガラパゴス な みかか

去年ぐらいから、ドコモがJavaのエンジニアを集めているという話を方々から聞いていました。そんなに縁があるわけではない業界の話がこれだけ聞こえてくるってことはどんだけ人集めてるんだ? とか思っていたら、ようやくその謎が解けました。

ドコモなどは従来、自社端末向けには「iモード」を経由しソフト販売を行っていたが、スマートフォン向けのソフトは、iモードから購入することができない。(略)

このため、山田社長は、グーグルやマイクロソフトのOSが搭載されるドコモ向け端末では「ドコモがソフトの流通を管理する専用サイトを立ち上げる」と言明した。サイトは今年度中に試験版を立ち上げたうえで、来年度から商用サービスを始める見込みだ。

docomoからiPhoneが出ない理由

iモードが古くなった今、次世代でもグローバル化を避け、我が道を行ってがっぽり設けたいというドコモの思惑。そのために大量のエンジニアをドコモが囲い込んでいたということらしいです。

もうね、みかかの殿様商売はおなか一杯なので、いい加減滅んでくれないだろうか。*1

*1 : …とは言っても、S社はもっとryだったりする(苦笑)

2009/07/22(水)抽選結果

100万ヒット記念プレゼント&放出。普段からサイトをご覧頂いていることへのささやかな恩返しのつもりでしたが、想像をはるがち越える応募の量にビビりました。

直流安定化電源(自作)が応募ゼロという痛いことになってましたが(苦笑)。捨てるのも勿体ないので、(その他のものは付けないので)ほしい人居ませんか?*1 使ってくれるなら、オーディオ用に整流素子をSBDに変えて差し上げても構わないんですが。

ちなみに「+おまけ」には未公開のHPAの基板*2とか余ってるものを付ける予定だったのはここだけの秘密です。こちらは夏に有償・無償配布の予定。

続きを読む

2009/07/15(水)祝100万ヒット

100万ヒットありがとうございます。

20090715_999999ヒット.png

普通に開いて999993ヒットと990000ヒットを踏んでしまったのには驚きましたが。もし1000000ヒットを踏んだ方が居ましたら、名乗り出て頂ければ何かしらお礼をしたいと思いますので気軽にどうぞ。*1

それでは、いつもの特別企画行ってみよー。

続きを読む

MSP430F5xx のXT1にRTC用水晶を付けるときの罠

はてブ数 2009/07/12デバイス::MSP430

MSP430の最新シリーズMSP430F5418使用時に、マニュアルやサンプルプログラムどおり行っても外付け32768Hz水晶を利用できない問題に遭遇し、これを解消するのに2日もかかってしまいました。

RTCのソースクロック

msp430_UCS-diagram.png

MSP430F5xxxのクロックシステムは図のようにいくつかのクロックソースから、ACLK、MCLK、SMCLKという名前のそれぞれのクロックのソースとして選択し、周辺モジュールはACLK、MCLK、SMCLKの中からソースクロックを選択するというような仕組みになっています。

RTCは

RTCCTL01 = RTCMODE

とするだけで他はほぼ自動で設定されますが、RTCにソースクロックとして32768Hzのクロックを与える必要があります。外付け時計用水晶はXT1(XIN/XOUT)に接続するようになっています。このXT1のクロックをACLKという名前のクロックソースとして指定し、このACLKがRTCのソースクロックとして使用されます。

XT1の水晶クロック → ACLK → RTCのクロックソース

XT1の設定

XT1に外付けの時計用水晶(32768Hz)を取り付けて、XT1をLFモードに設定し起動します。対応するポートを機能セレクトにて切り替えれば通常はXT1のクロックが利用できます。

少なくともマニュアルにはこう書いてありますが、これでは一見動いているように見えて、RFOCLKという内部32768Hz RC発振回路が使用され大幅に時計がずれます(数分/1日)。

MSP430F5xxのクロックシステムにはフェイルセーフ機能があり、クロックの障害が発生すると自動的に(クロックソース選択レジスタの内容は変わらずに)安全なクロックソースに切り替える機能があります。XT1の時計用水晶に切り替えようとしても発振開始時に障害が検出されるため((当たり前))、代替発振機であるRC発振器のRFOCLKが常に使用されてしまいます

代替ソースから本来のクロックソースに切り替える方法

しかも厄介なことに、代替ソースから本来のクロックソースに切り替える方法がマニュアルに書かれていません*1

その方法ですが、発振安定後にXT1LFOFFGというXT1の発振障害フラグとOFIFGというクロック障害割り込み要求フラグの両方をクリアすることです。

UCSCTL7 &= ~XT1LFOFFG;
SFRIFG1 &= ~OFIFG;

*1 : あとで述べるように、間接的記述は後から見つかりました……

MSP430F5418(80pin用)のRTC設定ソース

動作確認済のソースを置いておきます。MSP430F5xxにはXCAPという発振安定用コンデンサを内臓してそれを利用する機能がありますが、温度補償用の外付けコンデンサを使用したいためオフにしてあります。

void init_rtc()
{
	// Set up XT1 by 32k oscillator
	P7SEL |=  0x03;			// Analog function for XT1 Pins
	UCSCTL6 = XT2DRIVE_0		// Lowest current drive mode
			| 0		// XT2 internal
			| XT2OFF	// XT2 off
			| XT1DRIVE_0	// XT1 0=lowest current
			| 0		// LF mode
			| 0		// XT1 internal
			| XCAP_0	// Internal cap 0=off, 3=12pF
			| 0;		// XT1 on, if not user source
	// ACLK source is XT1CLK
	UCSCTL4 = (UCSCTL4 & ~SELA_7) | SELA__XT1CLK;

	// Clear XT1 fault flags
	while(UCSCTL7 & XT1LFOFFG) {
		UCSCTL7 &= ~XT1LFOFFG;
		SFRIFG1 &= ~OFIFG;
	}

	// RTC initalize
	// RTxSSEL, RTxPSDIV, etc automatically configure and don't care
	RTCCTL01 = RTCMODE;			// Calender mode
}

感想とか

こんなことで2日つぶれました。デバイスのエラッタじゃないだけよかったのですが、エラッタの多さといい、ひどいRTCバグといい、最新デバイスだけに機能や性能は良いのですが枯れてないのが不便です。

今見たらマニュアルへの記載を発見しました。これほど重要なことを割り込み要因解除の文脈でついでに書かないでほしい……。

msp430_UCS-OFIFG.png

それにしても、ネット検索してもMSP430を本格的に使用している人はほとんど見つかりませんし、TIも売る気満々な割に浸透してないし、大口以外は相手にしてないのかも知れませんがちょっとツメが甘いように感じますね。

2009/07/03(金)SBD使用 低電圧HPAを作った方へ注意

問題の詳細

この記事で5月から掲載している電池2本版の回路ですが、SBDの種類によって音が変わるという報告を受けて色々検証してみたところ、SBDによっては発振することがある問題が見つかりました。

  • 日本インターの11EQS03Lをつけると発振する。
  • トランジスタ(2SA1015/2SC1815)のランクがYよりGRのほうが発振しやすい。
  • オペアンプによって発振しやすくなる。

SBDがオフの時、数百pF程度のコンデンサとして動作するため回路の位相特性が複雑になり発振しやすくなっているようです*1。以前よりSBDの例としてあげていた1S3や1S4は比較的問題がありませんでした。

*1 : 難しく言うと位相マージンが狭くなっている。

改良した回路

op-dbuf2.png

Zobelの抵抗R7/R8を3.3Ωに引き下げました(以前は10Ω)。日本インターのSBDを使う場合は2.2Ωにしてください。

低電圧版(SBDの付いた方回路)を作られた方はSBDの種類に関わらず3.3Ωか2.2Ωに変更することを強く推奨します。この方が安定度が増すのため音質も有利なはずです。

この変更後、SBDによる音の差はあまり分からなくなりました。

耐容量性負荷

LME49721、トランジスタは2SC1815/2SA1015GRランクにてテスト。

SBDZobel 3.3ΩZobel 2.2Ω
11EQS03L○2200pF / ×3300pF○10000pF
11EQS04○4400pF / ×6600pF○10000pF
1S3○10000pF○10000pF
1N5187○10000pF○10000pF
  • 10000pF(103)より大きな容量ではテストしていません。
  • 矩形波応答などは確認していません。