Wie kann ich das SREG auf den Stack kopieren?

Gast #135225
Lesenswert?
• ▲
▼
Hallo zusammen,

mal ne allgemeine Frage zum AVR Controller:

Wenn ein Timer Interrupt aufgerufen wird, so wird das Prog an der
aktuellen Stelle unterbrochen und die Interrupt Service Routine
aufgerufen. Gibt es eine Möglichkeit Das SREG auf den Stack zu legen
und danach wieder zu holen?
Beim Z80 Habe ich immer PUSH AF und POP AF werwendet.
Oder ist es bessser in der Interrupt Routine nur irgend ein Flag zu
setzten und es dann Später im Programm abzuarbeiten? Dann hätte man
aber gleich auf das ganze Interrupt Zeug verzichten können und die
Flags in eine Schleife abfragen.

Viele Grüße
Horst
Gast #135229
Lesenswert?
• ▲
▼
Bei kleineren oder zeitkritischen Projekten kann es auch sinnvoll sein,
ein Register exclusiv für das SREG zu nutzen. Das erspart die
Stackzugriffe, die bei einigen Tinys mangels SRAM sowiso nicht möglich
sind. Es bleibt also bei einem IN srkopie,sreg und einem
OUT sreg,srkopie und kostet zwar ein Register Exclusiv, aber nur 2
Takte...

Guten Rutsch...
...HanneS...
Gast #135230
Lesenswert?
• ▲
▼
richtig, und dafür kann man prima eins der sonst eher weniger
verwendeten unteren Register nehmen.
Und solange man keine verschachtelten Ints benutz, reicht ein Register,
um das sreg in allen ISRs zu sichern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren