mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Messwerte in EEProm speichern


Autor: Sven Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe vor mit nem Mega32 Messwerte die ich mit nem mobilen Gerät (da
ist der Mega32 drin) speichere dann zuhause am PC auszulesen..
Soweit eigentlich nicht schwer, aber wie kann ich das genau in C
umsetzen??
Ich nutze Codevision..
Ich dachte mir ich nehme eine Variable als Pointer´, speichere meinen
Messwert an der Stelle wo der Pointer draufzeigt, erhöhe den Pointer um
eins, lese den nächsten Wert ein usw...
am PC dachte ich es mir so, Pointer auf ersten Wert stellen, Wert
lesen, auf 232 ausgeben, wertzuende senden, Pointer erhöhen...usw...

Aber wie nutze ich pointer in C? wo fängt der EEProm Speicher an? Wo
hört er auf? Habe schon mal beim Studium auf nem 8051 in Assembler mit
Pointern programmiert, die Funktiosweise ist mir klar, aber nicht wie
ich das in C umsetzen kann.,...


Danke schonmal, Sven

Autor: Frankl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo fängt der Speicher an/auf ? Siehe Datenblatt

Autor: Martin Zunke (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal hier rein....

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, in Codevision würde ich einfach die Meßwerte als Array definieren
(im Anfangsteil des Programms) mit dem Schlüsselwort eeprom davor. Um
den Rest kümmert sich Codevision.

Beispiel für eine solche Deklaration:

eeprom char messwert[200];

mit der Variablen Messwert[x] kannst Du dann hinterher ganz normal im
Programm arbeiten. Um die Umsetzung zum Eeprom hin kümmert sich der
Compiler. Bedenke nur, daß der Speicherplatz im Eeprom begrenzt ist und
der Eeprom auch nur eine begrenzte Lebensdauer von Schreib-/Lesezyklen
hat...

Gruß
KMT

Autor: Sven Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah so danke, besonders der letzte Tip hat mir viel weitergeholfen..
klar hat man nur begrenzte Kapazität.
wie kann ich denn prüfen ob das eeprom "voll"ist? oder kann ich da
nur den index des Arrays abfragen und vorher den maximal möglichen
ausrechnen?
Ansonsten ist das ja echt einfach...
Muss ich Interrups vorher sperren oder kümmert der Compiler sich
darum??

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz wichtig vorweg: Meine Hinweise gelten nur unter der Voraussetzung,
daß du den internen, im AVR eingebauten, Eeprom benutzen willst.

Du solltest das Array mit der Anzahl der zu erwartenden Meßwerte vorher
ausrechnen und mit der Deklaration

eeprom int (oder was auch immer) messwert[200oder was auch immer];

am Anfang des Programmes definieren. Das Ausrechnen geht
folgendermaßen:

Anzahl der Einträge im Array * Platzverbrauch eines einzelnen Elementes
= Speicherbedarf.
Der Speicherbedarf muß kleiner sein als die Größe des Eeproms.

char belegt 1 Byte pro Eintrag, Integer 2 Bytes.

Beispiel: hast Du ein Eeprom mit 512 Byte Kapazität, dann kannst Du
entweder 512 Char-Felder belegen oder 256 Integer-Felder.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fast exakt, immer ein Byte weniger, also max. 511 char bzw 255
int-Variablen. CodeVision benutzt (aus gutem Grund!) die Adresse0 des
EEPROM nicht.

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.