Librerie I2C per ATTiny85?

Voglio trasmettere dati I2C, utilizzando una scheda Digispark ATTiny85:

Ho trovato le seguenti librerie I2C. Quale è più leggera, stabile, priva di bug, efficiente, potente e facile da usare?

Wire sembra sottodimensionato:

“la libreria predefinita di Arduino Wire () non supporta le modifiche alla velocità del bus o presenta un clock appropriato supporto per lestensione. In questo modo la libreria predefinita funziona solo marginalmente “ https://www.maxbotix.com/articles/095.htm

Quali altre librerie I2C sono disponibili per ATTiny? NellIDE vedo Digispark SoftSerial, OneWire e VirtualWire.

Come si confrontano tutti?


Nota, queste altre risposte non sembrano pertinenti alla mia domanda:

Commenti

  • provali entrambi … prima quello con il codice più esempio

Risposta

Voglio trasmettere dati I2C …

Un po vago.

Trasmettere a quale dispositivo? Qual è la velocità dei dati (100 kHz, 400 kHz)? Stai solo trasmettendo e non rileggendo nulla? Qual è la tensione al minimo del tuo bus I2C (per poi chiederti se hai scelto i valori corretti del resistore di pull-up per la velocità del bus prevista)?

Hai detto che la libreria Wire non supporta la velocità di clock del core cambia senza alcun hacking, ma non parlare della velocità a cui intendi far funzionare il microcontrollore o di quanto velocemente intendi utilizzare lI2C. Posso indovinare 400kHz, dato che hai aumentato la velocità, ma non è un ottimo modo per rispondere a una domanda.

Ho usato la libreria Wire su un Arduino UNO con una velocità del bus I2C di 100kHz e ” ha funzionato bene per le mie esigenze. Ho ottenuto byte in entrata e in uscita.

A questo punto, il miglior suggerimento che avrei è che se una delle librerie sopra elencate non supporta una funzione che desideri, esegui il fork e aggiungi il supporto per la tua funzione tu stesso. Se stai trasmettendo solo a un dispositivo slave, non dovresti preoccuparti dellarbitrato del bus, come fa TinyWire . Adafruit va bene per la maggior parte, ma mi sembrano lenti a correggere i bug e mantenere il codice. Ma non lasciare che letà del codice ti arrivi. I2C è stato creato nel 1982 e lo stai ancora utilizzando … 😛

Ecco come mi avvicinerei scelta di una libreria:

  • Definisci le funzionalità di cui hai bisogno
  • Cerca una libreria che abbia la maggior parte di queste funzionalità
  • Aggiungi le nuove funzionalità di cui hai bisogno
  • Possibilmente condividi le tue funzionalità aggiunte con la comunità con una richiesta pull

risposta

bHogan sembra essere lo sviluppatore originale di TinyWireM e TinyWireS. Andreas Spiess (“The guy with the Swiss accent”) ha utilizzato rambo “limplementazione della libreria TinyWire per il suo sensore I2C, e rambo su GitHub e bHogan su arduino.cc sembrano essere la stessa persona …

Ho anche usato la libreria TinyWire di rambo e sono riuscito a farcela La versione Adafruits di TinyWire sembra essere un fork del codice di rambo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *