www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F149: digitalisierte Daten in das Flash M. speichern


Autor: Sylvia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grüß euch!

hab ein großes Anliegen an euch! habe diverse seiten schon
durchsucht, vorallem dieses forum, aber ich finde nichts
was mich weiterbringen könnte. Ich bin totaler Anfänger beim
µC programmieren.

Ich arbeite mit dem MSP430F149 mit einem 12bit ADC. Ich will
Daten (2 Kanäle)permanent digitalisieren und diese dann in einem
Buffer, am besten Flash (60kbyte + 256byte), speichern. Wenn 512 byte
gespeichert
worden sind, sollte dieser Buffer entleert werden bzw. diese Daten auf
die miniSD Karte von SanDisk gespeichert werden.

Das Problem besteht darin, dass es kein Modul (Direct Memory Access)
zur Verfügung steht, das mir die Speicherung vom Memory Register des
ADC in den RAM erleichtert. Also müßte ich das händisch erledigen, nur
die Frage ist wie?

Hat jmd einen bestehenden Code, der mir helfen könnte oder
irgendwelche
Tipps, die mir das Leben erleichtern können ;).

Vielen Dank im voraus
lg
sylvia

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sylvia,

welche Programmiersprache verwendest Du denn ?

Ins Flash schreiben ist nicht ganz so trivial wie z.B. ins RAM. Der
Vorgang ist aber im Datenblatt der jeweiligen Familie
(MSP430x1xx_Users_guide) beschrieben.

Für deine Anwendung scheint es aber keinen Sinn zu machen die Daten im
Flash zu speichern. Wenn Du nur zwischenspeichern musst und dann auch
nur 512 Byte dann ist der 149er mit 2kb RAM doch prädistiniert die
Daten im RAM zu halten.
Hier kannst Du ganz einfach mit nem inkrementierenden Zeiger die Bytes
vom ADC reinschreiben und entsprechend auslesen.


Gruß

Martin

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Zwischenspeichern im Flash des Controllers ist wie schon erwaehnt
wurde, ziemlicher Unsinn. Und zwar auch deshalb weil der Controller
dann bald kaputt ist wenn man jedesmal dieselben 512Byte beschreibt.

Ansonsten habe ich eine gute Nachricht fuer dich. Wenn du es geschafft
hast eine SD/MMC Karte anzusprechen und da Daten drauf abzulegen, bist
du keine Anfaengerin mehr. :-]

Olaf

Autor: Sylvia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für eure hilfe

ich programmiere in C.
hab jetzt meine 2 ADC12MEM Register ins RAM mittels Pointer
gespeichert...mal schauen ob es funktionieren wird...sonst
meld ich mich bestimmt wieder :-)

nochmals danke
lg
sylvia

PS: mal schauen ob ich über den Status Anfänger hinauskommen werde..a
zeitl wird schon noch dauern ;)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moment. Du willst mit Spatzen auf Kanonen schiessen. ;-)

> Das Problem besteht darin, dass es kein Modul (Direct Memory Access)
> zur Verfügung steht, das mir die Speicherung vom Memory Register des
> ADC in den RAM erleichtert. Also müßte ich das händisch erledigen,
> nur die Frage ist wie?

Du nimmst dir einfach die Werte von ADC12 und speicherst sie im RAM
zwischen. Der F149 hat ja 2kb, da gehen 512 Byte folglich rein. Und
wenn 512 Byte voll sind, speicherst du sie einfach auf die Karte. Ein
Speichern im Flash ist wie schon gesagt nicht sinnvoll, weil du das
vielleicht 10000 mal machen kannst und dann dein MSP hin ist.

Also sowas wie:

  for (i=0;i<512;i++)
  {
    meineVar1[i]=ADC12MEM0;
    meineVar2[i]=ADC12MEM1;
  }
  SaveToMMC(meineVar1);
  SaveToMMC(meineVar2);

That's it. :-)

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht ganz, ich habe im GCC-Forum schon etwas darüber geschrieben.
In Deinem Fall gehen möglicherweise Daten während dem Schreiben auf die
MMC verloren, Sebastian. Aber es ist schonmal ein Ansatz :)

Naja, ich konnte mir halt nicht die Mühe machen, einen kleinen
Ringbuffer so eben zu Programmieren und das wäre auch glaube ich nicht
der Sinn der Sache gewesen, aber darauf wirds wohl hinauslaufen.

Wenn da konkrete Fragen oder Probleme bei auftreten, werd ich natürlich
gerne helfen...

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe ein Programm für MSP 430- 4 Kanäle ADC12, welches Deinen
Vorstellungen schon sehr nahe kommt. Der Messvorgang wird vom
einstellbaren Timer gestartet. 512 Bytes werden im RAM
zwischengespeichert und dann zu  einer Smart Mediakarte übertragen. Es
kann bestimmt noch verbessert werden und ist auch noch nicht ganz
fertig. Aber vielleicht hilft es.
Da ich zunächst negative Erfahrungen mit dem ADC12 gemacht hatte,
solltest Du vielleicht, wenn nicht schon eigene Erfahrungen vorliegen,
im Forum unter
http://www.mikrocontroller.net/forum/read-1-90338....
nachlesen, um ähnliche Fehler, die ich gemacht hatte, zu vermeiden.
Da es vermutlich die Smart Media karte bald nicht mehr geben wird,
würde ich mich für Dein Programm zum Beschreiben eine SD interessieren.
Hast Du dazu schon etwas?
MfG
Wolfgang

Autor: Sylvia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für deinen sourcecode, wird ihn mir
gleich mal anschauen...werd bzgl sd card noch ein weilchen brauchen,
wenn ich soweit bin (kann lange dauern), dann gib ich dir den source

lg
sylvia

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.