« 2012年5月 | トップページ | 2012年7月 »

2012年6月

2012年6月24日 (日)

STM32L15x電源

最近は、blogに書けないようなネタばかりやっている。

------

STM32L15xをいじっているだけれど、メイン電源とバックアップ電源の切り替えについて悩む。
F103はVbat端子があって、ここにバックアップバッテリを接続すると、うまく内部で切り替えてくれる。

L15xでは、この端子が廃止されていて、通常の電源端子にバックアップ電源を供給しなけりゃいけない。
バッテリでの連続動作を念頭に置いているってことなのかな。

設定しているバックアップ用の電池は非常に小さく10mAhくらいしかないので、CPUをディープスリープモードに切り替えてから、主電源を落としたいのだが...時間差で主電源を切れるようなハードウエアが要るのか?

電源切り替えは、昔よく使っていた、SRAMバックアップ機能のついたリセットICみたいなものを使うのだろうか。昔の定番だとMAX690とか。

CPU内部のRTCとバックアップレジスタを保持したいんだけれど、そのために外付けの回路が色々要るのはうっとうしいなあ。スマートじゃない。
基本電池駆動のものでも、メインの電池交換のときにもRTCを保持したいって要望はあると思うんだけど、そういう時はどうやるべきなのかな。
F103なら簡単なのだが。

------

そもそもの消費電流を何とかしたい話では、ハードウエアUARTに移行する以前に、処理内容を見直し整理すると、大幅に処理が軽くなった。

そこでメインクロックを64MHzから16MHzに。
TIM1は燃費が悪いらしいので、SYSTICKに一本化。TIM1のクロックを止めるだけで、数mA違うようだ。
TIM1は見るからに回路規模が大きそうだけれど、SYSTICKはそもそも24ビットしかないし、レジスタの類も少ない。

いろいろやって、当初30mAくらいあったのが、10mAくらいまで減った。
これでも同じバッテリでの稼働時間は倍程度に延びている。

意外なことに16MHzクロックでも、60KHzインターバル割り込みは、そう大きな負担になってないようだ。
どちらかというと、I2Cのほうが負荷が高いように見える。

------

さらに8MHzでもいければ、PLLも止めてしまって、消費電流をもっと下げられそうなのだけれど、ホストとの通信スピードが出ない。(ボーレートは維持できるが)
そこで、ホストとの通信時のみ、PLLを書き換え、スピードアップをしようとするのだけれど、うまくいかない。

クロックを内部原発振に切り替えた上で、PLLとバスタイミングの設定を変えている。
クロック自体の切り替えはうまく行っているようなのだが、そこでなにか処理をするとうまく行かないようだ。
切り替え以外の処理をすると、プログラムの実行が止まる。
まだなにか間違っているのか。

こういった要望もあるはずなので、なにかやり方はあると思う。

これ以上CPUの消費電流を減らしても、他の回路分もあるので、恩恵はそんなに大きくないのだけれど。

| | コメント (0) | トラックバック (0)

2012年6月11日 (月)

RTC

しばらく前に稼動して、まあ問題なく動いていたものがある。
ふと気がつくと、時計が止まっている。なんだろう?

見てみると、バックアップのリチウム電池の電圧が0.6Vまで下がっている。
物はLPC2364で電池はCR1220。

RTCなんて、せいぜい1uAくらいだから、この電池でも5年くらいは動くような気がするんだが、とおもってリファレンスマニュアルを見ると、20uAとある。
RTCだけでなく、バックアップされるSRAMが2Kbyteもある。これか。

計算すると、この組み合わせでは2ヵ月半で空っぽになる。
うーん、ぴったりだ。
CR2032くらいにしておけばよいかな。

| | コメント (0) | トラックバック (0)

帰還

外仕事終了。
慌しく帰還。深夜便での移動。

遅い夕食をとり、出発ゲートに入る前にトイレに行くと、知合いに出くわす。
もう、15年以上前に一緒に仕事をしたことがあるのだが。

こっちは戻り便だけれど、向こうは戻らずにそのまま来週末も仕事のはず。
欧州方面便での移動のようだ。

今更だが、そういえばこの知合いは、数日前に書いた、変わった車両の運転手なのだった。
一言二言のレベルだけれど、どんな印象なのか聞いてみる。

本人もまさかと思ったそうだけれど、ちゃんと機能するとのこと。
言われてるとおりだけれど、空力が効いていて、路面に張り付いてるそうだ。

