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
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.
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.