Kennt einer den Grund, warum beim Arduino Uno (ATmega328P) nur die SW-I2C verwendet werden kann? Ich kommt nicht darauf. Übersetzter Auszug aus dem Link unten: Wenn Ihr Board ein ATmega328 ist, wie z. B. Seeeduino V4.2 und Arduino UNO, müssen Sie bei Verwendung der U8G2-Bibliothek auf Soft-I2C wechseln . Dies ist nicht erforderlich, wenn Sie ein SAMD-Entwicklungsboard verwenden. https://www.seeedstudio.com/Grove-OLED-Display-0-96-SSD1315-p-4294.html
BlaBla schrieb: > Kennt einer den Grund, warum beim Arduino Uno (ATmega328P) nur die > SW-I2C verwendet werden kann? Ich kommt nicht darauf. Dann (wenn dich das so sehr interessiert) befasse dich mal mit dem I2C-Core im verwendeten Controller. Meine Erfahrung ist, daß in recht vielen Controllern die I2C-Hardware eine ziemliche Kröte ist. Das reicht von solchen Cores, die für jeden Zustandswechsel einen oder mehrere Interrupts erzeugen und damit die Menge an zu schreibendem Quellcode erheblich in die Höhe treiben bis zu Cores, die da meinen, alles selber zu erledigen, aber zuvor verlangen, daß man genau angeben muß, wieviele Bytes man zu transferieren wünscht. Normalerweise muß man gerade beim I2C ohnehin die ganze Zeit warten, weil man am Schluß jedes Bytetransfers das ACK bzw. NAK auswerten muß und ein Soft-I2C als Master braucht recht wenig Code. Also liegt es durchaus nahe, das Ganze rein softwaremäßig zu machen. W.S.
Man kann das genannte Display ohne Probleme mit der Hardware I²C-Schnittstelle des AVR bedienen. Als Dauino-Benutzer bist Du von Libraries abhängig. Also wird Dir nichts anderes übrig bleiben, als Soft-I²C zu benutzen. Oder Du fängst an, selber Software zu schreiben. W.S. schrieb: > [...] Natürlich muss man bei I²C warten, wenn man seine Software nicht entsprechend auslegt, zwischendurch andere Dinge erledigen zu können. Dafür sind die ganzen IRQs da. So viel Code wird das auch nicht. Gruß Jobst
BlaBla schrieb: > Kennt einer den Grund, warum beim Arduino Uno (ATmega328P) nur die > SW-I2C verwendet werden kann? Ich kommt nicht darauf. Ich kann auch nur vermuten... Glaskugelmodus Wire funktioniert eigentlich recht prächtig. Hat allerdings nur 32 Byte große Buffer. Die Display Lib möchte allerdings 128 oder 256 Byte große Blöcke versenden.
Ohne das Datenblatt des Displays zu kennen: EAF schrieb: > Die Display Lib möchte allerdings 128 oder 256 Byte große Blöcke > versenden. In einem Stück? Ansonsten könnte man das stückeln.
EAF schrieb: > Wire funktioniert eigentlich recht prächtig. > Hat allerdings nur 32 Byte große Buffer. > Die Display Lib möchte allerdings 128 oder 256 Byte große Blöcke > versenden. Das könnte die Ursache sein. Bei Gelegenheit werde ich mir mal das Datenblatt des ATmega328p und die Libraries näher anschauen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.