Gast
#957599
hi, ich verstehe den folgenden Befehl nicht so ganz ldi r16, RAMEND out SPL, r16 da wird das Register mit ramend geladen und dann soll es das niedrige byte vom RAM ausgeben. aber was ist dieses RAMEND??
|
Anzeige
|
ein unklarer Befehl
Gast
#957599
hi, ich verstehe den folgenden Befehl nicht so ganz ldi r16, RAMEND out SPL, r16 da wird das Register mit ramend geladen und dann soll es das niedrige byte vom RAM ausgeben. aber was ist dieses RAMEND?? Andi wrote:
> aber was ist dieses RAMEND??
Die Adresse an dem das RAM fertig ist, also die höchste Adresse die vom
RAM belegt ist.
Hi, RAMEND wird in der Include-Datei gesetzt, die zum verwendeten AVR gehört. Mit diesen Zeilen wird der Stackpointer gesetzt, der üblicherweise nach unten wächst, deshalb fängt er am Ende an ;-)
Gast
#957604
also der befehl bewirkt quasi nur, dass ich ab nun unterprogramme aufrufen kann, versteh ich das richtig? Genau. Und Interrupts.
Gast
#957607
na gut. danke euch allen sollte das bei 8-bit prozessoren nicht so eingegeben werden..? ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16 lg xeox Martin ... wrote: > sollte das bei 8-bit prozessoren nicht so eingegeben werden..? Kommt drauf an, ob der Controller mehr oder weniger 256Bytes RAM hat (bzw. ob der Stackpointer 8 oder 16bit groß ist, denn bei neueren AVRs ist der Stackpointer auch bei Controllern mir <128Bytes RAM teilweise 16bit groß, denn viele AVRs gibt es je nach Typ z.B. mit 128/256/512 Bytes RAM und bei denen ist der Pointer dann immer 16bit groß).
Gast
#957614
Hi
>sollte das bei 8-bit prozessoren nicht so eingegeben werden..?
Nur wenn der RAM > 256 Bytes ist.
MfG Spess
> Nur wenn der RAM > 256 Bytes ist.
eher >= 256 bytes (256=0x0100), was bei 90% der cpu' der fall ist.. ;)
Martin ... wrote: >> Nur wenn der RAM > 256 Bytes ist. > eher >= 256 bytes (256=0x0100), was bei 90% der cpu' der fall ist.. ;) Stimmt auch nicht ganz, siehe was ich geschrieben habe. Dazu kommt auch noch, dass der RAM nicht bei 0 beginnt.
Gast
#957627
Hi OK. Dann ersetzt 'RAM' mit 'Data Memory'. MfG Spess Ja. Ich muss mich auch selbst noch korrigieren: SPH existiert anscheinend doch nur, wenn er gebraucht ist: Note that the data space in some implementations of the AVR architecture is so small that only SPL is needed. In this case, the SPH Register will not be present. Es stört aber nicht, SPH immer zu beschreiben, das macht auch der GCC so. Dann ist man wenigstens auf der sicheren Seite, und man muss weniger beachten, wenn man die Software auf einem anderen AVR verwendet. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|