= TOPPERS/RCA(RTE/RTOS compatible with Arduino libraries) = [[PageOutline]] == クイックスタート(GDBデバッグ版) == === 機材の用意 === * Windows PC (Makefileを整備すればMacでも動作するはず) * 64bitだと設定を変更しなくてもよいので楽 * Arduino M0 '''Pro''' * ''' !!Arduino M0 を買わないように注意!! ''' * 動作するがプログラム書き換えが必要(Serial を SerialUSBに変更). * SerialUSBの負荷は非常に高いです. * [https://www.switch-science.com/catalog/2299/ スイッチサイエンス], [http://akizukidenshi.com/catalog/g/gM-09392/ 秋月], [http://www.marutsu.co.jp/pc/i/544623/ マルツパーツ] 等で購入可能. === ツールのインストール === * [http://www.arduino.org/software Arduino IDE]のインストール. * .org版(1.7.x)をインストールすること. * インストーラに従ってインストールを実施する. * Arduino IDE のインストールパスの設定 * C:\Program Files (x86)\Arduino にインストールした場合は必要ない * インストールしたフォルダを以下のファイルに設定する {{{ ・example/do_path.bat SET ARDUINO_DIR=C:\Program Files (x86)\Arduino ・asp_1.9.1/target/arduino_m0_gcc/ ARDUINO_BASE_DIR_WIN = C:\Program Files (x86)\Arduino }}} === パッケージのダウンロードと展開 === * trunkを[http://dev.toppers.jp/trac_user/contrib/changeset/140/rtos_arduino/trunk?old_path=%2F&format=zip zip]でダウンロードすると楽. === ビルド === * フォルダ ./example/basic を開く * ./do_make.bat を実行 === 実行 === * ボードの''''PROGRAMポート''''とPCのUSBを接続する. * Arduino IDEを起動する(teraterm等でも可) * ツール -> ポート -> COMx(Arduino M0 Pro (Programmmming Port)) を選択. * ツール -> シリアルモニタ を選択してシリアルモニタを実行する. * シリアルモニタの右下の速度を115200bpsに変更 * フォルダ ./example/basic を開く * ./do_run.bat を実行 === デバッグ === * フォルダ ./example/basic を開く * ./do_debug.bat を実行 === クリーン === * フォルダ ./example/basic を開く * ./do_clean.bat を実行 == クイックスタート(Atmel Studio使用版) == === ツールのインストール === * [http://www.arduino.org/software Arduino IDE]のインストール. * 上記と同じ. * [http://www.atmel.com/ja/jp/tools/ATMELSTUDIO.aspx Atmel Studio] のインストール * インストーラに従ってインストールを実施する. === プロジェクトを開く === * \example\basic\asp.atsln をタブルクリックするとAtmel Studioが起動する. === ビルド === * メニュー -> Build -> Build Solution を実行 === 実行 === * メニュー -> Debug -> Start Debugging and Brake を実行 メモリに書き込まれるため,実行を開始する. ファイルメニューからrca_app.cpp を選択してブレークポイントを置くことが 可能. == プログラミングモデル == === マルチタスク === マルチタスクによるプログラミングが可能.各タスク間はASPのAPIを呼び出す ことが可能である. ==== プログラム例 ==== {{{ #include "rca.h" void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } void task1_setup() { Serial.begin(9600); } void task1_loop() { int sv = analogRead(A0); Serial.println(sv); delay(1); } }}} ==== タスク名 ==== Arduinoライブラリを実行するためのタスクとして,メインタスクとタスク1, タスク2,...(RCAタスク)を用意している.メインタスクは必ず生成され,RCA タスクは,幾つ生成するかはマクロで定義可能である.現状最大数は4個である. それぞれのタスク名は次の通りである. || タスク || タスク名 || || メインタスク || RCA_MAINTASK || || タスク1 || RCA_TASK1 || || タスク2 || RCA_TASK2 || || タスク3 || RCA_TASK3 || || タスク4 || RCA_TASK4 || 各タスクは,次の関数を実行する.これらの関数の本体を記述する. || タスク || 関数 || || メインタスク || setup/loop || || タスク1 || task1_setup/task2_loop || || タスク2 || task2_setup/task2_loop || || タスク3 || task3_setup/task3_loop || || タスク4 || task4_setup/task4_loop || 各setup/loopの振る舞いはArduinoと同等である. == 注意点 == * Arduino IDEに含まれている M0 向けライブラリは開発されて日が浅いため不具合やコンパイルが通らない場合があるため注意が必要. == 制限事項 == * I2CやSPIライブラリは現状セマフォ等で排他制御していないため,複数タスクで呼び出す場合はタスク側で排他が必要. == ライセンス == ファイル毎にライセンスが異なるので注意してください. || ディレクトリ名 || ライセンス || || lib || GNU GPL || || asp_1.9.2 || TOPPERS ライセンス || || exsample || GNU GPL || || arduino_lib || それぞれのファイルに指定されたライセンス(GNU GPL or BSD) ||