Forum: Compiler & IDEs Datenspeicherung ins externe Datenflash


von Stefanie (Gast)


Lesenswert?

Hi,
ich habe einen ATmega128 und ein 512kB Datenflash AT45DB041B.
Nun möchte ich von verschiedenen Sensoren die gemessenen
Temperaturwerte (-20°C -  +90°C) abspeichern. Ich bekomme so etwa alle
5 Min. einen Wert je Sensor.
In diesen externen Datenflash möchte ich noch eine HTML-Seite
speichern, die die empfangenen Werte automatisch aktuallisiert.
Nun meine Fragen:
1) Wieviel Byte soll ich schätzungsweise für die HTML-Seite
reservieren?
2) Wieviele Bit brauche ich um EINEN Temperaturwert abzuspeichern?
3) Wie speicher ich diese Werte am Besten ab? (Datenbank, verkettete
Liste?) Gibt es schon ein fertiges Beispiel für eine solche
Programmierung?

DANKE, Stefanie

von ,,,, (Gast)


Lesenswert?

1) 1024 Byte
2) mindestens 1 Bit
3) lineare Liste

,,,, (QuadComma) = Hubert Müller*

*) Weil es ist ja wichtig, hier im Forum einen richtigen Namen zu
verwenden LOL

von Lutz Müller (Gast)


Lesenswert?

2) Wieviele Bit brauche ich um EINEN Temperaturwert abzuspeichern?
=> 2) mindestens 1 Bit

Nun, Herr Punkt, Komma, Strich: Laß mich nicht dumm sterben und erklär
mir mal, wie Du mit einem Bit Temperaturen zwischen -20 und +90 Grad
codierst.
Ach so, ich hab´s schon: "1" bedeutet irgendwo zwischen -20 und +90,
"0" bedeutet außerhalb dieses Bereiches. Bin ich zum Glück auch
selber drauf kommen.

Gruß
Lutz

von Lutz Müller (Gast)


Lesenswert?

Konstruktiver Nachtrag:
Wenn Du sagen wir mal in 1-Grad-Schritten abspeichern willst, sind daß
etwa 110 mögliche unterschiedliche Meßwerte (genau 111). Nächste
"Schrittweite" im dualen System sind 128 unterschiedliche Werte. Du
mußt also 2 hoch x = 128 nach x umstellen, um die Anzahl der
erforderlichen Bits auszurechnen. Das ist jetzt der "Eigenanteil" der
Beantwortung der Frage. Kleine Hilfe: Das Ergebnis liegt irgendwo
(ganzzahlig) zwischen 6 und 8 Bit.

Gruß
Lutz

von Stefanie (Gast)


Lesenswert?

OK,
vielen Dank Herr Lutz Müller!!
Heißt das ich muss mir eine Art Codierer in C programmieren, um einer
bestimmten Bitkombination einen Temperaturwert zuzuweisen.
Ich hab mit C noch nicht so viel am Hut! Aber diese Problem kann man
doch bestimmt ganz einfach programmieren (nicht mit einer Switch - Case
Anweisung, sondern wie...)
Ich möchte ja nicht mit so blöden einfachen Fragen euch nerven... könnt
ihr mir deshalb ein gutes Buch für den Einstief in die
Microcontrollerprogrammierung empfehlen?? Ich habe einen ATmega128 und
bin eine totale Anfängerin!
Ist z.B. eine lineare Liste wie eine verkettete Liste, nur das man
nichts dazwischen abspeichern kann? Ich kann mir doch dann ganz einfach
meine aktuelle Speicheradresse merken und immer um eins
inkrementieren??

Gruß, Stefanie

von müllo (Gast)


Lesenswert?

Es kommt darauf an, was Du unter einem Codierer verstehst. Irgendwie ist
jedes Zahlensystem eine Codierung ;-)

Lutz wollte Dir mit seinem Hinweis nur sagen, dass du vorher die
Auflösung bestimmen musst.

Fall 1: "1°C Genauigkeit"
- Temperaturbereich: -20°C...90°C => 111 Werte
-> wie groß (Anzahl der Stellen) muss dein Binärwort sein => 7 Stellen
==> Wertevorrat 2^7 = 128 (0...127)

-> Wertetabelle:
Temp  -> Binär    -> Dezimal
-20°C -> 000 0000 -> 0
-19°C -> 000 0001 -> 1
-18°C -> 000 0010 -> 2
-17°C -> 000 0011 -> 3
...
+90°C -> 110 1110 -> 110
Fall 2: "0,5°C Auflösung"
- Temperaturbereich: -20°C...90°C => 221 Werte
-> wie groß (Anzahl der Stellen) muss dein Binärwort sein => 8 Stellen
==> Wertevorrat 2^8 = 256 (0...255)

-> Wertetabelle:

Temp    -> Binär     -> Dezimal
-20,0°C -> 0000 0000 -> 0
-19,5°C -> 0000 0001 -> 1
-19,0°C -> 0000 0010 -> 2
...
+90,0°C -> 1101 1101 -> 221

Zu Tipp wegen Einstieg in die Mikrocontrollersache. Ich denke, du
solltest dir erstmal einen kleinen Überblick über Digitaltechnik
(Zahlensysteme, Wertebereiche) verschaffen, was meist in
Einstiegs-Programmierhandbücher gemacht wird. Die Sachen kommen bei der
Controllerprogrammierung immer wieder. Als Bücher finde ich "Einstieg
in C" von Erlenkötter [ca. 10 Euro] ganz gut. Hardwarebasierter wird
es bei "Softwareentwicklung in C für Mikroprozessoren und
Mikrocontroller" von Wiegelmann. Richtige Erklärungen über externe
Beschaltung und Dimensionierungen sowie Geschichten mit externen RAM
und EEPROM habe ich im Buch "Messen, Steuern und Regeln mit dem
Mikrocontroller 80C166" von Dörrmann gelesen. Da sgeht aber sicher
etwas zu weit als Einstiegsliteratur.

Ich denke, mit Erlenkötter oder Wiegelmann kannst Du nix falsch machen.
Den Rest findest Du dann kostenlos in GCC-Tutorial und deine Fragen im
Forum werden dann auch direkter beantwortet werden können.

Viele Grüße
müllo

von ,,,, (Gast)


Lesenswert?

Nun Herr Müller,

da die Dame absolut nichts über die geforderte Temperaturauflösung
geschrieben hat, wird eben mindestens 1 Bit benötigt:

0 : -20°C
1 : +90°C

,,,, (QuadComma) = Hubert Müller*

*) Weil es ist ja wichtig, hier im Forum einen richtigen Namen zu
benutzen LOL

von müllo (Gast)


Lesenswert?

Sollte keine Kritik meinerseits an dich sein...ich bin nur einen
sinnvollen Ansatz geben.

Aber deine Interpretation von Digitaltechnik muss ich mir unbedingt
merken :-)))

In diesem Sinne -> bitte ein Bit

Gruß
müllo (ohne ,,,,)

von Lutz Müller (Gast)


Lesenswert?

Hallo Müllo,
ES (punkt,komma,strich, ...) meinte sicherlich meine erste Antwort auf
Stefanies Frage. Aber selbst wenn ES ein kleiner
"wort-wörtlich-fetischist" ist, könnte ES 3 Meßwerte (-20°C -  +90°C)
nicht in einem bit unterbringen, da ja auch "der" Wert zwischen den
Grenzwerten ...
Oh Mann, auf solche Threads gehe ich auch noch ein. Schluß damit.
Gruß
Lutz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.