TWELITE DIP リリースノート
TWELITE DIP の標準アプリの更新情報 です。
旧バージョンをお持ちの方も最新版に更新することが出来ます。
変更内容
■ Ver1.3.3 では以下の修正を行いました。
- 低レイテンシでDI変化を検出、送信するオプション
- ADC変化に伴うパケット送信を抑制するオプション
- DI が Lo になっている時にパケットを連続送信するオプション
- mode7(10秒スリープ) モードで、タイマー起床しないモード設定を追加
- その他
- PWM駆動周波数を 64KHz まで有効にしました
- IDを122に設定すると、M1-M3 の設定に関わらず中継機として振る舞います。
低レイテンシでDI変化を検出、送信するオプション
低レイテンシモードは、送信側の DI 入力を検知してから速やかにパケット送信を行い、より短い遅延(レイテンシ)で受信側の DO を変更するモードです。
本オプションの設定はインタラクティブモードで【o: set Option Bits (0x00000000)】の1ビット目を1にします。設定値は他のオプションが設定されていなければ 0x00000001 となります。送信側のみの設定で構いません。
標準の設定では DI が Lo に変化してから約30ms~70ms で受信側の DO が変化します。この遅延は一般的な利用で極力問題を減らすために適切に設定されたものです。低レイテンシモードでは下記の処理を省略・簡素化します。
- ボタンを使用する場合のチャタリングの影響を最小化する
- 無線パケットの送信で衝突を避けるため送信開始をランダムに遅延させる
低レイテンシモードでは、
- Hi - Lo への検出は割り込みにより検出します。割り込み検出後は一定期間(約100ms)は割り込み検出を無視します。
- Lo - Hi への検出は、1ms 毎の DI 値判定が5回連続(標準では 4ms を5回)で Hi になることで検出されます。
- DI 状態の変化検出時は、送信遅延および再送遅延を設定せずに無線パケット送信を行います。
- 代表的な遅延は、送信側 DI Hi-Lo が受信側 DO Hi-Lo になるまで約 5ms。Lo-Hi は約 10ms です。
- 遅延は無線パケット送受信の失敗などを理由に大きくなることが有ります。
- スリープ動作時にも、IO状態確定を短縮し、起床から送信までの時間を短縮します。
ADC変化に伴うパケット送信を抑制するオプション
アナログ入力 AI 変化を検出したタイミングでパケット送信を行います。しかし、AI が未接続の場合その入力は安定しないため計測都度値が変化し、意図しないパケットが送信されることになります。本オプションは AI 値変化からパケットを送る処理を無効化します。
本オプションの設定はインタラクティブモードで【o: set Option Bits (0x00000000)】の5ビット目を1にします。設定値は他のオプションが設定されていなければ 0x00000010 となります。送信側のみの設定で構いません。
DI が Lo になっている時にパケットを連続送信するオプション
例えばモータなどをリモコンで制御をするような場合、リモコンのボタンを押している間だけ動作し、電波が届かなくなったら自動で止めたいという要求もあります。
本モードの設定はインタラクティブモードで【o: set Option Bits (0x00000000)】の9ビット目を1にします。設定値は他のオプションが設定されていなければ 0x00000100 となります。送信側、受信側双方で設定してください。
- DI のいずれかが Lo 状態の時は、秒32パケットで送信を行います。
- DIの全てが Hi に戻った時は、その後1秒間、秒32パケットで送信(Hiに戻った事を確実に伝達するため)を行います。
- 受信側が受信パケットにより Lo 状態を設定してから、0.5秒間パケットを受信しない状態が続けば、DO を全て Hi に戻します。
mode7(10秒スリープ) モードで、タイマー起床しないモード設定を追加
DI の割り込みのみを用いてパケット送信を行いたい場合が有ります。mode7 (M1=G M2=G M3=G) での動作を、タイマー起床無し、DI 割り込み (Hi-Lo) による起床のみ、という振る舞いに変更できます。
本設定はインタラクティブモードで【y: set mode7 sleep dur (10s)】を 0 に設定します。
- スリープ時の消費電流が若干小さくなります。
- DI の Hi-Lo 割り込みのみを処理しますので、Lo-Hi の伝達は出来ません。
※ DIを2ポート利用し、一つ目を直接の入力、もう一つをインバータを介した入力とするなどの工夫が必要です。
I2Cの処理を追加しました。
I2C のデバイスにアクセスできる UART コマンドを追加しました。この機能で出来るのは例えばI2C対応のセンサーから値を読む等の数バイトの送信、または数バイトの受信です。連続的に処理される複雑なコマンド群の処理には対応していません。
■ 書式 - 入力フォーマット 1: OCTET: 無線デバイスのアドレス (0xDB: 自分自身, 0x00 ~ 0x7F, 0x00:親機, 0x78: 全子機) 2: OCTET: 0x88 3: OCTET: 要求番号(応答メッセージにそのまま出力される識別子) 4: OCTET: コマンド (0x1: 書き込み, 0x2: 読み出し) 5: OCTET: I2Cアドレス (1010100 なら 0x54) 6: OCTET: I2Cコマンド (最初のコマンドバイト) 7: OCTET: データサイズ (無い時は 0) 8: OCTET[N]: データ (データサイズが0のときは、本フィールドは無し) 9: OCTET: チェックサム :DB88010123230055 ^1^2^3^4^5^6^7^9 UART 接続したモジュールに対し (1)、I2C の処理を行う(2)。応答確認用の値(3)は 0x01 で、書き込み(4, 0x01) を実行する。スレーブデバイスのアドレス(5) は 0x23、 続くコマンド(6) も 0x23を送付する。追加的なデータ転送 (7, 8) は無し。 UART コマンドのチェックサム(9) は 0x55 である。 :78880101232300B8 ^1^2^3^4^5^6^7^8 上記 I2C コマンドを 0x78 アドレスの子機に送付する。 ※ 0x78 アドレスの場合複数子機が電波範囲にいる場合は、全子機が応答する。 特定子機を指定したい場合は 1 ~ 100 のアドレスを設定にて割り付ける。 ― 出力フォーマット OCTET: 無線デバイスのアドレス OCTET: 0x89 OCTET: 要求番号 OCTET: コマンド (0x1: Write, 0x2: Read) OCTET: 0:FAIL, 1:SUCCESS OCTET: データサイズ (無い時は 0) OCTET[N]: データ (データサイズが0のときは、本フィールドは無し) 送信と同様の応答が戻ります。 ■実行例 (SHT21 温湿度センサー) レジスタの読み込みコマンド(一括) E6コマンド後に読み出し :7888AB0440E6012A レジスタ値は 0x3A :7889AB0401013A14 レジスタ書き込み E6コマンド+1バイト(0xBB)書き込み :7888AB0140E601BB72 成功 :7889AB01010052 温度測定 温度測定開始 :7888AB0140F30021 応答(成功) :7889AB01010052 3バイト読み出し :7888AB0240000310 応答 6E107B -- (0x6E10*17572+32768)/65536-4685=2870=28.70℃ :7889AB0201036E107B55 湿度測定 湿度測定開始 :7888AB0140F5001F 応答(成功) :7889AB01010052 3バイト読み出し :7888AB0240000310 応答 829A18 -- (0x829A*12500+32768)/65536-600=5777=57.77% :7889AB020103829A181A
UART電文の処理を改善しました。
- 受信時の先頭アドレスは、送信先アドレスから送信元のアドレスに変更しました。アドレス表記を統一するためです。
- 連続した送信コマンドに対して、直前のコマンド処理が完了するまで待つようにしました。これまでのバージョンでは連続的にコマンドを入力しても、最初のコマンド処理が終わるまでは失敗扱いとして何も起きませんでした。
- 送信がブロックされるタイミングが有り、これを修正しました。
※ マイコンとTWELITE間を UART で通信する場合は、UART 専用アプリケーションを推奨します。
その他
- IDを121に設定すると、M1,M2,M3 の設定によらず、親機として振る舞います。
- IDを122に設定すると、M1,M2,M3 の設定によらず、中継機として振る舞います。