2018年7月28日土曜日

小ネタ

 最近はSTM32でもC++を使うようにしているが、今回、std=c++17を指定したらコンパイラに怒られた。
 C++17からregisterが削除された。マイコンの低レベルライブラリはCで書いてあることもあり、registerが使われているところがある。とりあえず今回はstd=c++14にして逃げた。extern "C" { } で囲ってもダメみたい。
 あるヘッダをインクルードすると、それが別のヘッダをインクルードし、5回位別のをインクルードして、その先にregisterを使ってるインライン関数がある。ソースに書いて有れば問題ないんだけど、ヘッダファイルに書かれると困る。

***

 クラスのアクセサってどうするのが良いんだろう? 一般的なのはprivate変数の名前にGet接頭辞をつけたりSet接頭辞をつけたり、というパターン。またprivate変数はスネークケースで、Getterはキャメルケースで、SetterはSet接頭辞+キャメルケースで、というパターンも有るらしい。
 ドキュメントなんぞ書いてないけど、もしドキュメントを書く場合、名前順で並んだほうが見やすい。気がする(エディタによっては関数の一覧を表示する機能もあるが、これも名前順かな?)。そういう場合、Set/Get接頭辞ではGetBar(), GetBaz(), GetFoo(),SetBar(), SetFoo() という並びになり、SetBaz()が有るかを確認するにはSまでスクロールする必要がある。
 BarGet(), BarSet(), BazGet(), FooGet(), FooSet() と並んでいれば、BazSet()が無いのがすぐに分かる。

 普段ゆるふわ遊びプログラミングしかしない人間なので、命名規則とか、このあたり自分でも統一できてない。

***

 今使ってるオシロは2011年春に買ったPDS5022Sというヤツ。STN液晶になったモデルだが、その後にTFT液晶のモデルが発売されてたはず。
 だいぶ前からコントラスト調整のボリュームの調子が悪くなってきた。接触不良っぽい。分解記事を見るとカッチリとシールドがしてあるようで、開けるのが大変そう。コントラスト調整ができないわけではないので、だましだまし使ってる。

 今回、比較的小規模なマイコンの開発をやっていて、UARTやprintfといった機能を入れるのが大変(面倒)、という状態。ということで、DACをデバッグに使っている。これが意外と便利で、内部のアナログデータをオシロでグラフにして表示したり、棒グラフみたいに表示できる。
 persist機能を使えば過去5秒分の波形を重ねて表示したり、ということもできる。動きが早い波形はこれで表示するとかなり便利。ただ、5022は処理能力があまり高くなく、persistを使うとたまに波形を取り逃がしてる気がする。オシロが取り逃がしてるのか、マイコンがバグってるのか、いまいちよくわからない。
 そろそろ新しいオシロ欲しいなーと思うのだけど、致命的に問題が有るわけじゃないのでなかなか入れ替えられない。

***

 STM32F3は何日か前に初めて触ったが、ペリフェラルの使い方はF1やF4とだいたい同じだし、Cubeで初期化コードが生成されるし、使い慣れたマイコンという感じがする。ペリフェラルはだいたいHAL_hoge_Startで開始するので、初めて触るペリフェラル(e.g.オペアンプ)もサックリ1発動作した。

***

 STM32F303K8TにはRAMが16K、Flashが64Kしかない(しか、というか、も、というか、人それぞれだろうが)。ちなみにSTBee MiniのSTM32F103CBTは128K/20Kなので、それよりだいぶ小さい。

 相変わらずFreeRTOSを使っているが、データ処理のタスクが大きいだけで、他の3,4個のタスクは大部分の期間をdelayで過ごし、また数行の処理しかしていない。さすがにそのためだけにタスクを作るのもなぁ、と思ってコルーチンを使いたいなぁと思ったり。
 でも調べてみるとそう簡単な話でもないようだ。

 Tasks and Co-routines

 "タスクとコルーチンは異なるAPI関数を使用するため、キュー(またはセマフォ)を使用してタスクからのデータを渡すことはできません"
 "コルーチンは非常に小型のデバイスで使用するために実装されましたが、現時点ではほとんど使用されていません。そのため、コードからコルーチンを削除する予定はありませんが、それをさらに発展させる計画はありません"


 C言語によるco-routinesの実装も有るが、使うのがちょっと面倒。な、気がする。
 簡単な実装だとスタックが使えないので、全部staticで宣言するとか。まぁ、大したことではないんだが。

***

 最近はかなり暑くて、室温が35℃くらいある。
 北海道の古い住宅なのでエアコンなんて無い。ケトルを使ったら扇風機の回転数が下がるような家なので、エアコン増設も嫌だなぁ。
 何年か前は、夏は明るくなるまで作業して、暑くなり始める時間に寝て、暑い時間はぐだーっとして、夜の涼しくなってから作業を初めて、みたいな生活パターンだった。
 今年、特に夏季は月2回以上朝早くから出かける用事が有って、それに生活を合わせる必要が有って、結構しっかりと位相ロックができてる。が、暑い時期に作業しなきゃいけないのが大変。

0 件のコメント:

コメントを投稿