Guten Tag,
auf dieser Seite gibt es ja eine gute Sammlung von "I2C Bibliotheken"
gefunden.
Seit geraumer Zeit benutze Ich die von "Peter Flury".
Nun habe Ich einen Temperatursensor im Einsatz (I2C), der laut
Datenblatt mir ein NACK sendet wenn er keine neuen Daten hat.
Ist das Richtig das Ich ihn erstmal sage, dass Ich jetzt lesen möchte
und wenn die Funktion mir dann eine '1' zurückliefert weiß Ich das er
keine neuen Daten für mich hat? Verstehe Ich das falsch?
Dann lies mal Kapitel 4.2 und folgende, da ist beschrieben, wie die
Kommunikation bei diesem Sensor funktioniert.
Deine oben geschriebene Annahme zum Protokoll ist jedenfalls falsch.
Stefan U. schrieb:> Dann lies mal Kapitel 4.2 und folgende, da ist beschrieben, wie> die> Kommunikation bei diesem Sensor funktioniert.>> Deine oben geschriebene Annahme zum Protokoll ist jedenfalls falsch.
Ich meinte diesen Abschnitt.. (siehe Anhang..)
Welchen Modus verwendest du denn? Single-Shot oder Periodic?
Im Periodic Modus kannst du das Meßinterval einstellen. Beim leseversuch
wird Dir das ACK bzw NACK zeigen, ob ein Meßwert vorliegt. NACk würdest
du nur bekommen, wenn du versucht, den Sensor zu früh auszulesen. Dann
muss man sich dann aber fragen, warum man das tun will?
Stefan U. schrieb:> Welchen Modus verwendest du denn? Single-Shot oder Periodic?>> Im Periodic Modus kannst du das Meßinterval einstellen. Beim leseversuch> wird Dir das ACK bzw NACK zeigen, ob ein Meßwert vorliegt. NACk würdest> du nur bekommen, wenn du versucht, den Sensor zu früh auszulesen. Dann> muss man sich dann aber fragen, warum man das tun will?
Ich messe im langsamsten Modus und dann zyklisch. Keine Einzelmessung.
> Es gibt nirgends ein Flag?
NACK ist doch ein Flag. Aber wenn ich dem Sensor sage, daß er alle 10ms
messen soll, dann frage ich ihn auch erst nach 10ms wieder ab.
> Ich messe im langsamsten Modus und dann zyklisch. Keine Einzelmessung.
Ja dann mach mal.
Stefan U. schrieb:> Es gibt nirgends ein Flag?>> NACK ist doch ein Flag. Aber wenn ich dem Sensor sage, daß er alle 10ms> messen soll, dann frage ich ihn auch erst nach 10ms wieder ab.>> Ich messe im langsamsten Modus und dann zyklisch. Keine Einzelmessung.>> Ja dann mach mal.
Meine Frage war doch, wie ich an das NACK komme..
Frank L. schrieb:> Hallo> Schau mal in die Tabelle 9, dort steht Fetch Data 0xE0 00 wenn keine> Daten da sind kommt Nack>> Gruß Frank
Hallo Frank,
das sende ich ja. Meine Frage war in Bezug auf den Funktionsaufruf vom
ersten Post. Wenn die Funktion mir eine 1 zurückliefert das ein NACK
ist..
Soweit ich Dich verstehe, hast Du es richtig verstanden:
Start condition, Adresse (Write), Kommando hinterher, alles wird ACKed.
Dann repeated start condition, Adresse (Read), und wenn dabei das ACK
ausbleibt, ist kein neuer Wert da, und i2c_rep_start() liefert 1.
Hmmm schrieb:> Soweit ich Dich verstehe, hast Du es richtig verstanden:>> Start condition, Adresse (Write), Kommando hinterher, alles wird ACKed.>> Dann repeated start condition, Adresse (Read), und wenn dabei das ACK> ausbleibt, ist kein neuer Wert da, und i2c_rep_start() liefert 1.
Das wollte ich wissen.
Wolfgang schrieb:> Bekommst du überhaupt ein ACK, oder ist deine I2C Adresse beim> Start> falsch angegeben?
Ab und zu bekomme Ich ja mal korrekte Werte. Die I2C Adresse vom Sensor
ist folgende
{c]
#define STS3x_ADDR ( 0x4A << 1 )
[/c]
Joachim B. schrieb:> Elisa W. schrieb:>> Ab und zu bekomme Ich ja mal korrekte Werte.>> welche pullups hast du?
Mit der Funktion keine Probleme.. Die macht doch eigentlich nichts
anderes als auch zu pollen..
Elisa W. schrieb:> Joachim B. schrieb:>> Elisa W. schrieb:>>> Ab und zu bekomme Ich ja mal korrekte Werte.>>>> welche pullups hast du?>> Mit der Funktion keine Probleme..
worüber schreibst du dann hier?
und warum beantwortest du nicht die Frage?
Joachim B. schrieb:> Elisa W. schrieb:> Joachim B. schrieb:> Elisa W. schrieb:> Ab und zu bekomme Ich ja mal korrekte Werte.>> welche pullups hast du?>> Mit der Funktion keine Probleme..>> worüber schreibst du dann hier?>> und warum beantwortest du nicht die Frage?
Die PullUps sind 4K7.
Joachim B. schrieb:> versuche mal 1,8k bis 2,2k> manchmal kommen unerklärliche Probleme mit der SW wirklich aus> Hardwarestörungen.
Man könnte den Signalverlauf auch erstmal mit einem Oszi betrachten und
schaun wie schön der Rechteck ausschaut. ;)