一年以上、電子工作やプログラミングをサボっていました。
そろそろ再開せねば、と思っていたところ
「Raspberry Pi Picoのマルチコア処理」が紹介されていて、これは欲しい!と。
速攻でラズパイピコを購入しました。
親指一本分くらいの大きさ。AliExpressで517円。
単体で立派なコンピュータで、プログラムを転送すると様々な動作制御が可能。
Raspberry Pi Picoの特徴は、CPUが「2コア」。
Arduino IDE環境を使うと簡単に並列処理=マルチコアプログラミングができる、そうです。
マルチコアとは何かというと・・・。
こんな感じ(適当)
2コアのマイコンは頭脳に当たる部分が、1→2に増えています。
同時に2つの処理ができる分、速い。
しかし常に速いとは限らず。
並列処理が嚙み合わず「二人羽織でわんこそばの早食い」みたいな状態になると
お椀や箸を奪い合って互いの足を引っ張ったり、止まったりすることになります。
プログラム次第で、
「大量の計算をひたすら二匹並行で解く」
「一匹が歌に集中して、もう一匹はタイミングをとって指揮する」
みたいに使うと、速度が上がったり簡潔なプログラムが組める可能性があります。
※偉そうに語っていますが、私はマルチコアのプログラムを試すのは初めて。間違っていたらすみません。
というわけで、Raspberry Pi Picoを使った簡単なプログラムを考えてみました。
お題:
「LEDで、1秒間に5回点滅・その後1秒間休み、をくり返す」
ざっくり説明。
片方のコアで秒間5往復=100ミリ秒ごとにHIGH / LOWを切り替え。
もう一方のコアで1秒ごとにHIGH / LOWを切り替え。
両方ともHIGHのときにLEDを点灯させることにしました。
ソースがこちら。
めちゃくちゃシンプルに出来ました。
loop()とloop1()がそれぞれコアに割り振られ、同時実行されるので
1秒と100ミリ秒ごとにフラグをひっくり返して、アンドを取ってLEDに出力しています。
チカチカチカチカチカ シーーン みたいな点滅を繰り返します。
Raspberry Pi Pico、簡単にマルチコアプログラミングが出来ることがわかりました。
試作途中のESP32と合わせて、いろいろ試していきたいと思います。
おしまい。