Hallo Leute, wie kann ich mein Programm so aufbauen, dass Variablen die mit dem EEPROM interagieren sollen und mit dem Makro EEMEM deklariert sind, über mehrere .c-Dateien nutzen kann? Ich möchte die EEMEM-Variablen gerne in einer header-Datei deklarieren. Geht das? Vielen Dank!
Warum nicht wie ohne EEMEM Attribute, einfach im Header "extern" deklarieren und dann in einem der C-File ohne "extern" "anlegen"?
#include<deine_variablen.h> <-- in jeder c datei wo du deine EEPROM Daten brauchst. Und dann über eine Funktion auslesen die du in deine_variable.h schreibst.
Krulle schrieb: > Geht das? Ich weiß nicht, ob das überhaupt eine gute Idee ist. Bei meine Projekten achte ich immer darauf, Konfigurationsdaten in einem einzigen Struct aufzubewahren, das wiederum nur in einer einzelnen Funktion aus dem EEPROM gelesen und in einer andereren geschrieben wird. Ansonsten werden von allen anderen Funktion nur die in diesem struct "gespiegelten" EEPROM-Daten genutzt. Nebenbei hat das natürlich den Vorteil, daß man in Kenntnis der Struktur dieses Structs aus einem EEPROM-Dump direkt den Inhalt interpretieren kann, aber der Hauptvorteil liegt meines Erachtens darin, daß man vor dem Beschreiben des EEPROMs noch einmal einen Plausibilitätscheck an zentraler Stelle machen kann (das struct hat z.B. am Ende noch einen CRC).
:
Bearbeitet durch User
Für die Nachfolgenden: Mit
1 | EXTERN uint8_t EEMEM Variablenname; |
in einer Header-Datei habe ich es nun hinbekommen. Vielen Dank für die Hilfe.
Wobei EXTERN nur ein Macro ist, das "extern", das C-Schlüsselwort hinschreibt. Damit kann man z.B. In einem C-File vor den #include des H-Files ein "#define EXTERN " platzieren und die Varable wird existent. Kann aber auch daneben gehen. Besser im H-File alles extern und im Haupt-C-File oder einem speziellen zur Definition globaler Variablen nochmal ohne extern deklarieren.
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.