前回、TinyGoのオブジェクトをラズパイPicoに書き込むのに「まどろっこしい」方法を書いてしまいました。そしたらば「takasago様」からツイッターで「もっといい方法」お教えいただきました。ありがとうございます。やってみました。良い感じです。今回はついでにVSCodeも使えるように。細かい躓きはいつもあり。
Pico三昧(14) PicoでもGo! TinyGoのオブジェクトがPico上で走るまで
別シリーズでGo言語を勉強したりしているのですが、インタプリットもでき、バイナリにビルドもできでなかなか良いものです。マイクロコントローラでもGoのオブジェクトを走らせられるということで今回やってみましたです。ターゲットはラズパイPico。その母艦は例によってラズパイ4です。C/C++SDKと同様で実行可能。
Pico三昧(13) Pico C/C++SDKで4.096MHzクロック生成その2PIO
前回PWMで生成したクロックで十分かな~と思ってしまったので、もう一度似たようなことをやるのはカッタるいです。でも自分でPIO(プログラマブルIO)でもクロック作ってみると書いてしまったのでやらないと。大分ラズパイPicoのPIOにも慣れたんですが、PIOアセンブラでたった2行。けれどヘッダ部分書くのがメンドイのよね。
Pico三昧(12) Pico C/C++SDKで4.096MHzクロック生成その1PWM
あるデバイスを動かそうとしたら4.096MHzのクロックが必要と書いてありました。手元には4MHzピタリの水晶振動子の在庫はあったと思ったですが、4.096MHzありません。ラズパイPicoで制御するつもりなのだし、ラズパイPicoでクロックから作ってしまえ、という目論見。「普通のマイコン」ならタイマをいじるところですが、ラズパイPicoでは違う、と。
Pico三昧(11) Pico C/C++SDKでinterp#5、補間ついでに配列舐める
今回は前々回のBlendモード再びです。その上、Datasheetのサンプルプログラムほぼほぼそのままです。何といっても中の人の書いたサンプルプログラム流石すぎます。Blendモードで補間をするついでにデータ配列を舐めるためのポインタアドレスまで作ってました。私のような凡人には考えつかないテクであります。
Pico三昧(10) Pico C/C++SDKでinterpその4、クランプモード
ラズパイPicoのinterpユニットを使ってみる4回目は、Clampモードです。前回Blendモードを使ってみましたが、これは各コアに2個づつあるinterpのうち「0」のみの機能でした。じゃ「1」の方は何かないの?というとClampモードを持っているのです。上下の境界を超える値を「クランプ」してくれる機能です。
Pico三昧(9) Pico C/C++SDKでinterp その3、シンプルな線形補間
ラズパイPicoの特長の一つであるinterpを扱って三回目にして、ようやく回路名称である interpolator (補間器)の主目的である補間を試みてみます。今回は整数型のシンプルな線形補間です。Blend Modeというモードを設定するだけで、後はレジスタに値を書き込むだけで補間を行ってくれます。便利っちゃ便利ですが、Blend Modeって何者?という疑問が残ります。
Pico三昧(8) Pico C/C++SDKでinterp その2、DeadBeef例題
前回からラズパイPicoの特長の一つである interpolator を使いはじめました。今回は、interpolator の内部にある、シフタ、マスク、符号拡張器を制御してみます。RP2040データシートを読むとちょうどいい塩梅に処理例が載っていました。DeadBeefとな。ここでは16進数でちょうど32ビットだからってことみたいですが。
Pico三昧(7) Pico C/C++SDKでinterp その1、popとpeek
ラズパイPicoの特長的なハードウエアのひとつが interpolator です。その名からすると補間をしてくれるハードウエアですが、実際にはいろいろな目的に使えそうなデータパス、計算エンジンと言う感じです。RP2040の2個あるコアに2個づつ合計4個のinterpolatorが搭載されています。今回は pop と peek 2つの基本操作の違いを見てみます。
Pico三昧(6) Pico C/C++SDKでS93C46接続その2、PIO制御
前回は3線式シリアルE2PROM S93C46をソフトウエア制御で読み書きしてみました。今回は、ラズパイPicoの特長であるPIO(Programmable IO)を使って同じことを行ってみます。PIOステートマシンのアセンブラを書くのも大分慣れた気もしますが、最後は波形を見ないと安心できないんだ,、これが。
Pico三昧(5) Pico C/C++ SDKでS93C46接続その1、ソフト制御
以前にもシリアルEEPROMをラズパイPicoに接続したことがありましたがI2C接続でMicroPython利用でした。今回は「3線式」EEPROM、結構昔からあるタイプ、をC/C++SDKで接続してみます。「その1」はソフトウエア制御であります。簡単だろ~と思っていたら、お約束の落とし穴にハマりました。新年そうそう。
Pico三昧(4) Pico C/C++ SDKで74HC595接続、PIO制御編2直列
前回、ラズパイPicoのプログラマブルIO制御で、74HC595の2個並列と2個直列、同じ回で両方やってみようとしたら、まさかの半田不良で手間取りました。結局「並列」の方のみ実施。今回は、残りの直列接続の方をやってみます。形は出来ているので、今度こそ簡単に出来る筈。
Pico三昧(3) Pico C/C++ SDKで74HC595接続、PIO制御編2並列
前回はラズパイPicoのPIO(プログラマブルIO)ステートマシンを使って単体の74HC595を制御しました。今回は2個同時制御、直列接続と並列接続を1回で済ませようとしてツボにハマりました。2個目が動かないデス。なんで?並列接続にて問題追及、動作OKとなりました。ソフトバグの裏に半田付け不良が隠れていた。何ってこったい!
Pico三昧(2) Pico C/C++ SDKで74HC595接続、PIO制御編単品
前回は、定番の74HC595シフトレジスタをフルソフト制御で扱ってみました。今回はラズパイPicoの特徴であるPIO(プログラマブルIO)を使って制御してみます。既にMicroPythonからPIOによる74HC595の制御はやってみているので、PIOアセンブラはPythonコードからの移植、という感じ。 “Pico三昧(2) Pico C/C++ SDKで74HC595接続、PIO制御編単品” の続きを読む