« 2018年12月 | トップページ | 2019年2月 »

2019年1月

2019年1月30日 (水)

帰還

4年近くに及ぶキャンプ地を撤収して、自宅に本拠を移す。
さらば横浜。

ここ4年で整備した環境も含めて戻ったので、
過去最高に装備が充実している。

やはり実感するのは、普請の程度が生活に必要な
エネルギーを強く圧迫するということ。
断熱、防音、換気などなど。
ひとまず自宅に勝るものないのを実感している。

自宅のレイアウトも変わって、着席位置から重文見えるし。
言うことない。

とはいえ、来週からまた当分神奈川なんだが、それはそれとして。

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

2019年1月27日 (日)

教育用マイコン

教育用としては、どんなのがいいのかと言われると、
”身近に聞ける人のいるもの”以外は、
やっぱり良く分からない。

初心者向けのサンプルには、あえて不満や
突っ込みどころを残して、次への移行を促すってのも、
ロジックというか、狙いは理解できる。

でも、それが結局、身近な誰かが使っている
物への移行になってしまうとすれば、
どれも、あんまり拘ってもなあ、と言う気もする。

結局、自分の立っている位置でしか考えられないので、
学ぶ方の立場を完全に理解するのは難しい...

------

目指すは、自力での、周りで誰も使ってないマイコンの
環境構築だとすると、学び始めるのも
最新の環境からで、と思うけど。

とはいえ、自力環境整備なんて、もう普通は
必要とされないような気もするし...

------

例えば、実際の組み込みマイコンでの
割り込みロジックの内部の動きなんて、今どき、
誰も気にしないで使ってるし、もはや、そんなもんな気もする。

拘るべきところは、時代時代で、どんどん変化していくのだよなあ。

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

2019年1月26日 (土)

PB2/BOOT1

あっ、stm32f4は、BOOT1は物理ピンなのか。

普段使いしているf3やl4では、BOOT1は
内部コンフィグレーションビットになっていて、
PB2には、BOOT関連の機能はない。

f4は、f3やl4よりは前の世代のチップなんだよな。
すっかり忘れている。

stmは新しいチップが出ると、いろいろな処が
微妙に改善されていたりする。
前に進む分にはいいけど、戻るときには
慎重に確認しないと、よく嵌る。

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

強いマイコン

SH7125は、マウス/トレーサー基準では、弱いマイコンのカテゴリなのか....

ふーむ、RAMが少ない、ですか。
まあ、ソートなんかの汎用アルゴリズム(再帰系)なんかをいれれば、
8KBのRAMが枯渇するかもしれないが...

どっちかと言うと、ログを取ることを念頭に置いてるのかなあ、
という風にも思える。

ログを取るなら、外部に不揮発性メモリ、がシステム的に
バランスいいような気もする。

ログのために内部バスでつながっているRAMを要求するのは、
ちょっともったいないような気もする、というか、
各マイコンで設定されている、ほかの周辺の機能から見ると
いびつなバランスにも思える。

RAMのために、高機能マイコンを選択するってのは、
まあ、(仕事なんかでは)普通の選択肢だと思うけど、
今は、趣味のロボット開発でも、そういう感じなのかな。

個人的には、初学者は、その時代の最新マイコンから入るのが
いいかな、とは思うけど。
まあ、自力で何とかできるようになるまでは、
周りに話を聞ける人がいるのが、一番いいんだけど。

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

2019年1月25日 (金)

引っ越し準備

ベースキャンプ撤収の引っ越し準備作業中

通常の引っ越しに比べれば、ずいぶん荷物は少ないけど
それでもやはり4年分の諸々で、来た時よりも
それなりに荷物が増えているな。

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

2019年1月21日 (月)

4年分

来週の引っ越しに備えて、色々整理。

4年分の半券諸々、手元に残ったの、これくらいになった。

190121

一体いくら交通費が掛かってるんだろう...

まあ、それでも、総額なら2年分のこっち

1901212

の方が、高そうだね。

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

クライアントの求めるもの

ってなんだろう?
いまだに正解は良く分からない。

価値観を共有できていれば、
クライアントの求めることは自然に
理解できる気がするんだけど。

クライアントが求めていることが、
クライアント自体を不幸に追いやる場合は難しい。

1.求めていることをやる
 → 不幸な結果になって、顧客満足しない

2.求めていることと別の事をやる
 → 求めていることがされていない、
  と顧客満足しない

3.求めていることが矛盾している、と説得する
 →なんでもいいから、リクエスト通りにやって
  ほしいと言われ 1.または2.へもどる。

大体このパターンで、これは通称、地雷や
罠と呼ばれる案件だ。

なんどか不幸な結果になった後に、
最初に言いましたよね?と言っても、
お互いに何も得るものは無いし。

------

言われてることとは、別の事をやって、
言われたことのように見せかける、ってのは、
局所的に、うまく行くことはあるけれど。

なにか第三者がからんで発覚した時に、
別次元の問題を生むので、
絶対に選択してはいけない。
経験からくる鉄則。

いつのまにか、詐欺師じみたことを
やり続けるようになってしまうよ?

マジメな人が、いつのまにか、不正何とか請求事件
なんかに巻き込まれるのはこのパターンもあるようだ。

------

こういう案件は、付き合わない、
距離を置くってのがベストなんだなあ、
と思っている。

なにか負けた気もするけれど、
人生の時間は有限なので、
付き合うのもほどほどにしないとな、とも思う。

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

2019年1月20日 (日)

懇親会参加

話題のMATLAB講座には、行けなかったのだけれど。
思い立って、終了後の懇親会に参加。

あれっ、M永さん居るじゃん。講座出てたのか...
なんとまあ。

このタイミングでも、前に進もうというのか。

これは...こちらも油断と言うか、弛んでいたかもしれない。

開催は隔月か。
次回は参加しよう。

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

2019年1月18日 (金)

引っ越し

第一弾の送り出し終了
週明けは開梱作業?

4~5年おきの引っ越しローテーションから抜けられない。
どうしてこうなった。

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

専門性と実績

分野にもよるとは思うけど、実績あれば、50代でも60代でも
外から呼ばれる程度には、仕事はあるもんなんだなあ、と実感。

まだまだ精進しないといけないな。

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

2019年1月17日 (木)

趣味のIMU

剥き身のIMUを使うような趣味なんて、普通、あるとは思わないな。

ボの営業さん、世界が広がってよかった。

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

2019年1月15日 (火)

道具メンテ(ピンセットの脱磁)

0603メトリックとかのチップ部品を取り扱うのに、
良いピンセットは必須なんだけど。

ピンセットが着磁していると大変扱いづらい。
チップフェラエトビーズとか、あるいは小さなパッケージほど
鉄系の材料を使っているのか、部品をつかもうとすると、
勝手にピンセットの先に吸着されてしまう。

ホーザンのP-891のタッチが気に入っているので、
先を研ぎだして使っているのだけれど。
材質が磁性体なので、うっかりすると、いつのまにか
着磁していたりする。

1901151

最近は、ネオジの小さな磁石がそこら中にあるので、
油断ならない。
非磁性のピンセットもあるけど、リン青銅のは、はんだ付けに使うと
ハンダが付きそうだし...

着磁器/脱磁器もあるけど、これでできるレベルの脱磁では
まだまだチップ部品程度だと吸いつけてしまう。

------

メンテナンスの一つとして、普通の脱磁器のような、
力任せではなくて、精密に脱磁することを考える。

こんなものを用意する。

1901152

ピンセットが通せるような非磁性の筒に、#20くらいのワイヤを
100回くらい巻いたもの。
あと、5~10A位流せる、定電圧定電流電源。

用意できる電源の容量と、電線径で巻き数を決める。
組み合わせで、だいたい数百~1000アンペアターン位が目安。

ピンセットを通す。

1901153
ピンセットの先に、小さいねじなどを吸着させて準備終了。

1901154

安定化電源を接続、定電流モードにして、少しずつ電流を
増やしていく。

着磁分と電流が打ち消し合うと、吸い付いているねじが落下する。

1901155

ねじが落ちたら、電流を止め、もう一度吸着させて
電流を少しづつ増やす、を繰り返す。

繰り返すとだんだんと、ねじが落ちるまでの電流が減ってくる。

一気に電流を上げると、オーバーシュートさせてしまい、
逆側に着磁するので、要注意。

ある程度電流を流しても、磁力が減ってく感じが無い時は
電流による磁界と、着磁している方向が同じになっている。
その場合は、ピンセットを逆から差し込むか、
電流の向きを変える。

何度か繰り返すと、電流を止めても、ねじ程度では
吸着しなくなるようになる。

今度は、チップ部品に変え、同じ手順を繰り返す。

1901156

チップ部品は、磁性だけでなく、静電気などでも吸着するために
電流を流しながら、軽くトントンと叩いて調節するとやりやすい。

これをある程度繰り返すことで、チップ部品も吸着しなくなる
程度にまで脱磁できる。

------

はんだ付け用のピンセットも、普通に工具として使っていると、
どうしても着磁してしまうこともある。
着磁したピンセットをそのまま使うと、かなり作業性が悪いが、
この手順で脱磁することで、作業性を取り戻せる。

刃物を研ぐようなものなので、気になるようになったら、
時々調整している。

0603あたりのはんだ付けに、ピンセットがうまく使えない
のは、着磁の所為もあるかもしれない。

ピンセットの脱磁、お勧めである。

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

2019年1月14日 (月)

移動中開発

今日も自宅からベースキャンプへの戻りの新幹線車内で、諸々作業。
最近の国際線の飛行機もだけど、PCの電源が用意できるので、
体力の続く限り作業できる。

長時間移動作業のいい所は、疲れたら即仮眠に入れるのがいい。
疲れても、15分か30分寝ると、ずいぶんリフレッシュできるんだけど。
通常の作業環境で、好きな時にスパッと寝るってのも
なかなか難しい。

その所為で、通常は作業効率が落ちても、簡単には
復帰できないことが多いんだけど。

まあ織り込み済み、ってことで特に対策は打たない。

趣味の開発だと、さらに時間が限られていて、
効率ははるかに重要なので、移動中開発は大変重要だ。

出張とかの移動中に、開発作業の大半をできるようにしておく。

------

ターゲットボードを、シリアルでのフルコントロールと、
ブレッドボードの組み合わせとすることで、出先での
開発の自由度が広がる。

1901141

一日終わって、宿まで戻れるなら、はんだごてと
オシロスコープくらいならターゲットになるんだけど。

昔はビジネスホテルの部屋は、コンセントの設置が少なくて
(鏡の前のドライヤー用と、湯沸かし用くらいしかなかった)
自前でテーブルタップをたくさん持ち込んでいたけど。

今どきは、みんなスマホだのなんだのを、
たくさん持ち歩いている所為か、ビジネスホテルの部屋も
コンセントだらけになった。

助かる。

------

今日の帰路では、stmの書き込みツールのブラッシュアップ作業。

1901142

シリアル経由で書き込むツールを作って運用しているんだけど。

(主に)手抜きにより、メッセージハンドラ内で、
すべての処理をしている所為で、動作が不安定?微妙?で、
ちょくちょく書き込みに失敗する。

まあ、リトライすれば何とかなるので、だましだまし
使っていたのだけれど。

今日の作業で、時間のかかる通信部分を
別スレッド回すように変更すると、だいぶ安定して
動作するようになった。

------

ついでに公式ツールでは、ボーレートが256kまでとなっている
のだけれど、どこまで行くのか試してみた。

921kまでは、まあ普通に大丈夫のようだけど、
115.2k辺りからは、フラッシュの書き込み時間の方が
支配的なせいか、あまり全体の速度が上がらないようだ。

------

今日の作業で、書き込みストレスもさらに低減された。

いつも通り、周辺ばかりやっているが、
そろそろ本編に戻らねば。

新作(同構成の新型、Ver.2ともいう)を走らせるなら、
そろそろ本体の設計を始めなければいけない...

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

2019年1月13日 (日)

ペットボトルのお茶

面接のときに、お茶を飲むのがマナー違反かどうかは、
TPOによると思う。

