Forum: Mikrocontroller und Digitale Elektronik ISR Optimierung


von Ramona (Gast)


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

von Christian U. (z0m3ie)


Lesenswert?

Ich würde denken das der Compiler deine 2. variable schon wegoptimiert 
hatte.

von Ramona (Gast)


Lesenswert?

Danke, daran hatte ich noch nicht gedacht.

von Dietmar (Gast)


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

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.