Lispと一緒(33) ラズパイPico2でもuLisp、I2Cポートスキャン

I2CscanSchematic
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はSPIにメモリを接続しました。今回はI2Cバスにメモリを接続です。しかし読み書きの前にI2Cポート・スキャンからです。まあ、uLispの例題そのまま走らせるだけなんだけれども。一応、実機波形を確認。I2Cバス動いてますなあ。 “Lispと一緒(33) ラズパイPico2でもuLisp、I2Cポートスキャン” の続きを読む

Pico三昧(55) ラズパイPico2:RP2350、MicroPythonで排他制御再び

ThreadLOCKtest
Joseph Halfmoon

前回は2コア平行動作でコア間FIFO通信を使用。FIFOは制御がお楽。しかしその先を考えると排他処理など必要じゃないかと。一応PicoのRP2040にもPico2のRP2350にもSIOブロック内にハードウエアSpinlockというものがあるのだけれども、これってどうよ?その前に_ThreadモジュールのLOCKか?

“Pico三昧(55) ラズパイPico2:RP2350、MicroPythonで排他制御再び” の続きを読む

Lispと一緒(32) ラズパイPico2でもuLisp、SPIメモリ読み書き

Pico2_23LC512_BB
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はSPIの出力波形を堪能。しかし波形を眺めているだけではSPIしたことになりませぬ。今回はSPI接続のSRAM、23LC512をターゲットにSPI経由での書き込みと読み出しを実験。uLispのコードもCのコードも変わらんぜよ。

“Lispと一緒(32) ラズパイPico2でもuLisp、SPIメモリ読み書き” の続きを読む

Pico三昧(54) ラズパイPico2:RP2350、MicroPythonでコア間通信

FifoTrial
Joseph Halfmoon

MicroPythonメインの別シリーズがあるのに、こちらでやっているのはRP2350のハードを直接操作するような実験をしているため。何にしてもMicroPythonはお楽。ただしMicroPython処理系の予期せぬところを触ってヤバイことになることもあり。前回は2コア実行、今回はコア間の通信機能を使ってみます。

“Pico三昧(54) ラズパイPico2:RP2350、MicroPythonでコア間通信” の続きを読む

Lispと一緒(31) ラズパイPico2でもuLisp、SPI出力

DefaultSPI0waveformMODE2
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。先ごろからハードウエア制御に入いっとります。前回はPWM出力(関数名的にはanalogwrite)、今回はSPI出力を練習してみます。端子的にはキメウチだけれども、それなりに制御できるのでないかと。実機で波形を味わってみるの回です。
“Lispと一緒(31) ラズパイPico2でもuLisp、SPI出力” の続きを読む

ぐだぐだ低レベルプログラミング(194)x86(16bit)、LEA 実効アドレス

LEAcom
Joseph Halfmoon

LEA、Load Effective Addressは孤高な命令と思いきや、メモリアクセスする命令共には裏で気脈を通じているみたい。そしてメモリアクセスするかのごときアセンブリ言語表記だけれども、決してメモリにアクセスすることなくレジスタ操作を行うだけの命令。必須なこともあれば、避けて通ることもできる?なんだそれ。

“ぐだぐだ低レベルプログラミング(194)x86(16bit)、LEA 実効アドレス” の続きを読む

Pico三昧(53) ラズパイPico2:RP2350、MicroPythonで2コア実行

CPUID
Joseph Halfmoon

前回はイネーブルになっているデュアル・コアはそれぞれArmなんだかRISC-Vなんだかハッキリしろい、ということでステータスレジスタを読み出して確認しました。しかし、2コアの片方しか動かしてなかったです。今回は超簡単な実験スクリプトで2コアの両方が動いているところを確認したいと思います。手抜きだけれども。

“Pico三昧(53) ラズパイPico2:RP2350、MicroPythonで2コア実行” の続きを読む

Lispと一緒(30) ラズパイPico2でもuLisp、PWM出力

