Wie implementiert man am einfachsten in C++ eine Klasse welche EEprom Endurance macht ohne richtig bloated zu sein ? Siehe unten. Hier die etwas groessere Beschreibung, einfach runterscrollen zu
Hallo, ich habe eine Applikation, einen Flowmeter welcher von einem Generator die Kraftstoffmenge anzeigt und loggt. Der Code ist von Internet runtergeladend und modifiziert, Flow Meter using 4-Digit 7-segment Display von Circuits4you.com . Daten werden zusaetzlich ins EEprom geloggt, als circular buffer und dabei muss der Index jedesmal geupdated werden. Was ich habe,fuer den Index, also im Prinzip ein Write jede 2 Stunden.
1 |
|
Im Ram habe ich einen Log von 1 Minuten Inteval fuer eine Stunde und danach 8 Stunden im 15 Minuten Interval. Hingegen Im Eeprom: 4 Stunden im 5Minuten Interval, danach 20 Stunden im 20 Minuten Interval, danach 9 Tage im 1 Stunden Interval , danach 92 Tage im 24 Stunden Interval. Zweck der Sache ist das Logging und optimierung des Verbrauchs eines Generators zur Unterstuetzung einer Off-Grid Solaranlage. Geloggt werden 16bit Variablen, Einheit ml , bzw ml/25 bei 24Stunden Eintraegen, was 40ml gleichkommt, angezeigt wird lt/h im Display.
1 |
|
Zur Erklaerung, ee(uint addr) sowie ee_(uint addr) sind einfach ~eeprom_read_byte((unsigned char*)addr); und ee_() ist das write, bei leerem EEprom (0xff) wird 0 zurueckgeliefert. und ein 0 resultiert in 0xff. C code zu eeprom endurance:
1 |
|
Ich habe aehnlichen Code fuer 16bit variable. Nun moechte ich in Arduino einfach eine Classe haben , wo ich sage EE_Endurance_byte idx_5m(ENDURANCE_START,24); und dann einfach idx_5m sowie idx_5m++ oder idx_5m=idx_5m+1 verwenden kann, ohne dass mir die Klasse zuviel Ram und Flash hernimmt, was fuer einen Ansatz wuerdet ihr da nehmen oder koennt ihr mir Beispiele geben wie dies einfach gemacht werden koennte. Ich habe RingEEprom angesehen, aber das ist mir zuviel. Danke im Voraus.