www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Warum Variablen


Autor: Bilderich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum Variablen wenn mir doch Register zur verfügung stehen !?

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Variablen sind erstmal einfach Werte welche zur Laufzeit veränderlich
sind. Dazu kann man Register, RAM und EEPROM zählen.

Mit Registern gehen meist mehr Operationen oder zumindest am
schnellsten.

Auf RAM wicht man aus wenn die Register nicht reichen (mehr RAM als
Register ist die Norm) oder es kompliziert wäre Daten dort abzulegen
(Adressierung des RAM über Register, z.B. bei Puffern oder Strings).

EEPROM ist normalerwise schnarchlahm im Vergleich zum Rest, dafür
behält er die Daten auch ohne Strom oder über einen Reset hinaus.

mk2

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Warum Variablen wenn mir doch Register zur verfügung stehen !?"

Warum Kaffe, wenn ich ne Tasse habe ?

Das eine ist der Inhalt, das andere eine Möglichkeit, wo ich diesen
hinein tun kann.


Peter

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Variablen & Co KG

Also, nach Lektüre meine µController und µProzessoren folgendes Urteil
:

Variablen beim Programmieren (denn  nur da gibt es sie) sind Namen für
bestimmte Sachen. Unter diese Sachen fallen Register, Speicherstellen
in RAM, EEPROM und FLASH, Ports - kurz gesagt alles was man will.

Jetzt zu der eigentlichen Frage : Warum soll ich damit arbeiten ?
Für den Programmierer ist es einfacher mit den Variablen zu arbeiten,
da er diesen einen für seinen Zweck sinnvollen Namen zuteilen kann.
Manche Variablen sind dabei schon in der Prozessor- (Controller-)
Architektur festgelegt. Die Architektur ist hier nicht die
Hardwareimplementation sondern der Teil des Prozessors, der für den
Programmierer sichtbar ist. Einige Beispiele : Warum sollte man bei
einem AVR-µController die Variable PORTB verwenden ? Ganz einfach : Das
ist viel leichter, als den Port B irgendwo im Adressbereich des
Controllers unterzubringen. Dann müsste man ja die Adresse kennen und
auf diese zugreifen. Zweites Beispiel : Ich benutze eine Variable
count, mit der ich Schleifendurchläufe zähle. Diese bilde ich
meinetwegen auf das Register R17 ab. Wenn ich jetzt überall R17
hinschreiben müsste, dann wäre das für mich viel unlesbarer.

Variablen werden beim Compilieren in Adressen aufgelöst. Das heißt
diese Namen sind im OpCode nicht mehr vorhanden und können auch nicht
mehr wieder zurück aufgelöst werden (es sei denn es handelt sich um
Architekturvariablen wie Ports oder Counters oder so etwas).

Ich hoffe ich habe da etwas Klarheit in die Sache gebracht.

MfG, Khani

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<pingelmodus>
...
Warum sollte man bei
einem AVR-µController die Variable PORTB verwenden ? Ganz einfach :
Das
ist viel leichter, als den Port B irgendwo im Adressbereich des
Controllers unterzubringen. Dann müsste man ja die Adresse kennen und
auf diese zugreifen.
...

PORTB ist eine Konstante. Port B liegt natürlich im Adressbeich des
Controllers (sonst könnte er ja nicht zugreifen) - dank der
RISC-typischen Harvard-Architektur ist es allerdings ein eigener nur
für I/O Register (neben den Addressbereichen für Register, RAM, EEPROM
und Flash). Unter der Adresse "0" können sich beim AVR also
(mindestens?) 4 verschiedene Variablen (bzw. beim Flash Konstanten)
verbergen.

Und der "counter" aus deinem Beispiel ist auch keine Variable,
sondern der NAME der Variablen der vom Assembler in Deinem Fall in R17
abgebildet wird.
</pingelmodus>

mk2
SCNR

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.