Bibliotecas I2C para ATTiny85? (Português)

Desejo transmitir dados I2C, usando uma placa Digispark ATTiny85:

Eu encontrei as seguintes bibliotecas I2C. Qual delas é mais leve, estável, sem bugs, eficiente, poderosa e fácil de usar?

O fio parece ter poucos recursos:

“a biblioteca Arduino Wire () padrão não oferece suporte a mudanças na velocidade do barramento ou recurso de relógio adequado ampliação do suporte. Isso torna a biblioteca padrão apenas marginalmente funcional “ https://www.maxbotix.com/articles/095.htm

Quais outras bibliotecas I2C estão disponíveis para ATTiny? No IDE, vejo Digispark SoftSerial, OneWire e VirtualWire.

Como todos eles se comparam?


Observe, essas outras respostas não parecem relevantes para minha pergunta:

Comentários

  • tente os dois … aquele com o maior código de exemplo primeiro

Resposta

Quero transmitir dados I2C …

Um pouco vago.

Transmitir para qual dispositivo? Qual é a velocidade da sua taxa de dados (100kHz, 400kHz)? Você está apenas transmitindo e não lendo nada de volta? Qual é a tensão inativa do seu barramento I2C (para então perguntar se você escolheu os valores corretos do resistor pull-up para a velocidade pretendida do barramento)?

Você mencionou que a biblioteca Wire não suporta a velocidade do clock do núcleo muda sem hackear, mas não fale sobre a velocidade que você pretende executar o microcontrolador ou quão rápido você pretende usar o I2C. Posso adivinhar 400 kHz, já que você aumentou a velocidade, mas essa “não é uma ótima maneira de responder a uma pergunta.

Estou usando a biblioteca Wire em um Arduino UNO com taxa de barramento I2C de 100 kHz e isso” funcionou bem para minhas necessidades. Tenho bytes dentro e fora.

Neste ponto, a melhor sugestão que eu teria é que se uma das bibliotecas acima listadas não oferecer suporte a um recurso de que você gostaria, bifurque-o e adicione suporte para o seu recurso você mesmo. Se você estiver transmitindo apenas para um dispositivo escravo, não precisa se preocupar com arbitragem de barramento, como o TinyWire faz. Adafruit é bom na maior parte, mas eles parecem (para mim) lentos para consertar bugs e manter o código. Mas não deixe a idade do código chegar até você. I2C foi criado em 1982 e você ainda o está usando … 😛

Aqui está como eu abordaria escolhendo uma biblioteca:

  • Defina os recursos de que você precisa
  • Procure uma biblioteca que tenha a maioria desses recursos
  • Adicione todos os novos recursos de que você precisa
  • Possivelmente compartilhe seus recursos adicionados com a comunidade com uma solicitação pull

Resposta

bHogan parece ser o desenvolvedor original do TinyWireM e do TinyWireS. Andreas Spiess (“O cara com sotaque suíço”) usou a implementação de rambo “da biblioteca TinyWire para seu sensor I2C, e rambo no GitHub e bHogan no arduino.cc parecem ser a mesma pessoa …

Eu também usei a biblioteca TinyWire de rambo e consegui fazê-la A versão Adafruits do TinyWire parece ser uma bifurcação do código de Rambo.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *