Forum: Mikrocontroller und Digitale Elektronik I2C Bus mit dem Attiny 441


von Heiner (Gast)


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

von 0 Max 123 (Gast)


Lesenswert?

Ĺade Dir ďen CodeVision C Compiler, (eval Version) herunter, Der hat 
eìnen WIZARD.

von c-hater (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.