Hallo miteinander Könnte mir jemand bitte aufzeigen, wie man ein Array mit ATmega8515 erstellt? Ich möchte 8 Ziffern abspeichern. Danke im Voraus Grüsse
Muffin schrieb: > Hallo miteinander > > Könnte mir jemand bitte aufzeigen, wie man ein Array mit ATmega8515 > erstellt? Ich möchte 8 Ziffern abspeichern. Das hängt nicht vom Controller hab, sondern von deiner Programmiersprache. Also?
Ich tippe jetzt mal ganz frei auf C:
1 | uint8_t foo[8]; |
Dami hast du ein Array foo, welches 8 Bytes lang ist. Klar?
Es sollte ein Array mit Assembler im Programm AVR Studio V 4 erstellt werden, das 8 Ziffern abspeichern kann. Grüsse
Muffin schrieb: > Es sollte ein Array mit Assembler im Programm AVR Studio V 4 erstellt > werden, das 8 Ziffern abspeichern kann. es gibt so etwas wie Array nicht wirklich in ASM. du kannst dafür 8 Register verwenden, wenn du genug hast. Oder einfach 8bytes aus dem RAM. Anlegen muss man es auch nicht wirklich, die Frage ist wie man rein schreibt oder daraus liest.
Peter II schrieb: > Anlegen muss man es auch nicht wirklich, sagen wir mal so. Wenn er 8 hintereinanderliegende Bytes im SRAM sauber für sein Programm reserviert haben will, dann muss er das dem Assembler auch mitteilen.
1 | .DSEG |
2 | MeineDaten: .BYTE 8 |
reserviert 8 Bytes im SRAM und macht die Startadresse davon unter dem Namen 'MeineDaten' verfügbar. Siehe auch http://www.mikrocontroller.net/articles/AVR-Tutorial:_SRAM
Karl Heinz schrieb: > Peter II schrieb: > >> Anlegen muss man es auch nicht wirklich, > > sagen wir mal so. > Wenn er 8 hintereinanderliegende Bytes im SRAM sauber für sein Programm > reserviert haben will, dann muss er das dem Assembler auch mitteilen. > > .DSEG > MeineDaten: .BYTE 8 > reserviert 8 Bytes im SRAM und macht die Startadresse davon unter dem > Namen 'MeineDaten' verfügbar. > Siehe auch > http://www.mikrocontroller.net/articles/AVR-Tutorial:_SRAM Danke dir für deine Auskunft =)
Weiß der Assembler, wo das freie SRAM für den Benutzer anfängt? Es steht im Header File, hier z.B. unter SRAM_START in m8515def.inc, aber ich habe gerade erst damit angefangen und würde zw. dem ersten .DSEG und .BYTE noch ein .ORG SRAM_START setzen. Oder meine Bytes sofort am Programmanfang auf dem Stack reservieren.
Rainer V. schrieb: > habe gerade erst damit angefangen und würde zw. dem ersten .DSEG und > .BYTE noch ein .ORG SRAM_START setzen. Oder meine Bytes sofort am > Programmanfang auf dem Stack reservieren. Mach es doch einfach und lerne den Debugger zu nutzen. Learning by doing.
Rainer V. schrieb: > Weiß der Assembler, wo das freie SRAM für den Benutzer anfängt? Ja. Genauso, wie er weiss, ob das Traget z.B. die Instruktionen call, jmp oder mul unterstützt oder ob es 16 oder 32 Register hat.
Coldplay schrieb: > lerne den Debugger zu nutzen. Learning by doing. Funktioniert prima! Da kann ich mein STK500 usw. ja wieder verkaufen :-) c-hater schrieb: > er (Anm.: der Assembler) weiss, ob das Traget z.B. die Instruktionen > call, jmp oder mul unterstützt oder ob es 16 oder 32 Register hat. Dazu kann ich in den *def.inc unter Atmel Studio Appnotes leider nichts finden. Wo steht denn das alles in einer Form, die im Quellcode includiert und ausgewertet werden kann (also keine Datenblätter *.PDF)?
Hi >Dazu kann ich in den *def.inc unter Atmel Studio Appnotes leider nichts >finden. Wo steht denn das alles in einer Form, die im Quellcode >includiert und ausgewertet werden kann (also keine Datenblätter *.PDF)? Das steht verschlüsselt in deiner m8515def.inc: #pragma AVRPART CORE CORE_VERSION V2E MfG Spess
Danke für den Tip! Zu Direktive #pragma gibt es allerhand im Inet, aber keine Details zu den beim AVR bzw. AT-Studio verwendeten Parametern. Da werde ich benötigte Angaben aus den Datenblättern heraussuchen und durch bedingte Kompilierung im Code einfügen. Mich stört, daß beim AVR-Studio (4.19) der Pfad zu den selbstgebastelten INC-Dateien bei jedem neuen Projekt eigens eingegeben werden muß. Der Pfad wird wohl nur in der Projektdatei gespeichert. Oder kann ich ihn irgendwo so eingeben, daß er immer für alle meine Projekte gilt?
Hi >Da werde ich benötigte Angaben aus den Datenblättern heraussuchen und durch >bedingte Kompilierung im Code einfügen. Um welche Angaben geht es? MfG Spess
Es ging z.B. um den MCU-spezifischen Befehlssatz, Anzahl der Register, der Interrupts und der Bytes pro Int-Vektor in der Tabelle. Allerdings hat es sich mittlerweile erübrigt. Es ging um SRAM-Reservierung für den Stack. Aber wenn Interrupts auch bei gleichzeitigem Auftreten immer nur nacheinander abgearbeitet werden, dann müssen auch nur 2 Byte SRAM für eine einzige Rücksprungadresse auf dem Stack frei sein, wenn ich mal von meinen anderen Subroutinen absehe. Es ging auch um gemeinsame Nutzung einer Quelltext-Vorlage für mehrere MCU-Typen. Die Anzahl Bytes/Int-Vektor brauche ich aber nicht dringend, da in jedem Projekt wohl verschiedene Interrupts verwendet werden. Also gehört die Int-Vektor-Tabelle in den Quelltext des Projektes und nicht in eine gemeinsame Vorlage oder Include-Datei. Bei den MCU-spezifischen Befehlen wäre es z.B. darum gegangen, über welche CALL- oder Sprungbefehle eine MCU verfügt. Aber: wenn ich in gemeinsamen Quelltexten zuviel mit bedingter Kompilierung hantiere, dann wird es schnell unübersichtlich und dadurch auch fehleranfällig.
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.