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.