Forum: Mikrocontroller und Digitale Elektronik AVR: Newbie Fragen


von Markus (Gast)


Lesenswert?

Hallo,

beschäftge mich seit kurzem mit dem AVR und habe ein paar "Newie" 
Fragen. Falls es eine FAQ gibt, die diese enthält bin ich auch für den 
Hinweis dankbar.

Habe schon vorher 6502 (C64) und 68000 (Amiga) inkl. der entsprechenden 
Peripheriebausteine in Assembler programmiert, beim AVR ist aber doch 
einiges etwas anders :-) Zum experimentieren nutze ich einen ATmega8515. 
So nun die Fragen:

Die Register r0..r31 werden ja auch im SRAM in den Adressen $0000-$001f 
abgebildet. Welchen praktischen Nutzen hat das denn?

Im Speicherbereich $0020-$005f sind ja auch die I/O-Register gemappt. 
Welchen Unterschied macht es denn, ob ich IN/OUT bzw. LDS/STS für den 
Zugriff verwende? Also z.B.

in r16, $00
oder
lds r16, $0020

Ciao...
Markus

von sechszweifuenf (Gast)


Lesenswert?

Der Wald und die Baeume ... http://www.mikrocontroller.net/articles/AVR

von Michael U. (amiga)


Lesenswert?

Hallo,

warum Atmel das so gemacht hat, wird wohl nur Atmel selbst wissen. ;)

Wenn Du 6502/68000 progranniert hast, sag ich es mal so:

In Deinem Beispiel macht es keinen Unterschied, ob Du memory-mapped oder 
über die IO-Befehle zugreifst.

Aber: es gibt Befehle, die nur als IO-Zugriff existieren (SBI/CBI) als 
Beispiel), die das Leben auf dem AVR erleichtern.

Wenn Du memory-mapped zugreifst, mußt Du den Wert erst in ein Register 
holen, ändern und zurück schreiben.

Andererseits kann man mit den Speicherzugriffen auf Register indiziert 
über X/Y/Z zugreifen, was bei bestimmten Sachen (Rechnerei in Registern) 
das Assembler-Leben vereinfachen kann.

Man findet da auch in den AVR-AppNotes von Atmel Beispiele dazu.

Gruß aus Berlin
Michael

von Johannes M. (johnny-m)


Lesenswert?

Markus wrote:
> Welchen Unterschied macht es denn, ob ich IN/OUT bzw. LDS/STS für den
> Zugriff verwende? Also z.B.
>
> in r16, $00
> oder
> lds r16, $0020
in/out: 1 Taktzyklus
lds/sts: 2 Taktzyklen

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.