mikrocontroller.net

Forum: Compiler & IDEs Compileranweisung in WINAVR?


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, kann mir bitte jemand helfen?
Ich arbeite mit einem atmega128 mit dem Studio4 / WINAVR und benötige 
aus Platzgründen die Optimierung -Os. Leider habe ich aber auch 2 
Routinen, die exakt so wie ohne Optimierung ablaufen müssen (Timing!). 
Gibt es eine Anweisung, mit der ich dem Compiler sagen kann, ab hier 
sollst du optimieren, ab hier nicht mehr?
Meine bisherige Suche zu dem Thema hat leider nichts ergeben.
Gruss

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du GENAU bestimmen willst, was passieren soll, ist es ein Fall für 
(inline-)Assembler.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In verschiedene Module aufteilen und zusammenlinken?

MW

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Leider habe ich aber auch 2 Routinen, die exakt so wie ohne
> Optimierung ablaufen müssen (Timing!).

Dann hast du bei der Programmierung was falsch gemacht.
Lass mich raten: Du hast Warteschleifen im Programm und
der Optimizer würde die rausschmeissen.

Kennst du die Funktionen aus delay.h?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank für den Hinweis mit Delay.h. Ich hatte zwar schon kurz daran 
gedacht, aber irgendwie nicht geschnallt, dass durch die Verwendung als 
Lib-Funktion da der Compiler mitsamt Optimierung aussen vor bleibt.
Gruss

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat nichts mit lib-Funktion zu tun. Die delay-Funktionen sind im 
Header implementiert. Die funktionieren deshalb, weil die eigentlichen 
Warteschleifen in Assembler implementiert sind. Das ist auch die einzige 
Möglichkeit, zuverlässig Code mit exakt definiertem Timing 
hinzubekommen. In C kann (ob nun mit oder ohne Optimierung) von einem 
Compiler zum anderen oder auch von einer Compilerversion zur nächsten 
alles wieder ganz anders sein.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In C kann (ob nun mit oder ohne Optimierung) von einem
>Compiler zum anderen oder auch von einer Compilerversion zur nächsten
>alles wieder ganz anders sein.


Bin ich froh, dass ich solche Probleme im guten alten ASM nicht hab.

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.