Raspberry Pi Picoでマルチコアプログラミングを試してみた | a24a24a24のブログ

a24a24a24のブログ

アメピグ残党。
釣り、温泉、お出かけ、パソコン。最近、電子工作。

一年以上、電子工作やプログラミングをサボっていました。

 

そろそろ再開せねば、と思っていたところ

amanoya3様のブログ(ameblo.jp)

「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と合わせて、いろいろ試していきたいと思います。

おしまい。