2010/03/12(金): STM32のI2C
STM32のI2Cコントローラを使用してI2C EEPROMを使おうとしたが、どうもあやしげなので、I2Cコントローラの使用は敬遠して、自前ソフト駆動でやることにした。
I2Cコントローラ自体は悪くはない、ような気がする、のだが、STのライブラリ stm32f10x_i2c.c が怖い。
サンプルコードを見ると、 I2C_CheckEvent() で「バスアービトレーションに勝った」「スレーブアドレスを送信してACKが返ってきた」等々のイベント待ちをして処理をするようになっているが、I2C_CheckEvent() は、I2Cコントローラのステータスレジスタ SR1,SR2 が「指定した定数値になった」ことがわかるだけの単純な関数。複数イベントをチェックすることもできないし、何か例外的なフラグが立ったらもうそれで希望した定数値には合致しない。
なのに、サンプルコードでは、イベント待ちは
while(CheckEvent(I2C_EE, I2C_EVENT_HOGEHOGE)) ;
と、無邪気に書いてある。テストしてみたら、こういうイベント待ちでしばしば永久ループになってしまった。
EEPROMのライト完了待ちでは通常ACKポーリングを行うが、サンプルソースではこんなコードになっていた。
どうも挙動がおかしいので、このACKポーリング中にI2C信号線をロジアナで見てみたところ、送っているスレーブアドレス(EEPROM_ADDRESS)が、しばしば、化けていた。
このループ、イベント待ちをせずにスレーブアドレスを送りまくる感じだけど、だからオーバーランしているのか?
例外処理が弱すぎる気がする。ていうか全く無い。いくらサンプルコードでもあんまりだ。
うーむ…。普通はちゃんと使えているんだろうか?これ?
I2Cコントローラ自体は悪くはない、ような気がする、のだが、STのライブラリ stm32f10x_i2c.c が怖い。
サンプルコードを見ると、 I2C_CheckEvent() で「バスアービトレーションに勝った」「スレーブアドレスを送信してACKが返ってきた」等々のイベント待ちをして処理をするようになっているが、I2C_CheckEvent() は、I2Cコントローラのステータスレジスタ SR1,SR2 が「指定した定数値になった」ことがわかるだけの単純な関数。複数イベントをチェックすることもできないし、何か例外的なフラグが立ったらもうそれで希望した定数値には合致しない。
なのに、サンプルコードでは、イベント待ちは
while(CheckEvent(I2C_EE, I2C_EVENT_HOGEHOGE)) ;
と、無邪気に書いてある。テストしてみたら、こういうイベント待ちでしばしば永久ループになってしまった。
EEPROMのライト完了待ちでは通常ACKポーリングを行うが、サンプルソースではこんなコードになっていた。
void I2C_EE_WaitEepromStandbyState(void)
{
do
{
/* Send START condition */
I2C_GenerateSTART(I2C_EE, ENABLE);
/* Read I2C_EE SR1 register to clear pending flags */
SR1_Tmp = I2C_ReadRegister(I2C_EE, I2C_Register_SR1);
/* Send EEPROM address for write */
I2C_Send7bitAddress(I2C_EE, EEPROM_ADDRESS, I2C_Direction_Transmitter);
}while(!(I2C_ReadRegister(I2C_EE, I2C_Register_SR1) & 0x0002));
// SR1 bit1(ADDR) == 1 アドレス送信後、ACKがきた
/* Clear AF flag */
I2C_ClearFlag(I2C_EE, I2C_FLAG_AF);
/* STOP condition */
I2C_GenerateSTOP(I2C_EE, ENABLE);
}
どうも挙動がおかしいので、このACKポーリング中にI2C信号線をロジアナで見てみたところ、送っているスレーブアドレス(EEPROM_ADDRESS)が、しばしば、化けていた。
このループ、イベント待ちをせずにスレーブアドレスを送りまくる感じだけど、だからオーバーランしているのか?
例外処理が弱すぎる気がする。ていうか全く無い。いくらサンプルコードでもあんまりだ。
うーむ…。普通はちゃんと使えているんだろうか?これ?
2010/03/10(水): ELPAのエネループつきLEDライト DOP-EN401 を買った

