I2C adatokat szeretnék továbbítani egy Digispark ATTiny85 kártya segítségével:
Megtaláltam a következő I2C könyvtárakat. Melyik könnyebb, stabilabb, hibamentesebb, hatékonyabb, hatékonyabb és könnyen használható?
-
Adafruit “s TinyWireM két éve nem frissült.
-
felias-fogg “s SoftI2CMaster a bejegyzést követő napokon belül frissült.
-
lucullusTheOnly “s TinyWire néhány év fejlesztést jelent,” a TinyWireM és a TinyWireS könyvtárak alapján “. Ezt a verziót BroHogan, a TinyWireM társszerzője ajánlja: https://playground.arduino.cc/Code/USIi2c
Úgy tűnik, hogy a huzal kevésbé jelenik meg:
“az alapértelmezett Arduino Wire () könyvtár nem támogatja a busz sebességének változását vagy a megfelelő órajelet a nyújtás nyújtása. Ezáltal az alapértelmezett könyvtár csak marginálisan működik “ https://www.maxbotix.com/articles/095.htm
Milyen további I2C libek érhetők el az ATTiny számára? Az IDE-ben a Digispark SoftSerial, a OneWire és a VirtualWire elemeket látom.
Hogyan viszonyulnak mindannyian?
Megjegyzés: ezek a többi válasz nem tűnik relevánsnak a kérdésem szempontjából:
Megjegyzések
- próbálja ki mindkettőt … azt, amelyik a legtöbb példakóddal rendelkezik először
Válasz
I2C adatokat szeretnék továbbítani …
Kicsit homályos.
Milyen eszközre továbbítja? Milyen gyors az adatátviteli sebessége (100 kHz, 400 kHz)? Csak továbbítasz és nem olvasol vissza semmit? Mekkora az I2C busz alapjárati feszültsége (hogy megkérdezhesse, hogy a tervezett buszsebességhez megfelelő felhúzási ellenállás értékeket választott-e)?
Megemlíti, hogy a Wire könyvtár nem támogatja a mag órajelét hackelés nélkül változik, de ne beszéljen arról, hogy milyen sebességgel kívánja futtatni a mikrovezérlőt, vagy arról, hogy milyen gyorsan kívánja használni az I2C-t. Találhatok 400 kHz-t, mivel felhozta a sebességet, de ez nem jó megoldás a kérdések megválaszolására.
A Wire könyvtárat egy Arduino UNO-n használom, 100 kHz I2C busz sebességgel, és ez ” s jól működött az én igényeim szerint. Bájtokat kaptam ki és be.
Ezen a ponton a legjobb javaslatom az lenne, hogy ha a felsorolt fenti könyvtárak egyike nem támogat egy tetsző funkciót, akkor ezt elágazva tegye meg, és saját maga adjon hozzá támogatást a funkcióhoz. Ha csak egy szolga eszközre továbbít, akkor nem kell aggódnia a busz választottbírósága miatt, mint például az TinyWire . Az Adafruit többnyire rendben van, de (számomra) lassúnak tűnik a hibák kijavítására és a kód karbantartására. De ne hagyd, hogy a kód életkora eljusson hozzád. Az I2C-t még 1982-ben hozták létre , és Ön továbbra is használja … 😛
Itt van, hogyan fogok megközelíteni könyvtár kiválasztása:
- Adja meg a szükséges funkciókat
- Keressen olyan könyvtárat, amely rendelkezik a legtöbb ilyen funkcióval
- Adjon hozzá minden szükséges új funkciót
- Esetleg ossza meg a hozzáadott funkciókat a közösséggel egy lehívási kérelemmel
Válasz
bHogan a TinyWireM és a TinyWireS eredeti fejlesztője. Andreas Spiess (“A svájci akcentussal rendelkező srác”) rambo “megvalósítását használta a TinyWire könyvtárban az I2C érzékelőjéhez, a rambo a GitHubon és a bHogan az arduino.cc oldalon ugyanaz a személy …
A rambo TinyWire könyvtárát is használtam, és sikerült elkészítenem munka. Úgy tűnik, hogy a TinyWire Adafruits verziója a Rambo kódjának egy villája.