Forum: Mikrocontroller und Digitale Elektronik AVR I2C/TWI Bytefolge and OLED senden


von Holger D. (hodoe)


Lesenswert?

Moin, wie ich in meinem Beitrag 
Beitrag "NHD-0420CW-AY3 4x20 Zeilen OLED in Betrieb nehmen" geschrieben habe, 
funktioniert I2C/TWI soweit ganz gut.

Allerdings mache ich immer folgendes:
1
twi_start
2
register übertragen
3
daten übertragen
4
twi_stopp

Das nun für jedes Byte. Kann man Auch innerhalb twi_start und twi_stopp 
eine Bytefolge übertragen? Speziell geht es um den US2066 Controller.

Ich habe versucht, entsprechend des Datenblattes,
1
Wait for TWINT Flag set. This indicates that the DATA has been transmitted, and ACK/NACK hasbeen received.

die Übertragung abzuwarten und dann weitere Bytes zu senden. Es 
erscheinen dann aber nur wilde zeichen.

Gruß
Holger

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Holger D. schrieb:
> Kann man Auch innerhalb twi_start und twi_stopp
> eine Bytefolge übertragen?

Normalerweise macht man das so.

> Ich habe versucht...

Irgendwas hast du dabei falsch gemacht. Vermutlich in Zeile 42 oder da, 
wo der Siemens Lufthaken hängt.

von Achim H. (pluto25)


Lesenswert?

Holger D. schrieb:Kann man Auch innerhalb twi_start 
und twi_stopp
> eine Bytefolge übertragen?
Klar, das  TWINT Flag wird von Deiner Software geprüft sonst würde das
register übertragen
daten übertragen
nicht funktionieren. Also einfach
register übertragen
daten übertragen
mehr daten ...
Ob der Chip das mag liegt am Register. Meißt ist es so das bei zuviel 
Daten die einfach in die nächten geschrieben werden. Ist es eine 
Datenadresse könnte so der ganze Speicher in einem Rutsch voll 
geschrierben werden.
(Normalerweise jedoch sollte ein Satz nicht mehr als 64 Bytes haben)

von Holger D. (hodoe)


Lesenswert?

Stefan ⛄ F. schrieb:
> Irgendwas hast du dabei falsch gemacht. Vermutlich in Zeile 42 oder da,
> wo der Siemens Lufthaken hängt.

Moin, vielen Dank für den gehaltvollen Kommentar. Einen Simens Lufthaken 
brauche ich aufgrund der stabilen Unterlage nicht. Und auch in Zeile 42 
( übrigens schön, dass Du wohl schon einmal was von Hitchhiker's Guide 
to the Galaxy gehört hast) war der Fehler nicht. Es lag daran, dass ich 
immer das Register mit übertragen hatte.

Nun also Startsequenz, Adresse, Register, Datenbyte 0, ...., Datenbyte 
n, Stoppsequenz.


Gruß
Holger

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Holger D. schrieb:
> Es lag daran, dass ich immer das Register mit übertragen hatte.

Danke für die Rückmeldung. Es ist immer hilfreich, wenn ein Thread mit 
des Rätsels Lösung endet.

von Holger D. (hodoe)


Lesenswert?

Nachtrag: Auch bei der Initialisierungssequenz für das OLED kann alles 
zwischen einem einmaligen twi_start und twi_stopp gepackt werden. 
Allerdings immer mir Register.

Startsequenz, Adresse, Register, Datenbyte 0, ...., Register, Datenbyte
n, Stoppsequenz

: Bearbeitet durch User
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.