TSL2591 TWI falsche Sequenz?

#6583343
Lesenswert?

Hallo !

Ein TSL2591 soll mit einem Atmega8 über TWI "sprechen".

Meine Abfolge laut Oszi ist:

W29-00-A0-W29-12-R29-12

Am Ende sollte aber 50 (Die Device ID) rumkommen und nicht 12.

Ich habe das ganze so aufgebaut wie im Datenblatt des Atmega8 und halte 
mich auch an die Abfolge (START / SLA+W  a  Data  a  STOP)
Das ( wie ich finde: dürftige) Datenblatt des TSL2591 beschreibt auch 
diese Sequenz. Zumindest verstehe ich es so.

Ich habe im Netz Code gefunden der einen 8 bit read so durchführt:
beginTransmission(I2C_ADDR)
write(Cmd)
endTransmission()
requestFrom(I2C_ADDR,)
read()

Was bedeutet "endTransmission" hier? Mit einem STOP an der Stelle habe 
ich bereits experimentiert, das hat nicht geklappt.

Ich habe gestern mit einem MPL3115 "gesprochen" Es sollte also nicht am 
grundsätzlichen Code oder an der Hardware liegen.

Vielen Dank schon mal!
Gast #6583464
Lesenswert?

Attila C. schrieb:
> Hallo !
>
> Ein TSL2591 soll mit einem Atmega8 über TWI "sprechen".
>
> Meine Abfolge laut Oszi ist:
>
> W29-00-A0-W29-12-R29-12

Warum stellst Du nicht Deinen Code ein? Den kann man viel besser lesen 
als diese kryptische Ausgabe.


> Am Ende sollte aber 50 (Die Device ID) rumkommen und nicht 12.
>
> Ich habe das ganze so aufgebaut wie im Datenblatt des Atmega8 und halte
> mich auch an die Abfolge (START / SLA+W  a  Data  a  STOP)
> Das ( wie ich finde: dürftige) Datenblatt des TSL2591 beschreibt auch
> diese Sequenz. Zumindest verstehe ich es so.

Da das "Standard-I2C" ist, braucht auch nicht mehr im Datenblatt zu 
stehen. Wie I2C funktioniert, steht in der Spec.


> Ich habe im Netz Code gefunden der einen 8 bit read so durchführt:
> beginTransmission(I2C_ADDR)
> write(Cmd)
> endTransmission()
> requestFrom(I2C_ADDR,)
> read()
>
> Was bedeutet "endTransmission" hier? Mit einem STOP an der Stelle habe
> ich bereits experimentiert, das hat nicht geklappt.


Schau Dir nochmal an, wie I2C funktioniert, dann erledigen sich einige 
Fragen. Und stell den Code ein.
Gast #6584083
Lesenswert?

Oliver S. schrieb:
> Wenn du am Oszi erkennen kannst, daß dein Schreib- und Lesezyklus
> komplett durchlaufen wird, dann ist der generelle I2C-Ablauf ja schonmal
> in Ordnung. Wenn nicht, dann nicht.
>
> Laut Datenblatt wird das CMD-Register über das gesetzte Bit 7 im
> Datenbyte angesprochen. Das finde ich in deinem Ablauf oben aber nicht.

Eben. Bit 7 und 5 müssen gesetzt sein. Also zur Adresse noch 0xA0 
dazuaddieren und es läuft.
#6584086
Lesenswert?

Naja 0x29 "mit" dem Write bit wird dann ja zu 0x52, respektive 53 bei 
Read. Beim Atmega TWI steht dann "SLA + W oder SLA + R.

Zumindest bei meinen bisherigen Experimenten war es so dass, wenn ich 
das TWI "vergeigt" hatte keine Kommunikation stattfand. Jetzt findet ja 
eine Kommunikation statt , es stimmt nur die Antwort nicht.

Daher ja auch die Vermutung das in der Abfolge etwas nicht stimmt und 
nicht in der TWI Kommunikation an sich.
Gast #6584087
Lesenswert?

John Doe schrieb:
> Oliver S. schrieb:
>> Wenn du am Oszi erkennen kannst, daß dein Schreib- und Lesezyklus
>> komplett durchlaufen wird, dann ist der generelle I2C-Ablauf ja schonmal
>> in Ordnung. Wenn nicht, dann nicht.
>>
>> Laut Datenblatt wird das CMD-Register über das gesetzte Bit 7 im
>> Datenbyte angesprochen. Das finde ich in deinem Ablauf oben aber nicht.
>
> Eben. Bit 7 und 5 müssen gesetzt sein. Also zur Adresse noch 0xA0
> dazuaddieren und es läuft.

Also 0xB2 anstelle 0x12 an die Empfangsfunktion übergehen, damit keine 
Missverständnisse verstehen ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren