I2C Bus mit dem Attiny 441

Gast #6716404
Lesenswert?

Hallo
Habe angefangen das Datenblatt zum Attiny 441 genauer zu studieren und 
einen Code daraus zu bauen. Bin bisher zu diesem gekommen.
1
void I2C_init(void)
2
  {
3
    TWSA = I2C_SLAVE_ADDRESS;      // TWI Adressregister
4
    TWSD = 0xFF;          // Datenregister
5
    TWSCRA = (1<<TWEN)|(1<<TWSHE)|(1<<TWASIE)|(1<<TWSIE)|(1<<TWDIE);      
6
// Register A, TWEN-Schnittstelle Aktivieren, TWSHE-Haltezeit aktivieren, TWASIE-Adressenunterbrechung aktivieren, 
7
// TWSIE-Stop Unterbrechung aktivieren, TWDIE-Datenunterbrechung aktivieren 
8
    TWSCRB = (1<<TWAA)|(1<<TWCMD1)|(0<<TWCMD0); // Regis. B, TWI Bestätigungsaktion, TWI Befehl
9
    sei();      // Interrups einschalten
10
  }
Habe angefangen verschiedene Funktionen aus dem Datenblatt dahinter zu 
schreiben. Leider bin ich total überfragt ob das alles ist was ich 
brauche oder was noch fehlt.
Wenn ich es richtig verstanden habe brauche ich noch ISR 
(TWI_SLAVE_vect)
LG Heiner
Gast #6717360
Lesenswert?

Heiner schrieb:

> Wenn ich es richtig verstanden habe brauche ich noch ISR
> (TWI_SLAVE_vect)

Normalerweise schon. Es sei denn, du hast nirgendwo ein sei() im Code, 
dann könnte man auch ohne ISR auskommen.

Wenn man aber Polling will statt Interruptbetrieb, dann sollte man 
besser die diversen *IE-Bits der Hardware garnicht setzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren