I2C-bibliotheken voor ATTiny85?

Ik wil I2C-gegevens verzenden met behulp van een Digispark ATTiny85-bord:

Ik heb de volgende I2C-bibliotheken gevonden. Welke is lichter, stabieler, foutvrij, efficiënter, krachtig en gemakkelijk te gebruiken?

Wire lijkt onderbelicht:

“de standaard Arduino Wire () -bibliotheek ondersteunt geen veranderingen in bussnelheid of heeft geen goede klok ondersteuning voor stretching. Hierdoor is de standaardbibliotheek slechts marginaal functioneel “ https://www.maxbotix.com/articles/095.htm

Welke andere I2C-libs zijn beschikbaar voor ATTiny? In de IDE zie ik Digispark SoftSerial, OneWire en VirtualWire.

Hoe verhouden ze zich allemaal?


Let op, deze andere antwoorden lijken niet relevant voor mijn vraag:

Reacties

  • probeer ze allebei … degene met de meeste voorbeeldcode eerst

Answer

Ik wil I2C-gegevens verzenden …

Een beetje vaag.

Verzenden naar welk apparaat? Hoe snel is uw gegevenssnelheid (100 kHz, 400 kHz)? U zendt alleen en leest niets terug? Wat is de stationaire spanning van uw I2C-bus (om vervolgens te vragen of u de juiste pull-up weerstandswaarden hebt gekozen voor uw beoogde bussnelheid)?

U vermeldt dat de Wire-bibliotheek de kernkloksnelheid niet ondersteunt veranderingen zonder enige hacking, maar praat niet over de snelheid waarmee u de microcontroller wilt laten draaien of hoe snel u de I2C wilt gebruiken. Ik kan 400 kHz raden, aangezien je snelheid hebt gemaakt, maar dat “is geen goede manier om een vraag te beantwoorden.

Ik gebruik de Wire-bibliotheek op een Arduino UNO met een I2C-bussnelheid van 100 kHz en dat is” s werkte prima voor mijn behoeften. Ik heb bytes in en uit.

Op dit punt is de beste suggestie die ik zou hebben, dat als een van de bovenstaande bibliotheken die je vermeldt een functie die je leuk vindt, niet ondersteunt, deze doorvoegt en zelf ondersteuning voor je functie toevoegt. Als je maar naar één slave-apparaat zendt, hoef je je geen zorgen te maken over busarbitrage, zoals de TinyWire doet. Adafruit is voor het grootste deel oké, maar ze lijken (voor mij) traag om bugs op te lossen en code te onderhouden. Maar laat de leeftijd van de code je niet raken. I2C was gemaakt in 1982 , en je “gebruikt het nog steeds … 😛

Hier is hoe ik zou benaderen een bibliotheek kiezen:

  • Definieer functies die u nodig heeft
  • Zoek een bibliotheek met de meeste van deze functies
  • Voeg nieuwe functies toe die u nodig heeft
  • Deel eventueel uw toegevoegde functies met de gemeenschap met een Pull Request

Antwoord

bHogan lijkt de oorspronkelijke ontwikkelaar te zijn van TinyWireM en TinyWireS. Andreas Spiess (“The guy with the Swiss accent”) gebruikte rambo “s implementatie van de TinyWire-bibliotheek voor zijn I2C-sensor, en rambo op GitHub en bHogan op arduino.cc lijken dezelfde persoon te zijn …

Ik heb ook de TinyWire-bibliotheek van rambo gebruikt en ben erin geslaagd om het te maken werk. Adafruits-versie van TinyWire lijkt een afsplitsing van de code van Rambo te zijn.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *