手習ひデジタル信号処理(32) 正弦波の信号発生器、sin関数計算編その1

sinEC
Joseph Halfmoon

今回から信号の発生に入るのですが最初は正弦波の発生です。音を作るにせよ、無線にせよ、何が無くても正弦波。デジタルな計算で波形を作るのに私のような素人でも思いつくのがsin()関数を使うことです。しかしsin()のような関数の計算には時間がかかる、そこで信号処理の人はいろいろテクを使うんでありますな。

“手習ひデジタル信号処理(32) 正弦波の信号発生器、sin関数計算編その1” の続きを読む

モダンOSのお砂場(43) Mbed OS6、Mutexと近縁APIの微妙な関係?

MutexDUT
Joseph Halfmoon

前回はThread間の通信に便利なMail APIを使ってみました。今回から排他制御に入りたいと思います。しかし似たようなAPIが複数あって何をどこに使ったら良いんだかRTOS素人の私にはサッパリです。今回は一番単純そうなMutexを実験しつつ、近縁?らしいAPIのいくつかについてまとめてみました。

“モダンOSのお砂場(43) Mbed OS6、Mutexと近縁APIの微妙な関係?” の続きを読む

MicroPython的午睡(66) ラズパイPico、非反転アンプのオフセットとゲイン調整

AMP_CircuitEC
Joseph Halfmoon

前回前々回とMicroChip社製MCP4018デジタルポテンショメータをラズパイPicoで制御してみています。今回やってみるのは非反転アンプのオフセットとゲインの調整です。やってみて直ぐに分かったのが兄弟チップMCP4017が欲しいということ。MCP4018だけだと片手落ちです。

“MicroPython的午睡(66) ラズパイPico、非反転アンプのオフセットとゲイン調整” の続きを読む

手習ひデジタル信号処理(31) Weaver変調器、周波数シフタその4、COS掛けてLPF

WeaverDrawCOSPATH
Joseph Halfmoon

前回は入り口のBPFの特性を観察したので今回は真ん中辺です。BPFの出力に「中間周波数の」COS波かSIN波かけてLPFかけて低い方の信号を取り出す部分。その1で計算上はそういう操作をすればこうなる、と理解したつもりでいても実際に目の当たりにすると不思議。

“手習ひデジタル信号処理(31) Weaver変調器、周波数シフタその4、COS掛けてLPF” の続きを読む

ぐだぐだ低レベルプログラミング(58) RISC-V、整数と浮動小数の変換命令

fcvt_EC
Joseph Halfmoon

今回は浮動小数と整数の間で変換を行う命令fcvtを動かしてみたいと思います。16種類もあります。オペコード空間を節約しているRISC-V的にはかなり大きな一族です。それは、単精度と倍精度の浮動小数、32ビット幅と64ビット幅の整数、符号付と無、変換の方向の組み合わせがあるからです。今回は端折って4命令だけ動かしてみます。

“ぐだぐだ低レベルプログラミング(58) RISC-V、整数と浮動小数の変換命令” の続きを読む

鳥なき里のマイコン屋(153) ルネサスRX210マイコン、Lチカまでの手続きに心が折れる

R5F5210BBDFP
Joseph Halfmoon

最近ルネサス様もArmに力を入れているだけでなく、RISC-Vまで始めたみたいです。世界の趨勢に追いついた?しかし、ヒネクレものとしては、「残された」ルネサス独自コアが気になります。今回「お手頃価格」のRX210ボードを入手したので、まずはLチカをやり、ルネサス御家流を復習したいと思います。

“鳥なき里のマイコン屋(153) ルネサスRX210マイコン、Lチカまでの手続きに心が折れる” の続きを読む

MicroPython的午睡(65) ラズパイPico、アナログコンパレータのトリップ電圧

RPiPico_MCP4018_NJU7031
Joseph Halfmoon

前回MicroChip社製MCP4018デジタルポテンショメータをラズパイPicoに取り付けて制御。I2Cで制御できる「可変抵抗」です。今回は応用例としてデータシートに載っているアナログコンパレータの閾値調整をやってみます。想定の応用はセンサなどからのアナログ信号がある閾値を超えたらマイコンに割り込むとか。

