programación I2C ATTiny88

0

Soy principiante en programación de uC's. He leído todos los tutoriales sobre qué es I2C y cómo funciona, pero no pude encontrar ninguna ayuda específica sobre cómo crear una conexión entre mi sensor y ATTiny88 (ATTiny88 datasheet .

Uso el sensor SHT21 ( SHT21 datasheet )) y deseo comuníquese con ATTiny88 (MUC envía un comando a getData, y luego los sensores envían a MUC los datos (temperatura, humedad)). ¿Puede alguien ayudarme a guiarme?

Una vez que me ayudes, lo entenderé para el futuro, pero realmente necesito un buen comienzo aquí.

¡Gracias!

    
pregunta David Kasabji

2 respuestas

5

He hecho Comunicaciones I2C para el Atmega32 y conecté un sensor de temperatura. En la hoja de datos, ATtiny y atmega tienen los mismos registros para I2C Communications. Así que puedes usar el siguiente código que hice para la Comunicación I2C

Esta función escribirá los datos en el bus I2C:

void i2c_write(unsigned char data)
{
  TWDR = data ;
  TWCR = (1<< TWINT)|(1<<TWEN);
  while ((TWCR & (1 <<TWINT)) == 0);
}

Esta función iniciará la comunicación I2C:

void i2c_start(void)
{
  TWCR = (1 << TWINT) | (1 << TWSTA) | (1 << TWEN);
  while ((TWCR & (1 << TWINT)) == 0);
}

Esta función detendrá la comunicación:

void i2c_stop()
{
  TWCR = (1<< TWINT)|(1<<TWEN)|(1<<TWSTO);
}

Esta función iniciará el bus I2C:

void i2c_init(void)
{
  TWSR=0x00;            
  TWBR=0x47;            
  TWCR=0x04;            
}

Ahora puedes usar estas funciones en tu página principal

int main (void)
{
  i2c_init();   
  i2c_start();          
  i2c_write(address);   
  i2c_write(address);   
  i2c_stop();           
  while(1);         
  return 0;
}

NOTA: ponga el último bit de su dirección a 0 para writing y 1 reading desde el bus i2c

    
respondido por el Aircraft
3

deberías intentar verificar los ejemplos:

enlace

Veo muchos ejemplos en el I2C.

Deberías leerlos, entenderlos que intentar implementarlos para tu propia aplicación.

Saludos, Mathieu L.

    
respondido por el MathieuL

Lea otras preguntas en las etiquetas