セロー225 サブタンク移植プレート

趣味を事業化できれば効率的です。簡単な自動車用品を開発販売できないか模索しています。

これは何だかわかりますでしょうか?

これはセロー225に、オイルクーラーを装着したとき、リアサスのサブタンクを左側に移設するためのプレートです。

ホーンの取り付け穴を利用して、取り付けます。 (ホーン は別の場所に移動させます) 材質はアルミです。

フレームにサブタンクを直接スチールバンドで固定することも可能ですが、ずれてきますし、何といっても 美しい 取付 といえません。 溶接設備 がないと、右側からオリジナルのプレートを切り取って付けるのも大変です。

装着状態の画像は以下のとおりです。

ご興味のある方で自作は面倒な方はこちらまで。 知り合いのレース屋さんに量産を相談してみます。

BluetoothGattCallback STATE_DISCONNECTEDでstatus=14が発生する

AndroidのBLE通信にて、BluetoothGattCallbackのonConnectionStateChange(STATE_DISCONNECTED)にて、status=14で切断される事象が発生しました。発生頻度は低く、発生後BLE通信の調子が悪化し、14が連発します。

弊方のトレースログでは、

発生頻度は低いですが、発生後BLE通信の調子が悪化し、14が連発します。 アプリを再起動すると復活します。

海外のサイトを調べると「14」は、GATT_ERR_UNLIKELY、直訳すると「ありえないエラー」です。

それ以外、WEB上には詳しい情報や事例はありません。弊方は、複数のBLE計測器機器を、シーケンシャルに読みだししています。その影響でありましょうか?

再現性も不明。エラーメッセージを表示して、ユーザに計測を中止してもらうしかありませんでした。

SERROW225 エクステンションキャリア

趣味を事業化できれば効率的です。簡単な自動車用品を開発販売できないか模索しています。

SERROW225 エクステンションキャリアの試作を紹介します。

SERROW225は足&旅パイクとしても多く利用されるようですが、Y’s Gear純正のアルミキャリアは、ちょっと小さいです。アルミ角材で拡張している方もますが、美しくない。大きすぎるのも美しくない。そこでアルミ縞板で、コンパクトな追加荷台を作成しみました。

ご興味のある方で自作は面倒な方はこちらまで。 知り合いのレース屋さんに量産を相談してみます。

HP G800に、CONTEC「DA12-8」「PIO-16」 をSD-PECPCiRi2で接続する

組込みソフトのデバック用に、任意波形発生器の必要になり、CONTECのDA/DIOボードのPCIボードを用意しました。PCI用だと種類が豊富でUSEDなら格安です。しかし今時のディスクトップではPCIバスがありません。そこで、AREA社のPCIe→PCI変換ボード「SD-PECPCiRi2」を試しました。この製品は、PC内部用とPC外部用の2つの基板に分かれています。

PCは「HP G800 SFF」、Win10。ドライバーをインストールし、DA12-8は通電し繋がりはしますが、デバイスマネージャで変換ボード「PCI to PCIブリッジ」は現れますが、「CONTEC Devices」が現れません。

DA12-8は5V駆動ですが、変換ボードの出荷値が3.3Vだったのでこれが原因かと思い、変換ボード側を5Vに切替えるとBIOSが起動しなくなりました。

「PIO-16」では、BIOSは起動するものの、変換ボード自体も認識しなくなりました。

AREA社に色々と問合せたところ、変換ボードの内部用に、PCIeバスとは別に電源供給が必要なようです。取説には接続必須とも記載されていなかったため、大電流必要時のオプションかと解釈していましたが違うようです。HP G800では、追加電源の配線が無いため接続しないままであった事情もあります。

SATA電源ケーブルの途中に、コネクタだけ追加して、変換ボードに接続しました。

外部ボード用の電源ケーブルも接続します。

これでBIOSも起動し、OSもCONTECを認識しました。

おそらくPCIeには、5Vが無いようなので、PC本体から供給が必要だったのではないかと思います。

RL78で16bit × 16bit = 32bit演算が狂う

CA78K0コンパイラで、16bit × 16bit = 32bit演算が狂う事象が発生しました。コード概略は、

U16 a=125; 
U16 b=430; 
U32 c;
 c = a * b;     // c=10になる

WindowsやAndroidアプリでは考えられない事象ですが、OS無しの16bitマイコンありがちな事象です。しかし、乗算結果の上位16bitが捨てられるありえそうですが、意味不明な演算結果です。試しにキャストを明示してもNGでした。

 c = (U32) ( a * b );     // これもNG

仕方がないので、アセンブラのコード展開をみてみました。

movw    ax,[hl+4]
movw    _@RTARG0,ax
movw    ax,[hl+8]
call    !@@iumul
clrw    bc
movw    [hl],ax
xchw    ax,bc
movw    [hl+2],ax

乗除算は、マイコンライブラリにまとめられているようです。16bit × 16bit = 32bitのmulhu命令が、なぜダイレクトに展開されないのでしょう? マイコンライブラリはあまり使わないようにしますが、元々使われていたら仕方ありません。でも怪しいのは、「clrw bc」のところです。明らかに16bit捨てられています。

キャストを明示した場合では、axレジスタの方がクリアされます。

movw    ax,[hl+4]
movw    _@RTARG0,ax
movw    ax,[hl+8]
call    !@@iumul
movw    _@RTARG0,ax
clrw    ax
movw    _@RTARG2,ax
movw    [hl+2],ax
movw    ax,_@RTARG0
movw    [hl],ax

