I2C-Bibliotheken für ATTiny85?

Ich möchte I2C-Daten mit einer Digispark ATTiny85-Karte übertragen:

Ich habe die folgenden I2C-Bibliotheken gefunden. Welche ist leichter, stabiler, fehlerfreier, effizienter, leistungsfähiger und benutzerfreundlicher?

  • Adafruits TinyWireM wurde seit 2 Jahren nicht aktualisiert.

  • felias-fogg „s SoftI2CMaster wurde innerhalb weniger Tage nach diesem Beitrag aktualisiert.

  • lucullusTheOnly „s TinyWire repräsentiert einige Jahre der Verbesserungen,“ basierend auf den Bibliotheken TinyWireM und TinyWireS „. Diese Version wird von BroHogan, Mitentwickler von TinyWireM, empfohlen: https://playground.arduino.cc/Code/USIi2c

Wire scheint nicht ausreichend ausgestattet zu sein:

„Die Standardbibliothek von Arduino Wire () unterstützt keine Änderungen der Busgeschwindigkeit oder der richtigen Uhr Stretching-Unterstützung. Dadurch ist die Standardbibliothek nur am Rande funktionsfähig. „ https://www.maxbotix.com/articles/095.htm

Welche anderen I2C-Bibliotheken sind für ATTiny verfügbar? In der IDE sehe ich Digispark SoftSerial, OneWire und VirtualWire.

Wie vergleichen sie alle?


Beachten Sie, dass diese anderen Antworten nicht für meine Frage relevant erscheinen:

Kommentare

  • Probieren Sie beide aus … die mit dem meisten Beispielcode zuerst

Antwort

Ich möchte I2C-Daten übertragen …

Ein wenig vage.

Auf welches Gerät übertragen? Wie schnell ist Ihre Datenrate (100 kHz, 400 kHz)? Du sendest nur und liest nichts zurück? Wie hoch ist die Leerlaufspannung Ihres I2C-Busses (um dann zu fragen, ob Sie die richtigen Pull-up-Widerstandswerte für Ihre beabsichtigte Busgeschwindigkeit gewählt haben)?

Sie erwähnen, dass die Drahtbibliothek die Kerntaktgeschwindigkeit nicht unterstützt Änderungen ohne Hacking, aber sprechen Sie nicht über die Geschwindigkeit, mit der Sie den Mikrocontroller ausführen möchten, oder über die Geschwindigkeit, mit der Sie den I2C verwenden möchten. Ich kann 400 kHz erraten, da Sie die Geschwindigkeit erhöht haben, aber das ist keine gute Möglichkeit, eine Frage zu beantworten.

Ich habe die Wire-Bibliothek auf einem Arduino UNO mit einer I2C-Busrate von 100 kHz verwendet. Es hat gut für meine Bedürfnisse funktioniert. Ich habe Bytes rein und raus.

An dieser Stelle ist der beste Vorschlag, den ich hätte, wenn eine der oben aufgeführten Bibliotheken eine von Ihnen gewünschte Funktion nicht unterstützt, geben Sie sie auf und fügen Sie selbst Unterstützung für Ihre Funktion hinzu. Wenn Sie nur an ein Slave-Gerät senden, sollten Sie sich keine Gedanken über die Bus-Arbitrierung machen müssen, wie dies bei TinyWire der Fall ist. Adafruit ist größtenteils in Ordnung, aber sie scheinen (für mich) langsam Fehler zu beheben und Code zu pflegen. Aber lassen Sie sich nicht vom Alter des Codes überraschen. I2C wurde bereits 1982 erstellt und Sie verwenden es immer noch … 😛

So würde ich vorgehen Auswählen einer Bibliothek:

  • Definieren Sie die benötigten Funktionen
  • Suchen Sie nach einer Bibliothek mit den meisten dieser Funktionen
  • Fügen Sie alle neuen Funktionen hinzu, die Sie benötigen
  • Teilen Sie möglicherweise Ihre hinzugefügten Funktionen mit der Community mit einer Pull-Anfrage

Antwort

bHogan scheint der ursprüngliche Entwickler von TinyWireM und TinyWireS zu sein. Andreas Spiess („Der Typ mit dem Schweizer Akzent“) verwendete rambos Implementierung der TinyWire-Bibliothek für seinen I2C-Sensor und rambo auf GitHub und bHogan auf arduino.cc scheinen dieselbe Person zu sein …

Ich habe auch die TinyWire-Bibliothek von rambo verwendet und es geschafft, sie zu erstellen Adafruits-Version von TinyWire scheint eine Abzweigung des Rambo-Codes zu sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.