www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ISR Optimierung


Autor: Ramona (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian U. (z0m3ie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde denken das der Compiler deine 2. variable schon wegoptimiert 
hatte.

Autor: Ramona (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, daran hatte ich noch nicht gedacht.

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.