そうか、、、
まだまだ此の世は面白いようだ。

健闘を祈り、別れる。
こっちは帰って休み。かな?

| | コメント (0) | トラックバック (0)

2012年6月 7日 (木)

外仕事

今日から外仕事。
朝一から色々乗り継いで、やっと宿到着。

人心地付こうと、近所のコンビニでインスタントコーヒー入手。
宿の部屋で湯を沸かそうとすると、ポットに電源が入らない。またですか。

言っても、すぐにお代わりがあるかどうか怪しいもんだし、私は早くお茶にしたいのだよ。

------

早速修理

120607a

コンセント部分を見ると、とろけて膨らんでます。
もはや定番。

120607b

ねじを緩め、ふたを外すと、ばらばらと部品がこぼれてくる。

案の定、電源ライン止まってません。
ヒューズも入ってるけど、切れてはなさそう。

120607c

被覆を剥き、取り付けねじを締めなおし、ヒューズを取り付け組み立てなおし。
通電すれば、ものの2分くらいでお湯が沸く。

------

電線を止めているねじは、すりわり(マイナスネジ)だし、明らかに製品として作られているものではない。
電気屋の仕事でも無く、もう適当に取り付けましたって感じで、コンセント抜き差ししてれば、そのうち外れてくるのも無理はない。

で、接触悪くなってきたあたりで、発熱してプラグがとろけたり、家が火事になったりするわけだ。
トラッキングとかでなく、それ以前の話

最近は知らないけれど、昔(20世紀ころ)ヨーロッパあたりでは、家電製品を買うと、電源のコードは、プラグは付いてなくて、先バラになっていた。
で、国ごとにコンセントの形状が違うので、買ってきた後に自分ちのコンセント形状に合うプラグを別に用意し、自前で取り付けて使うようになっていた。

まあ、当時は習慣として、一般的にそういうものだったので、それはそれで良いんだけれど、いまだにそういう習慣が引き継がれているのだなあ。と

各コンセント自体にも個別にスイッチが付いていて、不要の時には切って置けるというのも、火災防止に有効なのだろうか。
よもや節電のために付いているんじゃないだろうし。

先の中国のように、いろんな形状のコンセントが並んでいるのもアレだけれど。
世界は広くて、色々だよなあ。

| | コメント (0) | トラックバック (0)

2012年6月 6日 (水)

Deltawing

http://www.deltawingracing.com/

しばらく前から、今年のレースに特別枠で参加する車両のことが話題になっている。

見てのとおりの異常なレイアウトで、発表当初から色々話題になっていたものだ。
従来の車両と比較しても、その異常さは際立っている。

ざっくりと重量半分、フロントのトレッドとタイヤ幅半分、馬力半分などなどで、トータルで性能そこそこといった感じ。

あまりにも現状のバランスから離れていたせいか、当初は、否定的な見解が多かったのだが、走り出してみると意外(?)にもまともに機能していて、世間では驚きをもって迎えられている。

------

意外な話だが、こういう世界ではレギュレーションで縛られていたり、使用できる(購入できるという意味で)部品が限られていたりするおかげで、根本的によく理解できていなくても、まぁそこそこ?のパッケージが作れてしまったりする。

どこか、趣味のロボットにも通じる部分か。

------

しかし、こういった大きく異なるレイアウトを、いきなり正しく機能させることができるってことは、物事の本質を捉えていることの証明だ。

物事は、まずは模倣から始まるのは確かだけれど、本質をつかんで、途方も無いように見えるものを成立させていることに衝撃を受ける、というか本来そういうもののはずなのだが....

| | コメント (0) | トラックバック (0)

2012年6月 4日 (月)

休暇

今月は、9連休+外仕事+13連休なんてあって、出勤日が少ない。
基本、土日休みではあるのだけれど、ゴールデンウイークなど世間の休みは、こちらの仕事のことが多い。
その影響と、もともと6月頃は天候不順なことから近場の外仕事の予定が少なく、仕事の休みが固められる傾向にある。

今年は特に顕著だ。

------

家族サービスもかねて、いつもの?ところに逗留。
週末を外しているので、安いし空いていて快適。

| | コメント (0) | トラックバック (0)

2012年6月 2日 (土)

秋月H8 LANボード

ふとしたことで、秋月のH8LANボードの話になる。

またまた昔話。

このキットが出たときは、界隈では結構話題になった。
おりしも、Ethernetにワンチップマイコンを接続するのが電子工作の流行だったし、タイムリーではあった。

チャレンジする人も多かったが、挫折も数知れず。
通信性能が低いとの評判も出てた。

うーん...

------

自分ではこのボードに手を出さなかったのだけれど、回路図を入手して、これは...と思ったところがひとつ。

H8のWAIT入力がNICにつながってない...

これでは、NICにアクセスしている丁度そのタイミングで、Ethernetのパケットが出入りすると、CPU⇔NICでやり取りしているパケットが壊れる。
これはRTL8019ASでは、どうやっても不可避。
RTL8019ASを使う以上、外部WAITをかけられないCPUは、たまにうまく動かないことを意味する。

これは、RTL8019ASがNE2000というネットワークカードのハードウエアをワンチップ化したものによるもので、チップのエラッタとか、そういう問題ではない。

------

構造上、Ethernetカードは、RAMのバッファをもっている。
これをホストCPUと共有して、送受信パケットのやり取りをしている。
NIC⇔SRAM⇔CPU こんな感じ

RTL8019ASでは、オンチップに2kbyteのSRAMを持っているので、見た目には
(NIC⇔SRAM)⇔CPU
となっている。

NICの中身はDP8390で、実際の送受信バッファは、16バイトしかもっていない。
Ethernet/IPのパケットは最大1536バイトにもなるので、通信が始まると、SRAMを頻繁にアクセスするようになる。
この時、NICとSRAMとのアクセスが優先されるので、その間ホストCPUは待たされることになるが、ステータスフラグで...なんてことはなくて、いきなりバスにWAITをかけてくる。
まあほとんど瞬時にアクセスは終了するので、ステータスフラグをチェックするくらいならハードウエアWAITで待つほうが良いくらい。

この件があって、ARMを使い始めたときに、RTL8019ASをつなげようとしてすっかり困ってしまった。
結局あきらめて、RTL8019ASは過去のチップとなった。

------

で、H8なのだけれど、ソフトウエアでブロック転送をやろうとすると、確かに遅いのだ。
こういうときは、迷わずDMAを使う。

H8にはDMAコントローラが4chも付いていて、最初は意義がよく分からなかったのだが(プログラムで同じことができるから)、実際使ってみると、その効果は劇的だった。

たとえば、NICに1kbyteのデータを転送するとき。
DMAならば、読み込み2クロック、(SRAMは16ビットバス)、書き込み4クロック(NICは8ビットバス)で、2バイト転送できる。
1kbyteで、3kクロック。20MHzとすると、154usecほど。
DMAコントローラーの初期化もあるけれど、実際にはたかが知れている。

ソフトウエアで同じことをやろうとすると、数msecくらいかかったはず。(多分)
16ビットバスでNICと接続しないのは、エンディアンの問題があって、かえってめんどくさかったはず、確か。(多分...自信なし)

------

その当時、同じCPUで、38400bpsのシリアル通信が、プロトコル処理もあったため、実測でCPUパワーの15%くらいを使っていた。
それに対し、100kbyte毎秒のEthernet通信は、DMAとの相乗効果でCPUパワー1%以下で処理が回った。

その差に驚き、すっかりEthernet派になったものだった。

何しろ、H8のSRAMなんて、4~8kbyte位のもんだけれど、そのすべてをPCに転送しても、数msecで処理が終わり、しかもCPUの負荷もほとんど無いのだ。
シリアル通信なんて、かったるくてやってらんね、って感じになった。
まあ、シリアルも便利だから使うけど、大容量+PC連携だと、もうEthernetしか考えられない。

------

自分としては、ワンチップマイコン+Ethernetの組み合わせは(消費電流に目をつぶれば)お勧めのものだけれど、趣味の電子工作の牽引役たる秋月キットに、こういった仕込があると挫折する人の割合に影響あるなあ、と思ったり。

それもまた秋月キットたる所以なのだが、今の時代ならwebに情報が出るのだろうか。

アンテナが高いほうではないけれど、いままでこのキットでWAITに言及しているのを目にしたことが無いような気がするので、昔話をしてみたりする。


しかし、いまどきのARM界隈では、EthernetMACもすっかり定番のペリフェラルとなっていて、こういった話も、もはやただの昔話で終わるのかもしれない。

| | コメント (0) | トラックバック (0)

« 2012年5月 | トップページ | 2012年7月 »