www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik M16C NC30 wie lese ich den RAM aus

Autor: Gerd (Gast)
Datum: 06.09.2007 12:28

Bin mir gerade dabei am überlegen wie auf den Ram schreiben und wie ich
etwas aus dem RAM lesen. Finde jedoch leider keine anschauliche
Erklärung wie das mit NC30 und dem M16C funktionieren soll. Weiss jemand
was?
Autor: Falk Brunner (falk)
Datum: 06.09.2007 12:51

@  Gerd (Gast)

>Bin mir gerade dabei am überlegen wie auf den Ram schreiben und wie ich
>etwas aus dem RAM lesen.

Indem man einfach Variablen bzw. Arrays anlegt und darauf zugreift?

> Finde jedoch leider keine anschauliche
>Erklärung wie das mit NC30 und dem M16C funktionieren soll.

So wie auf jedem C-Compiler!

MfG
Falk
Autor: Judge (Gast)
Datum: 06.09.2007 12:53

So geht das:
unsigned char test;

test = *((unsigned char*)0x0400);

Damit wird das Byte an der Adresse 400h in die Variable test eingelesen.
Schreiben funktioniert vom Prinzip her genauso.

Gruß
Judge
Autor: Marvin M. (Gast)
Datum: 06.09.2007 13:18

Der Renesas-Compiler hat schon einige Unterschiede zu anderen Compilern
...
#pragma ADDRESS Buffer 060000H;
unsigned char far Buffer[SIZE];

definiert z.B. ein Array mit der Größe SIZE, das ab Adresse 60000H im
externen RAM liegt. In diesem Zusammenhang ist das Schlüsselwort "far"
wichtig, das den Adressraum auf 20 Bit (anstelle 16 Bit) ausweitet.

Zugriffe auf das interne RAM (unterhalb 0FFFFH) brauchen das nicht:
#pragma ADDRESS InternalRAM 01000H;
unsigned char InternalRAM[SIZE];

Natürlich kann man sich auch einen Pointer definieren und hinterher
entsprechende Adressen zuweisen (hier das "far" in den oberen
Speicherseiten nicht vergessen!)
Autor: Gerd (Gast)
Datum: 06.09.2007 15:44

stimmt dann der Zugriff von Judge?
Autor: Gerd (Gast)
Datum: 06.09.2007 15:50

wenn ich das richtigt verstanden habe laut Manual geht es bei Pragma und
per Zeiger. Bräuchte mal ein Beispiel ... danke
Autor: Martin (Gast)
Datum: 06.09.2007 15:57

Schau mal im R8C - Forum von Elektor vorbei.
Autor: Marvin M. (Gast)
Datum: 06.09.2007 17:00

@Gerd: Wenn Du mein Beispiel von oben verwendest, kannst Du direkt, auch
ohne Zeiger zugreifen.
value = Buffer[0];

liest dann den Inhalt der Speicherstelle an Adresse 060000H,
value = Buffer[10];
entspricht 06000AH, usw.
Autor: Gerd (Gast)
Datum: 07.09.2007 07:33

danke

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net