
今回は浮動小数と整数の間で変換を行う命令fcvtを動かしてみたいと思います。16種類もあります。オペコード空間を節約しているRISC-V的にはかなり大きな一族です。それは、単精度と倍精度の浮動小数、32ビット幅と64ビット幅の整数、符号付と無、変換の方向の組み合わせがあるからです。今回は端折って4命令だけ動かしてみます。
デバイス作る人>>デバイス使う人>>デバイスおたく
前回MicroChip社製MCP4018デジタルポテンショメータをラズパイPicoに取り付けて制御。I2Cで制御できる「可変抵抗」です。今回は応用例としてデータシートに載っているアナログコンパレータの閾値調整をやってみます。想定の応用はセンサなどからのアナログ信号がある閾値を超えたらマイコンに割り込むとか。
前回は、Weaver変調器による周波数シフタの全体コード(三上先生のコードそのまま)をビルドして実際に周波数シフトが起こっていることを実機上で確認いたしました。今回は、要素部品のうち初段の帯域通過フィルタの特性を実機で確認してみます。処理対象の100Hzから4.5kHzまでの周波数のみを通すもの。
前回はスレッド間で通信するのにQueueを使ってみましたが、今回は似た「先入れ先出し」の構造でMailです。Mail便利です。こちらを使うとQueueには戻れない?便利なのは、詰め込むデータのためのメモリ領域の割り当て/解放の機能を含んでいるところ。alloc使うと後戻りできまっせん。
前回はWeaver変調器の原理を学ぶ、ということで三角関数の計算に突入してしまいました。しかし実際に計算したのはMaxima様で私は見ていただけですが。原理は分かった(ホントか)ということで、今回は実機にプログラムを書き込んでその特性を観察してみたいと思います。
今回はQueueを使ってみたいと思います。第34回で似たお名前のEventQueueというものを使ってみましたが、全く異なるものです。QueueはスレッドやISR間の通信のための仕組みで、EventQueueはノンプリエンプティブな制御権の移動の仕組みです。「よくある」Queueだと思ってやってみたのだけれど疑問あり。何故?
前回、懐かしの三洋電機製LC7366NをラズパイPicoのMicroPythonから制御してDMTFトーン(プッシュホンのピポパポ音)を発生してみました。1音、それも波形のみ観察でした。今回はスピーカを取り付けて16音全てを「聞いて」みたいと思います。耳で聞くのは良いけれど、トーンをデコードしてくれる相手がいないです。
前回はRabbit4000からラズパイに向かってPingかけるのを、ラズパイ上のWiresharkで覗き見してました。今回は、Rabbit4000とパケットをやり取りするトイメンとして、Python上のScapyを使ってみます。これでEthernetの両側をパケットレベルでプログラムできる筈。
前回ConditionalVariableをヤバイなどと言ってしまいましたが、どうもそんなこと無いみたいです。メモリの使い方がOS2とOS6で違うだけだったみたい。ボードもOSも「2種併用中」で混乱してました。さて、今回はEventFlagsです。スレッド間、あるいは割り込みサービスルーチンからイベントを他に簡単に伝えることができるもの。