2 int in EPROM

Guten abend zusammen!

Ich hab mal wieder eine problem und komm nicht weiter :confused: Ich möchte zwei int in den EPROM schreiben, hab schon gelesen das ich einen int auf zwei byte aufteilen muss und diese nach dem einlesen wieder zusammen rechnen soll das hat auch bis jetzt funktioniert nur bekomm ich es leider nicht hin wenn ich zwei int hab und diese nur geschrieben werden sollen wenn Pin 10 low hat. Anschließend soll der Wert beim Start nur einmal gelesen werden also in die Setup loop. Die Beispiele die ich bis jetzt gefunden hab gehen nur mit einer zusätzlichen void also passt das net ganz.

Ich hoffe jemand hat ne idee oder hat schon mal das gleiche probiert!

Mfg fabi

Ich weiß nicht, was eine zusätzliche "void" bedeuten soll... Void heißt für mich "unbestimmt", oder "irrelevant".

hab schon gelesen das ich einen int auf zwei byte aufteilen muss

Es gibt Libs, welche das für dich erledigen können.

combie: Ich weiß nicht, was eine zusätzliche "void" bedeuten soll...

Es gibt einige Leute die kommen irgendwie auf die Idee "void" wäre ein Schlüsselwort um eine Funktion zu kennzeichnen und verwenden das dann synonym.

Der Arduino hat da drei Makros für byte/int Konvertierung: https://www.arduino.cc/en/Reference/LowByte https://www.arduino.cc/en/Reference/HighByte https://www.arduino.cc/en/Reference/WordCast

skaterfabi11: ... hab schon gelesen das ich einen int auf zwei byte aufteilen muss und diese nach dem einlesen wieder zusammen rechnen

Wieso denn das?! Du hast das flasche Zeug gelesen.

Vielleicht hilft das hier. Das ist noch nicht „öffentlich“ verlinkt, weil noch nicht fertig.

Gruß

Gregor

Hab schon was hier im forum gefunden von einer anderen library meinst du sowas gregross? Sry für den Block Absatz schreib das ganze hier am Handy... hat jemand n code für mich oder irgendwas wo ich es nachlesen kann?

Gregross ich werde es morgen mal mit der anderen library probieren, danke schonmal!

Weiter tipps sind gerne erwünscht!

skaterfabi11: Gregross ich werde es morgen mal mit der anderen library probieren, danke schonmal!

Das wird Dir nicht helfen, solange Du nicht verstehst, was Du tust.

skaterfabi11: Weiter tipps sind gerne erwünscht!

Was Du tun willst, ist EEPROM.put() und EEPROM.get(). Du musst nur darauf achten, dass ein int mehr als 8 Bits hat. Nicht, dass Du gerade Geschriebenes wieder überschreibst :-)

HTH

Gregor

gregorss: Wieso denn das?! Du hast das flasche Zeug gelesen.

Vielleicht hilft das hier. Das ist noch nicht „öffentlich“ verlinkt, weil noch nicht fertig.

Er hat richtig gelesen. Das EEPROM arbeitet Byte-weise. Wenn man daher einen int abspeichern will, muss man es natürlich aufteilen. Und die Arduino EEPROM Lib hat das lange Zeit nicht unterstützt! Wenn er also die meisten Tutorials liest es verständlich wieso er das nicht gefunden hat.

Was du da verlinkt hast ist nämlich ziemlich neu und basiert auf dem template Code den es im Playground gibt. Das gibt es erst seit 1.6.2.! Schau dir mal den Code an. Da wird lediglich type punning verwendet um den aktuellen Datentyp auf einen Zeiger auf Byte zu casten. Dann kann man jeden beliebigen Datentyp als Array aus Byte ansprechen.

Um das für skaterfabi11 klar zu machen: Die Arduino EEPROM Lib hat früher nur Byte-weisen Zugriff unterstützt. Alles darüber hinaus musste man per Hand machen, wobei es da im Playground auch Code dafür gab. Aber seit 1.6.2 ist in der IDE eine neue EEPROM Lib drin, mit der man bequem beliebige Datentypen schreiben und lesen kann. Die Adressen sind aber immer noch auf Bytes bezogen!

Serenifly: Er hat richtig gelesen.

Was du da verlinkt hast ist nämlich ziemlich neu ... ... Das gibt es erst seit 1.6.2. ...

Also gut, es gibt/gab von allem, was es derzeit gibt, eine ältere Version. Das gilt für alles im Universum.

Mein Getippse ist natürlich neuer, weil ich das erst vor kurzem getippt habe.

Gruß

Gregor

Hallo :)

Also Mut put und get hat alles super funktioniert! Danke für eure Hilfe!