STM32

MicroPython用のNUCLEO-F767ZIのethernetドライバがアップデート

以前公開したMicroPython用のNUCLEO-F767ZIのethernetドライバですが、先日MicroPython作者のDamien. P. Georgeさんが更新してくださいました。 stm32: Add support for...
Raspberry Pi

リアルタイムクロックモジュールDS3231の使い方

I2Cクラスが使えるようになったので、OLED以外にも手持ちのI2Cデバイスを試してみます。 今回は「DS3231」を使ったリアルタイムクロックモジュールです。 実は前回の写真にも、ちょこっと登場しています。 DS3231はバッテリバックア...
Raspberry Pi

I2Cクラスを追加(RPiベアメタルMicroPython)

前回の実装を元に、ベアメタルRaspberry Pi版MicroPythonにI2Cクラスを追加してみました。 writeとreadを載せるだけなら簡単だったのですが、MicroPython用の既存のI2Cデバイスドライバが動作するようにし...
Raspberry Pi

Raspberry PiベアメタルプログラミングでI2C制御

MicroPythonに実装する前のテストとして、Raspberry PiのベアメタルでのI2C操作を試してみました。 今回のコードは以下に置いてあります。 bare_matal_rpi_zero/i2c at master · booch...
Raspberry Pi

SDカードを読む(RPiベアメタルMicroPython)

ベアメタルRaspberry Pi版MicroPythonでRAMディスクが使えるようになって喜んでいたのですが、やはりSDカードも使えるようにしたいという欲が出てきます。 スクリプトをPCから転送する用途には、シリアルポートとRAMディス...
Raspberry Pi

フローズンモジュールを使う(RPiベアメタルMicroPython)

RAMディスクが使えるようになったので、このPythonスクリプトをMicroPythonの起動時に自動実行させてみます。 フラッシュやSDカードを外部ストレージとして使える場合は、そのストレージに「boot.py」「main.py」という...
Raspberry Pi

Raspberry Pi Zeroのキャッシュ・分岐予測・クロック設定

以前、ベアメタル版MicroPythonの速度がRaspbian版に比べて非常に遅いというベンチマーク結果を載せました。 Raspberry Pi版MicroPythonのベンチマークテスト(2): 楽しくやろう。 遅い原因は、キャッシュ設...
Raspberry Pi

ファイルシステムを追加する(RPiベアメタルMicroPython)

今日もRaspberry PiへのMicroPythonの移植です。 これまで、ファイルシステムの実装は後回しにしてきました。 Raspberry PiのSDカードへアクセスするためのソースコードはいくつかネット上にあるのですが、ドキュメン...
Raspberry Pi

Control-Cでプログラムを止める(RPiベアメタルMicroPython)

前回のシリアルポートの割り込み処理ですが、一番やりたかったのが「^Cでプログラムを止める」ことです。これができないと、無限ループになったらリセットするしかありません。 プログラム実行中に^Cでプログラムを止めるには、割り込み処理で入力を受け...
Raspberry Pi

ラズパイのシリアルポート(mini-UART)の割り込み処理を書く

連休で割と時間が取れるので、Raspberry PiベアメタルMicroPythonでこれまで気になっていながら、手をつけていなかった部分をいろいろいじっています。 タイマー割り込みを作ったおかげで、Raspberry Piの割り込み処理が...
Raspberry Pi

ガベージコレクタを追加(RPiベアメタルMicroPython)

Raspberry Pi上のMicroPythonで、フレームバッファにマンデルブロ集合を描かせてみました。 コードはこちらです。 このコードは、以前ESP32でも試した、こちらのコードの移植版です。 しかし、半分ほどまで進んだところでMe...
Raspberry Pi

Timerの精度(RPiベアメタルMicroPython)

昨日のTimerクラスの割り込み処理を使ったLチカはこんな感じになります。 Raspberry Pi Zero Wなので、GPIO47がボード上のLEDです。 このタイマ割り込みの精度はどの程度になるのか、測定してみました。 1000マイク...
Raspberry Pi

なぜRaspberry PiにMicroPython?

Raspberry Piでは、Raspbian上で普通のPythonを使ってI/Oを制御することができます。 なのに敢えて、ベアメタルでMicroPythonを実装することにどんな意味があるのか、最近思っていることをちょっと書いておきます。...
Raspberry Pi

続・MicroPythonにTimerクラスを追加する(RPiベアメタル)

先日作成したTimerクラスですが、複数タイマーのサポートやメソッドの追加を行いました。 今回追加した機能を含めたTimerクラスの仕様はこんな感じです。 ・machine.Timer(id) {System Timerのインスタンスを作成...
Raspberry Pi

ラズパイゼロ向きなUSB→マイクロUSB変換アダプタ

Raspberry Pi ZeroシリーズはUSBポートがマイクロUSBになっています。 キーボードやマウスを直結することも可能ですが、USBプラグがマイクロUSBになっている機器はあまり多くありません。 このアダプタはUSB(Type-A...