MicroPython

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でも試した、こちらのコードの移植版です。しかし、半分ほどまで進んだところでMemor...
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

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

少しずつ進めているRaspberry Pi用ベアメタルMicroPythonですが、今日は基本中の基本のPinクラスを実装し、Lチカができるようになりました。I2CやSPIを実装するにも、まずどのPinを使うか指定する必要がありますので、と...
Raspberry Pi

Raspberry Piベアメタルプログラムへのパラメータの渡し方

Raspberry PiのベアメタルプログラムをQEMUで動作させる場合には、シリアルポートはMini-UARTではなく通常のUARTを使う必要があります。これについて以前書いたときは、コンパイル時に#ifでどちらのUARTを使うかを指定す...
Raspberry Pi

MicroPythonからラズパイのフレームバッファへ描画する

前回試した、Raspberry Piのベアメタルプログラミングでの画面表示を、ベアメタル版MicroPythonに載せてみました。Raspberry PiのフレームバッファにMicroPythonから描画できました。MicroPythonに...
Raspberry Pi

Raspberry Pi bare metal MicroPython+USBホストコントローラのテスト

前回、あれこれと考えたMicroPythonへのUSBキーボード接続ですが、とりあえず簡単にできそうなREPL専用の実装をやってみることにしました。基本的には、REPLのためにシリアルポートから1文字ずつ読む関数mp_hal_stdin_r...
STM32

MicroPythonでのUSBキーボード入力の調査

ここ1ヶ月ほど、Raspberry PiベアメタルMicroPythonにUSBキーボード入力を追加してみたいと思っていろいろ調べています。用途として、(1)USBキーボードを単純にREPLのための入力手段としてのみ使う(2)モジュールを用...
STM32

MicroPythonでUSBマウス

MicroPythonの動作しているSTM32のボードをUSBマウスとして動作させ、PCに接続してみました。ボードは以前も使ったNUCLEO-F767ZIです。これは以下のページのサンプルをそのまま使ったもので、上のように、MicroPyt...
Raspberry Pi

Raspberry Pi版MicroPythonのベンチマークテスト

昨日行った、Raspberry Piベアメタル版MicroPythonでのLチカですが、手動でオン・オフができるだけで、「点滅」はできていませんでした。点滅を行うには、一定時間停止するdelay機能が必要ですが、MicroPythonではu...
Raspberry Pi

Raspberry Pi Zero + ベアメタルMicroPythonでのLチカ

REPLが何とか動作するようになった、Raspberry Pi用のベアメタル版MicroPythonですが、次は「Lチカ」をやってみました。C言語でのLチカは以前行いましたが、これをREPLからできるようにします。理想的には、machine...
Raspberry Pi

ベアメタルRaspberry Pi版MicroPythonにREPLを追加してみました

先日書いた、ベアメタルRaspberry Piで動作するMicroPythonですが、このままだと対話的に使用することができないので、REPLを使えるように改造してみました。改造にあたっては、以前紹介したunicorn用MicroPytho...