www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik externes ram verwenden in c


Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!

wie kann ich in auf eine bestimmte adresse im externen sram etwas
schreiben? wichtig ist, dass es eben im EXTERNEN sram stehen muss!

vielen dank im vorraus

mfg anm

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibts eine ganze Menge Wege.
Als erstes musst Du das externe SRAM-Interface aktivieren.
Je nachdem wie früh/spät Du das in Deiner Applikation machst, kannst Du
entweder per Pointer direkt auf das externe SRAM zugreifen, malloc() ins
externe SRAM packen oder sogar die ganzen Variablen in das externe SRAM
verlagern. Den Stack würde ich aus Performancegründen auf jeden Fall
im internen SRAM belassen, die Variablen aus dem gleichen Grund
Vorzugsweise auch. Damit bliebe noch malloc() und der "direkte"
Zugriff per Pointer übrig.

Das ganze geht in etwa so (aus dem Kopf):

unsigned char *pExtSRAM = 0x1100;

    MCUC(S)R = (1 << SRE); /* no wait-states */
    pExtSRAM[0] = 0x55;
    pExtSRAM[1] = 0xAA;
    /* ... */

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erstmal danke für deine schnelle antwort!
also bei mir funktioniert dein code nicht. er meldet, dass die
zuweisung  der pointeradresse nicht funktioniert. er schreibt, dass die
operanten dieser funktion illegale typen aufweisen (ICCAVR).
und warum verwendest du pExtSRAM[0] [1] ... wenn du vorher kein array
definierst?

danke

mfg andi

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hups, sorry:

unsigned char *pExtSRAM = (unsigned char *) 0x1100;

Warum ich pExtSRAM[x] benutze? Weil es einfacher zu lesen ist als

    *(pExtSRAM + x) = 0x??;

Dazu liest Du aber besser mal ein Kapitel über Zeiger/Arrays in einem
guten C-Buch, falls Du noch Fragen hast ;)

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, das mit dem zeiger hab ich bereits gefunden! dass das mit
pExtSRAM[x] geht ist mir neu! danke!

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist diese Lösung denn überhaupt das, was Du haben möchtest?
Ich könnte mir schon vorstellen, daß Du eigentlich etwas völlig anderes
vorhast -- ist aber nur so ein "Bauchgefühl" :-)

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
passt haargenau für das was ich vorhabe! hast ein gutes gefühl im bauch
:D

schöne grüße aus tirol

mfg andi

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.