Pico三昧(12) Pico C/C++SDKで4.096MHzクロック生成その1PWM

PWM4096_EC
Joseph Halfmoon

あるデバイスを動かそうとしたら4.096MHzのクロックが必要と書いてありました。手元には4MHzピタリの水晶振動子の在庫はあったと思ったですが、4.096MHzありません。ラズパイPicoで制御するつもりなのだし、ラズパイPicoでクロックから作ってしまえ、という目論見。「普通のマイコン」ならタイマをいじるところですが、ラズパイPicoでは違う、と。

“Pico三昧(12) Pico C/C++SDKで4.096MHzクロック生成その1PWM” の続きを読む

モダンOSのお砂場(38) Mbed OS6、Timerでインターバル測定。STM32

MbedSRC
Joseph Halfmoon

前回がPWM出力だったので、今回は逆に入力インターバルをタイマAPIで測定してみました。入力は割り込み受け、人間がボタンを押す想定なので精度的にはいい加減な方法です。まあ、とりあえずボタンを押す時間間隔は測れたと。また、前回と異なり今回はオブジェクトコードの作成にWebベースのMbed Compilerを使ってみます。

“モダンOSのお砂場(38) Mbed OS6、Timerでインターバル測定。STM32” の続きを読む

うさちゃんと一緒(1) Rabbit4000にPingしてお返事をしてもらう

RabbitBoard
Joseph Halfmoon

うさちゃん印のRabbit4000、Z80に似た8ビットの命令セットを持つちょっと古いけれども強力なマイコン、を手に入れてインストールをし動作確認をいたしました。今回から、少しづつ「うさちゃん印」を動かしていきたいとおもいます。まずは「売り」の機能Ethernet I/Fの動作確認から。外からPingしてお返事を確認してみます。

“うさちゃんと一緒(1) Rabbit4000にPingしてお返事をしてもらう” の続きを読む

ぐだぐだ低レベルプログラミング(52) RISC-V、浮動小数のmin/max

VNCtransfer
Joseph Halfmoon

RISC-Vは、RISCの中でもシンプルで「絞り込んだ」命令セットでありますが、浮動小数点数を扱う命令結構多いんじゃないかい。まあ面倒くさいものを扱うので、いたしかたないか。RISC-Vのせいではないですな。前回は積和演算命令でしたが今回は最大、最小求める命令です。

“ぐだぐだ低レベルプログラミング(52) RISC-V、浮動小数のmin/max” の続きを読む

Pico三昧(11) Pico C/C++SDKでinterp#5、補間ついでに配列舐める

Debug000
Joseph Halfmoon

今回は前々回のBlendモード再びです。その上、Datasheetのサンプルプログラムほぼほぼそのままです。何といっても中の人の書いたサンプルプログラム流石すぎます。Blendモードで補間をするついでにデータ配列を舐めるためのポインタアドレスまで作ってました。私のような凡人には考えつかないテクであります。

“Pico三昧(11) Pico C/C++SDKでinterp#5、補間ついでに配列舐める” の続きを読む

手習ひデジタル信号処理(24)残響生成器その3、マイクとスピーカつけて残響音を聞いてみる

Reverb_DUT
Joseph Halfmoon

前回アナログ・マイクロフォンを追加、ようやく残響生成器を実際に動かしてみることができるようになりました。スピーカは100円ショップのものを第20回でもつかったスピーカアンプで駆動してみました。確かに残響しています。マイクを叩くと長い地下道でコツコツ歩いているような効果音?つくれました(末尾に音声添付。)

“手習ひデジタル信号処理(24)残響生成器その3、マイクとスピーカつけて残響音を聞いてみる” の続きを読む

鳥なき里のマイコン屋(152) 最強の8ビット?Z80の後裔?Rabbit走る

Rabbit4000
Joseph Halfmoon

以前から気になっていた「うさちゃん印」のチップを遂に入手、インストールして動作確認するところまでやって見ました。Digi international社傘下に入った元Rabbit semiconductorのRabbit 4000チップです。最新機種のRabbit 6000と比べると2世代前とは言え、Z80テイストの8ビット機としてはなかなか強力。

“鳥なき里のマイコン屋(152) 最強の8ビット?Z80の後裔?Rabbit走る” の続きを読む

モダンOSのお砂場(37) Mbed OS6、PWMを使う。STM32

