Hallo zusammen, ich möchte gern eine Datei erstellen in der verschiedene Programme gespeichert sind. Diese Programme sollen dann in einem Hauptprogramm für einen Mikrocontroller variabel eingebunden werden, wie z.H. eine vorhandene Datei die warten.h. Hier sind ja verschiedene Möglichkeiten hinterlegt um Wartezeiten zu nutzen. Jedoch möchte ich, das Variablen die in diesen hinterlegten Unterprogrammen in meiner Datei nur für das Unterprogramm gelten und nicht durch mein Hauptprogramm verändert werden. Sagen wir mal ich benutzt in meinem HP Variable a und im Unterprogramm benutze ich diese auch. In Assembler kann ich mit PUSH und POP die Variablen in den Stack schieben, wie funktioniert das hier mit dem GCC? Ich hoffe Ihr versteht was ich meine ;) Ich bedanke mich für euere Mühen und verbleibe mit freundlichen Grüßen Balou Baer
Re: Wie kann verschiedene Programme in eine Datei Packen um diese in Hauptprogrammen nutzen zu könne
Bitte erst C lernen. Funktionslokale Variablen sind automatisch nur innerhalb dieser Funktion sichtbar; wenn du aus 2 Funktionen auf ein "a" zugreifst das in diesen Funktionen definiert wurde, sind das zwei verschiedene a's. PUSH/POP macht der Compiler vollautomatisch.
Re: Wie kann verschiedene Programme in eine Datei Packen um diese in Hauptprogrammen nutzen zu könne
Wie Dr. Sommer schon sagte: C lernen. Mach dich vertraut mit dem Geltungsbereich von Variablen. Des weiteren: Verstehen, was der Linker tut und wie man ein typisches C-Programm aus verschiedenen Modulen aufbaut. Einsteigen kann man z.B. in der Wikipedia, evtl. Englisch, da oft ausführlicher.
Re: Wie kann verschiedene Programme in eine Datei Packen um diese in Hauptprogrammen nutzen zu könne
@Peter: ich habe ein komplettes Programm geschrieben um aus einem Tachosignal eine Geschwindigkeit zu ermitteln. Dort sind include Anweisungen, CPU Frequenz, Datenrichtungsregister usw. alles mit drin. Auch verwendet wird dort einen Timer, der nach einer Zeit X einen Interrupt auslöst. Das Tachosignal wird an einem PIN am Mikrocontroller erkannt und wird in eine Geschwindigkeit umgerechnet. Wird nun die Geschwindigkeit überschritten soll ein Ausgang am Mikrocontroller ein und bei normalen Geschwindigkeiten wieder aus geschaltet werden. Dieses Programm möchte ich in eine .h Datei einsetzten und weiter kleine Programme auch, um diese durch ein Hauptprogramm abrufen zu können. Jedoch definiere ich ja in dem Haupt Programm auch die Datenrichtungsregister, die Interrupts, die CPU Frequenz usw.. Daher entsteht für mich nun die Frage, wie muss ich dieses Geschwindigkeitsprogramm ändern, damit ich es als Unterprogamm einbinden kann. Zudem sollen die Variablen wie. z.B. a, welche eventuell auch in anderen UP´s oder auch im HP verwendet werden weder die Variable a im HP noch in anderen UP´s verändern. Wenn ihr mir Sagt, lass es als Anfänger, dann lasse ich es, nur mir wären kleine Programmhappen lieber als ein riesiges HP. Mit freundlichen Grüßen Balou Bar
Balou Baer schrieb: > Dieses Programm möchte ich in eine .h Datei einsetzten in Header Dateien schreibt man (fast) keine Programmcode, diese gehört in Quellcode Dateien (c) Aber richtig versteht ich das Problem immer noch nicht. Es gibt globale Variable diese sind im kompletten Programm verfügbar und müssen eindeutig benannt sein. Jeder C Datei kann aber auch ihre eigenen Variablen haben, diese sind dann nur in der C Datei gültig.
Re: Wie kann verschiedene Programme in eine Datei Packen um diese in Hauptprogrammen nutzen zu könne
Balou Baer schrieb: > Dieses Programm möchte ich in eine .h Datei einsetzten und weiter kleine > Programme auch, um diese durch ein Hauptprogramm abrufen zu können. > Jedoch definiere ich ja in dem Haupt Programm auch die > Datenrichtungsregister, die Interrupts, die CPU Frequenz usw.. Du meinst keine Programme, Du meinst Funktionen, d.h. Du willst Dein großes Monsterprogramm in kleine Häppchen aufteilen. Strukturiere daher Deinen Source nach Teilaufgaben, stecke diese Teilaufgaben dann in einzelne Funktionen, die genau das tun. Wenn Du dann so weit gekommen bist, dann bist Du auch im nächsten Schritt in der Lage, diese einzelnen Funktionen auf verschiedene .c-Dateien (nicht .h, diese beschreiben nur Interfaces, d.h. die Schnittstellen zu den Funktionen) aufzuteilen. Dann musst Du als nächstes lernen, diese verschiedenen .c-Dateien zu einem großen Programm zusammenzulinken. Mach das Schritt für Schritt. Das gleichzeitige Studium eines guten C-Buches kann Dich dabei begleiten.
:
Bearbeitet durch Moderator
Re: Wie kann verschiedene Programme in eine Datei Packen um diese in Hauptprogrammen nutzen zu könne
Balou Baer schrieb: > er nach einer Zeit X einen > Interrupt auslöst. Das Tachosignal wird an einem PIN am Mikrocontroller > erkannt und wird in eine Geschwindigkeit umgerechnet. Wird nun die > Geschwindigkeit überschritten soll ein Ausgang am Mikrocontroller ein > und bei normalen Geschwindigkeiten wieder aus geschaltet werden. > > Dieses Programm möchte ich in eine .h Datei einsetzten und weiter kleine > Programme auch, um diese durch ein Hauptprogramm abrufen zu können. Nein, das willst du nicht. Du willst ein neues Programm schreiben, in dem du einzelne Funktionalitäten der anderen Programme zu einem einzigen zusammenführst. > Jedoch definiere ich ja in dem Haupt Programm auch die > Datenrichtungsregister, die Interrupts, die CPU Frequenz usw.. Ja. Nichts desto trotz schreibst du jetzt ein neues, ein einziges Programm. Da musst du dir jetzt überlegen, wie du das, was die Einzelfunktionen, die du zusammenführen willst, unter einen gemeinsamen Hut bringst. Auf deinem µC läuft ein einziges Programm. Punkt.
Re: Wie kann verschiedene Programme in eine Datei Packen um diese in Hauptprogrammen nutzen zu könne
Ich denke, Du hast ein grundlegendes Verständnisproblem: Der Sinn von Headerdateien ist nicht, Funktionalität (Programmcode) zu implementieren, sondern lediglich Schnittstellen bekannt zu machen. Was Du machen willst, ist wahrscheinlich das hier: http://de.wikipedia.org/wiki/Modulare_Programmierung
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.