Hallo zusammen! Ich mache in meiner main.c einen Eintrag im Programmspeicher mit: const uint8_t lut[32] PROGMEM = {, , }; und einen Zeiger auf die Elemente des Arrays: uint8_t lut_ptr = 0; darauf greife ich innerhalb verschiedener Funktionen zu, z.B.: void init(void) { lut_ptr = 0; spi_out(pgm_read_byte(&lut[lut_ptr])); } wenn diese (und andere Funktionen, die pgm_read_byte(&lut[lut_ptr])) verwenden) ebenfalls in der main.c deklariert sind, funktioniert alles einwandfrei. Wenn ich diese Funtionen jedoch in eine externe c-datei auslagere um die main.c aufzuräumen bekomme ich beim compilieren die Fehlermeldung error: 'lut' undeclared (first use in this function) auch bringt es nichts const uint8_t lut[32] PROGMEM = {, , }; ebenfalls in die externe c-file auszulagern. Kann mir jemand helfen? Was mache ich falsch? Vielen Dank und viele Grüße!
http://www.mikrocontroller.net/articles/FAQ#Globale_Variablen_.C3.BCber_mehrere_Dateien beachte auch den Teil über Initialisierungen (ist ein wenig im Text versteckt)
> und einen Zeiger auf die Elemente des Arrays: > uint8_t lut_ptr = 0; Der Begriff Zeiger und die Benennung der Variablen lut_ptr sind auf den ersten Blick missverständlich, weil die mit einem Pointer verwechselt werden können. Ich würde das eher als Index oder Zähler bezeichnen. uint8_t lut_index = 0;
Alles klar! Vielen Dank euch beiden!
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.