Forum: Mikrocontroller und Digitale Elektronik ATmega8515 Array


von Muffin (Gast)


Lesenswert?

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

von Cyblord -. (cyblord)


Lesenswert?

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?

von Peter K. (peterka2000)


Lesenswert?

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?

von Helge O. (_elko_)


Lesenswert?

Was für Ziffern denn? Ganzzahlen? Gleitkomma? Mit oder ohne Vorzeichen?

von Muffin (Gast)


Lesenswert?

Es sollte ein Array mit Assembler im Programm AVR Studio V 4 erstellt 
werden, das 8 Ziffern abspeichern kann.

Grüsse

von Peter II (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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

von Muffin (Gast)


Lesenswert?

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 =)

von Rainer V. (rudi994)


Lesenswert?

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.

von Coldplay (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von Rainer V. (rudi994)


Lesenswert?

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)?

von spess53 (Gast)


Lesenswert?

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

von Rainer V. (rudi994)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

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

von Rainer V. (rudi994)


Lesenswert?

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