I2C-biblioteker til ATTiny85?

Jeg vil sende I2C-data ved hjælp af et Digispark ATTiny85-kort:

Jeg har fundet følgende I2C-biblioteker. Hvilken er mere let, stabil, fejlfri, effektiv, kraftfuld og nem at bruge?

Wire virker underudvalgt:

“standard Arduino Wire () -biblioteket understøtter ikke ændringer i bushastighed eller har korrekt ur stretching support. Dette gør standardbiblioteket kun marginalt funktionelt “ https://www.maxbotix.com/articles/095.htm

Hvilke andre I2C libs er tilgængelige for ATTiny? I IDE ser jeg Digispark SoftSerial, OneWire og VirtualWire.

Hvordan sammenligner de alle hinanden?


Bemærk, disse andre svar synes ikke relevant for mit spørgsmål:

Kommentarer

  • prøv dem begge … den med den mest eksempler kode først

Svar

Jeg vil sende I2C-data …

Lidt vagt.

Send til hvilken enhed? Hvor hurtig er din datahastighed (100kHz, 400kHz)? Din eneste sender og ikke læser noget tilbage? Hvad er tomgangsspændingen på din I2C-bus (for derefter at spørge, om du har valgt korrekte pull-up-modstandsværdier til din tilsigtede bushastighed)?

Du nævner, at Wire-biblioteket ikke understøtter kernehastighed ændringer uden noget hacking, men tal ikke om den hastighed, du har til hensigt at køre mikrocontrolleren, eller hvor hurtigt du har til hensigt at bruge I2C. Jeg kan gætte på 400 kHz, da du tog fart, men det er ikke en god måde at besvare et spørgsmål på.

Jeg har brugt Wire-biblioteket på en Arduino UNO ved I2C-bushastighed på 100 kHz og det ” s fungerede fint til mine behov. Jeg fik bytes ind og ud.

På dette tidspunkt er det bedste forslag, jeg vil have, at hvis et af de ovennævnte biblioteker, du har angivet, ikke understøtter en funktion, du gerne vil, forkæl den og tilføj support til din funktion selv. Hvis du kun transmitterer til en slaveenhed, skal du ikke bekymre dig om busvoldgift, som TinyWire gør. Adafruit er for det meste okay, men de synes (for mig) langsom til at rette fejl og vedligeholde kode. Men lad ikke kodenes alder komme til dig. I2C blev oprettet tilbage i 1982 , og du bruger det stadig … 😛

Her er hvordan jeg ville nærme mig vælge et bibliotek:

  • Definer funktioner, du har brug for
  • Se efter et bibliotek, der har de fleste af disse funktioner
  • Tilføj de nye funktioner, du har brug for
  • Eventuelt del dine tilføjede funktioner med samfundet med et Pull Request

Svar

bHogan ser ud til at være den oprindelige udvikler af TinyWireM og TinyWireS. Andreas Spiess (“Fyren med den schweiziske accent”) brugte rambos implementering af TinyWire-biblioteket for hans I2C-sensor og rambo på GitHub og bHogan på arduino.cc synes at være den samme person …

Jeg har også brugt rambos TinyWire-bibliotek og formåede at gøre det arbejde. Adafruits-versionen af TinyWire ser ud til at være en gaffel med rambos kode.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *