がじぇっとるねさす

ホビーとエレクトロニクスを繋げるサイト

アイテム

GR-PEACH 特設

TOPPERS/ASPでマルチタスク!

概要

オープンソースのリアルタイムOSとしてTOPPERS/ASPをGR-PEACHで動かすことができます。Webコンパイラでの使い方をご紹介します。
こちらのgithub wikiにサンプルプログラムの説明がありますので、合わせて参照してください。

準備

GR-PEACH、USBケーブル(マイクロBタイプ)の2つを準備します。

login login

 

サンプル実行までの手順

プロジェクト作成

WebコンパイラにTOPPERS/ASP用のプロジェクトテンプレートがありますので、それを利用してプロジェクトを作成します。Webコンパイラが初めての方は「Webコンパイラでスケッチ」を参照してください。
テンプレートの「GR-PEACH_TOPPERS_ASP_***.zip」(xxxは任意のバージョン)を選択し、適当にプロジェクト名を付けてプロジェクト作成ボタンを押します。

login


スケッチの表示

デフォルトの状態ではプロジェクトにあるサンプル「examples/blinky」がビルドされるようになっています。blinkyフォルダにblinky.cppがありますので、ダブルクリックしてファイルを開いてみましょう。

login


ビルドから書き込み

ビルドボタンを押してください。初回のビルドは全てのソースをコンパイルするため30秒ほど時間がかかります。
ビルドが終了すると、プロジェクトツリーにblinky.binが生成されますので、ダウンロードしてGR-PEACHに書き込んでください。赤、緑、青、ユーザーLEDがそれぞれ定めれた時間ごとに点滅を繰り返します。

login


 


マルチタスクなArduinoスケッチ

Arduinoでは基本的に1回のsetup関数と繰り返し実行されるloop関数からなりますが、loop関数の中で並列に行いたい処理をプログラミングするのは困難です。
TOPPERS/ASPによるスケジューラにより、複数のloop関数を並列で動かすサンプルがありますので試してみましょう。


ビルドプロジェクトの切り替え

ビルドするプロジェクトの切り替えをします。プロジェクトツリーにある「build_target」を開いてください。デフォルトでは「./examples/blinky」が記載されています。

login


「./examples/multitask_arduino」に書き換えてください。

login


スケッチの表示

プロジェクトツリーのexamples/multitask_arduinoフォルダにあるmultitask_arduino.cppを開いてみてください。loop, loop1, loop2の3つのloop関数があることが分かります。

login


ビルドから書き込み

ビルド実行するとmultitask_arduino.binが生成されますので、GR-PEACHに書き込んでみてください。loopが赤LED、loop1が緑LED、loop2が青LEDをそれぞれ点滅させています。


loopの追加

loopを追加するには、examples/multitask_arduinoフォルダにある「arduino_app.h」にあるマクロ「ADDITIONAL_LOOP_NUM」の値を増やします。例えば数値を5にした場合、loop3, loop4, loop5が追加できます。

login


温湿度計測サンプル

参考として、以下のプログラムは温湿度センサーHDC1000のシリアル出力、LED制御を独立して行う例です。動作するにはHDC1000のSCL/SDAをWireのピン、RDYをピン2につなげる必要があります。

 


share