analogWrite_pin12_res12_2048
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回はADコンバータ使って電圧を読み取るアナログ入力。今回は analogwrite。しかしPico2にはDAコンバータ不在。Arduino世界の通例によりPWM出力です。使えるAPIは2つだけ。それ以上やりたければ自分で制御せよと?

“Lispと一緒(30) ラズパイPico2でもuLisp、PWM出力” の続きを読む

Pico三昧(52) ラズパイPico2:RP2350、MicroPythonでコア確認

DetectCoreType
Joseph Halfmoon

前回RISC-Vモード用のMicroPythonをラズパイPico2にインストール。しかしRISC-Vだろうが、ArmだろうがMicroPythonなので見た目は変りませぬ。処理系自体はRISC-Vで走っていると表示してます。しかし疑り深いので、今回は本当にRISC-Vで走っているのだよね、と確認してみたいと思います。
“Pico三昧(52) ラズパイPico2:RP2350、MicroPythonでコア確認” の続きを読む

ぐだぐだ低レベルプログラミング(193)x86(16bit)、86のNOPはXCHGの別名?

xchg01
Joseph Halfmoon

過去回でRISC-VやArmのアセンブラしていた時、やたらとこの命令はあの命令のエイリアス(別名)なんてことに遭遇してました。でもエイリアスはRISCどもの専売ではありませぬ。歴史を誇るx86にもしっかりエイリアスが存在してます。まあね、ちょこっとだけれども。エイリアスのお名前はみんな知ってるNOPじゃと。

“ぐだぐだ低レベルプログラミング(193)x86(16bit)、86のNOPはXCHGの別名?” の続きを読む

Lispと一緒(29) ラズパイPico2でもuLisp、アナログ入力

analogRead_DUT_BB
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。前回からuLisp独特な領域、ハードウエア制御へ入りました。前回がデジタル入出力であったので、今回はアナログ入力です。ADコンバータ使って電圧の読み取りね。まあ全部が全部使えるわけでもないみたいだけれども。読み取りは出来るっと。

“Lispと一緒(29) ラズパイPico2でもuLisp、アナログ入力” の続きを読む

Pico三昧(51) ラズパイPico2:RP2350、MicroPythonでRISC-V

MicroPython1_24_0_PP2350_RISCV
Joseph Halfmoon

前回まで文書ばかり読んでいたので実機をいじりたくムズムズ。たまたまMicroPythonのサイトみたらば、以前試用させていただいたときにはまだPreview版だったPico2用のバイナリがReleasesになってました。それどころか以前不在だったRISC-Vモード用もリリースになってました。これは使ってみるしかない!
“Pico三昧(51) ラズパイPico2:RP2350、MicroPythonでRISC-V” の続きを読む

Lispと一緒(28) ラズパイPico2でもuLisp、GPIOの入出力確認

gpioTestDUT
Joseph Halfmoon

Common Lispの系譜を継ぐuLispをラズパイPico2マイコン上で練習中。ここまでCommon LispとuLispの重複部分でした。今回からはuLisp独特な領域、ハードウエア制御へ入ります。その1回目はGPIOとな。既に「吉例Lチカ」を過去回でやっているので復習か。でもほじくると出てくるのよ。なんだかな~。

“Lispと一緒(28) ラズパイPico2でもuLisp、GPIOの入出力確認” の続きを読む

ぐだぐだ低レベルプログラミング(192)x86(16bit)、PUSH/POPにも先祖の痕跡

step03
Joseph Halfmoon

前回はブロック転送命令にまつわるコマケー話。今回はPUSH/POP命令にまつわるコマケー話です。x86の場合スタックへのデータの退避や復帰にはPUSH、POP命令を使います。PUSH、POP自体は分かり易い命令であるのでコマケー話など無い感じ。しかし、歴史を知らないと何でそんな命令があるの?という御供の命令もあり。
“ぐだぐだ低レベルプログラミング(192)x86(16bit)、PUSH/POPにも先祖の痕跡” の続きを読む