Sinnvoller Programmaufbau: was wohin?

Gast #3431022
Lesenswert?

Hallo!

Angenommen: ich erstelle ein Programm (so weit so gut).
Ich versuche, weitblickend zu programmieren und erstelle Programmteile, 
die ich wiederverwenden kann, z.B. ein C-File für die Ansteuerung eines 
Motors.
Darin kommen auch Timer vor. Also stehen die entsprechenden Timer-Inits 
und ISR zum Schrittmotor alle im Schrittmotor-C-File.
Macht ja irgendwie Sinn.

Andererseits habe ich bereits zuvor schon einmal "weiter geblickt" und 
ein eigenes C-File geschrieben, wo drin alle Timer-Inits des Controllers 
stehen und die dazugehörigen ISR gleich dazu. Machte damals irgendwie 
auch Sinn. Aber nun weiss ich nicht in welche Richtung ich weiter denken 
soll.

Vorschlag?
Gast #3431028
Lesenswert?

Man kann nicht für alles fertige Dateien haben, spätestens beim Timing 
muss man sich immer wieder neue Gedanken machen. Woher weisst du denn, 
dass nicht eine andere Datei zufällig den selben Timer nutzen will. Von 
daher würde ich die Timer immer projektbezogen einbinden.



Ingo
Gast #3431037
Lesenswert?

Das ist eine Frage der Software Architektur.
Sinvollerweise versucht man hierbei die Hardware zu abstrahieren, indem 
man eine HAL (hardware abstraction layer) bildet, die eben die Hardware 
Ports, Timer, E², TWi usw. bedienen kann.
Darüber baut man die eigentlichje Aplikation, die dann nur noch über die 
Hall auf die Hardware zugreift.

Dies hat den Vorteil, dass Du zum einen die Hal für unterschiedliche 
Applikationen wiederverwenden kannst, zum anderen kannst Du die 
Applikation auch auf andere Controller portieren, indem Du dort dann nur 
eine entsprechende HAL implementierst, die nach aussenhin die gleiche 
Schnittstellen hat.

Nachteil:
Meist ist der Resourcenverbrauch hierbei höher, sodaß mann in der 
Architektur sehr gut überlegen sollte wie weit man diese Abstraktion 
treibt.
Zudem ist der anfängliche Entwicklungsaufwand ebenfalls höher, und die 
Verlockung direkt aus der Applikation mal schnell einen Pin direkt 
einzulesen ohne extra dafür eine Routine zu basteln ist nicht immer 
gering, wobei dann aber die Portierbarkeit verlorengeht.
Gast #3431046
Lesenswert?

Stephan schrieb:
> Darin kommen auch Timer vor. Also stehen die entsprechenden Timer-Inits
> und ISR zum Schrittmotor alle im Schrittmotor-C-File.
> Macht ja irgendwie Sinn.

Macht ja irgendwie nur dann Sinn, wenn der verwendete Prozessor für 
jedes deiner Module, das einen Timer benötigen, auch einen eigenen Timer 
bietet. Ansonsten wirst du nicht umhin kommen, die ISR's bei jeder 
Anwendung neu zusammenzustellen.

Oliver
Gast #3431078
Lesenswert?

> Vorschlag?

Wenn du nicht WEISST, was du wie aufbereiten musst,
um es wiederverwenden zu können,
dann lass es einfach, denn du machst es eher schlimmer als besser.

Da werden erst aus 1 Zeile 10 weil es dann angeblich wiederverwenbar 
ist, dann bei der Wiederverwendung 100 weil erst mal ein Wrapper um die 
10 kommt damit man sie verwenden kann.

Und spätestens dann hat jemand den Überblick verloren.

Und das alles, weil man nicht mal 1 Zeile kopieren wollte, falls man 
jemals ein neues Projekt mit demselben Prinzip machen wollte.

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