Forum: Mikrocontroller und Digitale Elektronik Sinnvoller Programmaufbau: was wohin?


von Stephan (Gast)


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?

von Ingo (Gast)


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

von jojo1969@gmx.de (Gast)


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.

von Oliver (Gast)


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

von Stephan (Gast)


Lesenswert?

jojo1969@gmx.de schrieb:
> man eine HAL (hardware abstraction layer) bildet

Klingt gut, ich guck mal was das ist!

von Karl H. (kbuchegg)


Lesenswert?

Stephan schrieb:
> jojo1969@gmx.de schrieb:
>> man eine HAL (hardware abstraction layer) bildet
>
> Klingt gut, ich guck mal was das ist!

Im Prinzip bist du damit beim Arduino System angelangt.
Mit allen Vor- aber auch Nachteilen.

von MaWin (Gast)


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.

von Stephan (Gast)


Lesenswert?

MaWin schrieb:
> Und spätestens dann hat jemand den Überblick verloren.

Da steh ich kurz vor!
Ich denke um....

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.