無理筋の営業(押し売りとも言う)を掛けに行ってる、とか
無理筋の謝罪に行ってるときに、相手の前でペットボトルから
お茶を飲むのも、まあ、なんだなとは思うが...

理不尽なことを言われに行ってるときに、わざわざ突っ込まれる様な
事をすることもないのも確かだけど。

採用面接って理不尽なことを言われに行っている場
なのかどうか?かと。

この件に関しては、採用する側が、そういうつもりで
見ている、ってことなんだろうなあ。

------

そういう扱いで採用されても、先行き不幸だなあ、とは思うし。

そういう扱いしか残されていない(と思い込んでいる)人には、
まあ頑張って...と言うしかないし。

そんなところに、わざわざ近づく必要のない人のほうが
大多数なのになあ、と思ったりとか。

------

リクナビとかのエージェント業が、自分たちの商売のために
展開して流布しようとしている価値観全般については、
まあ、...どうなのよ、とは思うけど。

まあ、それが彼らの商売のための環境だから、
彼らが如何こうすることに、言うことはないけれど。

よく見てない人が、真に受けてしまったりとか、
うっかり乗せられて、貢いでしまったりも、
社会勉強かなあ....とも思う。

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

2019年1月12日 (土)

DWT追記

ループ内で、sprintfを使わないように書き替えると、
丁度、スタックポインタがDWT_COMP0を超えたところで
例外に入るようだ。

やはりsprintfで、200バイト弱は、AUTO変数で使われるということか。

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

DWT

新幹線移動中の開発により、DWTを動作させることができるようになった。
割り込みで処理を追加した後に、正常動作に復帰できるし、これはいい。

純粋にデバッガの動作だけど、オンチップペリフェラルだけで
(アダプタとかプローブの類なしで)実現できるのはありがたい。

スタックの上限(というか余裕を持たせた警告エリアの方がいいが)
にウオッチポイントとアクセス方法(読み、書きの別など)を設定しておく。

スタックが侵食して、アクセスの条件が成立すると、
デバッグベクタに分岐して、通常の割り込みと同様に処理できる。

スタックポインタに余裕を持たせておけば、破綻することなしに
処理が続けられ、スタックの残りが少ないことが
実行されているプログラム自身で把握できる。

------

今回のターゲットはstm32l433だけど、Cortex-M3,M4なら
どれでも使える可能性はありそうだ。
設定例は以下。

プログラムの初期設定部分に記述して、DWTを有効にする。

    //  デバッグ例外、モニタ制御レジスタ
    CoreDebug->DEMCR =
        (1 << 24)|    //    TRCENA
        (1 << 16)|    //    MON_EN
        0;

    CoreDebug->DHCSR =
        (0xa05f << 16) |        //    書き込みキー
        (1 << 0) |
        0;

    *(volatile unsigned long*)(0xe0001020) = 0x2000e000;    //    DWT_COMP0
    *(volatile unsigned long*)(0xe0001024) = 0x00000000;    //    DWT_MASK0
    *(volatile unsigned long*)(0xe0001028) = 0x00000007;    //    DWT_FUNCTION0  書き込み/読み出しのウオッチポイント
    *(volatile unsigned long*)(0xe0001000) |= 0x00000001;    //    DWT_CONTROL




割り込みハンドラも記述する。

//****************************************************************
//          デバッグ   割り込みハンドラ
//****************************************************************
void DebugMon_Handler(void) {

    static unsigned char temp[32];
    volatile int i;

    sprintf(temp, "\r\nDebug [%08X]\r\n\r\n", *(volatile unsigned long*)(0xe0001020));
    Puts(temp);

    stop = 1;

}

DWTがウオッチポイントへのアクセスを検出すると、
ハンドラが呼ばれるので、コンソールにメッセージを出力する。

0xe0001020は、DWTのコンペアレジスタ。
全部で4つあるので、最大4つのアドレス(エリア)を
同時に監視できる。
グローバル変数で定義されているstopにフラグを立てて戻る。

------

テストに、実際にスタックポインタを進めて、
どの辺で止まるか試してみる。

