前回、懐かしの三洋電機製LC7366NをラズパイPicoのMicroPythonから制御してDMTFトーン(プッシュホンのピポパポ音)を発生してみました。1音、それも波形のみ観察でした。今回はスピーカを取り付けて16音全てを「聞いて」みたいと思います。耳で聞くのは良いけれど、トーンをデコードしてくれる相手がいないです。
うさちゃんと一緒(4) Rabbit 4000 対 Python Scapy
前回はRabbit4000からラズパイに向かってPingかけるのを、ラズパイ上のWiresharkで覗き見してました。今回は、Rabbit4000とパケットをやり取りするトイメンとして、Python上のScapyを使ってみます。これでEthernetの両側をパケットレベルでプログラムできる筈。
モダンOSのお砂場(40) Mbed OS6、EventFlags、便利なお知らせ
前回ConditionalVariableをヤバイなどと言ってしまいましたが、どうもそんなこと無いみたいです。メモリの使い方がOS2とOS6で違うだけだったみたい。ボードもOSも「2種併用中」で混乱してました。さて、今回はEventFlagsです。スレッド間、あるいは割り込みサービスルーチンからイベントを他に簡単に伝えることができるもの。
ぐだぐだ低レベルプログラミング(55) RISC-V、sign-injection命令「群」
今回取り上げさせていただくのは、浮動小数点数の符号を操作するための命令「群」です。3命令「も」存在します。倹約を旨としてオペコード空間を割り当てているRISC-Vにしたら大盤振舞いにも見えましたが、例によって疑似命令という別名をみると「無いと困る」命令群でした。
MicroPython的午睡(62) ラズパイPico、DTMFトーン生成IC制御その1
別投稿で音声フォルマント周波数をとり扱いました。その「反対」で音声フォルマントを外した代表例?DTMF=Dual-Tone Multi-Frequencyトーン生成用のICをラズパイPico上のMicroPythonから制御してみる1回目です。DTMF、電話の「ピポパポ」音。スマホでも「まだ」使えるけれど使わないか?
手習ひデジタル信号処理(27) ヒルベルト変換器による周波数シフタその3 本丸ヒルベルト変換
今回は「本丸」ヒルベルト変換フィルタ(位相シフタ)を調べて行きたいと思います。前回同様、動作確認済の全体プログラムの中のヒルベルト変換フィルタの出力を外部に出力し、位相特性を観察してみようという試み。ただし、期待されるフィルタの特性はIに対してQがπ/2だけ遅れるというもの。入力に対してでないので測りづらいです。
うさちゃんと一緒(3) Rabbitとの通信をラズパイWiresharkで観察
前々回、うさちゃんへPingしてお返事をもらいました。今回はうさちゃんからPingしてみます。通信相手はRaspberry Pi 3 model B+です。うさちゃんからのPingにラズパイからお返事をしながら、その様子を「みんな大好き」Wiresharkで観察してみたいと思います。うさちゃんに書き込むコードはサンプルコードほぼそのままです。
モダンOSのお砂場(39) Mbed OS6、ConditionalVariableヤバイ?
カッコイイ機能があるな、ということで使ってみました。ConditionalVariableであります。確かにカッコイイのですが、ターゲットのSTM32F401REにとっては結構ヤバイ奴でした。シンプルなサンプルコードなのにRAMがいっぱいいっぱいな感じ。何かコードを書けるような余地があるような気がしません。気のせい?
※2022/03/17追記:「気のせい」でした。すみません。OS6はZI Dataとして扱われる部分が多いためにヤバイなどと書いてしまいました。全然ヤバくありません。ヤバイのは自分。
ぐだぐだ低レベルプログラミング(54) RISC-V、単精度平方根で2次元normを計算
加減乗除に最大/最小、比較とやってきましたが、まだ残っている「演算系の浮動小数点命令」がありました。平方根です、Square Root。平方根を計算するだけでは芸が無いので、2次元のnormも計算してみました。x86(というかx87)系のFPU命令であると「超越関数」までありますが、RISC-Vには超越関数不在です。加減乗除とアルゴリズムで後はよしなに、と。
手習ひデジタル信号処理(26) ヒルベルト変換器による周波数シフタその2 DCカットフィルタ
前回は周波数シフタの全貌を実機で観察。今回はその構成要素初段のDCカット・フィルタについて調べてみたいです。フィルタのコードはIIRフィルタを「手習ひ」したときに既に使っていたのですが、忘却の彼方。今回はScilab使ってその特性を調べた後、実機でDCカットフィルタを「外したら」どうなるのか観察してみたいと思います。
Pico三昧(13) Pico C/C++SDKで4.096MHzクロック生成その2PIO
前回PWMで生成したクロックで十分かな~と思ってしまったので、もう一度似たようなことをやるのはカッタるいです。でも自分でPIO(プログラマブルIO)でもクロック作ってみると書いてしまったのでやらないと。大分ラズパイPicoのPIOにも慣れたんですが、PIOアセンブラでたった2行。けれどヘッダ部分書くのがメンドイのよね。
うさちゃんと一緒(2) Cooperative Multitaskingで吉例Lチカ
懐かしいZ80的命令を持つ、うさちゃん印のRabbit4000を使用中です。前回「売り」のEthernetから始めてしまい、新マイコン入手時の吉例を飛ばしてしまいました。今回は、Rabbit用の言語処理系 Dynamic Cの特長の一つ、Cooperative Multitaskingを使って「Lチカ」してみます。
ぐだぐだ低レベルプログラミング(53) RISC-V、単精度浮動小数点数の比較
前回は浮動小数点数の最大最小を求める命令でした。今回は、浮動小数点数の比較命令です。比較した結果として条件分岐することが多いと思います。RISC-Vには分岐フラグが存在せず、条件分岐は整数レジスタの中の値を分岐命令で判定します。このため浮動小数の比較命令の結果は整数レジスタに書き込みとなります。
手習ひデジタル信号処理(25)ヒルベルト変換器による位相シフタ利用の周波数シフタ その1
今回から周波数シフタです。周波数をシフトするのに加法定理を使う。それにはcosとsinの両方が要る。cosをπ/2だけ位相シフトすればsinになる、ということで、位相をシフトするために使うのがヒルベルト変換器であります。分かったような分からぬような。今回は先に実機上で動作確認してから個々の部品を調べていきたいと思います。