IIC

Hallo Leute! Ich hätte eine Frage zum IIC Bus. Ich habe im Internet (vor allem auf Youtube) ein paar Videos gefunden wie ein Arudino über IIC mit einem Atmel ATtiny kokmmuniziert. Beim ATtiny funktioniert aber die Wire.h Bibliothek nicht. Darum habe ich Alternativen gesucht. Es hat keine Bibliothek bei mir funktioniert. Ich habe mir von einem Kollegen den ATtiny 45 ausgeliehen und wollte das mit diesem Probieren.

Könnt Ihr mir eventuell weiterhelfen. Bei den Youtube Videos haben auch einige um den Code gebeten, jedoch hat niemand diesen preisgegeben :slightly_frowning_face:

Die meisten ATtinys haben keine richtige I2C Schnittstelle sondern eine USI Schnittstelle (Universal Serial Interface) die wahlweise als I2C oder SPI konfiguriert werden kann.

Das geht mit der TinyWire Bibliothek. Dabei gibt es einmal TinyWireM für Master und TinyWireS für Slaves.

Ich habe diese 2 libs mit 2 ATtiny45 probiert, jedoch hat dies nicht funktioniert.

Bei diesen Beispielen ist im Masterprogramm keine Übertragungsrate eingestellt. Benötigt man dazu gar keine?

Außerdem kommen einige Fehlermeldungen wenn ich die TinyWireM Bibliothek am Arduino inkludiere. Oder kann ich in diesem Fall die Wire.h verwenden?

Nein. Wire ist für die normale TWI Hardware Schnittstelle. USI und auch die Tiny Prozessoren allgemein funktionieren auf Register Ebene völlig anders

Benötigt man dazu gar keine?

I2C läuft i.d.R. mit 400kHz

TinyWire ist wohl hauptsächlich für den ATtiny85 gedacht. Aber der ATtiny45 ist eigentlich lediglich ein 85 mit dem halben Speicher.

Es gibt aber auch verschiedene TinyWire Versionen. Man findet auch Seiten wo Leute sagen dass sie irgendeine Version am Laufen haben

Hallo, nutze bitte für den Arduino als Master Wire.h (geht für Master und Slave), für den ATtiny mit 8MHz als Slave TinyWireS.h, damit funktioniert es bei mir.

Vorweg einmal danke für deine Mühe und das schnelle Antworten!!

Am ATtiny nehme ich die TinyWireS, das ist mir klar.

Aber welche Bibliothek soll ich nun am Arduino inkludieren, da TinyWireM ja nicht funktioniert?

St234: Aber welche Bibliothek soll ich nun am Arduino inkludieren, da TinyWireM ja nicht funktioniert?

Hat agmue bereits geantwortet. Grüße Uwe

Am normalen Arduino Wire. Ganz wie normal. Da hatte ich dich falsch verstanden. Mir war nicht klar dass du da mit "Arduino" nicht den Tiny gemeint hast. Rückblickend ist das eigentlich logisch :s

TinyWire ist für den Tiny, da der keine richtige I2C Schnittstelle hat. Entsprechend muss das anders implementiert werden.

Nochmals danke für die Hilfe! Ich glaube jetzt funktionierts! :)

Bei mir hat auf einem ATtiny85 “den Slave so implementiert wie man es von einem IC kennt” geholfen. Und der Kommentar dazu.