マイコンライブラリを使用しないようにすると解消する気もしますが、全体的に、ロードモジュールに影響が生じます。正しい結果が得られるC言語の書き方を、TRY&ERRで探すしかいりません。

今回は、以下の書き方で直りました。

U16 a=125; 
U16 b=430; 
U32 c;
 c = a;      // 一旦32bit変数に入れる
 c *= b;     // c=53750になる

アセンブラ展開コードは、、、

movw    ax,[hl+4]
clrw    bc
xchw    ax,bc
movw    [hl+2],ax
movw    ax,[hl+8]
movw    _@RTARG4,ax
movw    _@RTARG6,#00H
movw    ax,[hl] 
movw    _@RTARG0,ax
movw    ax,[hl+2]
movw    _@RTARG2,ax
movw    ax,_@RTARG6
call    !@@lumul
movw    ax,_@RTARG2
movw    [hl+2],ax
movw    ax,_@RTARG0
movw    [hl],ax

clrw命令がなくなり、上下16bitがスタックに格納されていることが確認できました。だいぶコードが増えたのが気がかりです。

CS+でROMサイズ違いのマイコンに切替える

今回、製品ボートの数が少なくて、開発用に同じシーリーズでピン数のマイコンの評価ボートを購入したのですが、ROM/RAM容量が違いました。ルネサスCS+では、既存のプロジェクトから、ピン数同じでもマイコン型番変更ができないようです。

一からプロジェクト生成すると、自動コード生成やビルド設定等々を入力しなおさないといけません。ミスがあると組込みソフトでは致命的です。最初から関わっていない製品ではなおさら。

幸いプロジェクトファイルはxml形式なので、エディタで直接変更してみました。

以下の部分は、複雑なので、開発用マイコンで空プロジェクトを作成してコピーしました。

CS+を再起動して、ビルド、実行し、これで問題なさそうでした。

※くれぐれね良い子はまねしないでください。

BluetoothGattのwriteCharacteristic()がfalseでリターンする

BLEのAndroidアプリを作成中、時々、BluetoothGattクラスのwriteCharacteristic()メソッドがfalseでリターンする事象が発生しました。複数扱っているBLE機器の中で、特定の機器だけ? 機器側の不具合でしょうか?

何がおこっているかBLEアナライザを使えばよいのですが、安いものだとみれません。海外のサイトを見ても情報がなく、BluetoothGattのステータスは、BluetoothGattCallback時でないとわからない。こういう場合は、少しwaitをおくか、retryしてみるに限ります。しかし解消せず。

そこでたまたま気づいたのですが、BluetoothGattServiceのインスタンスの取得から、retryすると解消しました。

当事象が発生する機器は、機器メーカのカスタムコマンドでアクセスする方式で、機器から測定値を一回受信するのに、最低4回writeCharacteristic()のcallが必要でした。他のメーカさんは大体一回で、二回要するのはペアリング時のみでした。このあたりの仕様とAndroid側の相性があるのかもしれません。

昇給後、社会保険の申請が遅れた場合

当社は8月が機首、機首から3カ月が役員報酬の昇給期限です。10月に役員報酬の昇給を行いました。12月に昇給の申請をe-Govで行いましたが、内容不正で却下されことに気づかず、3月に再申請しました。そこで今月、規定より高額な支払い用紙がきました。

恥ずかしながら現在、役員報酬は15万円。社会保険料総額は、4.5万円くらいになるはずです。また請求額は、社会保険金額の一覧表にありません。

昇給の申請が間違ったかと思い、日本年金機構の事務所に聞きに行きました。結果、給前と昇給後の保険料の差額が、1~3月分を一括請求しているとのことでした。

支払い用紙にはこのような注記はなく、ネットではこのような情報が得られず、悩みました。しかしながら、まともな会社では、申請遅れあり得ないではあり得ないでありましょうね。

何分、e-Govの申請却下に気づけなかったのが難です。e-Govでは、メールアドレスはシステムに登録しますが、デフォルトでは、申請結果は登録したメールアドレスに連絡されないですe-Govのメール通知設定を有効にしました。

また申請却下の原因は、「事業所整理番号」の記入方法が、今までの紙の場合とe-Govでは異なっていました

SERROW225 ミニスクリーン

趣味を事業化できれば効率的です。簡単な自動車用品を開発販売できないか模索しています。

セロー225をツーリングで使われている方も多いかと思います。オフロードで邪魔にならず、 雨ツーリングや冬 ツーリング で使えるスクリーンを制作してみました。

アクリル板ではすぐキズだらけになるので、ポリカボーネイトで作成。

ステーはアルミ。

角度は少し調整可能してあります。

もしもニーズがございましたら、コメントいただけないでしょうか。量産を検討いたしします。

Android Stdio 4.1.1でコンポーネント属性が表示されない。

共同開発者にAndroid stdioのバージョン4.1.1を合わせたところ、デザイン画面でコンポーネント属性が表示されなくなりました。GUI選択しているにも関わらず「コンポーネントが表示されていません」と表示されます。

いろいろとトライしたり、他のweb情報を参考にしてみましたが、改善せず。4.1.2にUPてしもダメ。14.1.1はアンインストールし、Android stdio 4.0.0に戻すと解消しました。

2つのAndroid stdioバージョンを、入れてみましたが、Javaのバージョン不一致でエラーとなりました。

結果、リリース時のみ、Android stdioを入れ替えて対応しています。