メモ書きブログ

日々の覚書

STM32のI2Cタイミング

STM32のI2Cタイミングは、いくつかの入力を行うと、タイミングレジスタを自動で算出するST公式のExcelツールが公開されている。

https://www.st.com/en/embedded-software/stsw-stm32126.html

PClockが低い状態で高速なBusSpeed設定をするとエラーとなったので、

設定不可能な値もチェックしてくれるようだ。

規格のFastMode、NormalModeだけで良ければ手間では無いが、このExcelのようにスピードをフレキシブルに作ろうとすると、計算処理が結構手間だと思う。

まず、はじめにPCLK/プリスケーラの設定を決めるあたりで、可否の判断をしたり、

最適なプリスケーラ値を出す必要があるため、全プリスケーラのパターンを先頭から総当たりして計算結果を出して判定していくのが良さそうか。

CMDからusbデバイスをPID検索

下記サイトをusbデバイスのpidが見つかったをひっかけることに成功

https://codehero.jp/window/44433346/cmd-command-to-check-connected-usb-devices

HardwareIDで検索できなかったので、DeviceIDで検索することにした

wmic path CIM_LogicalDevice where "DeviceID like '%%999%%999%%%'" get DeviceID

見つかっても見つからなくても%errorlevel%は0(成功)を返すので、

下記サイトやらを参考にして、行数を返すようにした。

https://qiita.com/RagWork/items/d8c404cba9d204a719c3

wmicコマンドだけだと複数行のリスト文字列が返ってくるので、findにパイプして

1行の数字文字列にすることで簡易化。

for /f "usebackq" %%A in (wmic path CIM_LogicalDevice where "DeviceID like '%%999%%999%%%'" get DeviceID ^| find /c /v "") do set LINECOUNT=%%A

echo %LINECOUNT%

DataGridのデータによってセル背景色を変更する

列のヘッダごとBindしていると、

いまいち分からなくて

データを追加するごとに

grid.Columns[col].GetCellContent(rowObj) as TextBlock

からTextBlockのBackgroundプロパティを変更する、というのをやってみたが、

全く変わらなかった。

データトリガ―をなんとか使えないかなと思って色々試した結果、

AutoGeneratingColumnで、

        DataGridTextColumn col = e.Column as DataGridTextColumn;

        Style style2 = this.TryFindResource("inputCell") as Style;

        col.CellStyle = style2;

XAMLに、

    <Style TargetType="DataGridCell" x:Key="inputCell">

        <Style.Triggers>

            <DataTrigger Binding="{Binding RelativeSource={RelativeSource self}, Path=Content.Text}" Value="IN">

                <Setter Property="Background" Value="LightGreen"/>

            </DataTrigger>

        </Style.Triggers>

    </Style>

参考

https://social.msdn.microsoft.com/Forums/netframework/en-US/f179392a-ed2a-48d4-8bbf-2e29cb5b213b/c-wpf-201312398datagird-header12398style123982120530340123942279326356?forum=csharpgeneralja

STM32 のADC個別ch読み出し

STM32のリソースとして1個しか無いADCで、 ch(port)を切り替えながら個別で読み取るには2種類の方法がある。

DMAを使って一括で指定アドレスに転送するか、 個別にchを切り替えながら読み取るか。

常にセンサを一括で読み取れれば良いが、たまに読みたいだけのchがある場合は個別で良い、と思う。

https://stackoverrun.com/ja/q/12434967

ここのコードを読むと、

  • HAL_ADC_ConfigChannelでチャンネルを指定する
  • キャリブレーションする
  • ADC開始する
  • 変換
  • ADC停止する
  • HAL_ADC_ConfigChannelでADC_RANK_NONEを指定する

ということをやっている。

ADC_RANK_NONEを行わないと、うまく切替が行われなくてハマった。

ソフトウェア設計書を書くには何のツールを使えば良いか

個人的には別に何で書いても良いと思うのだが、何が良いかは業界によるのかなーと思っています。

ソフトウェアのエンジニアだけの集まりだけなら、MarkdownやらplantUMLで書いても管理できるし、意思疎通できるでしょう。 そもそも概要だけ把握できれば、詳細はコードを読んだ方が分かるのだから。

自分の場合は、資料はソフトにはあまり知見のないお客さんにも出さなきゃいけないし、色々な認証取ったりすることもあって資料作りそのものが仕事になることもかなり多い。 社内的にもメカや品質部門などに資料を共有しなきゃいけないときもあり、Officeはインストールされているのが当たり前ということもあって、ビジネスマン()の共通言語になってるんだよね。

エクセルは比較的何でもできるツールだと思う。カラム幅の調整には時間がかかるが、表計算能力とパワポ並みの図の描きやすさが魅力。しかし、見出しや目次が作りづらいという問題があって、他人の作ったエクセル資料はどこに何が書かれているのか把握するのが結構難しい。大体は横に適当に名前が付けられた謎ブックが大量に並んでいるイメージがある。 ワードは、後から他人にも伝わるちゃんとした文書を残したいという場合は、便利だけどエクセルよりもひとつひとうの作業に時間がかかるイメージがある。

ボン・ヴォヤージュ

仕事で幕張に泊まったのだが、夕方17時頃にはホテルにチェックインできたのでイクスピアリとボン・ヴォヤージュを見に舞浜駅に行ってみた。

ディズニーには、夕方5時から入場できるウィークナイトパスという通常より価格が安めのチケットがあ。選択肢の人もいるかもしれない。

 

f:id:hirakisp:20220921090254j:image

ボン・ヴォヤージュはハロウィーングッズが出たというタイミングだったのでホームページには入場予約制と書いてあったが、この日は普通に入ることができた。

f:id:hirakisp:20220921091039j:imagef:id:hirakisp:20220921091158j:image

 

店内は広く清潔。品揃えも豊富で店員さんも笑顔で対応してくれる。さすがにパークの一部だなと感心、素晴らしい空間だと思います。
f:id:hirakisp:20220921091203j:image
f:id:hirakisp:20220921091201j:image

 

イクスピアリは撮影禁止だったのだが、中のディズニーショップもかなり広くて品揃え豊富だったのは意外だった。イクスピアリとボン・ヴォヤージュどちらかにしか無い商品なども多数あった。
f:id:hirakisp:20220921091154j:image