Gast
#5127260
Hallo, es ist nur ein Hobbyprojekt (Wetterstation) aber es macht eben Spass das zu erweitern. Eine SD karte nutze ich nicht, das geben diese Bluepill Boards nicht her an internem Speicher. daher nutze ich ein 128kb EEPROM als Datenspeicher. Folgende Lage: Der Master (429er Cortex) nimmt Messdaten eines Sensors draußen auf und zwar jede Stunde. Er stellt die grafisch da und zwar 6 Tage insgesamt. Jeder neue Datensatz wird vorne angefügt und hinten ein alter rausgeschoben. So entsteht ein langsam scrollendes Profil des Luftdruckes, Temperatur, Feuchte. Mittels "Zambretti" lässt sich daraus eine Art Wettervorhersage erzeugen, vor rund 100 Jahren hat da mal jemand etwas gemacht, was sich per Software abbilden lässt. Der Slave hängt bei mir in der Küche, ein Grafikdisplay mit einigen LED Reihen, die die Tendenzen anzeigen, ähnlich einer Mausspur. Der Master sendet per Funk im 10s Takt rotierend seinen gesamten Datensatz, immer wieder von vorne. Der Slave sortiert die numerierten Daten in seinen Satz ein und nach 144 Datensätzen hat er alle so wie der Master auch. Aus den Daten berechnet er auch die Skalierung des Displays und diverse Eckdaten. Die Grafik skaliert sich selbst, es werden nur relative Veränderungen dargestellt. Der Slave soll aber auch die Daten von einem ganzen Jahr speichern. Und der Slave wird auch mal ausgeschaltet, ich bastel daran rum, ändere die Software usw. Das macht aber nichts, der Master hat ja die letzten 6 Tage parat im Speicher (Batterie Backup RAM) und immer wenn der Slave online geht kriegt er die erneut. Jeder Datensatz hat eine Unix Time Zeitkennung und kann damit eindeutig identifiziert werden. Es geht nun darum: Wie kann man es pfiffig anstellen, dass der Slave neue Daten im EE speichert und zwar so, dass es keine Doppelten gibt und keine Lücken usw. Wenn er eingeschaltet wird weiss es nicht was als nächstes kommt. Das was kommt kann ja schon gespeichert sein. Im EE herum sortieren geht nicht, viel zu langsam. Das muss da direkt sortiert rein. Oder man fängt an mit Zeigerketten zu arbeiten, jeder Block zeigt auf seinen Nachfolger. Um einen einzufügen muss man die Kette auftrennen, wie einen Binärbaum. Blöd nur: Ist ein Block fratze sind alle dahinter auch weg. Ideen? Gruss, Christian