COLUMN
COLUMN
ギアの紹介とトラブルシューティング事例(その4)
こんにちは。開発部のTです。
その3で頑張って追加したとか言っていたのに、また半年以上経ってしまいました(o_ _)o
しばらく仕事の大波が来ていたのでご容赦を。
今回もマイコンにしておきましょう
以前勤めていた会社でソフト設計者が言っていました。
「ハードウェアはどう動くかわからないから難しい。だから素直に動くソフトをやることにした。」
・・・いやいや。そんなに素直じゃないぞ(-_-;
例えば通信で読み込んだ変数Rxdataの中の、LSBから2bit目が立ってるかどうかで分岐させるときは、
hoge = Rxdata & 0x02;
if (hoge)
{
hogehoge ++;
}
といったプログラムを作ると意図したとおりに分岐してくれる(はず)。
そのノリでビットフィールドのbitをset / resetしようとして
hoge.bit.hoge1 = Rxdata & 0x02;
とかやってしまったとき、Rxdata = 0xFFでもビットフィールドhoge.bit.hoge1がセットされなかったことがありました。
教えてGemini~
ということで生成AI Geminiに聞いてみたところダメ出しされてしまいました。
賢い読者の方は既に気づいていると思いますが、Rxdata & 0x02 は2か0の値をとる ためです。
ビットフィールドには1か0を入れなきゃなので、
hoge.bit.hoge1 = (Rxdata & 0x02) ? 1 : 0;
と書くのが正解でした。
ややこしい。どこが素直やねん(-_-#
・・・いや、わかってしまえば十分素直か。
ちなみに、コラム一覧のサムネールに使ったチョコレートは”bit”にちなんでます。(某B社の製品名)
皆さんお待ちかねのランニングギア紹介
今回はヘッドライトを紹介します。
MH10(LED LENSER)
既に生産終了モデルで、現在一番近い(というかほぼ同じかも)のはH8Rになると思います。
3段階のうち真ん中の明るさ(250ルーメン)で一晩余裕な電池のもちと、その電池が一般的な18650セルを採用しているのが気に入っています。
・・・電池は純正品を使ってくださいね。それ以上は言えません(-_-;
