Submit Search
Upload
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
•
0 likes
•
6,646 views
T
Takuya Azumi
Follow
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
Read less
Read more
Software
Report
Share
Report
Share
1 of 77
Download now
Download to read offline
Recommended
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
Takuya Azumi
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
Takuya Azumi
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Takuya Azumi
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
Takuya Azumi
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
Takuya Azumi
TOPPERS TECS WG 2016
TOPPERS TECS WG 2016
Hiroshi Oyama
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
Takuya Azumi
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
Recommended
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
カーネルオブジェクト(ETロボコン向けTOPPERS活用セミナー2-2)
Takuya Azumi
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
NXT走行体サンプルプログラム(ETロボコン向けTOPPERS活用セミナー3)
Takuya Azumi
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Mindstorms NXT用 toppersプラットフォームの概要(ETロボコン向けTOPPERS活用セミナー1)
Takuya Azumi
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
TECSの基礎(ETロボコン向けTOPPERS活用セミナー2-1)
Takuya Azumi
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
NXT開発環境(ETロボコン向けTOPPERS活用セミナー5)
Takuya Azumi
TOPPERS TECS WG 2016
TOPPERS TECS WG 2016
Hiroshi Oyama
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
Takuya Azumi
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Insight Technology, Inc.
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Hironobu Isoda
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
Tetsuya Hasegawa
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
Tetsuya Hasegawa
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
Asuka Nakajima
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
Kiyoshi Ogawa
Ll tiger clojure
Ll tiger clojure
Toshiaki Maki
20130329 rtm3
20130329 rtm3
openrtm
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
Kenji Kazumura
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
Starc verilog hdl2013d
Starc verilog hdl2013d
Kiyoshi Ogawa
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
Tetsuya Hasegawa
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
Tetsuya Hasegawa
Oracle Database In Lock
Oracle Database In Lock
Ryota Watabe
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
More Related Content
What's hot
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
Insight Technology, Inc.
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Hironobu Isoda
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
Tetsuya Hasegawa
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
Tetsuya Hasegawa
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
Asuka Nakajima
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
Kiyoshi Ogawa
Ll tiger clojure
Ll tiger clojure
Toshiaki Maki
20130329 rtm3
20130329 rtm3
openrtm
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
Kenji Kazumura
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
Starc verilog hdl2013d
Starc verilog hdl2013d
Kiyoshi Ogawa
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
Kiyoshi Ogawa
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
Tetsuya Hasegawa
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
Tetsuya Hasegawa
Oracle Database In Lock
Oracle Database In Lock
Ryota Watabe
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
What's hot
(20)
C21 SQL Server のスレッド管理 by 古賀啓一郎
C21 SQL Server のスレッド管理 by 古賀啓一郎
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
Ll tiger clojure
Ll tiger clojure
20130329 rtm3
20130329 rtm3
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Starc verilog hdl2013d
Starc verilog hdl2013d
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
Oracle Database In Lock
Oracle Database In Lock
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
Similar to NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
2012研究室紹介(大川)
2012研究室紹介(大川)
猛 大川
iREX2015 RTM講習会
iREX2015 RTM講習会
openrtm
RTミドルウエア: OpenRTM-aist概要
RTミドルウエア: OpenRTM-aist概要
openrtm
db tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Features
Noriyoshi Shinoda
2015RTミドルウエア講習会
2015RTミドルウエア講習会
openrtm
130522 rt講習会(説明用)
130522 rt講習会(説明用)
openrtm
2013 summercamp 02
2013 summercamp 02
openrtm
130710 01
130710 01
openrtm
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
NSaitoNmiri
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Toshiki Tsuboi
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
Fixstars Corporation
130329 02
130329 02
openrtm
131106 01 i-rex2013
131106 01 i-rex2013
openrtm
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
You&I
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
Nedo講座・rtmセミナー
Nedo講座・rtmセミナー
openrtm
Similar to NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
(20)
PostgreSQL 12の話
PostgreSQL 12の話
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
2012研究室紹介(大川)
2012研究室紹介(大川)
iREX2015 RTM講習会
iREX2015 RTM講習会
RTミドルウエア: OpenRTM-aist概要
RTミドルウエア: OpenRTM-aist概要
db tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Features
2015RTミドルウエア講習会
2015RTミドルウエア講習会
130522 rt講習会(説明用)
130522 rt講習会(説明用)
2013 summercamp 02
2013 summercamp 02
130710 01
130710 01
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
130329 02
130329 02
131106 01 i-rex2013
131106 01 i-rex2013
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
Nedo講座・rtmセミナー
Nedo講座・rtmセミナー
NXTプラットフォーム(ETロボコン向けTOPPERS活用セミナー4)
1.
4. NXTプラットフォーム ⽯石川 拓也 名古屋⼤大学 ⼤大学院情報科学研究科 最終更新⽇日:2012/05/30 2012/06/02
TOPPERSプロジェクト認定 1
2.
内容 • NXTプラットフォームについて ‒ 提供するデバイスドライバやミドルウェアのコン ポーネントについて紹介 •
機能概要 • コンポーネント図 • インターフェース(受け⼝口関数) • 使⽤用例 2012/06/02 TOPPERSプロジェクト認定 2
3.
NXTのハードウェア構成 • ハードウェア構成のイメージ図 2012/06/02 TOPPERSプロジェクト認定
3 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
4.
ASP+TECS デバイスドライバ・ ミドルウェア NXTプラットフォームの概要(1/3) • ASP+TECS ‒ カーネルオブジェクト ‒
タイマ ‒ シリアル通信 • デバイスドライバ ‒ ボタン、バッテリ、センサ、モータ • コプロセッサ ‒ Bluetooth ‒ ディスプレイ ‒ サウンド ‒ Flash • ミドルウェア ‒ ボタンチェック ‒ Bluetooth接続 ‒ バランサ NXT カーネル タイマ シリアル ユーザアプリケーション 2012/06/02 TOPPERSプロジェクト認定 4
5.
NXTプラットフォームの概要(2/3) • 提供するコンポーネントの定義 ‒ カーネル •
include/kernel.cdl : カーネルオブジェクト • syssvc/tLogTask.cdl : システムログ出⼒力力タスク • syssvc/tSysLog.cdl : システムログバッファ • syssvc/tSerialPort.cdl: シリアルポート • target/mindstorms_nxt_gcc/target_syssvc_decl.cdl : ‒ tPutLogMindstormsNXT.cdl : 低レベル出⼒力力 ‒ tSIOPortMindstormsNXT.cdl : シリアルドライバ ‒ NXTのデバイスドライバ、ミドルウェア • tecs_lib/mindstorms_nxt/target_lib_decl.cdl: ‒ tBluetooth_decl.cdl : Bluetooth ‒ tDisplay_decl.cdl,tLCD_decl.cdl,tSPI_decl.cdl : ディスプレイ ‒ tSound_decl.cdl : サウンド ‒ tAVR_decl.cdl,tTWI_decl.cdl : コプロセッサ ‒ tButton_decl.cdl : ボタン ‒ tBattery_decl.cdl : バッテリ ‒ tMotor_decl.cdl : モータ ‒ tSensor_decl.cdl : センサ ‒ tFlash_decl.cdl:Flashコントローラ ‒ tBalancer_decl.cdl : バランサ TOPPERSプロジェクト認定 52012/06/02
6.
NXTプラットフォームの概要(3/3) • 提供するコンポーネントの⽣生成 ‒ カーネル依存部 •
target/mindstorms_nxt_gcc/target_syssvc_inst.cdl : ‒ 低レベル出⼒力力 ‒ シリアルドライバ ‒ tBluetooth_inst.cdl : NXTのBluetoothドライバとBluetooth接続タスク » Bluetoothを使ってシリアル通信を実現 ‒ NXTのデバイスドライバ、ミドルウェア • tecs_lib/mindstorms_nxt/target_lib_inst.cdl: ‒ ボタン ‒ コプロセッサ ‒ Flashコントローラ ‒ ボタンチェック周期ハンドラ ※ その他のコンポーネントはユーザが⽣生成する • 例 ‒ モータ ‒ センサ ‒ バランサ TOPPERSプロジェクト認定 62012/06/02
7.
ASP+TECSの解説 • タイマ • シリアル通信 ‒
Bluetoothを使⽤用 2012/06/02 TOPPERSプロジェクト認定 7
8.
タイマ(1/2) • 現在時刻の取得 ‒ ASPカーネルのサービスコールを使⽤用 •
ER getTime(SYSTIM *p_systemTime) ‒ システム時刻の参照 » ASPカーネルが起動してから現在までの時間 » ミリ秒単位 ‒ システム時刻はp_systemTimeで指定したメモリ領域に返される • ER getMicroTime(SYSUTM *p_systemMicroTime) ‒ 性能評価⽤用システム時刻の参照 » マイクロ秒単位 ‒ システム時刻はp_systemMicroTimeで指定したメモリ領域に返 される • カーネルオブジェクト(タスクやセマフォ)以外の サービスコール ‒ セルタイプtKernelのセルの受け⼝口eKernel 2012/06/02 TOPPERSプロジェクト認定 8
9.
タイマ(2/2) • 使⽤用例 /* コンポーネント記述
*/ celltype tSample{ require tKernel.eKernel; entry sSample eSample; }; /* 呼出し */ void eSample_main() { SYSTIM currentTime; getTime(¤tTime); }; 2012/06/02 TOPPERSプロジェクト認定 9
10.
シリアル通信 • ASPカーネルのシリアル通信 ‒ システムログ(シリアル送信) •
void syslog(uint_t prio, const char *format, ...) ‒ prio:ログの優先度 ‒ format, ...:表⽰示するログ(printf等と同様の記法) ※asp+tecs/doc/user.txtの「8.システムサービス」を参照 ‒ シリアル受信 • ER_UINT cSerialPort_read(char_t *buffer, uint_t length) ‒ length:⻑⾧長さ、buffer:受信バッファ • ホストPCとのシリアル通信⽅方法 ‒ Bluetoothを使⽤用 • NXTではシリアルのコネクタがない • NXTとホストPCで仮想シリアル通信 ‒ ターミナル • Tera Term • screenコマンド(screen /dev/tty. ) 2012/06/02 TOPPERSプロジェクト認定 10
11.
syslog • 使⽤用例 ‒ syslogはライブラリ関数なので、コンポーネント 記述は不要 •
そのライブラリ関数の中で、シリアル通信⽤用セルの受け⼝口関数 を直接呼び出している /* 呼出し */ void eSample_main() { int x = 1; syslog(LOG_NOTICE, "sample%d", x); }; 2012/06/02 TOPPERSプロジェクト認定 11
12.
シリアル受信(1/2) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample call sSerialPort cSerialPort; }; cell tSample Sample{ cSerialPort = SerialPort1.eSerialPort; }; SerialPort1Sample 2012/06/02 TOPPERSプロジェクト認定 12
13.
シリアル受信(2/2) • 使⽤用例(呼び⼝口関数) void eSample_main() {
char_t c; cSerialPort_read(&c, 1); } SerialPort1Sample 2012/06/02 TOPPERSプロジェクト認定 13
14.
デバイスドライバの解説 • 提供するコンポーネント ‒ セルを⽣生成済み •
コプロセッサ ‒ AVR、TWI • ボタン • Flashコントローラ • Bluetooth ‒ ※必須ではない ‒ 定義のみ提供する • ディスプレイ ‒ ディスプレイ、LCD、SPI • サウンド • バッテリ • モータ • センサ ⽣生成済みのセルを プラットフォーム として提供 アプリケーション (ユーザ)レベル でセルを⽣生成 2012/06/02 TOPPERSプロジェクト認定 14
15.
Bluetooth(1/5) • 機能概要 ‒ Bluetooth通信の確⽴立立 •
マスタ/スレーブ ‒ Bluetooth通信 • 送信/受信 2012/06/02 TOPPERSプロジェクト認定 15 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
16.
Bluetooth(2/5) • 複合セルタイプtBluetoothのセルのコンポーネント図 Bluetooth BluetoothBody InitializeBluetooth AlarmTimeOut sBluetooth eBluetooth 2012/06/02
TOPPERSプロジェクト認定 16
17.
Bluetooth(3/5) • コンポーネント記述(組上げ記述) ※ これは提供物に含まれているので、改めて記述する必要は ない ‒
target_syssvc_inst.cdlからimportされる cell tSemaphore BluetoothSemapohre{ attribute = C_EXP("TA_TPRI"); count = 0; max = 1; }; cell tBluetooth Bluetooth { // Bluetooth本体 cSemaphore = BluetoothSemaphore.eSemaphore; keyCode = "1234"; }; 2012/06/02 TOPPERSプロジェクト認定 17 tBluetooth_inst.cdl
18.
Bluetooth(4/5) • セルタイプtBluetoothのインタフェース(⼀一部) ‒ シグニチャ:sBluetooth,受け⼝口:eBluetooth •
void open(void) ‒ USART1送受信バッファをBluetooth通信⽤用に切り替える • uint8_t initializeSlave(void) ‒ NXTをスレーブデバイスとして初期化し,マスタデバイスとの接 続を確⽴立立後、ストリームモードに以降する ‒ ストリームモード以降後は、Bluetoothコマンドは受け付けず、 シリアル通信路として機能する • bool_t isConnected(void) ‒ 接続が確⽴立立したかをチェックする • uint32_t sendPacket([in] const uint8_t *buffer, [in] uint32_t length) ‒ データを送信する 2012/06/02 TOPPERSプロジェクト認定 18
19.
Bluetooth(5/5) • キーコードの設定 ‒ tBluetooth_inst.cdl内Bluetoothセルを⽣生成している 部分において、keyCodeで設定する •
デフォルトの値は 1234 • 注意点 ‒ ASPカーネルでのシリアル通信でBluetoothを使⽤用 • syslogやシリアル受信 • Bluetoothでの仮想シリアル通信を利⽤用 ‒ ASPカーネルのシリアル通信を利⽤用する場合、 Bluetoothコンポーネントの機能をユーザアプリが直 接利⽤用した場合の動作は保証しない • syslogやtSerialPortを使⽤用する 2012/06/02 TOPPERSプロジェクト認定 19
20.
ディスプレイ(1/7) • 機能概要 ‒ ディスプレイ表⽰示 •
⽂文字列や数字 • 提供するコンポーネントの定義 ‒ 複合セルタイプtDisplay 2012/06/02 TOPPERSプロジェクト認定 20 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
21.
ディスプレイ(2/7) • 複合セルタイプtDisplayのセルの⽣生成例 ‒ コンポーネント図 Display DisplayBody InitializeDisplay SPI sDisplay eDisplay LCD 2012/06/02
TOPPERSプロジェクト認定 21 TerminateDisplay
22.
ディスプレイ(3/7) • セルSPIのコンポーネント図 SPI SPIBody ISRSPI sSPI eSPI 2012/06/02 TOPPERSプロジェクト認定
22
23.
ディスプレイ(4/7) • 複合セルタイプtDisplayのセルの⽣生成例 ‒ コンポーネント記述(組上げ記述) cell
tDisplay Display{ // ディスプレイ }; 2012/06/02 TOPPERSプロジェクト認定 23 tSample.cdl
24.
ディスプレイ(5/7) • tDisplayのインタフェース(⼀一部) ‒ シグニチャ:sDisplay,
受け⼝口:eDisplay • void update(void) ‒ バッファの内容を画⾯面に表⽰示する • void clear([in] bool_t updateToo) ‒ 画⾯面表⽰示⽤用バッファのクリア • void gotoXY([in] uint8_t x, [in] uint8_t y) ‒ ⽂文字表⽰示位置の設定 • void putString([in] const char_t *string) ‒ ⽂文字列を画⾯面表⽰示⽤用バッファに⼊入れる • void putInt([in] int32_t val, [in] uint8_t place); ‒ 符号付き整数を画⾯面表⽰示⽤用バッファに⼊入れる 2012/06/02 TOPPERSプロジェクト認定 24
25.
ディスプレイ(6/7) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample; call sDisplay cDisplay; }; cell tSample Sample{ cDisplay = Display.eDisplay; }; DisplaySample 2012/06/02 TOPPERSプロジェクト認定 25
26.
ディスプレイ(7/7) • 使⽤用例(呼び⼝口関数) void eSample_main() {
cDisplay_gotoXY(0, 0); // 表示位置を(0,0)に cDisplay_putString("sample"); // "sample"をバッファに cDisplay_update(); // 画面を更新 } DisplaySample 2012/06/02 TOPPERSプロジェクト認定 26
27.
サウンド(1/6) • 機能概要 ‒ サウンドを出⼒力力する •
⾳音の周波数、鳴らす時間を指定 • ⾳音量を設定 • 提供するコンポーネントの定義 ‒ 複合セルタイプtSound 2012/06/02 TOPPERSプロジェクト認定 27 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
28.
サウンド(2/6) • 複合セルタイプtSoundのセルの⽣生成例 ‒ コンポーネント図 Sound SoundBody ISRSound InitializeSound sSound eSound 2012/06/02
TOPPERSプロジェクト認定 28
29.
サウンド(3/6) • 複合セルタイプtSoundのセルの⽣生成例 ‒ コンポーネント記述(組上げ記述) cell
tSound Sound{ // サウンド }; 2012/06/02 TOPPERSプロジェクト認定 29 tSample.cdl
30.
サウンド(4/6) • tSoundのインタフェース ‒ シグニチャ:sSound,
受け⼝口:eSound • void beepTone([in] uint32_t frequency, [in] uint32_t msecond) ‒ トーンサウンドの出⼒力力 • void setVolume([in] uint8_t volume) ‒ ⾳音量の設定 ※ 0か100を設定することを推奨 それ以外の値の場合、出⼒力力サウンドの周波数が変わる 2012/06/02 TOPPERSプロジェクト認定 30
31.
サウンド(5/6) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample; call sSound cSound; }; cell tSample Sample{ cSound = Sound.eSound; }; SoundSample 2012/06/02 TOPPERSプロジェクト認定 31
32.
サウンド(6/6) • 使⽤用例(呼び⼝口関数) void eSample_main() {
cSound_setVolume(100); // 音量100 % cSound_beepTone(660, 100); // 660Hzの音を100ms鳴らす } SoundSample 2012/06/02 TOPPERSプロジェクト認定 32
33.
コプロセッサ(1/5) • 機能概要 ‒ コプロセッサ(AVR)と通信をする •
TWIバスを通じて、2m秒周期で受信と送信を交互に⾏行行う ‒ センサ、ボタン、バッテリの状態を受信 ‒ モータの出⼒力力値を送信 • 送受信データを管理する • セルAVRを提供 2012/06/02 TOPPERSプロジェクト認定 33 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
34.
コプロセッサ(2/5) • セルAVRのコンポーネント図 AVR AVRBody CyclicAVR InitializeAVR TWI sAvrMotor eAvrMotor ...etc sCyclic eCyclic 2012/06/02
TOPPERSプロジェクト認定 34
35.
コプロセッサ(2/5) • セルTWIのコンポーネント図 TWI TWIBody ISRTWI 2012/06/02 TOPPERSプロジェクト認定
35
36.
コプロセッサ(3/5) • コンポーネント記述(組上げ記述) ※これは提供物に含まれているので、改めて記述する必要は ない cell tAVR
AVR{ // コプロセッサ }; 2012/06/02 TOPPERSプロジェクト認定 36 target_lib_inst.cdl
37.
コプロセッサ(4/5) • AVRのインターフェース(⼀一部) ‒ シグニチャ:sAvrMotor,
受け⼝口:eAvrMotor • void setMotor([in] uint8_t portNumber, [in] int8_t powerPercent, [in] bool_t brake) ‒ モータにPWM値をセット ‒ シグニチャ:sAvrSensor, 受け⼝口:eAvrSensor • void setInputPower([in] uint8_t portNumber, [in] uint8_t powerType); ‒ ポートに電源を供給 • uint16_t getSensor([in] uint8_t portNumber) ‒ センサ値の取得 ‒ シグニチャ:sAvrBattery, 受け⼝口:eAvrBattery • uint16_t batteryVoltage(void) ‒ バッテリ電圧値の取得 2012/06/02 TOPPERSプロジェクト認定 37
38.
コプロセッサ(5/5) • 注意事項 ‒ AVRは、センサ、モータ、ボタン、バッテリ、ミ ドルウェアのコンポーネントが呼び出すことを想 定している •
ユーザアプリが直接AVRを呼び出すことは想定しておらず、 ユーザアプリから直接呼び出した場合の動作は保証しない 2012/06/02 TOPPERSプロジェクト認定 38
39.
バッテリ(1/6) • 機能概要 ‒ バッテリ残量の取得 •
提供するコンポーネントの定義 ‒ セルタイプtBattery 2012/06/02 TOPPERSプロジェクト認定 39 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
40.
バッテリ(2/6) • セルタイプtBatteryのセルの⽣生成例 ‒ コンポーネント図 Battery sBattery eBattery 2012/06/02
TOPPERSプロジェクト認定 40 AVR セルAVRの受け⼝口 sAvrBattery eAvrBattery につなぐ必要がある
41.
バッテリ(3/6) • セルタイプtBatteryのセルの⽣生成例 ‒ コンポーネント記述(組上げ記述) cell
tBattery Battery{ // バッテリ cAvrButton = AVR.eAvrButton; }; 2012/06/02 TOPPERSプロジェクト認定 41 tSample.cdl
42.
バッテリ(4/6) • tBatteryのインタフェース ‒ シグニチャ:sBattery,受け⼝口:eBattery •
uint16_t getBatteryVoltage(void) ‒ バッテリ残量の電圧値を返す. » セルAVRを通して取得する 2012/06/02 TOPPERSプロジェクト認定 42
43.
バッテリ(5/6) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample; call sBattery cBattery; }; cell tSample Sample{ cBattery = Battery.eBattery; }; BatterySample 2012/06/02 TOPPERSプロジェクト認定 43
44.
バッテリ(6/6) • 使⽤用例(呼び⼝口関数) void eSample_main() {
uint16_t battery; // バッテリ残量の取得 battery = cBattery_getBatteryVoltage(); } 2012/06/02 TOPPERSプロジェクト認定 44 BatterySample
45.
ボタン(1/6) • 機能概要 ‒ ボタン(ENTER,EXIT,RUN,STOP)押下状態 の取得 •
セルButtonを提供 2012/06/02 TOPPERSプロジェクト認定 45 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
46.
ボタン(2/6) • セルButtonのコンポーネント図 Button AVR sButton eButton 2012/06/02 TOPPERSプロジェクト認定
46 ButtonBody ButtonUpdate
47.
ボタン(3/6) • コンポーネント記述(組上げ記述) ※これは提供物に含まれているので、改めて記述する必要は ない cell tButton
Button{ // ボタン cAvrButton = AVR.eAvrButton; }; 2012/06/02 TOPPERSプロジェクト認定 47 target_lib_inst.cdl
48.
ボタン(4/6) • Buttonのインタフェース(⼀一部) ‒ シグニチャ:sButton,受け⼝口:eButton •
bool_t isRUNButton(void) ‒ RUNボタンが押下されているならばtrue,そうでなければfalseを 返す. • bool_t isENTERButton(void) ‒ ENTERボタンが押下されているならばtrue,そうでなければ falseを返す. • bool_t isSTOPButtonOnly(void) ‒ STOPボタンのみが押下されているならばtrue,そうでなければ falseを返す. 2012/06/02 TOPPERSプロジェクト認定 48
49.
ボタン(5/6) • 使⽤用例(コンポーネント記述) celltype tSample{
require tKernel.eKernel; entry sSample eSample; call sButton cButton; }; cell tSample Sample{ cButton = Button.eButton; }; ButtonSample 2012/06/02 TOPPERSプロジェクト認定 49
50.
ボタン(6/6) • 使⽤用例(呼び⼝口関数) void eSample_main() {
if(cButton_isRUNButton()){ // RUNボタンが押されたら、exitTaskを呼ぶ exitTask(); } } 2012/06/02 TOPPERSプロジェクト認定 50 ButtonSample
51.
モータ(1/7) • 機能概要 ‒ モータの回転数の取得/設定 ‒
モータのPWM値のセット 2012/06/02 TOPPERSプロジェクト認定 51 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
52.
モータ(2/7) • 提供するコンポーネントの定義 ‒ 複合セルタイプtRotaryEncoder •
モータの割込みハンドラと終了処理ルーチン • モータを使⽤用するときは、 tRotaryEncoder のセルの呼び⼝口と tMotorのセルの受け⼝口を結合 ‒ セルタイプtMotor • モータの回転数 • モータのPWM値 2012/06/02 TOPPERSプロジェクト認定 52 ・接続するポート番号を属性 としてもつ ・ユーザアプリケーションの コンポーネントと結合するため の受け⼝口をもつ ・tRotaryEncoderのセル と結合するための受け⼝口をもつ ・セルAVRへPWM値を 送るための呼び⼝口をもつ
53.
モータ(3/7) • モータ関連のセルの⽣生成例 ‒ コンポーネント図 RightMotor
LeftMotor AVR RotaryEncoder RotaryEncoder RotaryEncoderBody Initialize Motor Terminate Motor Cyclic Motor ISR Motor sMotor eMotor 2012/06/02 TOPPERSプロジェクト認定 53 セルAVRの 受け⼝口 sAvrMotor eAvrMotor につなぐ必要 がある セルRotaryEncoderの呼び⼝口 ciMotorInterrupt[x](x=0,1,2) を、tMotorのセルの受け⼝口 eiMotorInterrupt につなぐ必要がある
54.
モータ(4/7) • モータ関連のセルの⽣生成例 ‒ コンポーネント記述(組上げ記述) cell
tMotor RightMotor { // 右モータ portNumber = NXT_PORT_B; // Bポート cAvrMotor = AVR.eAvrMotor; }; cell tMotor LeftMotor { //左モータ portNumber = NXT_PORT_C; // Cポート cAvrMotor = AVR.eAvrMotor; }; cell tRotaryEncoder RotaryEncoder{ ciMotorInterrupt[0] = TailMotor.eiMotorInterrupt; ciMotorInterrupt[1] = RightMotor.eiMotorInterrupt; ciMotorInterrupt[2] = LeftMotor.eiMotorInterrupt; }; 2012/06/02 TOPPERSプロジェクト認定 54 tSample.cdl
55.
モータ(5/7) • tMotorのインタフェース ‒ シグニチャ:sMotor,受け⼝口:eMotor •
void setPWM([in] int8_t pwm, [in] bool_t brakeMode) ‒ モータのPWM値をセット • void setRevolution ([in] int32_t revolution) ‒ モータの回転数をセット » ロータリエンコーダの初期化 • void getRevolution([out] int32_t *revolution) ‒ モータの回転数を取得 2012/06/02 TOPPERSプロジェクト認定 55
56.
モータ(6/7) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample call sMotor cLeftMotor; }; cell tSample Sample{ cLeftMotor = LeftMotor.eMotor; }; LeftMotorSample 2012/06/02 TOPPERSプロジェクト認定 56
57.
モータ(7/7) • 使⽤用例(呼び⼝口関数) void eSample_main() {
cLeftMotor_setPWM(20, 1); // モータのPWMを20に設定 } LeftMotorSample 2012/06/02 TOPPERSプロジェクト認定 57
58.
センサ(1/10) • 機能概要 ‒ センサ値の取得 2012/06/02
TOPPERSプロジェクト認定 58 Bluetooth LCDディスプレイ サウンド ボタン バッテリセンサ メインプロセッサ コプロセッサ センサポート モータポート USART1SPI SSC TWI PIOA I2C
59.
センサ(2/10) • 提供するコンポーネントの定義 ‒ 複合セルタイプtSensorDriver •
センサの初期化ルーチンとI2Cの割込みハンドラ • 各種センサを使⽤用するときは、 tSensorDriver のインスタン スの呼び⼝口と各種センサのインスタンスの受け⼝口を結合 ‒ 各種センサのセルタイプ • 光センサ • ジャイロセンサ • タッチセンサ • 超⾳音波センサ ‒ センサ値の取得など 2012/06/02 TOPPERSプロジェクト認定 59 ・接続するポート番号を属性 としてもつ ・ユーザアプリケーションの コンポーネントと結合するため の受け⼝口をもつ ・tSensorDriverのセル と結合するための受け⼝口をもつ ・セルAVRからセンサ値を 取得するための呼び⼝口をもつ
60.
センサ(3/10) • 光センサの コンポーネント図 • ジャイロセンサの コンポーネント図 LightSensor LightSensor Body Terminate LightSensor SensorPort GyroSensor GyroSensor Body SensorPort sSensor eSensor
sSensor eSensor 2012/06/02 TOPPERSプロジェクト認定 60 sSensorControl eSensorControl
61.
センサ(4/10) • タッチセンサの コンポーネント図 • 超⾳音波センサの コンポーネント図 TouchSensor TouchSensor Body SensorPort SonicSensor SonicSensor Body Terminate SonicSensor SensorPort I2C 2012/06/02
TOPPERSプロジェクト認定 61 sSensor eSensor sSensor eSensor
62.
センサ(5/10) • センサ関連のセルの⽣生成例 ‒ コンポーネント図 GyroSensor
SonicSensor AVR SensorDriver SensorDriver SensorDriverBody Initialize Sensor ISR I2C sSensor eSensor 2012/06/02 TOPPERSプロジェクト認定 62 セルAVRの 受け⼝口 sAvrSensor eAvrSensor につなぐ必要 がある セルSensorDriverの呼び⼝口 ciSensorDriver[x](x=0,1,2,3) を、各種センサのセルの受け⼝口 eiSensorDriver につなぐ必要がある
63.
センサ(6/10) • センサ関連のセルの⽣生成例 ‒ コンポーネント記述(組上げ記述) cell
tGyroSensor GyroSensor{ // ジャイロセンサ portNumber = NXT_PORT_S1; cAvrSensor = AVR.eAvrSensor; }; cell tSonicSensor SonicSensor{ // 超音波センサ portNumber = NXT_PORT_S2; cAvrSensor = AVR.eAvrSensor; }; cell tSensorDriver SensorDriver{ ciSensorDriver[0] = GyroSensor.eiSensorDriver; ciSensorDriver[1] = SonicSensor.eiSensorDriver; // 省略:他のセンサとの結合 }; 2012/06/02 TOPPERSプロジェクト認定 63 tSample.cdl
64.
センサ(7/10) • tLightSensorのインタフェース ‒ シグニチャ:sSensor,
受け⼝口:eSensor • void getValue([out] uint16_t *value) ‒ 光センサデータの取得 ‒ シグニチャ:sSensorControl,受け⼝口: eSensorControl • void on(void) / void off(void) ‒ 光センサのON/OFF ‒ プログラム起動時はON • tGyroSensorのインタフェース ‒ シグニチャ:sSensor, 受け⼝口:eSensor • void getValue([out] uint16_t *value) ‒ ジャイロセンサデータの取得 2012/06/02 TOPPERSプロジェクト認定 64
65.
センサ(8/10) • tTouchSensorのインタフェース ‒ シグニチャ:sSensor,
受け⼝口:eSensor • void getValue([out] uint16_t *value) ‒ タッチセンサデータの取得(⾮非接触ならば0,接触ならば1) • tSonicSensorのインタフェース ‒ シグニチャ:sSensor, 受け⼝口:eSensor • void getValue([out] uint16_t *value) ‒ 超⾳音波センサ計測距離データの取得 • 超⾳音波センサ初期化/終了処理のためのAPIはない ‒ ⾃自動で呼ばれる 2012/06/02 TOPPERSプロジェクト認定 65
66.
センサ(9/10) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample call sSensor cLightSensor; call sSensorControl cLightSensorControl; }; cell tSample Sample{ cLightSensor = LightSensor.eSensor; cLightSensorControl = LightSensor.eSensorControl; }; LightSensorSample 2012/06/02 TOPPERSプロジェクト認定 66
67.
センサ(10/10) • 使⽤用例(呼び⼝口関数) void eSample_main() {
uint16_t light; cLightSensorControl_on(); // 光センサをON cLightSensor_getValue(&light); // 光センサの値を取得 } Sample 2012/06/02 TOPPERSプロジェクト認定 67 LightSensor
68.
ミドルウェア(1/4) • ボタンチェック周期ハンドラ(CheckNXTButton) ‒ 機能概要 •
10ミリ秒周期でボタンの押下状態をチェックする • 押下されているボタンに応じて以下の処理を⾏行行う ‒ STOP:プログラムを再起動する ‒ EXIT:プログラムを終了し、電源を切る ‒ STOP+ENTER:NXT BIOSを書き換え後、電源を切る » 再度電源を⼊入れると、プログラムダウンロード可能な状態と なる 2012/06/02 TOPPERSプロジェクト認定 68
69.
ミドルウェア(2/4) • Bluetooth接続タスク(ConnectBluetoothTask) ‒ 機能概要 •
システムの起動時に起動する優先度2のタスク • NXTのBluetoothデバイス名を設定 • NXTをスレーブとしてBluetooth接続を確⽴立立し、仮想シリアル 通信を可能にする ‒ デバイス名の設定 • tBluetooth_inst.cdl内ConnectBluetoothセルを⽣生成している部分に おいて、deviceNameで設定する • デフォルトの値は ET1234 2012/06/02 TOPPERSプロジェクト認定 69
70.
ミドルウェア(3/4) • コンポーネント記述(組上げ記述) ※これは提供物に含まれているので、改めて記述する必要はな い ‒ target_lib_inst.cdlからimportされる //
ボタンチェック周期ハンドラ cell tCheckNXTButtonBody CheckNXTButtonBody { cButton = Button.eButton; // NXT BIOSを使用する場合、Flashを結合(ram+rom.cdl) cFlash = Flash.eFlash; }; cell tCyclicHandler CheckNXTButton { ciBody = CheckNXTButtonBody.eiBody; attribute = C_EXP("TA_STA"); cyclicTime = 10; cyclicPhase = 1; }; 2012/06/02 TOPPERSプロジェクト認定 70 ram_only.cdl / ram+rom.cdl
71.
ミドルウェア(4/4) • コンポーネント記述(組上げ記述) ※これは提供物に含まれているので、改めて記述する必要はな い ‒ target_syssvc_inst.cdlからimportされる 2012/06/02
TOPPERSプロジェクト認定 // Bluetooth接続タスク cell tConnectBluetooth ConnectBluetooh { cBluetooth = Bluetooth.eBluetooth; // デバイス名の設定 deviceName = { 'E', 'T', '1', '2', '3', '4', '0' }; }; cell tTask ConnectBluetoothTask { cBody = ConnectBluetooth.eConnectBluetooth; taskAttribute = C_EXP("TA_ACT"); priority = 2; stackSize = 512; }; 71 tBluetooth_inst.cdl
72.
バランサ(1/4) • セルタイプtBalancer ‒ tBalancerのインタフェース •
シグニチャ:sBalancer,受け⼝口:eBalancer ‒ void control([in] int16_t forward, [in] int16_t turn, [in] uint16_t gyro, [in] uint16_t gyroOffset, [in] int32_t leftRevolution, [in] int32_t rightRevolution, [in] uint16_t battery, [out] int8_t *pwm_l, [out] int8_t *pwm_r) » 倒⽴立立制御に必要なモータのPWM値を求める » balance_controlと同様 2012/06/02 TOPPERSプロジェクト認定 72
73.
バランサ(2/4) • セルタイプtBalancerの⽣生成例 ‒ コンポーネント記述(組上げ記述) //
バランサ cell tBalancer Balancer{ }; 2012/06/02 TOPPERSプロジェクト認定 73 tSample.cdl Balancer Balancer BalancerBody Initialize Balancer
74.
バランサ(3/4) • 使⽤用例(コンポーネント記述) celltype tSample{
entry sSample eSample call sBalancer cBalancer; }; cell tSample Sample{ cBalancer = Balancer.eBalancer; }; BalancerSample 2012/06/02 TOPPERSプロジェクト認定 74
75.
バランサ(4/4) • 使⽤用例(呼び⼝口関数) void eSample_main() {
/* 省略:変数宣言とパラメータの設定 */ cBalancer_control(speed, turn, gyro, gyroOffset, rev_l, rev_r, battery, &pwm_l, &pwm_r); } 2012/06/02 TOPPERSプロジェクト認定 75 BalancerSample
76.
使⽤用するファームウェアの選択 • 拡張NXTファームウェア or
NXT BIOSの選択 ‒ target_lib_inst.cdlで選択する • importするcdlファイルで制御 TOPPERSプロジェクト認定 762012/06/02 // 拡張NXTファームウェアを使用する場合 // ram_onlyを残し、ram+romをコメントアウト(削除) import("ram_only.cdl"); // import("ram+rom.cdl"); target_lib_inst.cdl // NXT BIOSを使用する場合 // ram+romを残し、ram_onlyをコメントアウト(削除) // import("ram_only.cdl"); import("ram+rom.cdl"); target_lib_inst.cdl
77.
Flashコントローラ • 機能概要 ‒ Flashコントローラにより、NXT
BIOSを書き換え る • セルFlashを提供 ‒ NXT BIOSを使⽤用する場合に⽣生成される ‒ ram+rom.cdlで⽣生成 ‒ 周期ハンドラCheckNXTButtonの本体から呼ばれ るので、ユーザアプリケーションが意識する必要 はない TOPPERSプロジェクト認定 772012/06/02
Download now