TWELITE SDKを試す


# 環境　

- Ubuntu 18.04
- MWSDK_Linux-i386_201805.tgz


TWELITE の SDK は、 C ライブラリと MWX ライブラリの2つがありますが　C　ライブラリを試してみます。


この資料に基づいて設定していきます。
「TWELITE SDKのインストール」
https://sdk.twelite.info/twelite-sdkno/twelite-sdknoinsutru


# ダウンロード
以下のページからダウンロードします。

https://mono-wireless.com/jp/products/TWE-NET/index.html

# 環境設定

必要なパッケージをインストールします

```

sudo apt-get install lib32z1
```


VSCodeは既にインストールしていたので、C/C++ Extention を追加します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/2bbb4f73-3b05-be13-a131-71225faaf5f3.png)


# ビルドのテスト

「VSCode での利用」
https://sdk.twelite.info/twelite-sdkno/vscode-deno
に基づいて作業します。


サンプルプログラムとして、SDK 内の MWSDK/Wks_TWELITE/App_Twelite/
を使います。

なお、同じ　App_Twelite でも、以下からダウンロードしたものはVSCodeの設定が入っていないらしくビルドできませんでした。
「超簡単！標準アプリ（App_Twelite）ダウンロード」
https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/download.html

VSCode で、「File」-「Open Folder」で App_Twelite フォルダを開きます。
「File」-「Open File」ではないことに注意。

ちなみに僕は今まで、VSCode を物書きに使ってましたがこの操作をすると他のファイルは閉じられてしまいました。原稿書きながらの作業とかしているときはそういったところ踏まえる必要があります。

「Terminal」-「Run Task」で、Build App_Twelite,Master(BLUE)　を選ぶと、ビルドされました。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/4b5df066-a82c-45e6-f86f-f7e14c73948a.png)

App_Twelite_Test_Master_BLUE_L1200_V1-8-3.bin が生成されています。

# マイプロジェクトを作ってみる

MWSDK/Wks_TWELITE　フォルダに入っている　App_Twelite を元に、自分のアプリを作ってみることにします。


「ディレクトリ構成」
https://sdk.twelite.info/twelite-sdkno/derekutori
によると、

> ワークスペースを格納するディレクトリはMWSDK 直下で、かつ、後述する Makefile の相対ディレクトリも変更してはいけません。

だそうです。

自分のプロジェクト用に、　MWSDK/MyProjects　フォルダを作り、そこに App_Twelite をコピー、フォルダ名を　App_Twelite_Test　とします。



作り直してみます。
1087行目にある以下の処理

```

void cbToCoNet_vMain(void) {
	vHandleSerialInput(); // シリアルポートの処理
}

```
を以下のように書き換えます。

```

void cbToCoNet_vMain(void) {
	static int counter=0;
	vHandleSerialInput(); // シリアルポートの処理

	vfPrintf(&sSerStream, "!INF TEST COUNTER=%d."LB,counter++);
	SERIAL_vFlush(sSerStream.u8Device);
}
```
ここのルーチンは、以下のように呼び出されるそうです。

```

/** @ingroup MASTER
 * 本関数は ToCoNet のメインループ内で必ず１回は呼び出される。
 * ToCoNet のメインループでは、CPU DOZE 命令を発行しているため、割り込みなどが発生した時に
 * 呼び出されるが、処理が無い時には呼び出されない。
 * しかし TICK TIMER の割り込みは定期的に発生しているため、定期処理としても使用可能である。
```

では、TICK TIMERはどのくらいでなされているのでしょうか？

先のようにビルドして、バイナリを生成しておきます。

MWSDK/Tools/tweprog_py　を使って書き込みをするのでそのディレクトリに移り、書き込みます。

```

$ sudo ./tweterm.py -p ftdi://ftdi:232:AI069IL2/1 -b 115200 -F ../../MyProjects/App_Twelite_Test/Master/Build/App_Twelite_Test_Master_BLUE_L1200_V1-8-3.bin 
*** TWE Wrting firmware ... ../../MyProjects/App_Twelite_Test/Master/Build/App_Twelite_Test_Master_BLUE_L1200_V1-8-3.bin
MODEL: TWEModel.TWELite
SER: 1000f97
FILEINFO: 04 03 0008
0%..10%..20%..30%..40%..50%..60%..70%..80%..90%..done - 10.49 kb/s
Entering minicom mode
```

書けました

cf.,「TWELITE のファーム書き込みしてみる」
https://qiita.com/nanbuwks/items/dc553119236e2a219297

シリアル出力から取得した内容です。

```

EST COUNTER=86.
!INF TEST COUNTER=87.
!INF TEST COUNTER=88.
!INF TEST COUNTER=89.
!INF TEST COUNTER=90.
!INF TEST COUNTER=91.
!INF TEST COUNTER=92.
!INF TEST COUNTER=93.
!INF TEST COUNTER=94.
!INF TEST COUNTER=95.
!INF TEST COUNTER=96.
.
.
.

```

と出ました。1秒間に200カウントアップぐらいなされていました。

ここにある、ポーリング間隔に依存しているかな？
http://www.gyabinet.com/samp_monitor-docref-en/html/d9/d51/group__grp___utils___b_t_m.html