www.mikrocontroller.net

Forum: Compiler & IDEs Datenspeicherung ins externe Datenflash


Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ,,,, (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lutz Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lutz Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: müllo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ,,,, (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: müllo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ,,,,)

Autor: Lutz Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.