chakokuのブログ(rev4)

日々のごった煮ブログです

Raspberry Pi Picoを買った

諸般の事情で、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