Bibliotecas I2C para ATTiny85?

Quiero transmitir datos I2C, usando una placa Digispark ATTiny85:

He encontrado las siguientes bibliotecas I2C. ¿Cuál es más liviana, estable, libre de errores, eficiente, poderosa y fácil de usar?

Wire parece tener pocas funciones:

«la biblioteca predeterminada de Arduino Wire () no admite cambios en la velocidad del bus o presenta un reloj adecuado compatibilidad de extensión. Esto hace que la biblioteca predeterminada solo funcione marginalmente « https://www.maxbotix.com/articles/095.htm

¿Qué otras librerías I2C están disponibles para ATTiny? En el IDE veo Digispark SoftSerial, OneWire y VirtualWire.

¿Cómo se comparan todos?


Tenga en cuenta que estas otras respuestas no parecen relevantes para mi pregunta:

Comentarios

  • pruébelos con los dos … el que tenga más código de ejemplo primero

Respuesta

Quiero transmitir datos I2C …

Un poco vago.

¿Transmitir a qué dispositivo? ¿Qué tan rápido es su velocidad de datos (100 kHz, 400 kHz)? ¿Tu única transmisión y no lees nada? ¿Cuál es el voltaje inactivo de su bus I2C (para luego preguntarle si ha elegido los valores correctos de resistencia de pull-up para su velocidad de bus prevista)?

Menciona que la biblioteca Wire no admite la velocidad del reloj central cambios sin algún tipo de piratería, pero no hable de la velocidad a la que pretende ejecutar el microcontrolador o qué tan rápido pretende utilizar el I2C. Puedo adivinar 400kHz, ya que mencionaste la velocidad, pero esa no es una buena manera de responder una pregunta.

He usado la biblioteca Wire en un Arduino UNO a una velocidad de bus I2C de 100kHz y eso » Funcionó bien para mis necesidades. Tengo bytes dentro y fuera.

En este punto, la mejor sugerencia que tengo es que si una de las bibliotecas anteriores que enumeró no admite una función que le gustaría, bifurque y agregue soporte para su función usted mismo. Si sólo está transmitiendo a un dispositivo esclavo, no debería preocuparse por el arbitraje de bus, como lo hace el TinyWire . Adafruit está bien en su mayor parte, pero me parecen (a mí) lentos para corregir errores y mantener el código. Pero no dejes que la edad del código te afecte. I2C fue creado en 1982 , y todavía lo estás usando … 😛

Así es como me acercaría elegir una biblioteca:

  • Defina las características que necesita
  • Busque una biblioteca que tenga la mayoría de esas características
  • Agregue las características nuevas que necesite
  • Posiblemente comparta sus funciones agregadas con la comunidad con una Pull Request

Respuesta

bHogan parece ser el desarrollador original de TinyWireM y TinyWireS. Andreas Spiess («El tipo con acento suizo») usó la implementación de rambo de la biblioteca TinyWire para su sensor I2C, y rambo en GitHub y bHogan en arduino.cc parecen ser la misma persona …

También usé la biblioteca TinyWire de rambo y logré hacerlo La versión de Adafruit de TinyWire parece ser una bifurcación del código de rambo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *