www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP 430 kann man Daten zwischenspeichern?


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich erfasse jeweils einen Messwert in Abständen von z. B. 1 Sekunde
(oder auch 5ms), der auf einer SmartMedia- Karte gespeichert wird. Um
Strom zu sparen, soll die Karte zwischen zwei Messungen abgeschaltet
werden. Ein Abschalten ist aber erst dann möglich , wenn jeweils 512
Bytes eingelesen wurden. Also müssen die 512Bytes zwischengespeichert
werden, um dann in einem Rutsch in die Karte übertragen werden zu
können.
Bei einem MSP430F149 gibt es 2k RAM. Meine ersten Versuche,
irgendwelche Daten auf eine bestimmte RAM- Adresse zu schreiben, gingen
schief.
Gibt es eine Möglichkeit internen Speicher als Zwischenspeicher zu
nutzen?
Sollte kein Flashspeicher sein, da, wenn ich das richtig sehe, die
Anzahl der Löschzyklen begrenzt ist.
Mit freundlichen Grüßen
Wolfgang

Autor: R2D2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wär's z.B. mit

uint8_t my_data[512];

my_data[xxx]=yyy;

wobei xxx das gewünschte byte und yyy die zu speichernden daten
angeben.

Auf eine bestimmte Ram Adresse schreibst du damit zwar nicht, aber der
Compiler weiß eh besser wo er die Daten ablegen soll.

R2D2

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1) Ich verstehe die Problematik auch nicht ganz ... Wenn du z.B. Daten
vom ADC12 einliest, machst du eben einfach ein

mybuffer[i++]=ADC12MEM0;

Und das ganze in einer for-Schleife bis 255, dann ist dein Buffer voll
und du kannst ihn komplett wegschreiben zur Speicherkarte. Wo genau die
Daten hingeschrieben werden, sollte doch wurscht sein. Der MSP430 wird
schon selber wissen, an welcher Adresse er gerade Platz hat. :-)

2) Falls es geht, wäre ich sehr an deiner Routine zur Ansteuerung der
SM-Karte interessiert! Ich wollte nämlich in den nächsten Tagen mal
versuchen, auf meiner Homepage www.mathar.com eine Ansteuerung für eine
FAT16-formatierte MMC mit dem MSP430F149 zu schreiben. Wenn es da schon
Vorarbeit gibt, müsste ich das Rad nicht zwei mal erfinden. :-) Derzeit
kämpfe ich aber noch mit dem Temperatursensor ...

Grüße, Sebastian

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Danke Euch für Eure Hilfe und ich werde mal versuchen, ob ich das
hinkriege.
Richtig, mir ist es wurst, wo die Daten hingeschrieben.
Meine Programmierkenntnis sind noch zu unterentwickelt, um darauf zu
kommen, was sich bei Euch so leicht anhört. Deshalb meine Anfrage im
Forum.
Sehe ich das richtig, dass hier ein Array angelegt wird. So was kenne
z.Zt. ich nur aus Büchern.
Vielleicht hat jemand ein Beispiel mit Kommentar.

@Sebastian
eine SM- Karte wird bei mir byteweise beschrieben  und byteweise wieder
ausgelesen. Von FAT habe ich zu wenig Ahnung. Falls Du trotzdem
Interesse hast, kann ich das, was ich habe, Dir gern zur Verfügung
stellen und Du kannst dann ein richtiges  Programm daraus machen.

Mit freundlichen Grüßen
Wolfgang

Autor: R2D2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast recht. Hier wird ein Array angelegt. Ein Array ist einfach eine
Variable, die einen Namen hat aber X werte aufnehmen kann. So als
hättest du X variable deklariert.
Zum anlegen schreibst du einfach
Typ Name[Größe];

Auf ein Element kannst du dann mit
abc = Name[X]; lesend
bzw. mit
Name[x]=abc; schreibend zugreifen.

R2D2

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prinzip verstanden und habe es erfolgreich angewendet.
MfG
Wolfgang

Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fat + Speicherkarte geht nicht, denn wegen den 512 Byte-Blöcken brauch
man allein für den Karten-Treiber gut 1 kB und für FAT 1,7 kB:
http://home.t-online.de/home/holger.klabunde/avr/a...

Somit verbleiben noch -0,7 kB RAM für alles andere.

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.