Forum: Mikrocontroller und Digitale Elektronik I²C Slave in Atmega168


von Dani (Gast)


Lesenswert?

Hallo zusammen,

die programmierung von TWI Master habe ich nach Anleitung von
(Mikrocontroller.net) programmiert. Nun will ich den Slave dazu
programmieren und habe ne Frage dazu.

Bei SLR Mode muss ich nur die zwei Befehlssätze schreiben(siehe unten)?
und er reagiert auf Befehle von Master? oder muss ich auf was bestimmtes
achten? Kann mir jemand paar tips geben??

  TWAR = 0x04;--> die Adresse (7Bit Adresse mit general call=0)
  TWCR = ((1<<TWINT)|(1<<TWEN));

Vielen Dank

von spess53 (Gast)


Lesenswert?

Hi

>Bei SLR Mode muss ich nur die zwei Befehlssätze schreiben(siehe unten)?
>....
>  TWCR = ((1<<TWINT)|(1<<TWEN));

Nö, falsch. Tu dir einen Gefallen und lies das Datenblatt.

MfG Spess

von Dani (Gast)


Lesenswert?

>Nö, falsch. Tu dir einen Gefallen und lies das Datenblatt.

Hi Spess,

Schuldigung mein Fehler. Mit "SLR" meinte ich "Slave Receiver Mode"SRM.

von spess53 (Gast)


Lesenswert?

Hi

>Schuldigung mein Fehler. Mit "SLR" meinte ich "Slave Receiver Mode"SRM.

Das meinte ich nicht.

TWCR = ((1<<TWINT)|(1<<TWEN)); löscht ein evtl.gesetztes INT-Flag und 
erlaubt TWI.

Aber die Antwort (ACK) auf Erkennen der Slaveadresse (mit TWEA) wird 
nicht eingeschaltet. Damit ist der Slave für dem Master nicht existent.

Und genau solche Einstellungen findest du im Datenblatt.

MfG Spess

von Dani (Gast)


Lesenswert?

Ja, du hast Recht. Habe den falschen bit gesetzt.

      TWAR = 0x04;
      TWCR = ((1<<TWEA)|(1<<TWEN));

Jetzt sollte es stimmen.

Danke.

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.