再起呼び出しで、毎回AUTO変数を定義するコードを書く。
一回の呼び出しで、116バイト分の変数を宣言するのだけど
実際のアドレスは、変数の呼び出し分のレジスタ退避エリア
などで、もう20バイト使われて、136バイトづつ消費されるようだ。

スタックの初期値は、0x20010000。
DWTの設定は上記のコードの通り、0x2000e000として、
動作させてみる。

シリアルコンソールに動作状態を出力させてみる。

1901122_2

58回目の呼び出しで、DWTが動作して、再起呼び出しが停止している。
この時のAUTO変数のポインタは、0x2000e0bcあたりを示していて、
DWTの設定値には、もう少しあるようにも見える。

今の場合でnewlib(sprintfとか)が、内部で使っているエリアが、180バイトくらい
あるのかなあ、という印象。

まあ、現実的な処かな?と思うので、なんとなく意図通りの
動きはしているように思える。

------

スタックの監視だけでなく、任意のエリアの不正なアクセスも
実行状態で、オーバヘッドなしにソフトウエアだけで監視できるので、
発見しにくいバグ(アクセス違反)を押さえるのに、大変役立ちそうだ。

標準コマンドとして整備しよう。

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

開発環境

来るべき、長時間通勤の日々に備え、電車内開発環境の整備にいそしむ。

まあ、もともとノートPCだけで完結するシステムを作ってはいるんだけど。
ターゲットボードをUSB接続して、ボードには一切手を触れずに
書き込み、再起動、諸々をできるように考える。

------

想定しているターゲットはハーフマウスなので、実機運用時に不要なものは
使いたくない。(デバッグポートとか、USBバス直接接続はNG)
stm32をメインで使っているとはいえ、プロセッサ依存も避けたいので、
フラッシュ書き込みも含め、シリアル接続一択だ。

通常のTxDとRxDに加え、DTRとRTSも使えるように自家製USB
(CP2102)シリアルケーブルを改造。

ターゲットボードも、モードピンとリセットをコントロール
できるように、回路追加。
ピンを増やしたくない(増やせない)ので、モードピンと
リセットを一つのピンでコントロールできるように改造。

書き込みツールも、stm32L4は公式が対応しておらず
自前で作ったので、このツールもDTRとRTSを
コントロールするように書き直す。

st公式のFlash Loader Demonstratorは、RTS、DTRを
動かしてないのか...
公式ツールを使うときは、RTS、DTRを切り離せるような
エクステンションハーネスが必要になるな。

まあ、現行で使っている、F3、F4、L4は全て自前ツールで
書けるようだから、当面問題ないかな。

------

見た目怪しいターゲットボードを仕舞ったまま、
コード編集、書き込み、実行のサイクルが可能になったので、
さっそく新幹線移動中に、DWTのデバッグ中...

シリアルターミナルから、ターゲットの再起動が
できるようになったので、色々捗る。

これは快適だ。

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

2019年1月 9日 (水)

キラキラベンチャー

ああ。

なんか、多くの言葉は要らないなあ...思い当たるのがいくつも。
でも投資家は欲に目がくらんで、素人目にもどうしようもない物でも、
お金を出すんだよなあ。

で、実体が発覚しても、限界までひた隠しにするんだよなあ。
発覚しないように、出した方と受け取った方が結託すらしたりする。

これじゃ、投資なんてリスクにしか見えなくて、
本当に投資を必要とするところは、
いい迷惑だよなあ、と何度も思った。

------

ベンチャー?じゃないかもしれないけど、
過去最凶の物言い(われ)は
”何でもいいから、先進的な技術のネタを出せ。
そこから俺が選ぶ。それがお前の仕事だ。” (原文ママ)

なんてことを面と向かって、仰った方が居たが...
この発言のおかげで、当人の口から出るもの諸々、
ほとんど欺瞞だということに、確信をもてた。

”何でもいいから先進的な技術”は、いまだこれを打ち破る
パワーワードに出会わない。
技術をなんだと思っているんだろう...

まさか、このレベルの電波発信塔が実存するとは
思ってもみなかったけど、まあ長く生きてみるもんだな、と思ったり。

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

2019年1月 7日 (月)

専門的な話

専門的な話は分からないんだけど、といつも前置きされるんだけど。

いや、有史以来、あなたに対して、専門的な話はおろか、
単語レベルですら、会話に出したことはないと
断言できるんだけどなあ...

何かの予防線を張っているのか、10年以上経つがいまだ分からない...

知る限り、他にそんなことを言ってくる人は居ない。
一体何なんだろう?

あり得る可能性としては。
話が通じないことに対し、専門性の問題だ、ということ
にしたいのかな?と言う辺り。
それならまあ、分からんでもないのだが...

話が通じないのは、専門性の有無では無(以下規制)

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

2019年1月 6日 (日)

モバイルバッテリとハイパワーUSBとか

事実上、USBのコネクタを汎用電源ポートとして使うようになって久しい。

規格上は、5V、0.5Aを超える出力を取り出すときは、
ホストとハンドシェイクして、あれやこれややった後でないと、
取り出せないことになっているハズだけど。

実際には、5V3A出力とかの、USBコネクタのついた
ACアダプタなんかが普通に出回ってるし、
そういうもんらしい。

------

最近の規格は、色々拡張されているようだけど、昔から
USB周りはなんだか、微妙な話も多い。

USBケーブルの構造も、結構厳格に決まっている。
データ線の番数(線径)まで決まっていて、
よく出回っているような細いケーブルは作れないはずなんだけど。

試しに、スリムケーブルとやらをばらしてみると、
データ線は規格通りの番数(#24だったかな?)なんだけど。
なんと、規格に定められてない、電源線の方は#30くらいの
ほっそい線で作られていて、びっくりしたことがある。

まあ、たしかにこれでUSB規格は満たしているんだろうけどなぁ。
0.5Aなんて流したら、1Vは電圧降下しそうだ。

まあそんなだから、わざわざ高速充電対応なんてうたった
USB?ケーブルを売ったりしているんだろうなあ。
実質、無法地帯に近い。

なので、USB形状のポートを使って電力を供給できる
モバイルバッテリ、もとい、パワーバンクも、ちゃんとUSBの
規格を守っているかなんてのは、あてにならないかも。

------

ただまあ、USBかどうかにかかわらず、供給源として
ある程度の容量のバッテリを使っているときは、
ヒューズの類は、絶対に外すことはできないが...

しかし事故防止には、これも完全ではない。
ショート事故時でも、導体が即蒸発してくれれば、大した
事故にはならないけど、微妙に抵抗値を持った状態で
電流が流れると、発火事故になる。

カーボン素材辺りでのショートでは、ヒューズや
ブレーカーが応答せずに、激しく発熱して炎上したりする。

激しい火炎と、猛烈な煙を上げているのに、ヒューズ系が
平然としているのはトラウマだ。
経験的に、ヒューズ(ポリスイッチも)を信用しきれないのは
この辺の経験から来ている。

------

いや、USB電源の話だ。
USBにかかわらず、出来合いのバッテリにはBMSとかの
過電流過充電防止回路が抱き合わされているだろうから、
改めて、炎上防止くらいの意味合いの保護素子追加は
あまり効かないかな?という気がする。

もちろん、裸のセルを使うなら必須。

どちらかというと、本来のUSBポート(PCとか)を
使うときの方が、気を遣う気がする。
マザーボード、壊すと高価いしね...

------

ところで昔、モバイルバッテリを電源に使おうとしたことが
あったんだけど。

動き始めると、ちょっと触れないところに設置する機材で、
3か月間くらい動作し続けて、データを記録するものなんだけど。
もちろん、3か月間ずっと動作させるのは電源容量的に無理なので、
普段はスリープしていて、時々起動するようになっている。

これをモバイルバッテリを何個か使って動かそうとしたのだけど。

消費電流が小さすぎると、勝手に電源を切ってしまう仕様だった。
使う前に、手動でスイッチを押すか、コネクタを差しなおして
やらないと動かない。
大きなお世話なんだけど、こんなの現物が無いと
仕様を確認できない。

モバイルバッテリ的は、気をきかせてくれているんだろうけど
おかげで用意したものは、全部没になった。

それで、その時に理解したのは、一次電池の容量は相当な
ものだということ。

結局、アルカリ乾電池を使ったんだけど、これでも同体積の
モバイルバッテリよりも動作時間が長く取れた。
もちろん毎回電池は新品が必要だけど、3か月のサイクルなので
コスト面でも断然安いし、運用もらくだ。
(充電管理は面倒くさいし、運用リスクも大きい)

3か月で1サイクルなので、20サイクルでも5年間となって、
よく考えると、充電できるメリットが、全くなかった。

...なんてこともあったので、一次電池でも行けるかも、
と言うのは常に考えるようになったな。

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

2019年1月 5日 (土)

ボーダーライン

〇ワット数が大きい
〇カロリー総量が少ない
------
×USBを用意して下さい(~メモリの意)
×ギガが少ない(~ビット/月の意)

(※個人の意見です)

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

MPU(メモリ保護ユニット)続き

stm32で、Cortex-MのMPUを使って、スタックオーバーフローを
検出する方法について。

armの提供するドキュメントを参照すると、Cortex-Mコアに存在する
(チップベンダ依存だけど)MPUを使うと、最小32バイト単位のエリアを
アクセス禁止エリアに設定できるとある。

これを使って、スタティックエリアの最後か、想定するスタックの上限に
アクセス禁止エリアを作った上で、
MPUのメモリ管理ハンドラへの割り込みを許可する。

これで、アクセス禁止エリアへのアクセスを、ソフトウエアで処理できる。

ペリフェラルの初期設定は、

    SCB->SHCSR = (1 << 16);       //メモリフォルト許可
                                                  (許可しないとハードフォルトとして処理される)
    MPU->RBAR = 0x20002010;     //保護エリア先頭アドレス+イネーブルビット
    MPU->RASR =                      //保護エリアアトリビュート指定(サイズなど)
         (0 << 24) |
        (4 <<  1) |
        (1 <<  0) |
        0;
    MPU->CTRL =       //メモリ管理イベント許可
        (1 << 2) |
        (1 << 1) |
        (1 << 0) |
        0;

で、アドレス0x20002000から、32バイトが
アクセス禁止エリアとして指定される。

このエリアを読み書きすると、メモリ保護違反イベントが発生して
ベクタテーブルのオフセット0x10にある
アドレスに分岐するので、こちらもハンドラを記述する。

void MemManage_Handler(void){

    __ASM volatile ("bl    main");       

}

CFSRの当該ビットをクリアできれば、元の処理に戻れそうな
気がするんだけど、なぜかクリアできない...
ので、仕方なく、無条件ジャンプで、main()へ戻っている。


このコードでは、普通の変数初期化が実行されないので、
通常リセットとの区別は簡単に付けられる。

(適当なスタティック変数をメモリ保護エラーフラグにしておいて、
起動直後に参照する。

色々なサンプルコードを当たると、ハードフォルトや
今回のようなメモリ保護違反での例外処理時は、
元の処理に復帰せず、ブレークポイントを設定して、
whike(1)の無限ループで停止する例ばかり出てくる。

まあ、スタックオーバーフローしているような状況で
処理を戻して如何にする?のも確かだ。

これで、まあなんとか、ソフトウエアのオーバーヘッド
無しで、スタックオーバーフローを検出できるようには
なったようだ。

------

MPUでなくて、DWTを使えば、もっとうまく実装できそうなんだけど、
こっちはなんだかうまく行かない。

色々ドキュメントを当たっているんだけど、
コア部分なので、チップベンダの資料にはほとんど記述が無い。

そもそもarmのドキュメントは、なかなか不親切だ(日本文も英文も)

まあ、実装するかどうはチップベンダ依存なので、
armのドキュメントがそっけないのも分かるけど、
もうちょっと何とかならないかなあ。

検索しても、あんまりいい情報にめくり合わない。
質問は色々ヒットするんだけど、ロクな回答がない。

------

まあ、チップベンダはコアのペリフェラルを手厚くサポートしても
得るもの少ないだろうし、需要はマルチプラットフォームの
デバッガなんかを開発しているベンダーくらいかなあ。

あんまり深追いしても、アレな気がしてきては居るんだけど、
DWTなんかは面白そうな機能が用意されているようだし、
stm32のCortex-M4は、コアのペリフェラルも
結構実装されているようなので、使いこなしたい気もしている。

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

2019年1月 4日 (金)

F1みたいなロボット競技

これですかね。

なかなか、思惑通りには進んでないみたいですけど....

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

USBポート電源

USBを電源として使うときには、電流制限は上流側に
入っているので、あまりポリスイッチの類は使わないですかね。

ポリスイッチの動作を見ていると、リミットに対する応答が遅いので
USBポートみたいなところでは使いにくいように思います。

バッテリを電源とした場合のように、異常時には
正常時に対して10倍とかの電流が流れるような条件でないと、
有意な時間(数秒程度)に動作しないような。

ブレーカーもそうですけど、定格電流の2倍流れている状態で、
切れるまで数十秒かかるとかなので、
もともと0.5Aまでしか許容しないUSBで、
許容電流内かつ、まともな時間で応答するポリスイッチの定格は、
50mA程度になってしまいます。

電流リミットを動作させたいなら、FPF2002とかの電源分配スイッチ
を使う方がよいでしょう。

------

ポリスイッチとかは、上流のPC側にもついているので、
ショートで壊すことは無いですけど、
(今使っているPCは壊れてた...
SMDポリスイッチのはんだが、自己発熱で外れて、
自分ではんだやり直して復旧)
外部サージでは、USB側の保護が効かず、
一発でマザーボートが逝きます。

このサージに対しては、USBポートは、かなり耐電圧低いです。
(10V以下位?)
なので、外部サージ対策も込みで、逆接防止のダイオードは
必須です。

サージが発生する様な負荷はかなり危険です。
モーター回すときは、回生ブレーキが電源に還流しないように
しとかないと、突然死したりします。

------

あと、USBの規格から、外部に付けられる電源用の
コンデンサの容量が決まります。

数値は覚えてないですが、かなり小さいはず。
100uFなんてつけるのは、本当は全然無理だったような。
(付けたりするけど)

ハッピーなUSB電源ライフをお過ごしください。

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

2019年1月 3日 (木)

帰還

自宅に帰還。
やはり普請の違いは快適さに直結するんだよな...

若い頃ならいざ知らず、この年になると日々を過ごすだけでも
それなりのエネルギーを消耗する。
過酷な環境で、無駄にベースラインを上げなきゃいけないのは
つらいものだ。

と、いうわけでもないけど。
キャンプ撤収も、実に天の采配のような気もしてくるのだ。

今月は撤収の手続きで終始かなあ。

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

2019年1月 1日 (火)

電流連続モード

直流モーターをPWM駆動するときに、俗にいう
”電流連続モード”になるかどうかは、回路定数や
PWM周波数だけじゃ決まらなくて、モーターの運転状態
次第だと思うのだけど。

そのことに言及している物を見たことが無いし、
電流が連続的かどうかで、トルクの変動が無く、
なめらかに回るという一意的な解説も、
今一つしっくりこない...

この論説がいつも成り立つなら、
速度制御が発散していても、マクロには滑らかに
回っているように見えたりするのは、どう説明すればいいんだろうか。

DCDCとかのPWMで、電流連続/不連続モードになるってのは、
モーターの駆動とは全く関係ない話だと思うんだけど、
混同されてないかな...

本当にこれでいいんだっけ??

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

雑煮

新年らしいことをしたりする。
開発は、いったん休み。

190101

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

新年

明けましておめでとうございます。
本年も宜しくお願い致します。

------

さて、2月より、愛知県となりました。
近隣の皆様、どうぞよろしくお願いいたします。

------

今の構成のマウスも3年目となって、概ね必要なことも
まとまってきたし、構造に起因するトラブルも頻発しているので
この際、新規に仕立てたいと思います。

まあ、生活ペースがつかめるかどうかにもよりますが...

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

« 2018年12月 | トップページ | 2019年2月 »