手習ひデジタル信号処理(5) STM32F446、非巡回型移動平均

MovingAVG_BlockDiagram
Joseph Halfmoon

三上直樹先生著、工学社『「Armマイコン」プログラムで学ぶデジタル信号処理』で手習ひさせていただいとります本シリーズもようやくデジタル信号処理っぽいボード線図が出てくるようになりました。わたしゃ嬉しいよ。といっても今回は非巡回型移動平均、名前は厳めしいですが「普通の移動平均」でやんす。

“手習ひデジタル信号処理(5) STM32F446、非巡回型移動平均” の続きを読む

ソフトな忘却力(7) clock()関数はCPUタイムを集計するのだ。経過時間じゃない。

RPi3_pthread
Joseph Halfmoon

時間計測のとき、プロセッサ固有の性能カウンタばかり使用しておったのです。今回はCレベルの関数で「汎用」にやろうとして失敗しました。なれないことはするもんじゃないです。とりあえず pthread の効用を測定する雛形は作成。ラズパイ3上では、それらしいグラフを描けました。他のマシンや pthread以外への展開はまた次回かな。

“ソフトな忘却力(7) clock()関数はCPUタイムを集計するのだ。経過時間じゃない。” の続きを読む

MicroPython的午睡(47) genericポートでもM5ATOMLiteはOKよ

M5ATOM_DUT1014
Joseph Halfmoon

前回、uasyncioのお陰でNode-REDサーバとの通信タイミングを自由に決められるようになりました。今回からM5ATOMLiteに「手足」をつけ、前回までに整備?した「インフラ」を使ってNode-REDとの間を接続して行きたいとおもいます。外付けハードの制御の前に、最初は内蔵のLEDとスイッチだな。

“MicroPython的午睡(47) genericポートでもM5ATOMLiteはOKよ” の続きを読む

ぐだぐだ低レベルプログラミング(33) RISC-V、比較命令はあるけどフラグは無い

slt_vscode_ec
Joseph Halfmoon

正確に言えば、RISC-Vにはx86のFlagsのような演算フラグレジスタは無い、というべきでしょうか。RISC-Vにも制御フラグは制御レジスタの中にあります。それでも、比較命令やって、その後分岐命令やって、みたいな古い頭のコーディングに慣れていると、最初は戸惑います。でも Flags なんて無きゃ無いで済んだんだ。。。

“ぐだぐだ低レベルプログラミング(33) RISC-V、比較命令はあるけどフラグは無い” の続きを読む

IoT何をいまさら(97) ATSAMD51、DACを使う#1、Wio Terminal

DAC_EC
Joseph Halfmoon

Microchip社のArm Cortex-M4搭載マイコン、ATSAMD51の周辺回路をなるべくダイレクトに制御してみるシリーズ、今回はDAC(Digital to Analog コンバータ)であります。データシートを読んでみると信号処理向け支援機能なども内蔵しておりなかなか強力。とりあえず今回は簡単にタイマ割り込みハンドラの中でソフトでDA出力してみました。

“IoT何をいまさら(97) ATSAMD51、DACを使う#1、Wio Terminal” の続きを読む

鳥なき里のマイコン屋(141) ラズパイPico、ハードウエア割り算器の利用

DividerEC
Joseph Halfmoon

前回は浮動小数点数の計算でしたが、今回は整数の割り算です。組み込みMCUのプログラマには「割り算は避ける」習性が刷り込まれています(個人の感想です。)せいぜい2のべき乗の割り算に帰着させて右シフトで逃げます。しかしラズパイPicoでは割り算、あまり苦になりません。ハードウエアの割り算器を搭載。

“鳥なき里のマイコン屋(141) ラズパイPico、ハードウエア割り算器の利用” の続きを読む

手習ひデジタル信号処理(4) STM32F446、最初はIIRフィルタ?

IIR1st
Joseph Halfmoon

信号処理素人の個人の感想ですが、デジタル信号処理の入門書の多くはFIRが先、IIRが後という順番じゃないかと思います。IIRは難しそうだからかな。でも実装するとなるとIIRの方が簡単だったりして。ところが、三上先生本では、先にIIRが登場、どっちが先でもいいっちゃいいですが。まずは前回プログラムを「チョイ変」して1次のIIRフィルタをしみじみ?味わってみたいと思います。

“手習ひデジタル信号処理(4) STM32F446、最初はIIRフィルタ?” の続きを読む