通販では1,980円とかで売られているが、ジョイフル本田で980円で購入。
これは単4タイプだが、単3タイプのDOP-EN301もやはりジョイフル本田では980円だったと思う。
十分明るく、いい買い物だった。
家電Watchのレビュー
2010/02/25(木): スキーウェアのリフト券ホルダー
今使っているスキーウェアは、リフト券ホルダーがウェアの内側にある。
(パウダースカートにリフト券ホルダーが付いている)
なので、リフト係の人に見せるときには

こうしなければならない。
上着の前をガバっとめくって股間のあたりのモノを人様にお見せする、というのは、どうも抵抗がある…。
このホルダーのことを、ウェアのメーカーは "Flasher" Internal Pass Pocket と呼んでいた。
やっぱり、確信犯的HENTAIホルダーなのかよこれ!
…使うのが気恥ずかしいのに加えて、使いづらい(ちゃんとリフト券が他人に見えるとこまでめくれたかよくわからない・パウダースカートがよじれてよく見えない場合もある)ので、結局、別のリフト券ホルダーを腕に付けている…。
(パウダースカートにリフト券ホルダーが付いている)
なので、リフト係の人に見せるときには

こうしなければならない。
上着の前をガバっとめくって股間のあたりのモノを人様にお見せする、というのは、どうも抵抗がある…。
このホルダーのことを、ウェアのメーカーは "Flasher" Internal Pass Pocket と呼んでいた。
flasher
━━ n. 点滅灯; 自動点滅装置;
〔俗〕 露出狂.
「EXCEED英和辞典」
やっぱり、確信犯的HENTAIホルダーなのかよこれ!
…使うのが気恥ずかしいのに加えて、使いづらい(ちゃんとリフト券が他人に見えるとこまでめくれたかよくわからない・パウダースカートがよじれてよく見えない場合もある)ので、結局、別のリフト券ホルダーを腕に付けている…。
2010/02/19(金): 西友とセゾンカードとiTunesカード
5日・20日に西友でセゾンカードを使うと、請求時5%割引になる。
西友ではiTunesカードも売っている。
じゃ、iTunesカードを5日・20日を選んで買いにいけばオトクじゃね?
と思って買ってみたら…割引対象外だった…orz
西友ではiTunesカードも売っている。
じゃ、iTunesカードを5日・20日を選んで買いにいけばオトクじゃね?
と思って買ってみたら…割引対象外だった…orz
2010/02/08(月): Acer CULVノート AS3410-S22X を買った
半年ほど型落ちだが、AcerのCULVノート AS3410の WiMAX内蔵のやつ、AS3410-S22Xを買った。

