ISR Optimierung

Gast #632320
Lesenswert?

Hi,

ich berechne in der ISR, ob eine Frequenz zw. 9-11Hz anliegt.
Zuerst hatte 2 Zählvariablen benutzt. Wegen Optimierung habe ich es so 
gemacht, dass ich nur noch eine brauche.
Die Anzahl der Push- und Popoperationen sind aber gleich geblieben.

Kann mir einer sagen wieso?
Ich war jetzt davon ausgegangen, dass sie weniger werden.

Gruss,
Ramona
Gast #632918
Lesenswert?

Oder ist es was ganz anderes:

>ich berechne in der ISR, ob eine Frequenz zw. 9-11Hz anliegt.

Ein bisschen mehr Hintergrund bitte: Globale Variable, oder Static in 
der ISR? Von lokalen Variablen in der ISR kann keine Rede sein!!!

>Die Anzahl der Push- und Popoperationen sind aber gleich geblieben.

Wo, in Funktionsbeginn und -ende?

>Kann mir einer sagen wieso?
>Ich war jetzt davon ausgegangen, dass sie weniger werden.

Mit Push und Pop sichert der Compiler ein paar Register zum 
Funktionsaufruf oder der ISR.

Lokale Static Variablen in einer Funktion, und das kann ja übertrieben 
gesehen ein Array mit mehreren Hundert Elementen in der ISR sein, viel 
mehr als der Controller Register hat, werden im RAM fest angelegt, das 
ist C-Standard. Es ist nicht wahrscheinlich, daß auf diese Variablen 
über Push und Pop zugegriffen wird und das da was gesichert wird.

Globale und statische Variablen haben feste Adressen im RAM, und die 
Inhalte müssen durch die ISR nicht weiter gesichert werden.

Das hat also nichts mit Push und Pop der Register zum Funktionsaufruf zu 
tun.

Ist es das?

Gruß

Dietmar

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