goo blog サービス終了のお知らせ 
「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



arduinoを2台使ってTWI通信の実験をしてみました。



右側はreduino-nano、左側は自作のシリアル版
arduinoです。

シリアル版の方はreduino-nanoのVccとGNDから電源
を取って動いてます。2台持っていれば、ブレッドボード
上でこんなことも簡単にできちゃいますね。

白い線と黄色い線がTWIの信号線です。
信号線のプルアップ用抵抗(4.7kΩ)は
ブレッドボード上に置かれてます。

reduino-nanoの方はarduino-IDEでスケッチを
作ってアップロードしたもの。

シリアル版arduinoの方にはAVR-studio上で作った
アセンブラプログラムを書き込んで使いました。
(AVR-ISPmkⅡでの書き込みが必要です)

arduinoのスケッチのお勉強というより、TWIを
アセンブラでアクセスするためのお勉強です。

この間描いた↓このスキームの確認が目的です。


マスター側をarduino-IDEで、スレーブ側を
アセンブラで組んでいます。

マスター側に何バイトかのデータを用意しておいて、
これを1バイトずつ区切って送信します。
(START→SLA+W→DATA→STOP をデータ数の分
 繰り返し送りつづけるという形に区切って送信)

スレーブ側は、自アドレス宛のデータを1バイト分
受信するたびに、それをシリアル送信で出力し
PCのシリアルソフト(tera termを使いました)で
受信して表示。

マスターから送ったものと比較して、抜けや化けが
無いことを確認してみました。

どうやら、上手い具合に動いています。(≧v≦)σ
ここまでは想定どおりにサクッと動きました。
よかった、よかった。


心配していたのは、スレーブ側の処理時間を長く
取った時に「クロックストレッチ」がきちんと
働くのかどうか。
もう少しきちんと確認してみないとなんとも
いえないのですが、幾つかのバリエーションで
実験してみた範囲ではクロックストレッチが
上手く働いているように見えます。


一方、1回の送信で複数バイトのデータを送ろうと
すると、なんとなく上手く行ってないような…

複数バイトというのは、START→SLA+W→DATA
DATA→DATA→…→DATA→STOPといった流れで
データを送る場合です。

何が原因で通信が止まっちゃうのかが目下不明。
こういうときにシリアルアナライザがあると
いいんだけどなぁ…

というわけで秋月さん、ぜひpic-kitシリアル
アナライザ、仕入れてくださーーーーい!

実験に使ったスケッチとアセンブラソースは、
近いうちにarduinoの別館サイトの方にアップして
おきます。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« arduino公式サ... 2台のardu... »
 
コメント(10/1 コメント投稿終了予定)
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。