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


von Sylvia (Gast)


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

von Martin (Gast)


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

von Olaf (Gast)


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

von Sylvia (Gast)


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 ;)

von Sebastian (Gast)


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. :-)

von OldBug (Gast)


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...

von Wolfgang (Gast)


Angehängte Dateien:

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.html#112989
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

von Sylvia (Gast)


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

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.