www.mikrocontroller.net

Forum: Compiler & IDEs SRAM und GCC


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein paar Fragen zum SRAM und deren Nutzung in GCC.
Da ich in einer Assembler-Unterfunktion mehrere Bytes (max. 126Bytes
mit ATmega16) im SRAM ablege (ab Adresse 0x60), wollte ich die Bytes
später im C-Hauptprogramm wieder einlesen und sie an ein Lcd-Display
ausgeben.
Es es überhaupt möglich den SRAM in AVR GCC zu nutzen, da auch der
Compiler den SRAM für seine Variablen nutzt?
Und wenn ja, gibt es schon eine Funktion für den Zugriff auf den SRAM.

Ich habe in der AVR-Doku zwar gefunden wie man den EEPROM und den
Programm-Flash liest und schreibt, aber leider nicht den SRAM.

Gruß
Patrick

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du benutzt keine feste Adresse, sondern eine globale Variable.  Das
beste ist es, wenn Du den Compiler die globale Variable (als array)
anlegen läßt, dann hast Du im Assembler keinen Streß damit.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
erst mal vielen Dank für deine schnelle Antwort.
Ich habe ein globales Array (unsigned char adressen[126];) angelegt.
Allerdings weiß ich nicht,wie ich das Array im Assembler jetzt
beschreiben kann.
So habe ich es eigentlich gedacht: mov adressen[r16],r20
wobei r16 im Programm hochgezählt wird.

Vermutlich ist die Frage ziemlich blöde, aber ich bin ein absoluter
Neuling, habt deshalb bitte etwas Nachsicht mit mir. Danke.

Gruß Patrick

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi rXX, lo8(adressen)
ldi rXY, hi8(adressen)

Wenn Du lieb zu Deiner Nachwelt sein willst, schreibst Du davor noch:

.global adressen

aber das hat nur Dokumentarwert, ist ansonsten ein NOP.

Wie Du die Indizierung bzw. das Hochzählen dann machst, weißt Du
vermutlich besser als ich, schließlich hast Du Dich ja für Assembler
entschieden. ;-)  Ich nehme dann gleich lieber C...

Autor: Eugen d (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du kannst natürlich auch die adresse und größe des arrays als parameter
in eine assembler unterfunktion übergeben
mfg eugen d

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.