I2C Master mode for AT90S2313-2


AVR & PIC Slave

 前回はPicによる[I2CのSlave動作]をさせました。当然他のMCU(IC)でも作動するはずです。
 そこで手持ちの同じ様なAVRの7セグメントLED表示に、2つのPinが遊んでいるのを利用して今度のプログラムが動くのか?(動いて当たり前なのですが!)試して見ました。
「…で、初め動作が不安定で変な数字が出て原因不明でした」、PIC同士ならちゃんと作動した物です「あれー、なんだろう」。

 手持ち3個のICの内2つが異常な動作をします、でも何故か一つだけ正常動作です。そういえば皆少しづつ微妙にプログラムは違っていま。面倒なので「正常に動作しているプログラムが正しい!」と決めて、これを他のICに移植しました。
 その結果「正常に動く」ようになりました。プログラム自身はわずかの違いです。でもこの移植で当然動くはずの「AVRのMaster」でも動作の確認が出来て良かったです。

 写真では上からの差し込み部分を変更し、別のIC基板(PICで作ったRTC:時計機能のI2C動作)を差し替えて動作を色々と確認しました。



 今回思ったこと! 

 mikroCのライブラリーがあって良かった、Soft全部を自作するのはもの凄く面倒です。でもI2CもSoft処理はプログラムが多くなり、メモリーをたくさん使います。出来ればハード処理をしてSoft負担を減らして、スマートに行きたいものです。
 今回は「Soft I2CでのMaser動作です」が、メモリーはまだ全体の1/3残っているので色々と試せそうです。


 以前の物に追加したのは 

「Soft I2Cライブラリー(Masterだけです、Soft-Slaveはありません)」を使っています(コンパイラーを作動させる時にライブラリー内「Soft I2C」の所にチエックを入れないとコンパイラーがStopします、念の為:PICでも同じです)。

★2つのピン[例 D0,D1]を使い、4MHzのクロックで試しました。
 SDAの動作を調べると、7セグメントLED 3桁、1桁4mSですからLEDは合計12mSの動作です、その内I2Cの実働は 1.7mSでした。

 この時間って、PIC換算で約10MHzのクロックを使ったのと同等です、AVRって改めて動作が早い気がします(古いAVRですが!)。まあ、その分エネルギーを使ってますけど…。
 このセットはLEDの所でガンガン電流を使っているので、全体としてあまり気になりません。使い道としてはそんな動作に適当なのでしょうか。


 動 作 

 信号線SCL信号はマスターから出る信号です。SDAが動作する時クロックとして同じタイミングで動いています。  今回の実験でPIC-MasterとPIC-Slaveの組み合わせでうまくいったSoftも、AVR-Masterに変更したら動かない物が出たので今回「Softは試して見ないと分からない」が実感でした。

 あまり役に立たないかもしれませんが[AVR-Master動作のプログラム]です。(2012/4/29)


作成 [2012/4/30] 



     [MAIN MENU へ戻る]

inserted by FC2 system