ラベル レポート の投稿を表示しています。 すべての投稿を表示
ラベル レポート の投稿を表示しています。 すべての投稿を表示

2013年10月22日火曜日

MCU Gear:接続検証レポート ~ディーノ系 5V 16MHz編

今回はレベル変換基板を作ったので試してみました。
 これで5V系のマイコンもMCU Gearで扱えるようになります。





ブレッドボードやユニバーサル基板接続しやすいようにmbed と同じピン配置にしました。

これを~ディーノとつなぐには以下のような改造が必要です。
MCU Board TypeAのmbedコネクタをTOP面に取り付け、裏面にはピンヘッダを付けるとうまくつながりました。










では実際に複数のモジュールを動かそうと試みたところ、どうやらモジュールの数によってSRAMがいっぱいになってしまうようです。
今回使用したテストプログラムでは4個のモジュールが限界でした。単純に5個のモジュールを定義すると最初に定義したクラスのモジュールのアドレス設定が消えてしまうなど、うまく動かなくなりました。

恐らく~ディーノ系でもSRAMの大きい物(MEGA?など)を使用するか、PCと接続して分散処理(PC側にモジュールの定義を書き込んでおき、コマンドを送って動かす仕組み。クラスでモジュールを定義しなければ問題なさそうです。)で動作させる方法がよさそうです。

まだ検証は続けますが、今のところ~ディーノ系はサポート対象外です。

2013年9月12日木曜日

MCU Gear:接続検証レポート ~ディーノ系 3.3V 16MHz編

前回は3.3V 8MHzとの接続テストを行い、 リセットボタンに問題があることがわかりました。

今回はSeeeduinoという基板を手にいれたのでテストしてみました。


この基板は5V 16MHzでの動作が推奨ですが、実は3.3V 16MHzでも動くそうです
どうやらマイコンの仕様では3.3Vでは13MHz程度が安定してるという事ですが、若干オーバークロック気味で動かせるようです。
(※スイッチが5V側に動かないように、3.3V側に固定しないと危険かもしれません、そこだけは注意する必要がありそうです。)


「3.3V 16MHz・・・本当かな?」っと思いちょっと調べてみました。




単純にIOのHigh、Lowの動きに変化が出るか、ロジックアナライザで確認してみました。

5V  : 8.62~8.63usec
3.3V: 8.62~8.63usec

という結果になり、どちらも同じ速度で動いているようです。(水晶が16MHzなので当たり前なのでしょうけど)
ただ、データシート的には、安全ではないという事なので、推奨はできません。リセットボタンの問題もそのままでした。







次にMCU Gear のパワーモジュールのリセットボタンからC5コンデンサを取り外し、テストプログラム(Test Program)を動かしてみました。一応16MHzで動きましたが、やはりオーバークロックはマイコンの仕様を満たしていないので推奨はできません。

※推奨マイコン以外のマイコンでは、MCU Gearの初期化動作が失敗することがあります。~ディーノ系を使うときはリセットボタンは使わずに
①MCU Gearの電源を入れる。
②マイコンの電源を入れる。
という手順で行う必要があるようです。また、コンデンサを外した後の動作については保証やサポートはできません。


【電圧対クロックのグラフから、近似曲線を求めてみました】
※近似曲線はあくまでも「近似値」を出すための式なので、実際のマイコンには当てはまらない可能性があるため、参考程度にしてください。特にこれで動作保障するものでもありません。また、計算ミスなどあったらコメントください。


データシートの 28.3 Speed Grades グラフを見ると、3.3Vが微妙なラインに見えます。

ここで一つ、気になるところがあります。「これって直線なの?」

では(4.5V, 20MHz) (1.8V, 4MHz) グラフの傾きから1次関数を求めると。

Y = (16MHz/2.7V) X + b

となります。

(4.5V, 20MHz)を代入して b を求めると b = -6.66666....となります。

つまり

Y ≒ (16MHz/2.7V) X - 6.67

となります。

ここで途中にある(2,7V, 10MHz)を確認するためにXに2.7Vを代入すると
Y ≒9.34MHz

