Biblioteci I2C pentru ATTiny85?

Vreau să transmit date I2C, folosind o placă Digispark ATTiny85:

Am găsit următoarele biblioteci I2C. Care dintre ele este mai ușoară, mai stabilă, fără erori, eficientă, puternică și ușor de utilizat?

Wire pare să nu fie prezentat:

„biblioteca implicită Arduino Wire () nu acceptă modificări ale vitezei autobuzului sau prezintă un ceas adecvat suport de întindere. Acest lucru face ca biblioteca implicită să fie doar marginal funcțională „ https://www.maxbotix.com/articles/095.htm

Ce alte libere I2C sunt disponibile pentru ATTiny? În IDE văd Digispark SoftSerial, OneWire și VirtualWire.

Cum se compară toate?


Rețineți că aceste alte răspunsuri nu par relevante pentru întrebarea mea:

Comentarii

  • încercați-le pe amândouă … cel cu cel mai mult exemplu de cod mai întâi

Răspuns

Vreau să transmit date I2C …

Un pic vag.

Transmit la ce dispozitiv? Cât de rapidă este rata de date (100kHz, 400kHz)? Singurul tău care transmite și nu citește nimic înapoi? Care este tensiunea de ralanti a magistralei dvs. I2C (pentru a întreba apoi dacă ați ales valorile corecte ale rezistenței de tracțiune pentru viteza de autobuz dorită)?

Menționați că biblioteca Wire nu acceptă viteza de ceas de bază se modifică fără o anumită piratare, dar nu vorbiți despre viteza pe care intenționați să rulați microcontrolerul sau despre cât de repede intenționați să utilizați I2C. Pot să ghicesc 400kHz, deoarece ați crescut viteza, dar „nu este o modalitate excelentă de a răspunde la o întrebare.

Am folosit biblioteca Wire pe un Arduino UNO la o rată de autobuz I2C de 100kHz și asta” Am funcționat bine pentru nevoile mele. Am octeți în și în afara.

În acest moment, cea mai bună sugestie pe care aș avea-o este că, dacă una dintre bibliotecile de mai sus pe care le-ați enumerat nu acceptă o caracteristică pe care ați dori-o, furnizați-o și adăugați-o personal. Dacă transmiteți numai către un dispozitiv sclav, atunci nu ar trebui să vă faceți griji cu privire la arbitrajul autobuzului, așa cum face TinyWire . Adafruit este în mare parte în regulă, dar mi se pare (lent) să rezolve erorile și să mențină codul. Dar nu lăsa vârsta codului să ajungă la tine. I2C a fost creat în 1982 și îl folosiți în continuare … 😛

Iată cum aș aborda alegerea unei biblioteci:

  • Definiți caracteristicile de care aveți nevoie
  • Căutați o bibliotecă care are cele mai multe dintre aceste funcții
  • Adăugați orice funcții noi de care aveți nevoie
  • Este posibil să partajați caracteristicile adăugate comunității cu o Solicitare de extragere

Răspuns

bHogan pare a fi dezvoltatorul original al TinyWireM și TinyWireS. Andreas Spiess („Tipul cu accentul elvețian”) a folosit implementarea rambo a bibliotecii TinyWire pentru senzorul său I2C și rambo pe GitHub și bHogan pe arduino.cc par a fi aceeași persoană …

Am folosit și biblioteca TinyWire a lui rambo și am reușit să o fac lucru. Versiunea Adafruits a TinyWire pare a fi o furcă a codului rambo.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *