0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MicroPython/CircuitPythonAdvent Calendar 2024

Day 21

Raspberry Pi Pico - Python SDK のドキュメントを読む③

Posted at

第3章 RPシリーズポートについて

今回は第3章の途中まで(たぶん PIO の前あたりまで)。

3.1 Timer

いきなり難しいところからきたなぁという感じ。Lチカを Timer 機能を使って実現する方法について記載している。

Timer は主に特定の処理を定期的に呼び出すときに使う。要するにタイマー割り込み。CircuitPython が嫌う割り込みのAPIですな。

from machine import Pin, Timer

led = Pin("LED", Pin.OUT)
tim = Timer()
def tick(timer):
    global led
    led.toggle()

tim.init(freq=2.5, mode=Timer.PERIODIC, callback=tick)

tim.init() により、2.5Hz でtick()関数を繰り返し呼び出すようになる。この呼び出しはタイマー割込みで行われるので、並行して別の処理を動かすことができる。

この程度の処理では問題ないが、MicroPython の割り込み処理には注意しなければならないことがある。こちらを参照。本ドキュメントには、そのへんの記載がないので注意である。

3.2 UART

UART1からUART0にバイト列を送り込む簡単な例が示されている。

from machine import UART, Pin
import time

uart1 = UART(1, baudrate=9600, tx=Pin(8), rx=Pin(9))

uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))

txData = b'hello world\n\r'
uart1.write(txData)
time.sleep(0.1)
rxData = bytes()
while uart0.any() > 0:
    rxData += uart0.read(1)

print(rxData.decode('utf-8'))

3.3 ADC

ADコンバータの使い方について記述している。

ADCクラスのコンストラクター第1引数には、GPIO番号かチャンネル番号を指定できるとあるが、どう区別しているのであろうかと思ったら、単純に 0〜4 をチャンネル番号と見ているらしい。GPIOからADCに使えるのはGP26〜GP29なので、同じ整数値で与えても何を示しているのか判別できる。ただ、API設計としてはあまりよろしくないように思える。

例としては、特にセンサーを外付けしなくても試せる内蔵の温度センサー(チャンネル4)の読み出し方が載っている。

3.4 割込み

一般的な割込みの使い方が載っている。

ここでも指定するコールバックについての注意書きがない。こちらを参照。

3.5 マルチコアのサポート

Pico 用 MicroPython のスクリプトは通常 core0 で動いている。core1 を使うために、なぜかマルチスレッドの API (_thread)を使うことになっている。

このため、Picoシリーズ用の MicroPython では、core1 の1スレッドでしか _thread を動かせない。GIL がないという利点もあるにはあるのだが。

3.6 I2C

ハードウェア I2C バスの使用例が記載されている。

MicroPython には、この他にソフトウェア I2C バスの API があるが、本ドキュメントには記載なし。ソフトウェア I2C についてはこちらを参照。

3.7 SPI

ハードウェア SPI バスの使用例が記載されている。

MicroPython には、この他にソフトウェア SPI バスの API があるが、本ドキュメントには記載なし。ソフトウェア SPI についてはこちらを参照。

3.8 PWM

Pico の内蔵LEDをPWMを使ってゆっくり明滅しているように見せるデモを載せている。GPIOに直接繋がっていない Pico W ではさずがにこのデモは動かせないので、注意書きがある。Pico W では外部の LED を繋いで試してくれと。

ここまで読んできて、SDK のドキュメントという割には API についてあまり説明されていない。APIは本家のドキュメントを読めということなのか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?