mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tabelle im C-Code (mit MSP430)


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
folgendes Problem:

Ich möchte mit meinem MSP430(F1232 == 8kb Flash) eine Tabelle im
Flash-Speicher anlegen, die als Look-Up-Table für den ADC verwendet
werden soll. Die Tabelle hat 160 Integer-Werte. Ich programmiere in C -
doch wenn ich einfach eine Test-Schleife [ int tabelle[]; ... for
(i=0;i<161;i++) { tabelle[i]=i*5; } ] erstelle, beginnt er die Werte ab
Adresse 0x200 ins RAM zu schreiben, das (bei 256 Byte Größe) natürlich
bald voll ist. Er soll die Daten aber in den 8kb Flash-Speicher
schreiben.

Frage: Wie sgae ich ich, wo die Daten im Speicher genau hin sollen -
oder hat jemand einen anderen Vorschlag für die Realisierung einer
Look-Up-Table?

Danke im Vorraus,
Martin

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wirst so ohne weiteres keine Schreibzugriffe auf Deine Tabelle
ausführen können. Die soll schließlich im Flash-ROM liegen.

Bei der Deklaration der (konstanten) Variable tabelle wirst Du einen
der im Handbuch Deines C-Compilers dokumentierten "storage class
specifiers" verwenden müssen, der besagt, daß diese Variable im
Flas-ROM abgelegt wird.
Desweiteren musst Du die Variable initialisieren, das aber geht nur
duch eine konstante Initialisierung; mit Deiner "Testschleife" kann
das nicht funktionieren.

Da ich Deinen Compiler nicht kenne, kann ich nur mutmaßen:

  const int tabelle[] = {1, 2, 3, 4, 5, 6};

Eventuell ist Dein Compiler in diesem Falle bereits so schlau, die
Variable im ROM abzulegen, ansonsten musst Du eben herausfinden,
welcher "storage class specifier" dafür zuständig ist, der dann
zusätzlich zum const int anzugeben ist.

Immerhin kannst Du Lesezugriffe auf diese Variable ohne die bei AVRs
erforderlichen Klimmzüge durchführen; MSP430 verwendet keine
Harvard-Architektur.

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.