1年ちょっと、Atom N270のネットブックを使っていたが、画面解像度が 1024x600 特に縦600ドットっていうのが厳しかった。
iPhone 3GSを買ってからというもの、Windows PCが絶対に必要な時以外は持ち歩かなくなっていた。
AS3410-S22X は、2009/12頃から、なんでか知らないが処分状態になっていて、39,800円で売られていたようだ。気付くの遅かったなあ…。
Celeron Dual Core SU2300, 13.3インチ1366x768、1インチ強の厚さ・1.6kg、GbE、HDMI/DSUB15P、Bluetooth、バッテリ稼働時間公称8時間、そんでWiMAX内蔵で、通信会社との契約シバリなども無くて39,800円って、安いよなあ。
外装もけっこう上質な感じがする。
気付くのが遅れたので、私は39,800円祭りに乗れず、47,000円くらいで購入した。
現在でもまだ5万円以下で売っているところがあるようだが、もうそろそろ無くなるのかな。
OSはVista Home Premium(32bit)で、「2010/1/31購入分まで、Window7へ無料アップグレード(送料950円のみ負担)」ということになっている。私はギリギリ間に合った。
しかし、安いノートではコスト削減でしょうがないことかも知れないが、こいつも、ACアダプタのケーブルの太さには参ってしまう。
ACケーブルだけならともかく、ACアダプタから生えてるDCケーブルも太いんだもんなあ。
ACケーブルは3ピンミッキータイプ。とりあえず今回はエレコムの20cm電源ケーブルを買ってみた。これちょっとケーブル太いけどまあ短いから、いいや。
光沢液晶なのも残念な点だ。AS3810T/AS3410はどっちかっていうとビジネス寄りで使われるノートじゃないかと思う。ノングレアを採用してほしかった。
しょうがないので反射防止フィルムを貼ろうとしたが…市販されている13.3インチ用フィルムを買ってきたら、サイズが合わなかった。
AS3410の液晶は、実測で、294 x 165mm くらいのサイズなのだが、
市販されていた13.3インチ用フィルムは 285x178 くらいのサイズだった。帯に短しタスキに長し…
仕方なく、大きめのを買いなおして、カッターで切って貼った。
エレコムの EFFL156W を使ったが、なんか、貼ったら視野角が狭くなったようで、あまり気に入ってはいない。
ディスプレイはあまり大きい角度で開かない。ひざの上で使う場合は、視覚的にはちょっと不満だ。でもこれ以上開くと、重量バランスが良くないかも。重量バランス的には不満はない。

1年ちょっと、Atom N270のネットブックを使っていたが、画面解像度が 1024x600 特に縦600ドットっていうのが厳しかった。
iPhone 3GSを買ってからというもの、Windows PCが絶対に必要な時以外は持ち歩かなくなっていた。
AS3410-S22X は、2009/12頃から、なんでか知らないが処分状態になっていて、39,800円で売られていたようだ。気付くの遅かったなあ…。
Celeron Dual Core SU2300, 13.3インチ1366x768、1インチ強の厚さ・1.6kg、GbE、HDMI/DSUB15P、Bluetooth、バッテリ稼働時間公称8時間、そんでWiMAX内蔵で、通信会社との契約シバリなども無くて39,800円って、安いよなあ。
外装もけっこう上質な感じがする。
気付くのが遅れたので、私は39,800円祭りに乗れず、47,000円くらいで購入した。
現在でもまだ5万円以下で売っているところがあるようだが、もうそろそろ無くなるのかな。
OSはVista Home Premium(32bit)で、「2010/1/31購入分まで、Window7へ無料アップグレード(送料950円のみ負担)」ということになっている。私はギリギリ間に合った。
しかし、安いノートではコスト削減でしょうがないことかも知れないが、こいつも、ACアダプタのケーブルの太さには参ってしまう。
ACケーブルだけならともかく、ACアダプタから生えてるDCケーブルも太いんだもんなあ。
ACケーブルは3ピンミッキータイプ。とりあえず今回はエレコムの20cm電源ケーブルを買ってみた。これちょっとケーブル太いけどまあ短いから、いいや。
光沢液晶なのも残念な点だ。AS3810T/AS3410はどっちかっていうとビジネス寄りで使われるノートじゃないかと思う。ノングレアを採用してほしかった。
しょうがないので反射防止フィルムを貼ろうとしたが…市販されている13.3インチ用フィルムを買ってきたら、サイズが合わなかった。
AS3410の液晶は、実測で、294 x 165mm くらいのサイズなのだが、
市販されていた13.3インチ用フィルムは 285x178 くらいのサイズだった。帯に短しタスキに長し…
仕方なく、大きめのを買いなおして、カッターで切って貼った。
エレコムの EFFL156W を使ったが、なんか、貼ったら視野角が狭くなったようで、あまり気に入ってはいない。
ディスプレイはあまり大きい角度で開かない。ひざの上で使う場合は、視覚的にはちょっと不満だ。でもこれ以上開くと、重量バランスが良くないかも。重量バランス的には不満はない。