Hallo Leute, kurze Frage an die Runde, da ich hier bei der i2c_11xx-Bibliothek nicht weiterkomme. Und zwar geht es um die i2c-Auslesefunktion. Das Problem ist: Trotz dem korrekt angegebenen xfer.rxSz (größer 1) wird nur ein Byte ausgelesen und anschließend die Verbindung per NACK beendet. Der StateHandler scheint eigentlich i.O. zu sein. Hat jemand ein ähnliches Problem? Danke im Voraus
Zeig mal Deinen Code, meine Glaskugel ist in Reparatur.
Naja, es ist eben die Standard-Bibliothek, ich verwende ja nur die Befehle daraus. Das ist der Codeausschnitt. Trotz allem wird immer nur ein Byte empfangen. // 7-Bit-Sensoradresse zuweisen xfer.slaveAddr = I2C_ADDR_SENSOR; // Anzahl der zu empfangenen Bytes xfer.rxSz = 2; // Auf das Empfangs-Array verweisen xfer.rxBuff = &rxBuffer[0]; Chip_I2C_MasterRead(i2cDev, xfer.slaveAddr, xfer.rxBuff, xfer.rxSz);
Ja genau, den Thread habe ich ebenfalls gefunden gehabt - leider ist es so, dass bei mir der stateHandler-0x58 abgearbeitet wird: /* Rx handling */ case 0x58: /* Data Received and NACK sent */ cclr &= ~I2C_CON_STO; Dieser sendet eben direkt ohne die Überprüfung der Byteanzahl ein NACK. Für die Abarbeitung der Byteanzahl ist eher der case 0x50 zuständig mit: case 0x50: /* Data Received and ACK sent */ *xfer->rxBuff++ = pI2C->DAT; xfer->rxSz--; Allem Anschein nach wird dieser aber nicht abgearbeitet, da ich unabhängig vom I²C-Device und CommandByte nie mehr als ein Byte aus dem Bus herausbekomme (wohlgemerkt, nur beim Lesen, das Schreiben klappt hervorragend).
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.