Forum: Mikrocontroller und Digitale Elektronik I2C & ATMEGA32 (NACK)


von Jan H. (janiiix3)


Lesenswert?

Moin.

Ich lesen gerade einen Temperatursensor aus. Dieser zeigt mir ab und zu 
Werte an, die überhaupt nicht sein können.
Es handelt sich um einen Temperatursensor von der Firma "Sensorion" 
(STS3x).

Wenn der Sensor noch keine neuen Daten bereit hat, sollte ich wohl ein 
NACK empfangen.
Wie kann ich das Auswerten? Steige durch das Status Register vom TWI 
Modul nicht so wirklich durch.. Gibt zu viele Status Codes..
1
  i2c_start_wait((0x4a<<1)+I2C_WRITE);
2
  i2c_write(0x20);
3
  i2c_write(0x2f);  
4
  i2c_rep_start((0x4a<<1)+I2C_READ);
5
  tmp[MSB]=i2c_readAck();
6
  tmp[LSB]=i2c_readAck();
7
  tmp[CRC]=i2c_readNak();
8
  i2c_stop();

Es müsste ja direkt nach dem Lesen Header kommen oder?

von Mick (Gast)


Lesenswert?


von Oliver S. (oliverso)


Lesenswert?

Jan H. schrieb:
> ie kann ich das Auswerten? Steige durch das Status Register vom TWI
> Modul nicht so wirklich durch.. Gibt zu viele Status Codes..

Schau dir halt die Doku von der Bibliothek an, die dir i2c_readAck() und 
i2c_readNack() zur Verfügung stellt.
Und wann das Nack kommt, steht im Datenblatt der Sensors.

Oliver

von Jan H. (janiiix3)


Angehängte Dateien:

Lesenswert?

Ist das nicht genau dieser Fall?
Was bedeutet die "$" ? Ist damit Dezimal gemeint?

von Arduinoquäler (Gast)


Lesenswert?

Jan H. schrieb:
> Was bedeutet die "$"

Hauptsächlich früher in Assemblern benutzte Schreibweise
für hexadezimal. Mir aus dem guten alten Apple bekannt.

von Oliver S. (oliverso)


Lesenswert?

Oliver S. schrieb:
> Schau dir halt die Doku von der Bibliothek an, die dir i2c_readAck() und
> i2c_readNack() zur Verfügung stellt.

Du kannst dir auch den source code anschauen. Nur machen musst du es 
selber...

Oliver

von Jan H. (janiiix3)


Lesenswert?

Mit den lese Funktionen, kann ich doch nur ein ACK oder NACK senden.

Das hat dich nichts mit dem empfangen zu tun?

von Oliver S. (oliverso)


Lesenswert?

Eben. Also muß das Nack vorher kommen. Der nächste Kandidat zur tieferen 
Analyse wäre damit i2c_rep_start...

Oliver

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.