I2C Puffer vergrößern

Hallo Leute,

ich habe ein Problem mit meinem I2C Buffer.

Ich möchte sekündlich Daten von mehreren Slaves messen und an meinen Master senden.
Da es aufgrund der Anzahl von Slaves und der Übertragungsgeschwindigkeit nicht möglich ist, die Daten auch sekündlich an meinen Master zu senden, will jeweils 5-10 Datensätze Puffern und diese dann als Array alle 5 oder 10 Sekunden an den Master senden.

Daher meine Frage:
Wie kann ich den Puffer von meinem I2C Bus vergrößern?
Ich habe gesehen, dass in der Library Wire.h die Buffer-Größe definiert wird.
#define BUFFER_LENGTH 32
Es klappt aber leider nicht diese einfach in der Library zu ändern. Ist es möglich diese zu kopieren, umzubenennen und anschließend zu ändern?

Viele Grüße
Dave

DaDaVee:
Da es aufgrund der Anzahl von Slaves und der Übertragungsgeschwindigkeit nicht möglich ist, die Daten auch sekündlich an meinen Master zu senden, will jeweils 5-10 Datensätze Puffern und diese dann als Array alle 5 oder 10 Sekunden an den Master senden.

Dir ist klar, dass das dein Problem nicht löst?

Es werden genauso viele Daten übertragen und auch die dafür zur Verfügung stehende Zeit wird nicht länger.

Ganz anderer Ansatz: Welche I2C-Frequenz können Deine Slaves? Du könntest mal 400 kHz versuchen. Wenn sie etwas langsamer sind, können sie den Master durch Verlängerung des Taktsignals bremsen. Ob das nicht nur theoretisch sondern auch praktisch funktioniert, klärt ein Test.

Wire Library, Explored:

"The twi.init() call is internal to the Wire library. It performs the following tasks:

  • sets the clock frequency that the TWI hardware will use if/when it is the master on the I2C bus. It is set in the source code to 100kHz, but theoretically at least you can reset this frequency by calling Wire.setClock(). The value passed is the bitrate from 400000L to 31000L. Wire.setClock(400000L); should set it to 400kHz. Wire.setClock() must be called after Wire.begin(). Wire.begin() initializes the bitrate to 100kHz.

DaDaVee:
Ich möchte ...
Daher meine Frage: ...

Mir scheint, dass Du ein bisschen erläutern solltest, was Du vorhast. Denn dass Dein Ansatz wahrscheinlich nicht wirklich hilft, hat ja schon Whandall geschrieben.

Wenn wir wissen, was Du erreichen möchtest, können wir besser über andere Wege nachdenken.

Gruß

Gregor

Die Lösung hast Du doch schon selbst präsentiert: nimm ein größeres Array zur Speicherung der Meßwerte.

Wie werden die Daten denn übertragen, binär oder als Text?