Sreg in AVR-Interrupts beibehalten

8

Welcher Mechanismus wird verwendet, um das Statusregister sreg in einem AVR-Mikrocontroller zu erhalten? RETI bedeutet, dass diese Bits nicht auf dem Stapel liegen. Ist eines der Allzweckregister auch das Sreg oder etwas ähnliches?

    
old_timer 17.01.2012, 20:48
quelle

2 Antworten

11

Dies wird in jedem AVR-Datenblatt erklärt. Auf Seite 8 des ATtiny2313-Datenblatt steht beispielsweise:

  

Das Statusregister wird nicht automatisch beim Eingeben einer Interrupt-Routine gespeichert und bei der Rückkehr von einem Interrupt wiederhergestellt. Dies muss durch Software gehandhabt werden.

Sie können dies erreichen, indem Sie es in einem temporären Register speichern:

%Vor%

Beachten Sie auch, dass Sie, wenn Sie auf Register zugreifen, die nicht ausschließlich in dieser Interruptroutine verwendet werden, diese ebenfalls speichern müssen. Außerdem können Sie den Wert von SREG auf den Stack schieben, wenn Sie nur noch wenige Register haben:

%Vor%

Weitere Informationen erhalten Sie hier .

    
Stefan Paul Noack 18.01.2012, 09:24
quelle
1

Alternativ

%Vor%

und

%Vor%

scheint gültig zu sein.

    
Paul 14.08.2015 06:25
quelle

Tags und Links