Hi Mathias
Miparo and I have been discussing this and the answer seems to be a new function I2CStop, used like this:
Code
I2cout(addr,reg,data, NOSTOP);
I2Cin(addr,data);
I2Cin(addr,data);
I2Cin(addr,data);
I2Cstop();
I will implement this.
The issue Miparo found with
Code
I2Cout(BME280, Reg, data[idx], NOSTOP);
seems to be part of a more general problem that I will need to investigate more fully because the variable is seen as a pointer (which it is) and whenever a pointer is found an extra length parameter is expected.
=================================================================
Hallo Mathias
Miparo und ich haben darüber diskutiert, und die Antwort scheint eine neue Funktion I2CStop zu sein, die wie folgt verwendet wird:
Code
I2cout(addr,reg,data, NOSTOP);
I2Cin(addr,data);
I2Cin(addr,data);
I2Cin(addr,data);
I2Cstop();
Ich werde dies implementieren.
Das von Miparo gefundene Problem mit
Code
I2Cout(BME280, Reg, data[idx], NOSTOP);
scheint Teil eines allgemeineren Problems zu sein, das ich noch genauer untersuchen muss, da die Variable als Zeiger betrachtet wird (was sie auch ist) und immer, wenn ein Zeiger gefunden wird, ein zusätzlicher Längenparameter erwartet wird.
Übersetzt mit
www.DeepL.com/Translator (kostenlose Version)