Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA:

Tauchtanksteuerung 15 Jahre 8 Monate her #16949

  • Andy Jungmann
  • Andy Jungmanns Avatar
  • Offline
  • Kaleu
  • Kaleu
  • Beiträge: 136
  • Dank erhalten: 0
Na gut, dann halt den Buffer mit P*

Danke für Deine ausführliche Beschreibung, das macht es für einen Laien wie mich sehr viel einfacher es zu verstehen. Aber selbst als Laie konnte ich aus dem Datenblatt des Atmel herauslesen dass sich die 10.000 Schreibzyklen auf den ganzen Flashspeicher, oder bleiben wir deutsch, Blitzspeicher bezieht.

So, ich schau noch schnell auf meinen Pointer äh Zeiger, der zeigt auf 5 nach 10. Das heisst ab ins Bett.

Andy.






* dict.leo.org/ende?lp=ende&lang=de&am...uffer+&relink=on
pressluftjunkies.net

Bitte Anmelden um der Konversation beizutreten.

Tauchtanksteuerung 15 Jahre 8 Monate her #16951

  • Nils Canditt
  • Nils Canditts Avatar
  • Offline
  • Kommodore
  • Kommodore
  • Beiträge: 330
  • Dank erhalten: 2
Hallo
die einzige sinnvolle Anwendung zyklisch, mehrfach und in der Häufigkeit auf eine EEPROM zuzugreifen die mir so einfällt, ist ein Datenlogger.
Da dafür, die meisten internen EEPROMs der µC eh zu klein sind, sollte man hier auf ein externes zugreifen. Und dann ist es egal, wenn nach 10000 oder 100000 oder 1 Mio. Zyklen das EEPROM eventuell nicht mehr sauber funktioniert. Das ist ja quasi gewollt.

Nach meinen Erfahrungen, sollte man die internen EEPROMs nicht überstrapazieren, und dort nur statische Daten ablegen. Für alles andere, dann mit höheren Schreibzyklen und mehr Speicher, gibt es externe EEPROMs.

Außerdem, sollte man auf dem EEPROM eh nicht zu doll schreibend rumhampeln, da, und das passiert ganz schnell, die Versorgungsspannung weg sein kann. Wenn es dann wichtige Daten sind....

Sind es dann mal wichtige Daten, die redundant abgelegt werden sollen, dann nimm einfach zwei Speicherstellen und check die gegeneinander ab.

Und ich bin froh, das Du den Weg zu Hallsensor gefunden hast, denn die Reflexlichtschranke und das Poti sind wirklich alter kram.

Nils

Grüße Nils
V300: 6S/2P 8000mAh; HP355/45/8; 63mm; Rx:FUTABA 138DP; MMKS
V80: 3S/2P 4400mAh; HK42xx 700kV; 36mm; Rx: GRAUPNER R16SCAN; MMI-Mini
SHARK-Y: 3S/1P 2200mAh; NTM2836 750kv; 42mm; Rx: GRAUPNER R16SCAN; MMI
Tx:MC24

Bitte Anmelden um der Konversation beizutreten.

Tauchtanksteuerung 15 Jahre 8 Monate her #16953

  • Andy Jungmann
  • Andy Jungmanns Avatar
  • Offline
  • Kaleu
  • Kaleu
  • Beiträge: 136
  • Dank erhalten: 0
Eine Frage noch: Wie relativierst Du eigentlich den Pointer fuer den Ringpuffer? Den machst Du sicherlich absolut. Also wo ist denn dann der Vorteil bitteschoen. Mag sein dass Deine Speicherzellen geschont werden (was ich nicht glauben kann), aber der Pointer äh ich meine Zeiger, wird aber jedes mal überschrieben.

Ohne Frage, diese Methode taugt nichts, sorry.

Andy
pressluftjunkies.net

Bitte Anmelden um der Konversation beizutreten.

Tauchtanksteuerung 15 Jahre 8 Monate her #16954

  • KeDaiv
  • KeDaivs Avatar Autor
  • Offline
  • Maat
  • Maat
  • Beiträge: 19
  • Dank erhalten: 0
