Hi an alle, ich habe einmal eine Allgemeine Frage zur Programmierung von Mikrocontrollern. Genauer gesagt, geht es um die Übersichtlichkeit des Codes. Man sieht immer wieder Beispiele, in denen restlos alles in eine Datei geschrieben wurde, was das Ganze ziemlich unübersichtlich macht für meinen Geschmack. -> Die Frage wäre nun, wie man den Code wirklich sinnvoll in mehrere Dateien aufsplittet? -> Was habt ihr in der main.c stehen? -> Ist es Sinnvoll #defines, Deklarationen von Variablen auch in eine eigene Datei auszulagern oder gehört so etwas in die main.c? Ich würde mich freuen, wenn der ein oder andere seine Meinung oder Erfahrungen dazu beitragen würde. Grüße Marco
Also nur der kurze Hinweis, ich habe z.b. sehr viele Defines und Funktionen (einmal globale und einmal nur für main) und include diese über eine *.h Datei. Diese *.h Dateien haben bei mir in etwa genausoviel Zeilen wie der eigentliche Code, verbessern die Übersichtlichkeit also doch erheblich.
Was oft gemacht wird, und meiner Meinung nach sehr sinnvoll ist, ist verschiedene "Module" in verschiedene Dateien zu packen. Zum Beispiel alles was mit einem LCD zu tun hat nach lcd.c/.h, alles was mit einer SD Karte zu tun hat nach sd.c/.h, usw. In die main.c (bzw die main Methode) kommen dann Aufrufe zu den verschiedenen Funktionen. Ich schreibe in jedem Modul jeweils eine "init" und eine "periodical" Funktion, am Anfang der main() rufe ich die ganzen init()s auf, und danach in einer Endlosschleife die ganzen periodical()s. Am besten verwendet man dann noch Kooperatives Multitasking, dh jedes Modul/jede periodical() muss sehr schnell return-en so dass sich die ganzen Module ständig abwechseln. Verzögerungen realisiert man dann nicht durch warten in der Funktion, sondern indem man jeden Zyklus prüft, ob genug Zeit vergangen ist. Sehr sinnvoll ist dann auch noch eine globale Header Datei wo alle Hardware abstahiert ist, dh jedem Pin usw. ein #define spenden. Macht den Code sehr viel leserlicher, und man braucht nicht den ganzen Code durchforsten wenn sich ein Pin ändert :)
Marco schrieb: > -> Die Frage wäre nun, wie man den Code wirklich sinnvoll in mehrere > Dateien aufsplittet? Für den Anfang wirst du mit "modulweise" auskomme. Die UART Funktionen sind ein Modul, können daher in eine eigene Datei. Die LCD Funktionen sind ein Modul und können in eine eigene Datei. Es gilt einen sinnvollen Kompromiss zu finden. Zu wenig einzelne Dateien -> Dateien sind riesig lang Zu viele einzelne Dateien -> man findet nichts mehr. > -> Was habt ihr in der main.c stehen? > > -> Ist es Sinnvoll #defines, Deklarationen von Variablen auch in eine > eigene Datei auszulagern oder gehört so etwas in die main.c? Kommt drauf an. Alles was das Potential hat, von mehreren C-Files benutzt zu werden, gehört in ein Header-File. #defines die nur für ein Modul relevant sind, sind im zugehörigen C-File meist besser aufgehoben.
Hallo, vielen Dank schon einmal für die vielen Hinweise. Ich werde mal schaun, was ich so machen kann und was für mich das Beste ist. Ich werde den einzelnen Modulen schonmal eine eigene Datei verpassen. Mal sehen, was ich noch an Deklarationen usw. auslagern kann/werde. Ich denke, ich werde sicher von Projekt zu Projekt noch was ändern, also immer mal wieder optimieren. Grüße Marco
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.