Forum: Mikrocontroller und Digitale Elektronik AVR Projekt Module


von Dieter N. (Gast)


Lesenswert?

Hallo zusammen,
ich bin gerade dabei ein neues AVR-Projekt zu beginnen und stelle mir 
nun einige Fragen. Ich kann um mein Projekt übersichtlicher zu halten 
viele kleine Module und methoden erstellen. Was mich daran stört ist, 
dass wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und 
diese nur einmal verwendet wird, führt das nicht zu einem 
Delay(Push/Pop-Befehle)?

von THOR (Gast)


Lesenswert?

Ja, wenn einen die paar CPU Takte stören kann man die Methode auch 
inline deklarieren.

von Peter II (Gast)


Lesenswert?

Dieter N. schrieb:
> Was mich daran stört ist,
> dass wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und
> diese nur einmal verwendet wird, führt das nicht zu einem
> Delay(Push/Pop-Befehle)?

kommt darauf an, ob es in verschiedenen Dateien ist und wie die 
kompilierst. ( Stichwort: LTO (link-time optimization) )

von Einer K. (Gast)


Lesenswert?

Dieter N. schrieb:
> führt das nicht zu einem
> Delay(Push/Pop-Befehle)?

Ähhmm...
Sorry, aber bei einer solchen Frage, kann ich nur vermuten, dass die 
wirklichen Zeitfresser ganz woanders sind.

Eigentlich kann man immer nur in eine Richtung optimieren.
Entweder Speed, oder Platz.
Du versuchst Richtung "Modular" zu optimieren.
Das ist schön und gut so.
Meist muss man dann aber Abstriche bei Speed, UND Platz machen.

Also:
Bilde einen Kompromiss!
Aber das erst, wenn du wirklich ganz genau weißt, WO es eng wird.

Denn:
Für ungenutzten Speicher und eingesparte Taktzyklen gibts kein Geld 
zurück.

von Paddy (Gast)


Lesenswert?

Dieter N. schrieb:
> Was mich daran stört ist,
> dass wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und
> diese nur einmal verwendet wird, führt das nicht zu einem
> Delay(Push/Pop-Befehle)?

Mit diese Frage sollst du dich nur beschaeftigen wenn es wichtig ist.
Wenn zB einen ADC conversion 133.71 statt 133.62 millisekunden dauert, 
ist das nicht wichtig. Aber wenn du ein loop hast der 10000 angerufen 
wird, ja dann ist es wichtig.

Wenn man keine 'Methode' dafuer benutzt, ist es oft schwieriger lesbar 
und ist es schwieriger zum debuggen.

von Jens (Gast)


Lesenswert?

Hinzu kommt, dass es der Compiler einem oft beim Optimieren abnimmt, ob 
eine Funktion inline benutzt wird, auch wenn diese so gar nicht 
definiert ist -und umgekehrt.

von Uwe (Gast)


Lesenswert?

Dieter N. schrieb:
> wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und diese
> nur einmal verwendet wird, führt das nicht zu einem Delay

Arduino macht das genau so. Wenn das schnell genug für dich wäre, 
brauchst du dir keine Gedanken zu machen.

Ansonsten: Erstmal sauber und modular entwickeln, bis funktionale 
Korrektheit erreicht ist. Dann optimieren, falls und wo nötig.

"static inline" Funktionen oder Macros können dabei helfen, Performance 
und Modularität zu vereinen.

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.