10MHzよりも小さい、つまりこのグラフは直線ではなくて若干膨らんでいることになります。
エクセルで二次の近似曲線を出してみました。
その式が正しいと仮定して求めると、3.3Vで約13.63MHzまではSafe Zoneのようです。
仮にこの線に合っていると仮定して16MHz出すには、約3.73Vは必要になる計算になります。
やっぱりちょっと不安なので推奨はできませんでしたが、前回のテストプログラムは一応動きました。




2013年9月11日水曜日

MCU Gear:接続検証レポート ~ディーノ系 I2Cレベル変換テスト

前回は~ディーノ系のDTR信号回路とリセットボタンのコンデンサに問題があることが分かりました。
この部分は5Vレベル変換ボードを作るときに、フォトカプラやバッファIC等、色々考えました。回路がハイパス的な動きなので、あまり妙な回路入れると動かなくなると判断し、一番簡単にリセットボタンの回路とはスライドスイッチで切れるようにしようと思います。
これが出来れば一応~ディーノ系でも動くはずです。

次に問題なのはI2Cのレベル変換です。通常のIOはとても簡単ですが双方向のバスなので、みなさん「難しいよ」と口をそろえて言うのですが、最近はそこをさっくりクリアできるICが出ているので、試してみました。まだこのICに決定したわけではないので型番などは伏せておきます。

ICが面実装なのでDIPに変換してブレッドボードに置いてみました。ブレッドボードは一見ごちゃごちゃしていますが、基板に載せるとすっきりします。



実際にロジックアナライザで見てみましたが、大きな遅延もなさそうです。下の2つがマイコン側、上の2つが出てきた信号です。





2013年9月8日日曜日

MCU Gear:接続検証レポート ~ディーノ 3.3V 8MHz編

MCU Gear で ~ディーノ系は一応動きますがサポート対象外です。
派生版も多く、とても検証しきれませんでした。

3.3V 16MHz のオーバークロックでも動作させることができました。 


以下、3.3V系の~ディーノで検証した時様子を説明しています。5V系は直接つなぐと壊れますので、PICやH8等と同様に、レベル変換ボード(開発中)、ICなどと組み合わせて使ってください。

また、以下の内容は技術的に取り付けることができるのかという参考であって、推奨されるやり方ではありません。あくまでも自己責任で行って下さい、サポートや保証も対象外となってしまいます。

※推奨マイコンとは、本来の回路を変更せずに、回路やプログラムを検証した結果しっかり動いたという物を指します。それが難しかった物、検証していないものを非推奨と呼んでいます。



また、RAMが小さいので、たくさんのモジュールを付ける場合はより性能の良いDuo、ADKなどとレベル変換ICを組み合わせたハードを選ぶと良いかもしれません。

検証に使った時の写真


まず回路設定とリセット用コンデンサの取り外しが必要になります。

1、マイコンボードからは電源供給しないようにジャンパを外してください。(スタンドアロンの時は供給できますが、お勧めはしません。対象の~ディーノ内でどういう回路になっているのかによって異なると思います)

2、I2Cピンの設定を自分が使うものと合っているかよく確認してください。マイコンボードのKL25Zの設定を参考にしてください。

3、パワーモジュールのリセットボタンの横にある、チャタリング防止用のC5のコンデンサを取り外してください。(他のマイコンを使う場合はこれがないとチャタリングしてしまうので注意してください)これを取らないとプログラムの書き込み時の自動リセット(DTR信号)が利かなるようです。
http://labo-section9.blogspot.jp/2010/04/arduino3.html


次にプログラムですが、mbed版のプログラムでIO部分を書き換えて使いました。
中身の動きはこちらの説明を参考にするとわかりやすいと思います。

細かくテストしていないプログラムなので、何かのタイミングによっては動かないこともあるかもしれません。使うときは組込電子回路に知識のある方が自己責任でお願いします。

Test Program

一旦ユニバーサルモジュールの入出力プログラムが動画のように動きます。




※パワーモジュールのリセットボタンの回路に手を加えなければ直接つながらないという結果になり、上記1、2、3を行うとサポート対象外になりますので、基本的には行わないでください。



※推奨マイコン以外のマイコンでは、MCU Gearの初期化動作が失敗することがあります。~ディーノ系を使うときはリセットボタンは使わずに
①MCU Gearの電源を入れる。
②マイコンの電源を入れる。
という手順で行う必要があるようです。また、コンデンサを外した後の動作については保証やサポートはできません。