諸般の事情で、RaspberryPi Picoを買った。ざっと見た限り、MicroPythonがサクッと動かせることが分かった。WiFiとか、BLEはないけど、まぁ安いし消費電力低いしこれはこれでありかと。
Programmable IOが8本という記載があって、サンプルソースもあるのだけど、なんでわざわざアセンブラでIO操作をするのか目的が分からなかった。
Programmable I/O with Raspberry Pi Pico - Latest open tech from seeed studio
そんな中で、上記の記事の解説によると、Programmable IOは専用ハードによるステートマシンとして動作して、CPUリソースを食わないんだと。しかも、、CPU使わないから高速で、めちゃくちゃタイミングが正確だろう多分。これは素晴らしい。Picoに搭載されたRP2040というマイコンを味わい尽くすには、ステートマシンで動くPIOを使い倒すのがポイントでは!?と思えるのでした。
ボード上のLEDのLチカ (あれだけ言ったのに、ステートマシン使ってませんが。。。)
from machine import Pin import utime pin = Pin(25,Pin.OUT) pin.low() while True: pin.toggle() utime.sleep(1)
補足:
MicroPythonにはNeoPixelのドライバがあるのだけど、多分タイミングの問題と思うけど、結構誤動作をしてしまう問題があった(あるいは、、NeoPixelの制御信号を3.3V駆動したから??)。能力は低いけど、余計な割り込みの入らない、ArduinoでNeoPixelを動かすと、全く問題なく動作した(5Vで駆動したから??)。
■ご参考URL
A closer look at Raspberry Pi RP2040 Programmable IOs (PIO)
https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf
3.3. PIO Assembler (pioasm) (P333)
Hands-On with the RP2040 and Pico, the First In-House Silicon and Microcontroller From Raspberry Pi - Hackster.io
YoutubeでPIOの解説動画(英語だ。。)
https://youtu.be/LXAwW2IYT7o?t=3238
アセンブラでステートマシンのコードを書く・・・変態の血が騒ぐ・・
MicroPythonとCIrcuitPythonの違い
CircuitPython — Adafruit CircuitPython 6.2.0-beta.1 documentation