mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR: Newbie Fragen


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sechszweifuenf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Wald und die Baeume ... http://www.mikrocontroller.net/articles/AVR

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.