MicroPython的午睡(46) uasyncioでMQTT送受信、ATOMLite

M5ATOM Flow
Joseph Halfmoon

前回までで「エッジ側」M5ATOM LiteとNode-REDサーバー(Raspberry Pi 3)との間でMQTTを介してJSONオブジェクトを送受できるようになりました。しかし不満なのは送受信のタイミングです。前回まで単一のmainループにお任せだったので便利とは言えない仕組みでした。今回から uasyncioを使って改良していきたいと思います。

“MicroPython的午睡(46) uasyncioでMQTT送受信、ATOMLite” の続きを読む

ぐだぐだ低レベルプログラミング(32) RISC-V、RV32Iシフトあれどもローテイト無

shiftEC
Joseph Halfmoon

今回は、シフト命令を使って行きたいと思います。ハッキリ言ってシフト系の命令冷遇されています。16ビットの圧縮命令にエンコードしてくれるオペランドは限られているし、ローテイト命令など基本命令セットであるRV32Iには含まれとりません。最低限必要なものは用意したので、後はコンパイラでよしなに、という感じですか。

“ぐだぐだ低レベルプログラミング(32) RISC-V、RV32Iシフトあれどもローテイト無” の続きを読む

IoT何をいまさら(96) Wio Terminal、困ったときの uf2。TC割り込み

TC8bitEC
Joseph Halfmoon

別件でSTM32とRP2040でAD, DAを使っているので、ATSAMD51でもやるべしと思い立ちました。先立つものはサンプリング周波数のタイミングということでTC7でタイミング(割り込み)を作ろうとしてハマりました。なぜか割り込み立て続けに入り過ぎ。そのあおりでオブジェクトのダウンロードすら不能。困りました。

“IoT何をいまさら(96) Wio Terminal、困ったときの uf2。TC割り込み” の続きを読む

鳥なき里のマイコン屋(140) ラズパイPico、float計算でROMを呼んでるよね

fmul_fdiv_ec
Joseph Halfmoon

今回は1点確認するだけであります。ラズパイPico上で float型 を使ったら RP2040の内の「fast floating point」を呼んでくれているのだよね、と。ラズパイPicoで積極的にfloatを使いたいとは思わないのですが、昨日 Cortex-M4F機(STM32F446RE)の上で float していたので、Picoの上の浮動小数点はどうなの?と気になったためです。

“鳥なき里のマイコン屋(140) ラズパイPico、float計算でROMを呼んでるよね” の続きを読む

手習ひデジタル信号処理(3) STM32F446、DAのアップサンプリング

NUCLEO-F446RE
Joseph Halfmoon

シリーズ3回目ともなり、ようやく今回はちょっとデジタル信号処理っぽいところに入れます。とはいえ、まずは「動かして効果を実感してみよ」という感じです。実際の信号処理は裏のライブラリで処理されているものを使っているだけでお勉強はまだ後です。しかしま、衣の下(鎧ですぞ)がようやくチラチラしてきました。

“手習ひデジタル信号処理(3) STM32F446、DAのアップサンプリング” の続きを読む

MicroPython的午睡(45) MQTTでJSON-OBJ受信、M5ATOMLite

MQTTsettings_Flow
Joseph Halfmoon

前回が「送信」であったので、今回は当然「受信」です。しかし受信で想定しているのは何か設定値がホストから指令されてくるというシーン。「設定値」ともなるとそれを保存しておく場所から用意しておかないとマズイ気がします。そこで、設定値はNode-REDからアクセスできるSQLiteのデータベースに記録しておき、それを取り出して送ることに。今のところ何も効果はないですが。

“MicroPython的午睡(45) MQTTでJSON-OBJ受信、M5ATOMLite” の続きを読む

IoT何をいまさら(95) ATSAMD51、TRNG発EVSYS経由PORT行

TRNG_ACTIVE_EC
Joseph Halfmoon

周辺回路の動作完了をキッカケにメモリへ転送(DMA)とか、タイマのトリガでAD変換始めるとか、CPUの介在なしに装置間で制御を伝えることがあります。その中でもMicrochip社のATSAMマイコンが搭載しているEVSYSというものは極めて強力、ほとんどの周辺装置間でコミュニケーションがとれます。今回はTRNGでPort出力を制御してみます。

“IoT何をいまさら(95) ATSAMD51、TRNG発EVSYS経由PORT行” の続きを読む