SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2005-01-15(Sat) I2C通信の第一歩成功

  さて調子付いてきた232メモリの開発だが、オシロの使い方もなんとなく板に付いてきて、一気に進捗しそうである。とりあえず、今日はEEPROMからのacknowledge(アクノリッジ:確認)信号を受け取るために、GPIOを一時的に入力に切り替える処理を追加する。I2Cはクロックラインは制御する側から制御される側への一方通行なのだが、データラインは入出力の双方向なのである。こちらから出力モードで信号を送信したら、入力モードに切り替えてack信号を受信する。それでいいハズである。たぶん。

  最初はブレッドボードにはEEPROMを取り付けない状態で、PICにシャドーI2C通信ングさせてみる。ピンを出力モードから入力モードに切り替えた瞬間、ピンはハイインピーダンス状態になり、プルアップ抵抗の作用でHIGIになる。インピーダンスとかあんまりよくわかっていないのだが、たぶんそんな感じだろう。

  画像の説明

  でもって次はEEPROMを取り付け、実際にPICと通信をさせてみる。入力モードに切り替えた瞬間、ピンは……LOWのままである。うむ、おそらく一瞬でackが返っているのであろう。クロックを与えると再び相手が入力モードになってHIGHに戻るような挙動を示している。すかさずデータラインをLOWにして、ストップコンディションを出力。うむ。よいのではないだろうか。

  画像の説明

  ちょっとオシロ(osziFOX)とPCとの接続が不安定なので、PICがダミーリードの信号を何度も繰り返すプログラムとなっており、現状無意味な通信内容となっているが、再現性があることからEEPROMもちゃんと応答しているっぽい。次は意味のあるコマンドを送信し、EEPROMへの1バイト書き込みを目指す所存である。ゴゥゴゥ。