PWM_DUT_EC
Joseph Halfmoon

今回はPWM(Pulse Width Modulation)出力をMbed OSのAPIを使って動作させてみたいと思います。前回、外部端子割り込みが使えるようになったので、外部端子割り込みでPWM出力を開始/停止する機能付きとしてみました。簡潔で分かり易いAPIのMbed OSです。サンプルプログラムの作成もお気楽。

“モダンOSのお砂場(37) Mbed OS6、PWMを使う。STM32” の続きを読む

ぐだぐだ低レベルプログラミング(51) RISC-V、浮動小数積和演算、4種あるノダ

maixFlash
Joseph Halfmoon

今回は前回と以下同文でラクチンなどと呟いていたら、前回コードにしょうもないバグ発見。天網恢恢疎にして漏らさず、違うか。お詫びして前回分をさきほど修正させていただきました。今回は前回一種しかやらなかった積和演算命令、実は全部で4種もあったという話であります。

“ぐだぐだ低レベルプログラミング(51) RISC-V、浮動小数積和演算、4種あるノダ” の続きを読む

Pico三昧(10) Pico C/C++SDKでinterpその4、クランプモード

interpClampVScode
Joseph Halfmoon

ラズパイPicoのinterpユニットを使ってみる4回目は、Clampモードです。前回Blendモードを使ってみましたが、これは各コアに2個づつあるinterpのうち「0」のみの機能でした。じゃ「1」の方は何かないの?というとClampモードを持っているのです。上下の境界を超える値を「クランプ」してくれる機能です。

“Pico三昧(10) Pico C/C++SDKでinterpその4、クランプモード” の続きを読む

MicroPython的午睡(61) M5ATOMLite、ランニングテスト用改良?改悪?

RunningTestDUT
Joseph Halfmoon

前回WatchDogタイマを使ってみたのは、M5ATOMLite用の「環境測定&MQTT報告」スクリプトを長時間走らせているとハングする現象の対策のためでした。しかしWatchDogで復旧を試みるまえに原因に当たりをつけておきたいです。そこで「ダイイングメッセージ」が残るようにスクリプトを改変。

“MicroPython的午睡(61) M5ATOMLite、ランニングテスト用改良?改悪?” の続きを読む

モダンOSのお砂場(36) Mbed OS6、InterruptInを使う。STM32

Nucleo_F401RE_UserButton_LD2
Joseph Halfmoon

前回はスレッドを使って2つの仕事を並行処理でした。今回は外部端子割り込みを使ってみます。Mbed OS6での割り込み処理の流儀は、FreeRTOSの割り込みの流儀とはちょっと違う感じがいたします。OSとして割り込みやIOなどを「仕切る」Mbed OS6と、他のフレームワークに乗っかってRTOS機能を提供するFreeRTOSと(個人の感想です。)

“モダンOSのお砂場(36) Mbed OS6、InterruptInを使う。STM32” の続きを読む

ぐだぐだ低レベルプログラミング(50) RISC-V、浮動小数積和演算、速さだけでないノダ

fmadd_fmul_EC
Joseph Halfmoon

前回、浮動小数点の加減算をやりました。その前に例外を「味わう」ために浮動小数点の除算をやっています。そこで今回は必然の乗算です。ただ掛け算が出来たと喜んでも芸がありませぬ。RISC-Vには、普通の掛け算命令だけでなく、積和演算命令もあります。信号処理(積分)などするときはこちらの方が「普通」。今回はこの2つを比べてみる、と。

“ぐだぐだ低レベルプログラミング(50) RISC-V、浮動小数積和演算、速さだけでないノダ” の続きを読む

Pico三昧(9) Pico C/C++SDKでinterp その3、シンプルな線形補間

blend Mode Interporation
Joseph Halfmoon

ラズパイPicoの特長の一つであるinterpを扱って三回目にして、ようやく回路名称である interpolator (補間器)の主目的である補間を試みてみます。今回は整数型のシンプルな線形補間です。Blend Modeというモードを設定するだけで、後はレジスタに値を書き込むだけで補間を行ってくれます。便利っちゃ便利ですが、Blend Modeって何者?という疑問が残ります。

“Pico三昧(9) Pico C/C++SDKでinterp その3、シンプルな線形補間” の続きを読む