Digispark ATTiny85ボードを使用してI2Cデータを送信したい:
次のI2Cライブラリを見つけました。どちらがより軽量で、安定していて、バグがなく、効率的で、強力で、使いやすいですか?
-
Adafruitの TinyWireM は2年間更新されていません。
-
felias-fogg “s SoftI2CMaster はこの投稿から数日以内に更新されました。
-
lucullusTheOnly “s TinyWire は、「TinyWireMおよびTinyWireSライブラリに基づく」数年間の改善を表しています。このバージョンは、TinyWireMの共同作成者であるBroHoganによって推奨されています: https://playground.arduino.cc/Code/USIi2c
Wireの機能が不足しているようです:
“デフォルトのArduinoWire()ライブラリは、バス速度の変更をサポートしていないか、適切なクロックを備えていますストレッチサポート。これにより、デフォルトのライブラリはごくわずかしか機能しなくなります “ https://www.maxbotix.com/articles/095.htm
ATTinyで利用できる他のI2Cライブラリは何ですか? IDEには、Digispark SoftSerial、OneWire、およびVirtualWireが表示されます。
それらはすべてどのように比較されますか?
注:これらの他の回答は私の質問に関連していないようです:
コメント
- 両方を試してください…最初にサンプルコードが最も多いもの
回答
I2Cデータを送信したい…
少しあいまいです。
どのデバイスに送信しますか?データレート(100kHz、400kHz)はどれくらい速いですか?あなたの唯一の送信と何も読み返しませんか? I2Cバスのアイドリング電圧はどれくらいですか(目的のバス速度に対して正しいプルアップ抵抗値を選択したかどうかを確認するため)
Wireライブラリはコアクロック速度をサポートしていないとのことですハッキングなしで変更できますが、マイクロコントローラを実行する予定の速度や、I2Cを使用する予定の速度については話さないでください。速度を上げたので400kHzと推測できますが、「質問に答えるのに最適な方法ではありません。
ArduinoUNOのWireライブラリを100kHzのI2Cバスレートで使用しています。」 sは私のニーズにうまく機能しました。私はバイトを出し入れしました。
現時点での最善の提案は、上記のライブラリのいずれかが目的の機能をサポートしていない場合は、それをフォークして、自分で機能のサポートを追加することです。 1つのスレーブデバイスにのみ送信する場合は、 TinyWire のようにバスアービトレーションについて心配する必要はありません。 Adafruitはほとんどの部分で問題ありませんが、(私には)バグの修正とコードの保守に時間がかかるようです。ただし、コードの年齢がわからないようにしてください。 I2Cは 1982年に作成されました。あなたはまだそれを使用しています… 😛
これが私がアプローチする方法ですライブラリの選択:
- 必要な機能を定義する
- これらの機能のほとんどを備えたライブラリを探す
- 必要な新しい機能を追加する
- 追加した機能をプルリクエスト
回答<でコミュニティと共有する可能性があります/ h2>
bHogan は、TinyWireMとTinyWireSの最初の開発者のようです。 Andreas Spiess (「スイスのアクセントを持つ男」)は、 ramboのTinyWireライブラリの実装を使用しました彼のI2Cセンサー用で、GitHubのramboとarduino.ccのbHoganは同じ人物のようです…
私もramboのTinyWireライブラリを使用して、なんとか作成しました。動作します。TinyWireのAdafruitsバージョンはランボーのコードのフォークのようです。
bHogan は、TinyWireMとTinyWireSの最初の開発者のようです。 Andreas Spiess (「スイスのアクセントを持つ男」)は、 ramboのTinyWireライブラリの実装を使用しました彼のI2Cセンサー用で、GitHubのramboとarduino.ccのbHoganは同じ人物のようです…
私もramboのTinyWireライブラリを使用して、なんとか作成しました。動作します。TinyWireのAdafruitsバージョンはランボーのコードのフォークのようです。