Forum: Mikrocontroller und Digitale Elektronik Was wechselt rum?


von Manuel (Gast)


Lesenswert?

Wenn das Programm eines Mikrokontrollers zum Bespiel in eine ISR 
wechselt, kann man dann sagen, dass der PC des M. in die ISR wechselt, 
oder was ist das im Mikrokontroller was die Programmzeilen nacheinander 
liest und bearbeitet?

mfg
Manu

von Hannes L. (hannes)


Lesenswert?

Manuel wrote:
> Wenn das Programm eines Mikrokontrollers zum Bespiel in eine ISR
> wechselt, kann man dann sagen, dass der PC des M. in die ISR wechselt,
> oder was ist das im Mikrokontroller was die Programmzeilen nacheinander
> liest und bearbeitet?

Ja, das ist der Programmzeiger, Program counter, bzw. PC.

Sein 'alter Zählerstand' (+1) wird während des Interrupt-Aufrufs (oder 
Unterprogramm-Aufrufs) auf dem Stack gesichert, damit bei der Rückkehr 
an der alten Stelle des Programms weitergemacht werden kann.


>
> mfg
> Manu

...

von johnny.m (Gast)


Lesenswert?

> ...was die Programmzeilen nacheinander liest und bearbeitet?
Der PC (Program Counter, Programmzähler) ist im Prinzip ein Zeiger, der 
der CPU mitteilt, an welcher Adresse im Programmspeicher der nächste 
auszuführende Befehl steht. Im Normalfall wird der PC nach jedem Befehl 
inkrementiert. Durch das Programm (Sprungbefehle, Unterprogrammaufrufe) 
oder durch Hardware-Ereignisse (Interrupts) kann er einen anderen Wert 
zugewiesen bekommen.

von Hannes L. (hannes)


Lesenswert?

> Programmzeilen

Da lauert das Missverständnis. Der Controller kennt keine 
Programmzeilen. Er kennt nur Maschinenbefehle. Und die stehen nicht an 
irgendwelchen Zeilennummern oder Labels, sondern an Adressen des 
Programmspeichers.

...

von Rahul, der Trollige (Gast)


Lesenswert?

>was ist das im Mikrokontroller was die Programmzeilen nacheinander
>liest und bearbeitet?

Trolle, Zwerge, Kobolde und Elfen...

SNCR

Der PC (Programmzähler) ist nichts anderes als ein Register, das je nach 
ausgeführtem Befehl inkrementiert wird.
Im Falle eines Interrupts wird dieses Register auf dem Stack gerettet 
und die Interruptadresse in den PC geschrieben.
Beim Beenden der ISR wird dann der alte Wert des PC vom Stack 
zurückgeholt. Das übernimmt alles die Programmsteuerlogik, die im 
Controller in Hardware vorhanden ist.
Diese Logik guckt eigentlich immer nur auf das Register, liest den 
aktuellen Wert aus und inkrementiert ihn, sofern kein Sprungbefehl 
ausgeführt werden soll. In diesem Fall wird der PC entsprechend 
modifiziert. Relative Sprünge werden zum PC addiert (rjmp), bei direkten 
wird der PC überschrieben. Bei Aufrufen von Unterprogrammen ("call") 
wird auch wieder der PC auf dem Stack gesichert und beim "ret" 
zurückgeschrieben.
Das ist aber auch alles recht hübsch in Datenblättern beschrieben.

http://de.wikipedia.org/wiki/Mikroprozessor

von Rahul, der Trollige (Gast)


Lesenswert?

Ich hab zwar am längsten gebraucht, dafür habe ich aber auch das wahre 
Innenleben beschrieben... ;-)

von Rahul, der Trollige (Gast)


Lesenswert?


von Hannes L. (hannes)


Lesenswert?

Rahul, der Drollige wrote:
> Ich hab zwar am längsten gebraucht, dafür habe ich aber auch das wahre
> Innenleben beschrieben... ;-)

Jawollll, Herr Droll...

;-)

Gruß nach Kiel...

...

von johnny.m (Gast)


Lesenswert?

@Troll-Rahul:
Wer hat Dich eigentlich aus der Scheibenwelt rausgelassen:-?

Aber ist schon richtig: Imho sollte TP Pflichtlektüre sein (am besten 
allerdings in der Originalversion)...

von Rahul, der Trollige (Gast)


Lesenswert?

>(am bestenallerdings in der Originalversion)...

Am besten beide Versionen.
Damit man auch über die Übersetzungsfehler schmunzeln kann...

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.