“MicroPython的午睡(65) ラズパイPico、アナログコンパレータのトリップ電圧” の続きを読む

手習ひデジタル信号処理(30) Weaver変調器による周波数シフタその3、入力BPF特性

DUT_EC
Joseph Halfmoon

前回は、Weaver変調器による周波数シフタの全体コード(三上先生のコードそのまま)をビルドして実際に周波数シフトが起こっていることを実機上で確認いたしました。今回は、要素部品のうち初段の帯域通過フィルタの特性を実機で確認してみます。処理対象の100Hzから4.5kHzまでの周波数のみを通すもの。

“手習ひデジタル信号処理(30) Weaver変調器による周波数シフタその3、入力BPF特性” の続きを読む

モダンOSのお砂場(42) Mbed OS6、Mail、allocちょっと気が咎めるけど便利

Result
Joseph Halfmoon

前回はスレッド間で通信するのにQueueを使ってみましたが、今回は似た「先入れ先出し」の構造でMailです。Mail便利です。こちらを使うとQueueには戻れない?便利なのは、詰め込むデータのためのメモリ領域の割り当て/解放の機能を含んでいるところ。alloc使うと後戻りできまっせん。

“モダンOSのお砂場(42) Mbed OS6、Mail、allocちょっと気が咎めるけど便利” の続きを読む

ぐだぐだ低レベルプログラミング(57) RISC-V、浮動小数点数のロード/ストア命令

RISC-V load/store float
Joseph Halfmoon

今回は珍しくメンドクない命令です。浮動小数のロード、ストアです。アドレスの指定は通常のロード、ストア同様に整数レジスタに12ビットのディスプレースメントを加える方式。これだけ。シンプル。RISCだもんね。

“ぐだぐだ低レベルプログラミング(57) RISC-V、浮動小数点数のロード/ストア命令” の続きを読む

MicroPython的午睡(64) ラズパイPico、デジタルポテンショメータを制御

MCP4018
Joseph Halfmoon

今回ラズパイPicoに取り付けてMicroPythonで制御してみるのは、ソフトウエアで抵抗値を設定できる可変抵抗、デジタルポテンショメータです。MicroChip社製MCP4018であります。ソフトで制御できるというと回路をいじらないでも何かいろいろ出来そうで嬉しい気もします。まあ使い道にもよりますが。

“MicroPython的午睡(64) ラズパイPico、デジタルポテンショメータを制御” の続きを読む

手習ひデジタル信号処理(29) Weaver変調器による周波数シフタその2 実機動作確認

FFT300Hz
Joseph Halfmoon

前回はWeaver変調器の原理を学ぶ、ということで三角関数の計算に突入してしまいました。しかし実際に計算したのはMaxima様で私は見ていただけですが。原理は分かった(ホントか)ということで、今回は実機にプログラムを書き込んでその特性を観察してみたいと思います。

“手習ひデジタル信号処理(29) Weaver変調器による周波数シフタその2 実機動作確認” の続きを読む

モダンOSのお砂場(41) Mbed OS6、Queue、いろいろ疑問あるんですが。

Result
Joseph Halfmoon

今回はQueueを使ってみたいと思います。第34回で似たお名前のEventQueueというものを使ってみましたが、全く異なるものです。QueueはスレッドやISR間の通信のための仕組みで、EventQueueはノンプリエンプティブな制御権の移動の仕組みです。「よくある」Queueだと思ってやってみたのだけれど疑問あり。何故?

“モダンOSのお砂場(41) Mbed OS6、Queue、いろいろ疑問あるんですが。” の続きを読む

ぐだぐだ低レベルプログラミング(56) RISC-V、浮動小数点数のClassify命令

fclassEC
Joseph Halfmoon

また、メンドクセー命令が出てきました。浮動小数点数のClassify命令です。無限大、デノーマル、NaNといった訳ありのモノドモを識別する命令。勿論、普通の(ノーマル)な数はノーマルと分類します。浮動小数点素人の私にはNaNの2種類あるビットパターンなど皆目見当がつかないです。

“ぐだぐだ低レベルプログラミング(56) RISC-V、浮動小数点数のClassify命令” の続きを読む