
前回、TinyGoのオブジェクトをラズパイPicoに書き込むのに「まどろっこしい」方法を書いてしまいました。そしたらば「takasago様」からツイッターで「もっといい方法」お教えいただきました。ありがとうございます。やってみました。良い感じです。今回はついでにVSCodeも使えるように。細かい躓きはいつもあり。
デバイス作る人>>デバイス使う人>>デバイスおたく
別シリーズでGo言語を勉強したりしているのですが、インタプリットもでき、バイナリにビルドもできでなかなか良いものです。マイクロコントローラでもGoのオブジェクトを走らせられるということで今回やってみましたです。ターゲットはラズパイPico。その母艦は例によってラズパイ4です。C/C++SDKと同様で実行可能。
前回PWMで生成したクロックで十分かな~と思ってしまったので、もう一度似たようなことをやるのはカッタるいです。でも自分でPIO(プログラマブルIO)でもクロック作ってみると書いてしまったのでやらないと。大分ラズパイPicoのPIOにも慣れたんですが、PIOアセンブラでたった2行。けれどヘッダ部分書くのがメンドイのよね。
今回は前々回のBlendモード再びです。その上、Datasheetのサンプルプログラムほぼほぼそのままです。何といっても中の人の書いたサンプルプログラム流石すぎます。Blendモードで補間をするついでにデータ配列を舐めるためのポインタアドレスまで作ってました。私のような凡人には考えつかないテクであります。
ラズパイPicoのinterpユニットを使ってみる4回目は、Clampモードです。前回Blendモードを使ってみましたが、これは各コアに2個づつあるinterpのうち「0」のみの機能でした。じゃ「1」の方は何かないの?というとClampモードを持っているのです。上下の境界を超える値を「クランプ」してくれる機能です。
前回は3線式シリアルE2PROM S93C46をソフトウエア制御で読み書きしてみました。今回は、ラズパイPicoの特長であるPIO(Programmable IO)を使って同じことを行ってみます。PIOステートマシンのアセンブラを書くのも大分慣れた気もしますが、最後は波形を見ないと安心できないんだ,、これが。