Comunicación Arduino Uno a ATtiny44A I2C

2

Intenté realizar una comunicación I2C de Arduino Uno a ATtiny44A.

Uno como código maestro y transmisor:

#include <Wire.h>

#define LED_PIN 13
byte x = 0;

void setup()
{
  Wire.begin(); // Start I2C Bus as Master
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

}
void loop()
{

  Wire.beginTransmission(0x26); // transmit to device #9
  Wire.write(x);              // sends x 
  Wire.endTransmission();    // stop transmitting
  x++;
  if (x > 5) x=0;
  delay(450);
}

Código de esclavo / receptor ATtiny44A:

#include "TinyWireS.h"                  // wrapper class for I2C slave routines

#define I2C_SLAVE_ADDR  0x26            // i2c slave address (38)
#define LED1_PIN         10             

void setup(){
  pinMode(LED1_PIN,OUTPUT);             // for general DEBUG use

  TinyWireS.begin(I2C_SLAVE_ADDR);      // init I2C Slave mode
}


void loop(){
  byte byteRcvd = 0;
  if (TinyWireS.available()){           // got I2C input!
    byteRcvd = TinyWireS.receive();     // get the byte from master

            if(byteRcvd == 5){
              digitalWrite(LED1_PIN,HIGH);
              delay(1000);
            }
            else{
              digitalWrite(LED1_PIN,LOW);
            }
  }
}

¿Estoy haciendo algo mal? El LED no parpadea. ¿Cuáles son las otras formas de depurar ATtiny?

    
pregunta srinivas

1 respuesta

4

Esto es un escollo de usar la Biblioteca de Arduino: todo está tan abstraído de ti que un pequeño contratiempo y estás completamente perdido. No sé mucho sobre las bibliotecas de Arduino, pero si fuera yo, habilitaría y utilizaría las interrupciones TWI / I2C y vería si se están activando. Un simple parpadeo del LED dentro de los ISR funcionaría bien como indicador si está funcionando correctamente. Si el LED no parpadea, entonces el problema está en la implementación del protocolo.

¿Estás conectando SCL y SDA correctamente entre los controladores? ¿Y tiene las líneas SCL y SDA unidas a resistencias pull-up a VCC?

Similar a esto:

    
respondido por el sherrellbc

Lea otras preguntas en las etiquetas