MINI相当に変換する基板の資料を置いておきますね。プログラムの書き換えは以下のリンク先を読んでみてください。http://hamayan.blog.so-net.ne.jp/2016-10-21これが有ると便利です。TP-200http://akizukidenshi.com/catalog/g/gC-09830/使用コネクタ関しては以下のリンク先を読んでみてください。[Lazurite]変換基板の配布をしようと思っています。数量は20~30セットくらい。いやぁ、某店舗での委託販売で交渉をしていましたが、「常時在庫を持つ!」「1年間の継続販売必須!」と言う事で売り切りができず、個人ではもっとも辛いところの在庫を持つ!必要があり、いまのところ断念しています。セット内容は、基板と1.27mmピッチのコネクタ、2mmピッチ、2.54mmピッチのコネクタになります。価格ですが、委託販売を行わない事から某店への手数料などが無くなるので、1000円ポッキリを考えています。※送料は別です!どうでしょうかね?※勿論サポートもここで行います。※好評?だったら別タイプの変換基板も企画を進めます。コメントに書いていただくか、以下から連絡先のファイルを入手してください。https://dl.dropboxusercontent.com/u/60463387/contact/contact.txt※変換基板と言えば、ESP8266をXBeeのピン配置に変換する基板も用意しているんですよ。半田付け、結構大変です。こちらも良かったら要望を送ってください。[Lazurite]マルチタスクで行こう!例によってマルチタスク化。例によってノンプリエンプティブ。〇ドキュメントの在処ネットを検索しても見つからないなぁ、、、と思っていたら、東大元暮らしでした!ついついネット上に有ると思い込んでしまいますね。RISCマイコン、記述が見つからなかったけれどハーバードアーキテクチャかもしれない。一応1命令1クロック。パイプラインストールを頻発しなければ結構速いかもしれない。▼メモリ空間に関してsmallモデルとLargeモデルが有るが、今回はsmallモデルを対象としている。6kbyte〇ディスパッチャーを作るどうでもイイことを勘違いして一日悩んだが、smallモデルであればわりと簡単だと思う。}}※IDEにプロジェクトの設定ファイルってのがあるんだけれど、ここに書きこんだからと言ってコンパイルオプションに展開されるわけではなく、悲しかった。※ライブラリのデバックをしたくてSerial.printって書いても、「何それ?美味しいの?」ってコンパイラに言われて、悲しかった。[Lazurite]まず言って置きます。LazuriteのI2Cの標準の速度は400kHzだぁ。つまずく事間違いなし。私もつまづいた!※setupの中で100kHzに落としてねー!さて今日のお題はArudinoとかGR-KURUMIとか用に作成したライブラリの移植の話。LazuriteはC++をサポートしていないので、ライブラリは全てCソースで記述しなければならない。この辺を参照して欲しい。http://hamayan.blog.so-net.ne.jp/2016-10-17つまりArduinoのライブラリを持って来てもコンパイルすら通らないので、地道にコツコツCソースへの置き換えが必要となる。ここでめげる人多数、、、とは言え買っちゃったのでなんとか使いこなす必要性から、なんとかしてみたいと思う。今回移植するライブラリはGR-KURUMI用に作成したOLED表示器のライブラリです。※ArduinoのライブラリをGR-KURUMIに持ってきた場合、かなりの確率でそのまま動く。修正が必要となったとしても、それ程手間ではない。以下にGR-KURUMI用のソースを掲載します。※&ltとか&gtなどhtmlに変換した時に正しく変換されていない可能性が有るので、使わない事。※&ltとか&gtなどhtmlに変換した時に正しく変換されていない可能性が有るので、使わない事。Wire.endTransmission();こう言った省略もダメです。実際にコンパイル掛けてみると色々エラーや警告出ますんで、一つ一つ潰していくしかない。クラスのメッソッドっぽく記述し直す必要があります。);みたいに書きたいとすれば、関数名のリストを作った構造体を用意して、それで呼び出す事になります。結局以下の様になりました。※&ltとか&gtなどhtmlに変換した時に正しく変換されていない可能性が有るので、使わない事。※&ltとか&gtなどhtmlに変換した時に正しく変換されていない可能性が有るので、使わない事。IDEが入っているフォルダーの中のlibraries以下に、ソースと同じ名前にしたフォルダーを生成し、そこに収納します。この状態でIDEを起動するとこのライブラリが左端のライブラリリストに表示されますので、チェックします。※I2CなのでWireにもチェックを入れます。冒頭の表示プログラムが以下になります。※&ltとか&gtなどhtmlに変換した時に正しく変換されていない可能性が有るので、使わない事。delay(1000);}冒頭でmcu.hをインクルードしていますが、I2Cの速度を落とす為に必要です。setup*/も必要です。※まぁこれくらいのコード量なら移植はそれほどでもですが、もっと複雑なコードだと厳しいですね。BME280の移植はそれなりに手間でしたよ。※IDEのライブラリにBME280は登録されていますが、、、SPIで動かした時のライブラリで、I2Cではありませんでしたorz。※いや、最大の問題はこんなライブラリの移植ではなく、フォーラムのレスポンスの悪さだったりして。[Lazurite]外部から低消費電力状態を解除したい!sleep関数は時間が来ると低消費電力状態から解除されますが、それ以外に外部からこの低消費電力状態を解除したい時も多いかと思います。この様な場合、wait_event関数を使う様です。以下にサンプルを上げておきます。Arduino同様外部割り込み端子として2番と3番が使用できますが、今回は2番に押しボタンスイッチを接続しています。LEDは消灯されるが、青LEDは直前の端子の状態を維持している模様。変更してみましたが、外部割り込みでは起きない様です。うーん、、、一応sleepのマニュアルでは外部割り込みは有効と書いてあるので、低消費電力状態の解除方法が提供されていれば良いのですけれどね。[Lazurite]どんくらい転送できるんだろう?気になるのは「らずらいと姫」の解説ページに、送信時間は1時間当たり360秒(10%)に制限されるって書いてある点。920Jを並べています。ラベルを見て判るように、左が送信、右が受信ですね!ええっと、送信データサイズが839543byte、送信時間合計が1452933ms、1048回エラー、送信数40279回。受信データ数が8586536byte、受信数40124回。あ、合わない、、、1回のペイロードサイズが214byte、ヘッダーの11byteを考慮すると839543byteの全体サイズは882697byte。ビットに直して1秒辺りのレートに換算すると、約4860bps。無線の設定では100kbpsなので10%にも達していない結果。※流れる時はやけに流れる(50kbpsとか60kbps)、流れない時はまったく流れない!ムラっけのある通信。※あれぇ?これ、アンテナの向きとか距離(近過ぎる)とか影響されている感じがする。マルチパスとかも!SubGHz.sendのマニュアルを読む限り、http://www.lapis-semi.com/lazurite-jp/contents/reference/subghz_send.html標準で250-11=239byteがデータのペイロードサイズに思えるが、実際にそのサイズを送信すると受信側は214byteしか受けていない。なんで???※試験やり直し無線モジュール同士の距離とか、アンテナの向きを調整して比較的安定している状態にして再度約1時間の転送レートを求めてみた。約50kbps以上は出ている計算になった。「らずらいと姫」のあの解説は一体なんだったんだろう?送信のデータ数と受信のデータ数とかカウントが一致しないのは、もう無線だからとしか言いようがないなぁ。過信せずに自分で上位プロトコルを実装した方がいいでしょう。少なくともシーケンス番号のチェックは必要に思える。[Lazurite]変換基板を作りました!一つの基板で、XBee変換と、DIP変換のどちらかを選べるようにしています。DIP変換は0.1inchグリッドに載せているので、ブレッドボードに刺さります。920Jの全ての端子を引き出す事はできませんでした。専用のWriterやハーフピッチのケーブル/コネクタが無くても書き込み、シリアル送受信ができるようになっています。専用のWriterも接続できまっす。[Lazurite]今日のお題は、Writerをなんとかできないのか?って話です。できるか、できないのか?と言う話なら、こうやってネタにしているのだから出来ます。やっていいのか、悪いのかは判りません。自己責任でお願いします。お得に実現できるので、複数台の対向でデバックとかの時に役に立つでしょう。※と言うか、対向でデバックする時は2つ以上無いと効率悪くて仕方がないよね。普通にWriterを買うと、高いですよね。一個くらいは仕方ないとしても、それ以上はどうかと思います。接続がハーフピッチの10pinコネクタと、使い辛い。Miniシリーズ)https://www.switch-science.com/catalog/2956/しかしこのWriterに使用しているICはおなじみのFT232RLですんで、2000円以下のFT232RLを使ったUSB/シリアル変換基板は、マルツとか秋月とか、まぁ色々なショップに並んでいます。マルツhttp://www.marutsu.co.jp/pc/i/52777/秋月http://akizukidenshi.com/catalog/g/gK-01977/さて、ハードウエアから見ると、Writerで使用している接続は電源を除けば4本です。TXD、RXD、TEST0、TEST1Nです。それぞれFT232RLのどこに接続する?ですが、以下になります。CBUS1わりと簡単ですね。配線だけなんとかすれば使える!と言う訳ではありません。FT232RLの設定をいくつか変更します。FT232RLの設定はFTDIから無償で配布されているユーティリティで変更可能です。FT_Progを使用します。http://www.ftdichip.com/Support/Utilities.htm#FT_PROGFT232RLを使ったUSB/シリアル変換基板をPCに接続し、FT_Progを起動してデバイスのスキャンを行います。Descriptorをクリック)を以下の赤枠の様に変更します。以下の赤枠の様に変更します。変更したらデバイスにプログラムして、その後一旦USB/シリアル変換基板をPCから抜き挿しします。この時、COMポート番号が変更されてしまうので注意してね。IDEから書き込みが出来るようになります。ShieldとXBeeのDIP変換基板を使用する事でできますね。[Lazurite]あれを動かしてみる。「展示会で大活躍!920MHz無線お手軽電波ポリス★」http://www.lapis-semi.com/lazurite-jp/lazurite/359.htmlスイッチ等は実装が面倒なので、3秒くらいで自動的にチャネルが切り替わる様にした。920Jには参考例の送信のプログラムを書き込んである。※リンク先のページでは、配線はI2Cとスイッチの読み込み以外にLCDのRESETへの接続が行われているが、実際にはRESETの操作をしていない。LCDのRESETはVCCに固定してしまった。※SPIは要らないだろう!※よくよく見たらMsTimer2も要らないじゃん。IDEの掲示板http://www.lapis-semi.com/lazurite-jp/forums/forum/lazurite-ide%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6何気に重要な事が書いてあるんじゃないかい?「らずらいと姫の挑戦日記」http://www.lapis-semi.com/lazurite-jp/%E3%82%89%E3%81%9A%E3%82%89%E3%81%84%E3%81%A8%E5%A7%AB%E3%81%AE%E6%8C%91%E6%88%A6%E6%97%A5%E8%A8%98/9912.html〇ハーフピッチコネクタの選択シングルライン10pinレセプタクルならこれでいいかな?最安。ヘッダー部の高さが3.4mmで、ここが他のコネクタと一致しない。@30円http://akizukidenshi.com/catalog/g/gC-08695/Digi-Keyならこれになるが、ややお高め@170円http://www.digikey.jp/product-search/ja?keywords=S9008E-10-NDデュアルライン2×5極のピンソケットならこれ。@98円http://www.digikey.jp/product-detail/ja/sullins-connector-solutions/GRPB052VWVN-RC/S9015E-05-ND/1786455デュアルライン2×5極のレセプタクルならこれ。@89円http://www.digikey.jp/product-search/ja?keywords=609-3754-nd※廣杉にも有った!高さが3.4mmなので秋月の物に合わせられる。「3.3V以下で使用すると無線の電波強度は弱くなります。」だそうだ、、、Writerhttp://www.lapis-semi.com/lazurite-jp/products/lazurite-mini-writer-type-bWriterのVID、PIDはFTDIのそれから変更はされていない。920JとXBeeシールドを組み合わせるとこんな(-ω-;)ウーンな感じ。※最大の問題は、このIDEがC++をサポートしていない事。http://www.lapis-semi.com/lazurite-jp/contents/IDE/How_to_use.htmlこのBasic用のページの説明で基本的には構わないが、ときおり出る脅し文句は一体何だろう?無視しているが。seriasもクリックが必要。書き込みが終わると、青いLEDが1秒で点灯、1秒で消灯を繰り返す。書き込み中は黄色LEDのみ点灯から青LEDがチラチラ点灯。書き込みが終了すると電源LEDらしい赤LEDが点灯する。シリアルモニターは、改行コードを受信しないと表示しないみたいだ。〇標準ライブラリについて標準ライブラリリファレンスhttp://www.lapis-semi.com/lazurite-jp/contents/reference/Lazurite_Reference.html▼C言語でArduinoのライブラリっぽく作っていいるので、大分無理が有る感じ。);は記述できず、同じ事は以下になる。);ようするにオーバーライドができない。▼C99に部分対応で基本的にC89なので、コードの途中に変数の宣言ができない。▼「Serial.print」とかクラスメソッドの様に見えているが、実際は静的に生成された構造体の関数ポインタを呼び出しているとの事。〇スタック領域RAM領域は全体で6kbyte有る!。標準で512byteの領域をスタックに割り当てている。そこで大域変数に約2kbyteの領域を確保したmap出力を見てみる。スタック領域はRAMの底に配置されるのではなく、先頭に持ってこられているが、それ以外のデータ領域はスタック領域の後に配置される。キャプチャのグレーのところにSTACKと書かれており、サイズが512になっている。その上のGAPが事実上のRAM領域の余りになっており、なんで1244.0と小数点が付くのか判らないが1244byteは余っているらしい。スタックの伸長による暴走の懸念は、まずこのmap出力を見ると良いかも。▼ブロードキャストする為にはPANID=0xFFFF、相手先アドレス=0xFFFFでいいのか?▼自機16bitアドレスは、モジュールの半田面に手書き(笑)で記載されている。本来は64bitアドレスも在るのだと思う。▼ZigBeeと異なり無線チャネルは自力でどうぞ!なので、実運用を想定するなら事前に周囲の無線環境を調べる何かが必要。こんなの作ったのか(笑)。Shieldの回路図が見難くて辛いので、清書してみた。最近のコメントこんなものでよろしければ。場合..ありがとうございます。Electronicsアットマークエレ不要なデバイスドライバーを削除ダウンロードInterface付属SH2基板のSRAM有り/無しデバックモニタとHOS-V4同梱バージョンHOS本のサンプルをH8/3048Fでデバックする為のデバックモニタH8/3048Fのセクション情報ファイルインポートして使います。