Vorbereitung
Also, schnappe dir mal bitte nen kariertes Blatt Papier und nen Stift und als Hilfsmittel vlt nen Lineal, oder nen Geo-Dreieck. Nun ziehst du eine Linie unter meinetwegen 32 Kästchen. Zieh noch ne Linie Darüber und am Anfang und am Ende. So das du einen Bereich markiert hast, der 1x32 Kästchen groß ist. Das ist nun mal im übertragenden Sinne unser EEPROM. Jedes Kästchen steht für ein Byte. Alle 4 Kästchen machst du einen dicken Strich. Das sind dann unsere Speicherseiten. Also 1x4Kästchen und alle leer!
Umwandeln der Adresse:
Zum einen möchte ich dir sagen, dass in der Informatik alles 0 Basiert ist. Also, die erste Speicheradresse ist nicht 1, sondern 0. Genau das gleiche mit den Seiten. Es fängt nicht bei 1 an sondern bei 0. Folgendes habe ich vor gegeben in der Funktion zum umwandeln der relativen Adressen in absolute. Die EEPROM Größe, die Größe der Speicherseite und natürlich die Adresse zum lesen/schreiben. Mehr brauche ich auch nicht. Was ich durch die Logik des Programmes raus finden will, ist die absolute Speicheradresse. Gucke dir bitte folgende Gleichung an, und du wirst sehn, das es klappt.[code:1:02295bd557]( ( Speicherseite * größeDerSeite ) + Adresse ) mod EPPROMGröße = absolute Adresse[/code:1:02295bd557]Die Speicherseite ist eine Zählvariable. Diese wird immer um eins addiert, bis ich eine Speicherstelle gefunden hab, die passend ist. Dann breche ich die Schleife ab, und kann die absolute Adresse zurück geben. Also als kleines Bsp: [code:1:02295bd557]( ( 5 * 4 ) + 3 ) mod 32 = 23[/code:1:02295bd557]Natürlich muss ich vorher prüfen, ob die relative Speicheradresse auf meine Speicherseite passt. Das heißt, wenn meine Speicherseite 4Byte groß ist, darfst du nicht auf Speicheradresse 6 oder so schreiben. Jedoch sind die Speicherseiten "unendlich". Damit du siehst, das ich nicht schummel, hier mal ein Bsp, wo ich, dadurch, das meine Schleife zu lange läuft, auf Seite 13 versuche zu schreiben.[code:1:02295bd557]( ( 13 * 4 ) + 3 ) mod 32 = 23[/code:1:02295bd557]Wow. Wer hätts gedacht, schon wieder die 23. Speicherstelle ( absolut ). Probiere es auf dem Blatt Papier aus. Du wirst nie über die 32 Speicherzellen kommen und bei gleicher Speicheradresse und unterschiedlichen Speicherseiten immer wieder gleich weit weg von dem dicken Strich kommen.

So. Nun werde ich erstmal anfangen ein bisschen zu programmieren, bevor ich mich vorher noch tot erklärt hab. Dann kannst du es auch selber dir mal anschauen und dich davon überzeugen das es funktioniert. Also, wenn du den Code verstehst. Ich werde es auch extra nicht erst für den µC programmieren. Dann brauchst du den nicht zu opfern.

So, noch ein kleiner Nachtrag. Falls ihr denkt, ich möchte nachher die Schaltung und das Programm verkaufen, das ist so ganz und gar nicht richtig. Ich dachte eigentlich, das ich die GPL ran gehangen hab. Auch möchte ich nochmal betonen, dass das Projekt in meiner Freizeit entsteht, weil ich Spaß daran habe. Also sehe ich dort keinen Grund dies zu verkaufen! ;)

mfg
KeDaiv

P.S.: mod steht übrigens für Modulo. Hier nachzulesen, falls es einem nichts sagt.

Bitte Anmelden um der Konversation beizutreten.

Tauchtanksteuerung 15 Jahre 8 Monate her #16955

  • KeDaiv
  • KeDaivs Avatar Autor
  • Offline
  • Maat
  • Maat
  • Beiträge: 19
  • Dank erhalten: 0

Andy Jungmann schrieb: Ohne Frage, diese Methode taugt nichts, sorry.

Sry, hab dein Beitrag nicht gänzlich gelesen, von daher nochmal ein Nachtrag. Und diese Methode taugt sehr wohl was. Ich kann zwar nur noch, laut dem Beispiel oben 4 Byte im EEPROM adressieren, oder 8 Byte. Kommt halt drauf an, wie ich dies einstelle. Jedoch schaue ich vorher nach, ob in der einen Speicherzelle, welche ich gerade beschreiben möchte schon was drin steht. Wenn ja, gehe ich auf die nächste Speicherseite. Einfach gesagt, mache ich das so lange, bis ich eine leere Speicherzelle gefunden hab. Die relative Speicheradresse bleibt so lange immer gleich. Die absolute nicht. Jedoch bekommt der Programmierer dies auch kaum mit. Von daher nutze ich den Platz, welche mir im EEPROM gegeben wurde optimal aus. Wenn du dies nicht möchtest, dann nutze es nicht. Jedoch, wenn du dies verstehen willst, dann versuche es zu verstehen und tue es nicht mit solch einer unbegründeten Aussage ab!
Versuch es einfach mal. Wenn du dir nicht die Mühe machen willst, dann schreib auch nicht solch einen Quark da oben.

So, ich werde mich mal ran setzen und werde versuchen das Demo Programm bis heute Abend fertig zu haben. Dann kannst du es dir ja mal anschauen.

Bitte Anmelden um der Konversation beizutreten.

Tauchtanksteuerung 15 Jahre 8 Monate her #16956

  • 17b
  • 17bs Avatar
  • Offline
  • Kommodore
  • Kommodore
  • Beiträge: 2032
  • Dank erhalten: 5
Öhmm, du weisst schon das der Andreas schon seit Jahren in diversen C Dialekten programmiert und unter anderem das komplette Windows Frontend für den MKS geschrieben hat?

Das Programm UBCalc lass ich hier mal nur am Rande erwähnt...


Konnte ich mir jetzt nicht verkneifen, auch wenn das den Druck aus der Sache nimmt :twisted:
Gruss
Stefan

Bitte Anmelden um der Konversation beizutreten.