Hallo zusammen, ich (Anfänger) bin gerade dabei den atmel atmega32 in Assembler zu programmieren. Ich habe nun das Problem das ich nicht genau weiß wie der speicher des microcontrollers aufgebaut ist. Mir ist zwar bekannt das es einen SRAM Speicher gibt ($0000-$085f glaube ich) einen EPRom Speicher($0000-????) und einen Programmspeicher (&0000-$3FFFF). Wie greife ich auf die einzelnen Speicher zu ? sind alle Speicher in einem gemeinsamen Adressraum abgebildet ? ..... Wenn ich ein Programm schreibe beginne ich ja mit rjmp main und dieses Kommando liegt auf Speicherzelle $0000 anschließend kommen die Interruptauswertebehandlung danach mein main programm. Die Interruptvektoren sind doch im SRAM oder hab ich dann mein Programm auch im SRAM oder im Programmspeicher? Fragen über Fragen sicherlich nicht schwer aber in der Beschreibung ist diese Problematik nicht näher beschrieben. Wäre dankbar wenn einer die Lösung wüßte, damit ich endlich weiß welche Speicherzellen ich denn überhaupt beschreibe...
Guck ins Datenblatt, dort steht das alles drin. Der Speicheraufbau jedes einzelnen AVRs ist konkret dokumentiert. Die AVRs benutzen eine sogenannte Harvard-Architektur, bei der jeder der drei Adreßbereiche (RAM, ROM, IO) voneinander getrennt ist und jeweils von 0 beginnend adressiert wird. Für jeden Befehl ist es dokumentiert, welchen Adreßbereich er benutzt, ein RJMP also z. B. den ROM, ein LDS den RAM, ein IN den IO-Bereich. (Die Register sind zusätzlich mit Offset 0, der IO-Bereich mit Offset 0x20 in den RAM-Bereich gemappt, der eigentliche RAM beginnt dann je nach AVR bei 0x60 oder 0x100.) Für den lesenden (und teilweise schreibenden) Zugriff auf ROM gibt es Sonderbefehle (LPM, SPM). Der Zugriff auf den EEPROM geschieht über IO-Register, kann also nicht im üblichen Sinne direkt adressiert werden.
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.