Forum: Compiler & IDEs SRAM und GCC


von Patrick (Gast)


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

von Jörg Wunsch (Gast)


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.

von Patrick (Gast)


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

von Jörg Wunsch (Gast)


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

von Eugen d (Gast)


Lesenswert?

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

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.